/* ==========================================================================
   La Grange de L'Abille — styles front (extension lgdla-front)
   Charge après tokens.css. Tout se pilote par des classes posées dans Elementor.
   Breakpoints fixes : 1024px et 767px.
   ========================================================================== */

/* ---------- Polices (hébergées localement, aucun appel à Google) -------- */

@font-face {
  font-family: 'Nova Mono';
  font-style: normal; font-weight: 400; font-display: swap;
  src: url('../fonts/nova-mono-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Lora';
  font-style: normal; font-weight: 400 700; font-display: swap;
  src: url('../fonts/lora-latin-wght-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Lora';
  font-style: italic; font-weight: 400 700; font-display: swap;
  src: url('../fonts/lora-latin-wght-italic.woff2') format('woff2');
}

/* ---------- Base --------------------------------------------------------- */

/* « html body » : plus précis que la feuille du thème Hello (body { background-color: #fff }), chargée après la nôtre */
html body {
  background: var(--c-bg);
  color: var(--c-text);
  font-family: var(--f-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4,
.elementor-heading-title {
  font-family: var(--f-title);
  font-weight: 400;              /* Nova Mono n'a qu'une graisse : pas de faux gras */
  color: var(--c-ink);
}

/* ---------- Grille de la page ---------------------------------------------- */
/* Elementor pose 10 px de padding sur chaque conteneur : sur cette page ces marges s'empilaient
   (texte du hero à 40 px du bord sur mobile, un bord gauche différent à chaque section).
   Toutes les marges sont posées explicitement : la base repart de 0.
   Priorité volontairement basse : un padding réglé dans Elementor, ou plus bas dans ce fichier, l'emporte.
   La classe lgdla-page est ajoutée au <body> par l'extension (lgdla-front.php). */
.lgdla-page .e-con {
  --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px;
}

/* Titres de section : classes à poser sur le widget Titre.
   Hello Elementor impose une taille sur la balise h1–h3 elle-même (2rem, 1.75rem…) :
   la classe seule sur le widget ne suffit pas, on vise donc .elementor-heading-title. */
.lgdla-h-display .elementor-heading-title { font-size: var(--fs-display); line-height: var(--lh-display); letter-spacing: var(--ls-display); }
.lgdla-h-1 .elementor-heading-title       { font-size: var(--fs-h1);      line-height: var(--lh-h1);      letter-spacing: var(--ls-h1); }
.lgdla-h-2 .elementor-heading-title       { font-size: var(--fs-h2);      line-height: var(--lh-h2);      letter-spacing: var(--ls-h2); }
.lgdla-h-3 .elementor-heading-title       { font-size: var(--fs-h3);      line-height: var(--lh-h3);      letter-spacing: var(--ls-h3); }

.lgdla-eyebrow .elementor-heading-title,
.lgdla-eyebrow {
  font-family: var(--f-title);
  font-size: var(--fs-eyebrow);
  letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase;
  line-height: 1.4;
}

.lgdla-prose p { max-width: var(--measure-text); }
.lgdla-prose p + p { margin-top: 1.1em; }

/* Pas de mot seul en fin de paragraphe ; titres équilibrés sur leurs lignes */
.elementor-heading-title { text-wrap: balance; }
.lgdla-prose p, .lgdla-cell__text p, .lgdla-hero__lead p, .lgdla-room .elementor-widget-text-editor p { text-wrap: pretty; }

/* ---------- Surfaces du navigateur : sélection, défilement, focus, appui ---------- */

:root { color-scheme: light; accent-color: var(--c-ink); caret-color: var(--c-ink); scrollbar-color: var(--c-muted) var(--c-bg); }
::selection { background: var(--c-gold); color: var(--c-ink); }       /* 8,4:1 */
/* touch-action: manipulation : supprime le délai du double-tap et le zoom involontaire sur les cibles tactiles */
a, button, .elementor-button, .elementor-social-icon { -webkit-tap-highlight-color: rgba(225, 179, 76, .28); touch-action: manipulation; }

/* Règle de ce fichier : les effets de SURVOL sont dans @media (hover: hover) (sinon ils restent « collés » après un appui
   tactile) ; le FOCUS CLAVIER (:focus-visible) garde toujours le même effet, hors de cette requête. */

a:focus-visible, button:focus-visible, .elementor-button:focus-visible {
  outline: 2px solid var(--c-ink);
  outline-offset: 3px;
}
/* Sur la vidéo du hero, un anneau encre disparaît : on passe au clair (≥ 6:1 sur la frame la plus claire mesurée) */
.lgdla-hero a:focus-visible, .lgdla-hero button:focus-visible, .lgdla-hero .elementor-button:focus-visible {
  outline-color: var(--c-on-dark);
}
/* Carte chambre : le lien est étendu à toute la carte, l'anneau doit l'entourer, pas seulement le texte */
@supports selector(:has(a)) {
  .lgdla-room:has(.lgdla-room__link a:focus-visible) .lgdla-room__media {
    outline: 2px solid var(--c-ink); outline-offset: 3px;
  }
  .lgdla-room .lgdla-room__link a:focus-visible { outline: none; }
}

/* ---------- Boutons ------------------------------------------------------ */
/* À poser sur le widget Bouton : classe  lgdla-btn  (principal)  ou  lgdla-btn--ghost */

.lgdla-btn .elementor-button {
  display: inline-flex; align-items: center; gap: .65em;
  background: var(--c-gold);
  color: var(--c-ink);
  font-family: var(--f-title);
  font-size: var(--fs-btn);
  letter-spacing: var(--ls-btn);
  line-height: 1;
  padding: 1.05em 1.6em;
  border-radius: var(--r-full);
  border: 1px solid transparent;
  transition: background-color var(--t-mid) var(--ease), transform var(--t-mid) var(--ease-out);
}
.lgdla-btn .elementor-button:focus-visible {
  background: var(--c-gold-dark);
  color: var(--c-ink);
  transform: translateY(-1px);
}
@media (hover: hover) {
  .lgdla-btn .elementor-button:hover {
    background: var(--c-gold-dark);
    color: var(--c-ink);
    transform: translateY(-1px);
  }
}
/* Retour à l'appui (aussi au toucher, où il n'y a pas de survol) */
.lgdla-btn .elementor-button:active { background: var(--c-gold-dark); transform: translateY(1px); transition-duration: 80ms; }

/* Flèche dessinée (masque SVG, couleur du texte) : le glyphe « ↗ » changeait de forme d'un système à l'autre
   et devenait un émoji sur certains téléphones. */
:root {
  --lg-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9 9 3M4.2 3H9v4.8'/%3E%3C/svg%3E");
}
.lgdla-btn .elementor-button::after {
  content: '';
  flex: 0 0 auto;
  width: .8em; height: .8em;
  background: currentColor;
  -webkit-mask: var(--lg-arrow) center / contain no-repeat;
          mask: var(--lg-arrow) center / contain no-repeat;
  transition: transform var(--t-mid) var(--ease-out);
}
.lgdla-btn .elementor-button:focus-visible::after { transform: translate(2px, -2px); }
@media (hover: hover) { .lgdla-btn .elementor-button:hover::after { transform: translate(2px, -2px); } }

/* Variante « pilule + rond fléché » (gabarit client du 14/10/2026) : classe  lgdla-btn--split  en plus de  lgdla-btn.
   Le rond est dessiné en ::before (fond) et ::after (flèche →), collé à droite de la pilule ; il fait partie du même
   lien, donc la zone cliquable couvre les deux. Diamètre = hauteur de la pilule (aspect-ratio). */
.lgdla-btn.lgdla-btn--split .elementor-button { position: relative; margin-right: calc(3.2em + 6px); }
.lgdla-btn.lgdla-btn--split .elementor-button::before,
.lgdla-btn.lgdla-btn--split .elementor-button::after {
  content: ''; position: absolute; top: -1px; bottom: -1px; left: calc(100% + 6px);
  aspect-ratio: 1 / 1; width: auto; height: auto;
  border-radius: 50%;
}
.lgdla-btn.lgdla-btn--split .elementor-button::before {
  background: var(--c-gold);
  transition: background-color var(--t-mid) var(--ease);
}
.lgdla-btn.lgdla-btn--split .elementor-button::after {
  background: var(--c-ink);
  border-radius: 0;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 8h11M9 3.5 13.5 8 9 12.5'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 8h11M9 3.5 13.5 8 9 12.5'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
  transition: transform var(--t-mid) var(--ease-out);
}
.lgdla-btn.lgdla-btn--split .elementor-button:focus-visible::before { background: var(--c-gold-dark); }
.lgdla-btn.lgdla-btn--split .elementor-button:focus-visible::after { transform: translateX(3px); }
@media (hover: hover) {
  .lgdla-btn.lgdla-btn--split .elementor-button:hover::before { background: var(--c-gold-dark); }
  .lgdla-btn.lgdla-btn--split .elementor-button:hover::after { transform: translateX(3px); }
}

/* !important : le widget Bouton d'Elementor écrit son fond et sa couleur en ligne avec une priorité supérieure
   (sans cela « Bons cadeaux » restait doré, deux boutons principaux côte à côte dans le hero). */
.lgdla-btn--ghost .elementor-button {
  background: transparent !important;
  color: var(--c-on-dark) !important;
  border-color: var(--c-on-dark-55) !important;
}
.lgdla-btn--ghost .elementor-button:focus-visible,
.lgdla-btn--ghost .elementor-button:active {
  background: var(--c-on-dark) !important;
  color: var(--c-ink) !important;
  border-color: var(--c-on-dark) !important;
}
@media (hover: hover) {
  .lgdla-btn--ghost .elementor-button:hover {
    background: var(--c-on-dark) !important;
    color: var(--c-ink) !important;
    border-color: var(--c-on-dark) !important;
  }
}

/* ---------- Header « pilule » flottante ---------------------------------- */
/* Classe  lgdla-header  sur le conteneur racine du header (Ultimate Addons for Elementor) */

/* « .e-con. » en préfixe : Elementor impose width / min-height / overflow sur .e-con,
   il faut une priorité supérieure pour que ces classes l'emportent. */
.e-con.lgdla-header {
  position: fixed !important;
  top: max(16px, env(safe-area-inset-top)); left: 50%;       /* env() : sous l'encoche des téléphones en mode plein écran */
  transform: translateX(-50%);
  width: min(1240px, calc(100% - 32px));
  max-width: none;
  z-index: var(--z-header);
  border-radius: var(--r-full);
  background: rgba(248, 247, 245, .54);                     /* 25/10 : .54 (était .40, 18/10) : sur une page à fond sombre (Bons cadeaux) le menu n'atteignait que 3,7:1 ; ≥ 4,5:1 mesuré sur pixels réels */
  -webkit-backdrop-filter: blur(18px) saturate(1.2) brightness(1.15);
          backdrop-filter: blur(18px) saturate(1.2) brightness(1.15);
  border: 1px solid rgba(248, 247, 245, .55);
  /* transform (compositeur) et non top : animer top force un recalcul de mise en page à chaque image */
  transition: background-color var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease), transform var(--t-mid) var(--ease);
}
.e-con.lgdla-header.is-stuck {
  background: rgba(248, 247, 245, .92);
  box-shadow: var(--sh-1);
  transform: translate(-50%, -6px);
}
.lgdla-header a { color: var(--c-ink); }
.lgdla-header .hfe-nav-menu__layout-horizontal { flex-wrap: nowrap; }
.lgdla-header .hfe-nav-menu a.hfe-menu-item,
.lgdla-header .hfe-nav-menu a.hfe-sub-menu-item {
  font-family: var(--f-title);
  font-size: var(--fs-nav);
  letter-spacing: .01em;
  white-space: nowrap;
  color: var(--c-ink);
}
/* Survol : le texte reste en encre (l'or foncé sur fond clair ne fait que 2,5:1) ; c'est le soulignement qui passe en or */
.lgdla-header .hfe-nav-menu a.hfe-menu-item { text-decoration: underline 2px transparent; text-underline-offset: 8px; transition: text-decoration-color var(--t-fast) var(--ease); }
.lgdla-header .hfe-nav-menu a.hfe-menu-item:focus-visible { text-decoration-color: var(--c-gold-dark); }
@media (hover: hover) { .lgdla-header .hfe-nav-menu a.hfe-menu-item:hover { text-decoration-color: var(--c-gold-dark); } }
/* Page courante (25/10) : soulignement plein en encre (≥ 3:1 sur la pilule, contrairement à l'or) ; le survol des autres entrées reste en or */
.lgdla-header .hfe-nav-menu li.current-menu-item > a.hfe-menu-item,
.lgdla-header .hfe-nav-menu li.current-menu-item > a.hfe-menu-item:hover { text-decoration-color: var(--c-ink); text-decoration-thickness: 2px; }
/* Menu sur une seule ligne (24/10 : « Autour de nous » allonge le menu FR de 70 px ; l'en-tête est plafonné à 1240 px, il n'y avait plus de marge).
   Le menu EN / DE, plus long encore, s'adapte de la même façon ; sous 1024 px c'est le menu burger. */
@media (min-width: 1025px) {
  .e-con.lgdla-header .hfe-nav-menu a.hfe-menu-item { padding-left: 8px !important; padding-right: 8px !important; }
}
/* 25/10 : jusqu'à 1279 px (et non 1240) : Chrome Windows réserve ~15 px pour la barre de défilement, une fenêtre de 1280 px compte donc 1265 px de large,
   sous le seuil de 1280 : le menu allemand passait sur deux lignes alors que Firefox (barre de défilement superposée) le gardait sur une. */
@media (min-width: 1025px) and (max-width: 1279px) {
  .e-con.lgdla-header .hfe-nav-menu a.hfe-menu-item { padding-left: 5px !important; padding-right: 5px !important; font-size: calc(var(--fs-nav) * .93); }
  html[lang^="de"] .e-con.lgdla-header .hfe-nav-menu a.hfe-menu-item { font-size: calc(var(--fs-nav) * .87); }
}
.admin-bar .e-con.lgdla-header { top: 48px; }

/* Logo : hauteur fixe, jamais écrasé par le flex */
.e-con.lgdla-header .elementor-widget-image { flex: 0 0 auto; width: auto; }
.e-con.lgdla-header .elementor-widget-image img { height: 52px !important; width: auto !important; max-width: none; display: block; }
/* Burger (tablette et mobile) : calé à droite du menu, pas centré */
@media (max-width: 1024px) {
  .lgdla-header .elementor-widget-navigation-menu { flex: 1 1 auto; }
  .lgdla-header .hfe-nav-menu__toggle { margin: 0 0 0 auto !important; }
}

@media (max-width: 767px) {
  .e-con.lgdla-header {
    top: max(10px, env(safe-area-inset-top)); width: calc(100% - 20px);
    flex-wrap: nowrap !important; flex-direction: row !important;
  }
  .e-con.lgdla-header.is-stuck { transform: translateX(-50%); }   /* sur mobile la pilule ne bouge pas, seul son fond change */
  /* Sur mobile : logo à gauche, menu burger à droite ; le CTA est déjà dans le hero */
  .lgdla-header .lgdla-btn { display: none; }
  .lgdla-header .elementor-widget-navigation-menu { margin-left: auto; }
  .e-con.lgdla-header .elementor-widget-image img { height: 42px !important; }
}

/* Cartes chambres de l'accueil : capacité, lit, « à partir de » (build/accueil-infos.php) */
.lgdla-room__facts { margin-top: calc(-1 * var(--s-1)); }
.lgdla-room__facts p { margin: 0; color: var(--c-ink); }
.lgdla-room__facts p + p { margin-top: 2px; }
.lgdla-room__facts strong { font-family: var(--f-title); font-weight: 400; letter-spacing: -.01em; }

.lgdla-header .lgdla-btn { flex: 0 0 auto; }
.lgdla-header .lgdla-btn .elementor-button { white-space: nowrap; }   /* « Demander mes dates » ne passe jamais sur deux lignes */
/* Barre d'action mobile (build/mobile-bar.php) : « Demander mes dates » + appel, collée en bas de l'écran, dans la zone du pouce.
   Masquée au-dessus de 767 px (le bouton est alors dans le header). initMobileBar() la fait apparaître / disparaître (classe is-on). */
.e-con.lgdla-mbar { display: none; }
@media (max-width: 767px) {
  .e-con.lgdla-mbar {
    display: flex; position: fixed !important; left: 10px; right: 10px; bottom: max(10px, env(safe-area-inset-bottom)); top: auto;
    width: auto !important; max-width: none; min-height: 0 !important; padding: 8px; gap: 8px; align-items: center;
    z-index: var(--z-header); border-radius: var(--r-full);
    background: rgba(248, 247, 245, .92); border: 1px solid rgba(248, 247, 245, .55); box-shadow: var(--sh-1);
    -webkit-backdrop-filter: blur(18px) saturate(1.2); backdrop-filter: blur(18px) saturate(1.2);
    transform: translateY(calc(100% + 24px)); visibility: hidden;
    transition: transform var(--t-mid) var(--ease-out), visibility 0s linear var(--t-mid);
  }
  .e-con.lgdla-mbar.is-on { transform: none; visibility: visible; transition-delay: 0s; }
  .lgdla-mbar .lgdla-mbar__cta { flex: 1 1 auto; min-width: 0; width: auto; }
  .lgdla-mbar .lgdla-mbar__cta .elementor-button { width: 100%; justify-content: center; min-height: 48px; white-space: nowrap; }
  .lgdla-mbar .lgdla-mbar__tel { flex: 0 0 48px; width: 48px; }
  .lgdla-mbar .lgdla-mbar__tel .elementor-button {
    position: relative; width: 48px; height: 48px; min-height: 48px; padding: 0 !important; justify-content: center;
    background: var(--c-ink); color: var(--c-bg);
  }
  .lgdla-mbar .lgdla-mbar__tel .elementor-button-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }   /* nom accessible, pas de texte à l'écran */
  .lgdla-mbar .lgdla-mbar__tel .elementor-button::after {
    width: 22px; height: 22px; transform: none; -webkit-mask: var(--lg-ico-phone) center / contain no-repeat; mask: var(--lg-ico-phone) center / contain no-repeat;
  }
  .lgdla-mbar .lgdla-mbar__tel .elementor-button:active { background: var(--c-black); }
  /* de l'air sous la barre de fin de page : le pied de page ne se retrouve pas masqué */
  body:has(.lgdla-mbar) .e-con.lgdla-footer__bottom { padding-bottom: 76px; }
}
@media (prefers-reduced-motion: reduce) { .e-con.lgdla-mbar { transition: none; } }
:root { --lg-ico-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 3.5h3.4l1.6 4-2 1.3a11 11 0 0 0 5.2 5.2l1.3-2 4 1.6V17a2.5 2.5 0 0 1-2.7 2.5A15.5 15.5 0 0 1 3.5 6.2 2.5 2.5 0 0 1 5 3.5Z'/%3E%3C/svg%3E"); }

/* Cibles tactiles : au moins 24 px partout (WCAG 2.5.8), 44 px sur téléphone et écrans tactiles.
   La hauteur vient d'un rembourrage vertical autour des liens du pied de page ; le soulignement reste collé au texte. */
.lgdla-footer .elementor-widget-text-editor a { --lg-hit: 3px; display: inline-block; padding-block: var(--lg-hit); background-position: 0 calc(100% - var(--lg-hit)); }
.lgdla-footer .lgdla-footer__text ul { gap: 0; }
.lgdla-header .elementor-widget-image a { display: flex; align-items: center; min-height: 44px; min-width: 44px; }
@media (max-width: 1024px) { .lgdla-header .hfe-nav-menu__toggle { min-width: 44px; min-height: 44px; } }
@media (max-width: 767px), (pointer: coarse) {
  .lgdla-footer .elementor-widget-text-editor a { --lg-hit: 12px; }
}
/* Liens-texte soulignés : la zone tactile déborde de 12 px au-dessus et au-dessous sans bouger le soulignement (les liens des cartes chambre couvrent déjà toute la carte) */
@media (max-width: 767px), (pointer: coarse) {
  .lgdla-link a { position: relative; }
  .lgdla-link a::before { content: ''; position: absolute; inset: -12px -6px; }
}

/* Sélecteur de langue du header : drapeau + indicatif (FR · EN · DE), shortcode [lgdla_lang_switcher] (Polylang) */
.lgdla-header .elementor-widget-shortcode { flex: 0 0 auto; width: auto; }
.lgdla-lang ul { display: flex; align-items: center; gap: 2px; margin: 0; padding: 0; list-style: none; }
.lgdla-lang li { margin: 0; padding: 0; }
.lgdla-lang a {
  display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 4px 9px; border-radius: var(--r-full);
  font-family: var(--f-title); font-size: .8125rem; line-height: 1; letter-spacing: .04em; color: var(--c-ink); text-decoration: none;
  transition: background-color var(--t-fast) var(--ease);
}
.lgdla-lang img { display: block; width: 20px; height: 14px; border-radius: 2px; box-shadow: 0 0 0 1px rgba(34, 30, 31, .18); object-fit: cover; }
.lgdla-lang a[aria-current] { background: rgba(34, 30, 31, .08); box-shadow: inset 0 -2px 0 var(--c-gold-dark); }
.lgdla-lang a:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 2px; }
@media (hover: hover) { .lgdla-lang a:hover { background: rgba(225, 179, 76, .32); } }
.lgdla-header:has(.lgdla-lang) .elementor-widget-image { order: 1; }
.lgdla-header:has(.lgdla-lang) .elementor-widget-navigation-menu { order: 2; }
.lgdla-header:has(.lgdla-lang) .elementor-widget-shortcode { order: 3; }
.lgdla-header:has(.lgdla-lang) .lgdla-btn { order: 4; }
@media (max-width: 1024px) {
  /* tablette et mobile : logo … [FR EN DE] [burger] [Réservation] */
  .lgdla-header:has(.lgdla-lang) .elementor-widget-shortcode { order: 2; margin-left: auto; }
  .lgdla-header:has(.lgdla-lang) .elementor-widget-navigation-menu { order: 3; flex: 0 0 44px; width: 44px; min-width: 0; margin-left: 0; }
  .lgdla-header:has(.lgdla-lang) .hfe-nav-menu__toggle { margin: 0 !important; }
}
@media (max-width: 767px) {
  .lgdla-header:has(.lgdla-lang) .elementor-widget-navigation-menu { margin-left: 0; }
  .lgdla-lang a { gap: 4px; padding: 4px 6px; font-size: .75rem; min-height: 36px; }
  .lgdla-lang img { width: 18px; height: 12px; }
}

/* Boutons du hero : pleine largeur et empilés sur mobile */
@media (max-width: 767px) {
  .e-con.lgdla-hero__cta { width: 100%; align-items: stretch; }
  .lgdla-hero__cta .elementor-widget-button,
  .lgdla-hero__cta .elementor-button { width: 100%; }
  .lgdla-hero__cta .elementor-button { justify-content: center; }
}

/* ---------- Hero ---------------------------------------------------------- */

.e-con.lgdla-hero {
  position: relative;
  min-height: 100vh;
  min-height: 100svh;
  overflow: hidden;
  isolation: isolate;
  color: var(--c-on-dark);
}
/* Le contenu du hero reste aligné sur la grille 1280 px, la vidéo sort en pleine largeur */
.e-con.lgdla-hero__row {
  width: 100%;
  max-width: var(--w-content);
  margin-inline: auto;
}
.lgdla-hero .elementor-heading-title,
.lgdla-hero h1 { color: var(--c-on-dark); }

.lgdla-hero__title .elementor-heading-title {
  font-size: var(--fs-display);
  line-height: var(--lh-display);
  letter-spacing: var(--ls-display);
  text-wrap: balance;
}
.lgdla-hero__lead,
.lgdla-hero__lead p {
  font-family: var(--f-body);
  font-size: var(--fs-lead);
  line-height: var(--lh-lead);
  color: var(--c-on-dark);
  max-width: 40ch;
}
.lgdla-hero__lead strong { font-weight: 600; }

/* Lueur douce en bas : garantit la lisibilité du texte sur la vidéo */
.lgdla-hero::after {
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: linear-gradient(0deg, rgba(34,30,31,.72) 0%, rgba(34,30,31,.3) 42%, rgba(34,30,31,.16) 100%);
}
.lgdla-hero > .e-con-inner, .lgdla-hero > .elementor-element { position: relative; z-index: 2; }

/* ---------- Abeille (Lottie) --------------------------------------------- */

.lgdla-bee {
  position: fixed;
  top: 0; left: 0;
  width: 84px; height: 84px;
  z-index: 1;                       /* au-dessus des photos et des fonds, SOUS tous les textes (voir plus bas) : elle ne masque jamais une phrase */
  pointer-events: none;
  opacity: 0;                       /* révélée par le JS */
  will-change: transform;
}
.lgdla-bee.is-ready { opacity: 1; }
.lgdla-page .elementor-widget-heading, .lgdla-page .elementor-widget-text-editor, .lgdla-page .elementor-widget-button { z-index: 2; }   /* les textes passent devant l'abeille */
@media (max-width: 767px) { .lgdla-bee { width: 56px; height: 56px; } }
.lgdla-editing .lgdla-bee { display: none; }

/* ---------- Bande défilante des labels ------------------------------------ */
/* Structure :  .lgdla-marquee > .lgdla-marquee__track > (widgets Image)
   Le JS duplique la piste pour boucler sans coupure ; dans l'éditeur, une seule piste. */

/* La bande est une capsule blanche centrée, calée sur la grille (jamais pleine largeur). Elle chevauche pour moitié
   le bas du hero (--lg-over) comme la pilule du header, et reprend le blanc des cartes du bento. Les logos naissent et
   s'effacent dans un fondu blanc à chaque extrémité. La marge basse du hero (build/home-page.php) intègre ce recouvrement. */

/* Hauteur de la capsule : variable globale (le hero et le gros titre d'ouverture en dépendent aussi). 24/10 : agrandie (120 / 104 / 88 px avant) pour des labels plus lisibles. */
:root { --lg-cap-h: 150px; }
@media (max-width: 1024px) { :root { --lg-cap-h: 128px; } }
@media (max-width: 767px) { :root { --lg-cap-h: 108px; } }
/* Air sous le texte du hero = 44 px + moitié de la capsule qui le chevauche (avant : 104 / 96 / 88 px écrits dans la page Elementor) */
.e-con.lgdla-hero { padding-bottom: calc(44px + var(--lg-cap-h) / 2) !important; }
.e-con.lgdla-marquee {
  --lg-over: calc(var(--lg-cap-h) / 2);       /* moitié sur la vidéo, moitié sur la page */
  --lg-marquee-gap: var(--s-8);               /* 64 px entre logos ; sert aussi à la boucle d'animation */
  position: relative;
  z-index: 3;
  width: min(1080px, calc(100% - 2 * var(--gutter))) !important;
  max-width: none;
  height: var(--lg-cap-h);
  min-height: 0 !important;
  margin: calc(-1 * var(--lg-over)) auto 0;
  padding: 0;
  overflow: hidden;
  align-items: center;
  background: #fff;
  border-radius: var(--r-full);
  box-shadow: 0 0 0 1px rgba(34, 30, 31, .07), 0 22px 44px -24px rgba(34, 30, 31, .42);
}
/* Fondus latéraux : blanc plein à l'extrémité (les logos disparaissent avant la courbe), transparent vers le centre */
.e-con.lgdla-marquee::before,
.e-con.lgdla-marquee::after {
  content: ''; position: absolute; top: 0; bottom: 0; width: clamp(72px, 18%, 220px);
  z-index: 2; pointer-events: none;
}
.e-con.lgdla-marquee::before { left: 0;  background: linear-gradient(90deg,  #fff 22%, rgba(255,255,255,0)); }
.e-con.lgdla-marquee::after  { right: 0; background: linear-gradient(270deg, #fff 22%, rgba(255,255,255,0)); }

.e-con.lgdla-marquee__track {
  display: flex !important;
  flex-wrap: nowrap !important;
  flex-direction: row !important;
  align-items: center;
  gap: var(--lg-marquee-gap) !important;
  width: max-content !important;
  max-width: none !important;
  animation: lgdla-marquee 38s linear infinite;
}
.lgdla-js:not(.lgdla-editing) .lgdla-marquee:hover .lgdla-marquee__track,
.lgdla-marquee.is-paused .lgdla-marquee__track, .lgdla-marquee.is-offscreen .lgdla-marquee__track { animation-play-state: paused; }   /* is-paused : bouton pause (clavier / tactile) */

/* Bouton pause (créé par le JS) : cible de 44 px, pastille de 30 px ; sert à la bande des labels et à la vidéo du hero */
/* « button. » en préfixe : Hello Elementor style tous les [type=button] (cadre rose, rembourrage, fond au survol) */
button.lgdla-pause {
  position: absolute; z-index: 4;
  width: 44px; height: 44px; min-width: 0; margin: 0; padding: 0;
  border: 0; background: transparent; border-radius: 50%;
  color: var(--c-ink); cursor: pointer;
  -webkit-appearance: none; appearance: none;
  touch-action: manipulation;
}
button.lgdla-pause:hover, button.lgdla-pause:focus, button.lgdla-pause:active { background: transparent; color: var(--c-ink); }
.lgdla-pause::before {                     /* pastille */
  content: ''; position: absolute; inset: 7px; border-radius: 50%;
  border: 1px solid currentColor; opacity: .5;
  transition: opacity var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}
.lgdla-pause::after {                      /* pictogramme : pause, ou lecture une fois activé */
  content: ''; position: absolute; inset: 15px;
  background: currentColor;
  -webkit-mask: var(--lg-ico-pause) center / contain no-repeat;
          mask: var(--lg-ico-pause) center / contain no-repeat;
}
.lgdla-pause[aria-pressed="true"]::after {
  -webkit-mask-image: var(--lg-ico-play);
          mask-image: var(--lg-ico-play);
}
.lgdla-pause:focus-visible::before { opacity: 1; }
@media (hover: hover) { .lgdla-pause:hover::before { opacity: 1; } }
:root {
  --lg-ico-pause: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M3.5 2h3v12h-3zM9.5 2h3v12h-3z'/%3E%3C/svg%3E");
  --lg-ico-play:  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M4 2l10 6-10 6z'/%3E%3C/svg%3E");
}
button.lgdla-pause--marquee { right: 14px; top: 50%; margin-top: -22px; }   /* au centre de la capsule, sur le fondu */
.lgdla-editing .lgdla-pause { display: none; }
.lgdla-marquee__track .elementor-widget-image { flex: 0 0 auto; width: auto !important; }
.e-con.lgdla-marquee__track .elementor-widget-image img {
  height: 96px !important; width: auto !important; max-width: none !important;   /* Elementor impose height:auto */
  object-fit: contain;
  display: block;
}
/* Les logos Clé Vacances ont une marge transparente large : on les agrandit pour égaliser l'effet optique */
.e-con.lgdla-marquee__track .lgdla-label--wide img { height: 136px !important; margin-inline: -32px; }
.e-con.lgdla-marquee__track .lgdla-label--card img { border-radius: var(--r-sm); }
/* Survol d'un label : il grossit (la bande est déjà en pause au survol). Souris seulement, jamais avec « réduire les animations ». La capsule coupe ce qui dépasse :
   un zoom de 12 % reste dans ses 150 px de haut. */
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .e-con.lgdla-marquee__track .elementor-widget-image img { transform-origin: center; transition: transform var(--t-mid) var(--ease-out); }
  .e-con.lgdla-marquee__track .elementor-widget-image:hover img { transform: scale(1.12); }
  .e-con.lgdla-marquee__track .lgdla-label--wide:hover img { transform: scale(1.08); }   /* logos Clé Vacances : plus hauts, marge transparente */
}

@keyframes lgdla-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(calc(-50% - var(--lg-marquee-gap) / 2)); }
}
.lgdla-editing .lgdla-marquee__track { animation: none; }

@media (max-width: 1024px) {
  .e-con.lgdla-marquee { --lg-marquee-gap: var(--s-7); }
  .e-con.lgdla-marquee__track .elementor-widget-image img { height: 80px !important; }
  .e-con.lgdla-marquee__track .lgdla-label--wide img { height: 114px !important; margin-inline: -26px; }
}
@media (max-width: 767px) {
  .e-con.lgdla-marquee { --lg-marquee-gap: var(--s-6); }
  .e-con.lgdla-marquee__track { animation-duration: 30s; }
  .e-con.lgdla-marquee__track .elementor-widget-image img { height: 64px !important; }
  .e-con.lgdla-marquee__track .lgdla-label--wide img { height: 90px !important; margin-inline: -20px; }
  button.lgdla-pause--marquee { right: 8px; }
  .e-con.lgdla-marquee::before, .e-con.lgdla-marquee::after { width: 56px; }   /* petit écran : le fondu laisse la place à deux logos */
}

/* ---------- Cartes chambres ------------------------------------------------ */

.lgdla-room { position: relative; }
/* width: 100% : sans largeur explicite le widget mesure 0 tant que la photo (chargée en différé) n'est pas arrivée,
   donc sa hauteur aussi ; la carte grandissait d'un coup au chargement. Avec la largeur, le ratio réserve la place. */
.e-con .elementor-widget.lgdla-room__media { width: 100%; overflow: hidden; border-radius: var(--r-sm); aspect-ratio: 4 / 5; }
.lgdla-room__media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform var(--t-photo) var(--ease-out);
}
@media (hover: hover) { .lgdla-room:hover .lgdla-room__media img { transform: scale(1.035); } }
.lgdla-room__title .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
/* Lien souligné (carte chambre et liens de section : mêmes règles, déclarées une seule fois plus bas) */
/* Toute la carte cliquable (lien étendu sur le titre) */
.lgdla-room .lgdla-room__link a::before { content: ''; position: absolute; inset: 0; }

/* Grille des cartes : 3 colonnes (desktop) · 2 colonnes + la 3e carte en bandeau horizontal (tablette) · 1 colonne (mobile).
   Classe lgdla-rooms__grid sur le conteneur qui porte les cartes. */
.e-con.lgdla-rooms__grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  column-gap: 40px; row-gap: 48px;
  align-items: start;
}
.e-con.lgdla-rooms__grid > .e-con.lgdla-room { width: auto !important; min-width: 0; }

/* Flèche (cartes chambre) et enveloppe (carte Achillée) après le texte du lien : masque CSS, la couleur suit le texte.
   Dessinées ici et non dans le texte : l'éditeur de texte d'Elementor supprimerait un <svg> au premier enregistrement. */
:root {
  --lg-ico-go:   url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 8h11M9 3.5 13.5 8 9 12.5'/%3E%3C/svg%3E");
  --lg-ico-mail: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1.8' y='3.2' width='12.4' height='9.6' rx='1.6'/%3E%3Cpath d='m2.4 4.6 5.6 4.2 5.6-4.2'/%3E%3C/svg%3E");
}
.lgdla-room__link a::after {
  content: ''; display: inline-block; width: 1em; height: 1em; margin-left: .5em; vertical-align: -.14em;
  background: currentColor;
  -webkit-mask: var(--lg-ico-go) center / contain no-repeat;
          mask: var(--lg-ico-go) center / contain no-repeat;
  transition: transform var(--t-mid) var(--ease-out);
}
.lgdla-room__link--soon a::after { -webkit-mask-image: var(--lg-ico-mail); mask-image: var(--lg-ico-mail); }
@media (hover: hover) { .lgdla-room:not(.lgdla-room--soon):hover .lgdla-room__link a::after { transform: translateX(3px); } }

/* ---------- Carte « Achillée » (chambre en chantier) : « la porte entrouverte » ----------------------------
   La vraie porte de la chambre est posée devant le plan du chantier (encre, traits crème et or de la charte).
   Charnières à DROITE (la poignée est à gauche sur la photo) ; la porte se POUSSE : son bord libre, côté poignée,
   s'éloigne du visiteur. L'ouverture suit le défilement (lgdla-front.js > initDoor) : elle s'ouvre quand on descend,
   se referme quand on remonte. Le plan se dessine derrière, une seule fois à l'arrivée de la carte (aucune boucle).
   Sans GSAP : porte entrouverte à l'arrivée, plus ouverte au survol. prefers-reduced-motion : porte fixe entrouverte. */

@property --door  { syntax: '<angle>';  inherits: false; initial-value: 0deg; }
@property --shade { syntax: '<number>'; inherits: false; initial-value: 0; }

.e-con.lgdla-soon__stage {
  position: relative; isolation: isolate;
  width: 100%; aspect-ratio: 4 / 5;
  overflow: hidden; border-radius: var(--r-sm);
  background: var(--c-ink);
}
.e-con.lgdla-soon__stage > .elementor-widget { position: absolute; margin: 0; }
.e-con.lgdla-soon__stage > .elementor-widget.lgdla-soon__plan,
.e-con.lgdla-soon__stage > .elementor-widget.lgdla-soon__door { inset: 0; width: 100%; height: 100%; }
.lgdla-soon__plan .elementor-widget-container,
.lgdla-soon__door .elementor-widget-container { width: 100%; height: 100%; }
.lgdla-soon__plan svg { display: block; width: 100%; height: 100%; }
.e-con.lgdla-soon__stage > .elementor-widget.lgdla-soon__plan { z-index: 0; }
.lgdla-soon__plan::after {                       /* lueur dorée : la lumière du chantier derrière la porte */
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(90deg, rgba(225, 179, 76, .22), rgba(225, 179, 76, 0) 50%);
}

/* La porte : charnière à gauche, s'ouvre vers l'intérieur (le bord droit s'éloigne), s'assombrit en s'ouvrant */
.e-con.lgdla-soon__stage > .elementor-widget.lgdla-soon__door {
  z-index: 1;
  transform-origin: 100% 50%;                                        /* charnières à droite */
  transform: perspective(1100px) rotateY(calc(-1 * var(--door)));    /* angle négatif : le bord gauche (poignée) s'éloigne */
  transition: --door 1.4s var(--ease-out), --shade 1.4s var(--ease-out);
}
.e-con .lgdla-soon__door img {
  width: 100%; height: 100% !important; max-width: none;
  object-fit: cover; object-position: 50% 29%;     /* cadre botanique + poignée dans la même vue */
  display: block; border-radius: 0;
}
.lgdla-soon__door::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(270deg, rgba(34, 30, 31, 0) 30%, rgba(34, 30, 31, .72));   /* plus sombre côté bord libre (gauche) */
  opacity: var(--shade);
}
/* Défilement : lgdla-front.js pose --door / --shade (en ligne) et la classe lgdla-door-js ; plus de transition CSS alors */
.lgdla-soon.lgdla-door-js .lgdla-soon__door { transition: none; }
/* Repli sans GSAP (ou éditeur) : porte entrouverte à l'arrivée de la carte, plus ouverte au survol / focus */
.lgdla-js .lgdla-soon.is-in:not(.lgdla-door-js) .lgdla-soon__door,
.lgdla-editing .lgdla-soon .lgdla-soon__door { --door: 30deg; --shade: .35; }
@media (hover: hover) {
  .lgdla-soon:not(.lgdla-door-js):hover .lgdla-soon__door { --door: 58deg; --shade: .62; }
}
.lgdla-soon:not(.lgdla-door-js):has(.lgdla-room__link a:focus-visible) .lgdla-soon__door { --door: 58deg; --shade: .62; }

/* Le plan se dessine (tracés en pathLength=1 : tirets de 1, décalage animé de 1 → 0) */
.lgdla-soon__plan .draw { stroke-dasharray: 1; stroke-dashoffset: 0; }
.lgdla-js:not(.lgdla-editing) .lgdla-soon:not(.is-in) .draw { stroke-dashoffset: 1; }
.lgdla-js:not(.lgdla-editing) .lgdla-soon.is-in .draw { animation: lgdla-draw 2s var(--ease-out) var(--d, 0s) backwards; }
@keyframes lgdla-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
/* Secours : si le script n'a pas démarré au bout de 4 s, le plan s'affiche quand même */
@keyframes lgdla-draw-fallback { to { stroke-dashoffset: 0; } }
.lgdla-js:not(.lgdla-ready):not(.lgdla-editing) .lgdla-soon .draw { animation: lgdla-draw-fallback .01s 4s forwards; }

/* Bandeau « En chantier » (haut) et note (bas) : au-dessus de la porte, jamais inclinés */
.e-con.lgdla-soon__stage > .elementor-widget.lgdla-soon__tag  { top: 16px; left: 16px; width: auto; z-index: 3; }
.e-con.lgdla-soon__stage > .elementor-widget.lgdla-soon__note { left: 16px; right: 16px; bottom: 16px; width: auto; z-index: 3; }
/* Bandeau : widget Titre (classe lgdla-soon__tag) ; le point qui pulse trois fois est un ::before */
.lgdla-soon__tag .elementor-heading-title {
  display: inline-flex; align-items: center; gap: .6em;
  padding: .55em .9em; border-radius: var(--r-sm);
  background: var(--c-gold); color: var(--c-ink);            /* 8,4:1 */
  font-family: var(--f-title); font-size: .72rem; line-height: 1; letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
}
.lgdla-soon__tag .elementor-heading-title::before {
  content: ''; width: .6em; height: .6em; border-radius: 50%; background: var(--c-ink);
  animation: lgdla-pulse 1.8s ease-out 3;                    /* trois pulsations, puis repos */
}
@keyframes lgdla-pulse { from { box-shadow: 0 0 0 0 rgba(34, 30, 31, .45); } to { box-shadow: 0 0 0 .75em rgba(34, 30, 31, 0); } }
/* Note : widget Texte (classe lgdla-soon__note) */
.lgdla-soon__note p {
  display: inline-block; max-width: 100%; margin: 0;
  padding: .6em .85em; border-radius: var(--r-sm);
  background: rgba(34, 30, 31, .9); color: var(--c-on-dark);
  font-family: var(--f-body); font-weight: 600; font-size: .84rem; line-height: 1.35; text-wrap: balance;
}
/* Lien « Être prévenu » : soulignement en pointillés (ce n'est pas une page de plus) */
.lgdla-room__link--soon a { border-bottom-style: dashed; }
.lgdla-room:has(.lgdla-room__link a:focus-visible) .lgdla-soon__stage { outline: 2px solid var(--c-ink); outline-offset: 3px; }

/* Tablette : deux colonnes ; Achillée passe en bandeau horizontal sur toute la largeur (photo à gauche, texte à droite) */
@media (max-width: 1024px) {
  .e-con.lgdla-rooms__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
  .e-con.lgdla-rooms__grid > .e-con.lgdla-room--soon {
    grid-column: 1 / -1;
    display: grid !important;
    grid-template-columns: minmax(0, 38%) minmax(0, 1fr);
    grid-template-rows: 1fr auto auto auto 1fr;
    column-gap: 32px; row-gap: 14px; align-items: start;
  }
  .lgdla-room--soon > .lgdla-soon__stage { grid-column: 1; grid-row: 1 / -1; }
  .lgdla-room--soon > .elementor-widget { grid-column: 2; }
  .lgdla-room--soon > .lgdla-room__title { grid-row: 2; }
  .lgdla-room--soon > .elementor-widget-text-editor { grid-row: 3; }
  .lgdla-room--soon > .elementor-widget-text-editor.lgdla-room__link { grid-row: 4; }
}
@media (max-width: 767px) {
  .e-con.lgdla-rooms__grid { grid-template-columns: minmax(0, 1fr); row-gap: 40px; }
  .e-con.lgdla-rooms__grid > .e-con.lgdla-room--soon { display: flex !important; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  .e-con.lgdla-soon__stage > .elementor-widget.lgdla-soon__door { --door: 24deg; --shade: .3; transition: none; }
  .lgdla-soon:hover .lgdla-soon__door { --door: 40deg; --shade: .45; }
  .lgdla-soon__plan .draw { stroke-dashoffset: 0 !important; animation: none !important; }
  .lgdla-soon__tag .elementor-heading-title::before { animation: none; }
  .lgdla-room__link a::after { transition: none; transform: none !important; }
}

/* ---------- Textes : listes, liens, centrage -------------------------------- */

.lgdla-prose ul { list-style: none; padding: 0; margin: 1.1em 0; }
.lgdla-prose li { position: relative; padding-left: 1.7em; margin: .4em 0; }
.lgdla-prose li::before {            /* tiret doré : décoratif, jamais porteur de sens */
  content: ''; position: absolute; left: 0; top: .9em;
  width: .95em; height: 2px; background: var(--c-gold);
}
.lgdla-prose--center p { margin-inline: auto; max-width: 62ch; text-align: center; }
.lgdla-center, .lgdla-center .elementor-heading-title { text-align: center; }

.lgdla-link a,
.lgdla-room__link a {
  font-family: var(--f-title);
  font-size: var(--fs-small);
  color: var(--c-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--c-ink);
  padding-bottom: 2px;
  transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
/* Survol : le texte reste en encre (l'or foncé sur fond clair ne fait que 2,5:1) ; le filet passe en or et s'épaissit */
.lgdla-link a:focus-visible,
.lgdla-room__link a:focus-visible { border-color: var(--c-gold-dark); box-shadow: 0 1px 0 var(--c-gold-dark); }
@media (hover: hover) {
  .lgdla-link a:hover,
  .lgdla-room__link a:hover { border-color: var(--c-gold-dark); box-shadow: 0 1px 0 var(--c-gold-dark); }
}

/* Bouton contour (fond clair) */
.lgdla-btn--outline .elementor-button {
  background: transparent;
  color: var(--c-ink);
  border-color: var(--c-ink);
}
.lgdla-btn--outline .elementor-button:focus-visible,
.lgdla-btn--outline .elementor-button:active {
  background: var(--c-ink);
  color: var(--c-bg);
  border-color: var(--c-ink);
}
@media (hover: hover) {
  .lgdla-btn--outline .elementor-button:hover {
    background: var(--c-ink);
    color: var(--c-bg);
    border-color: var(--c-ink);
  }
}
.lgdla-btn--outline .elementor-button::after { content: none; }

@media (max-width: 767px) {
  .e-con.lgdla-cta-row { align-items: stretch; }
  .lgdla-cta-row .elementor-widget-button,
  .lgdla-cta-row .elementor-button { width: 100%; }
  .lgdla-cta-row .elementor-button { justify-content: center; }
}

/* ---------- Bienvenue : bento grid (la photo aérienne devient la case centrale) ----------
   Desktop (> 1024 px) : 12 colonnes × 3 rangées, épinglée pendant l'animation GSAP.
   Tablette / mobile : grille simple, sans épinglage. Sans JS : on voit directement le bento final.
   Placement : classes lgdla-cell--a … --g (ne pas les retirer dans Elementor).
     a titre · b Katinka · c grange vue du ciel · d récit · f façade · h, i, j, k : informations (chambres, prix, table d'hôtes, avis).
     Colonne de droite de 4 colonnes : deux cases d'information (rangée 1), la façade (rangée 2), deux cases d'information (rangée 3). */

.e-con.lgdla-bento {
  position: relative;
  width: 100%;
  min-height: 100vh; min-height: 100svh;
  overflow: hidden;
  padding: 104px 32px 32px;         /* 104 px en haut : la pilule du header flotte au-dessus */
  justify-content: center;
}
.e-con.lgdla-bento__grid {
  position: relative;
  display: grid !important;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-template-rows: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.45fr);   /* la rangée du bas, plus haute, porte le récit (colonne centrale de 5 colonnes) */
  gap: 20px;
  width: 100%;
  max-width: 1440px;
  margin-inline: auto;
  height: clamp(610px, calc(100svh - 136px), 860px);   /* 136 = 104 + 32 : la grille remplit l'écran épinglé */
}

.e-con.lgdla-cell {
  position: relative;
  min-width: 0; min-height: 0;
  overflow: hidden;
  border-radius: 24px;
  padding: clamp(18px, 1.9vw, 32px);
  background: #fff;
  /* pas de will-change permanent : 7 couches GPU gardées en mémoire, même sur mobile où rien ne s'anime.
     GSAP promeut lui-même la couche (transform 3D) le temps de l'animation. */
}
.e-con.lgdla-cell--card { justify-content: space-between; box-shadow: inset 0 0 0 1px var(--c-border); }
.e-con.lgdla-cell--a { grid-column: 1 / span 3;  grid-row: 1; }
.e-con.lgdla-cell--b { grid-column: 1 / span 3;  grid-row: 2 / span 2; }
.e-con.lgdla-cell--c { grid-column: 4 / span 5;  grid-row: 1 / span 2; z-index: 2; }
.e-con.lgdla-cell--d { grid-column: 4 / span 5;  grid-row: 3; }
.e-con.lgdla-cell--f { grid-column: 9 / span 4;  grid-row: 2; }
.e-con.lgdla-cell--h { grid-column: 9 / span 2;  grid-row: 1; }
.e-con.lgdla-cell--i { grid-column: 11 / span 2; grid-row: 1; }
.e-con.lgdla-cell--j { grid-column: 9 / span 2;  grid-row: 3; }
.e-con.lgdla-cell--k { grid-column: 11 / span 2; grid-row: 3; }

/* Cases photo : le widget Image remplit la case, le texte se pose par-dessus */
.e-con.lgdla-cell--photo { justify-content: flex-end; color: var(--c-on-dark); background: var(--c-ink); }
.e-con.lgdla-cell .elementor-widget.lgdla-cell__img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.lgdla-cell__img .elementor-widget-container { height: 100%; }
.lgdla-cell__img img { width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; }
.e-con.lgdla-cell--b { --pos: 50% 18%; }
.e-con.lgdla-cell--c { --pos: 40% 55%; }
.e-con.lgdla-cell--f { --pos: 50% 60%; }
.e-con.lgdla-cell--shade::before {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(0deg, rgba(34,30,31,.72) 0%, rgba(34,30,31,.56) 40%, rgba(34,30,31,.16) 66%, rgba(34,30,31,0) 84%);
}
.e-con.lgdla-cell__overlay { position: relative; z-index: 2; }
.lgdla-cell .lgdla-cell__caption, .lgdla-cell .lgdla-cell__caption p { color: var(--c-on-dark); font-family: var(--f-title); font-size: var(--fs-small); line-height: 1.45; margin: 0; }
.lgdla-cell .lgdla-cell__caption strong { font-weight: 400; font-size: 1.15em; }
.lgdla-dash { display: block; width: 22px; height: 2px; background: var(--c-gold); margin-bottom: 10px; }

/* Textes des cartes blanches */
.lgdla-cell__title .elementor-heading-title {
  font-size: clamp(1.35rem, .85rem + 1.2vw, 2.05rem); line-height: 1.12; letter-spacing: var(--ls-h3);
}
.lgdla-cell__text, .lgdla-cell__text p { font-size: clamp(.84rem, .5rem + .4vw, .94rem); line-height: 1.5; margin: 0; max-width: none; }
.lgdla-cell__text--story p { font-size: clamp(.78rem, .45rem + .42vw, .98rem); line-height: 1.5; }
.e-con.lgdla-cell--d .elementor-widget-button { flex: 0 0 auto; }
/* Récit : la colonne centrale n'a que 5 colonnes ; le bouton passe sous le texte (desktop) pour lui laisser toute la largeur */
@media (min-width: 1025px) {
  .e-con.lgdla-cell--d { flex-direction: column !important; align-items: flex-start !important; justify-content: space-between; gap: 10px; padding: clamp(14px, 1.3vw, 22px) clamp(18px, 1.9vw, 30px); }
  .e-con.lgdla-cell--d .elementor-widget-button .elementor-button { padding: .8em 1.3em; }
}

/* Légende / titre dans la grande photo : n'apparaît qu'une fois la photo réduite (animée en JS) */
.lgdla-cell__eyebrow .elementor-heading-title, .lgdla-cell__eyebrow { color: var(--c-on-dark); }
.lgdla-cell__hero-title .elementor-heading-title {
  color: var(--c-on-dark);
  font-size: clamp(1.5rem, .8rem + 1.9vw, 2.6rem); line-height: 1.1; letter-spacing: var(--ls-h2);
  max-width: 17ch; text-wrap: balance;
}

/* Cases d'information (h, i, j, k) : une information chacune, couleurs de la charte (encre, or, or foncé), texte en bas, flèche en haut à droite.
   Toute la case est le lien (zone tactile = la case). Contrastes : or foncé / encre 5,9:1 ; or / encre 8,4:1 ; or sur encre 8,4:1. */
.e-con.lgdla-cell--info { justify-content: flex-end; box-shadow: none; container-type: inline-size; }
/* le widget et ses conteneurs ne sont pas positionnés : le lien étiré et la flèche se calent sur la case, pas sur le texte */
.e-con.lgdla-cell--info .elementor-widget, .e-con.lgdla-cell--info .elementor-widget-container, .e-con.lgdla-cell--info .elementor-shortcode { position: static; }
.e-con.lgdla-cell--ink { background: var(--c-ink); color: var(--c-on-dark); }
.e-con.lgdla-cell--gold { background: var(--c-gold); color: var(--c-ink); }
.e-con.lgdla-cell--gold-dark { background: var(--c-gold-dark); color: var(--c-ink); }
.lgdla-info, .lgdla-info p { color: inherit; font-size: clamp(.875rem, .8rem + .22vw, 1rem); line-height: 1.4; margin: 0; max-width: none; text-wrap: balance; }
.lgdla-cell--ink .lgdla-info, .lgdla-cell--ink .lgdla-info p { color: rgba(248, 247, 245, .9); }
.lgdla-info a { display: block; color: inherit; text-decoration: none; }
.lgdla-info a::before { content: ''; position: absolute; inset: 0; z-index: 1; }             /* toute la case est cliquable */
.lgdla-info a::after {                                                                         /* flèche dessinée (masque), même que les boutons */
  content: ''; position: absolute; top: clamp(14px, 1.4vw, 22px); right: clamp(14px, 1.4vw, 22px); width: 20px; height: 20px;
  background: currentColor; -webkit-mask: var(--lg-arrow) center / contain no-repeat; mask: var(--lg-arrow) center / contain no-repeat;
  transition: transform var(--t-mid) var(--ease-out);
}
.lgdla-info strong {
  display: block; margin: .1em 0 .3em; font-family: var(--f-title); font-weight: 400; letter-spacing: -.02em; line-height: 1.04;
  font-size: clamp(1.2rem, 4.6vw, 1.6rem); text-wrap: balance; color: var(--c-ink);
}
.lgdla-cell--ink .lgdla-info strong { color: var(--c-gold); }
/* desktop : la taille suit la largeur de la case (« 2 chambres » tient sur une ligne, « 99 € la nuit » passe sur deux) */
@media (min-width: 1025px) {
  .lgdla-info strong { font-size: clamp(1.1rem, calc(100cqi / 6.4), 2.3rem);   /* cqi = largeur utile de la case (rembourrage exclu) */ }
}
.lgdla-info__k { display: block; font-size: .82em; opacity: .85; }
.lgdla-info a:focus-visible { outline: 2px solid currentColor; outline-offset: -6px; border-radius: 18px; }
@media (hover: hover) { .lgdla-info a:hover::after { transform: translate(2px, -2px); } }
.e-con.lgdla-cell--k:not(:has(p)) { display: none; }                                           /* pas de note Google disponible : la case disparaît */

/* Tablette : 2 colonnes, pas d'épinglage */
@media (max-width: 1024px) {
  .e-con.lgdla-bento { min-height: 0; padding: 48px var(--gutter) 56px; }   /* la bande des labels est juste au-dessus : pas de marge de header à réserver ; bords = gouttière de la page */
  .e-con.lgdla-bento__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: none; grid-auto-rows: auto; height: auto; gap: 16px; }
  .e-con.lgdla-cell--a, .e-con.lgdla-cell--b, .e-con.lgdla-cell--c, .e-con.lgdla-cell--d,
  .e-con.lgdla-cell--f, .e-con.lgdla-cell--h, .e-con.lgdla-cell--i, .e-con.lgdla-cell--j, .e-con.lgdla-cell--k { grid-column: auto; grid-row: auto; }
  .e-con.lgdla-cell--c { grid-column: 1 / -1; order: 1; min-height: 56vw; }
  .e-con.lgdla-cell--a { order: 2; }
  .e-con.lgdla-cell--h { order: 3; }
  .e-con.lgdla-cell--i { order: 4; }
  .e-con.lgdla-cell--j { order: 5; }
  .e-con.lgdla-cell--b { order: 6; min-height: 420px; }
  .e-con.lgdla-cell--f { order: 7; min-height: 420px; }
  .e-con.lgdla-cell--k { order: 8; grid-column: 1 / -1; }
  .e-con.lgdla-cell--d { order: 9; grid-column: 1 / -1; }
  .e-con.lgdla-cell--info { min-height: 190px; }
}
/* Mobile : une colonne */
@media (max-width: 767px) {
  .e-con.lgdla-bento { padding: 32px var(--gutter) 40px; }
  .e-con.lgdla-bento__grid { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .e-con.lgdla-cell { border-radius: 20px; }
  .e-con.lgdla-cell--c { min-height: 78vw; }
  .e-con.lgdla-cell--b, .e-con.lgdla-cell--f { min-height: 360px; grid-column: auto; }
  .e-con.lgdla-cell--info { min-height: 150px; grid-column: auto; }
  .e-con.lgdla-cell--d .elementor-widget-button, .e-con.lgdla-cell--d .elementor-button { width: 100%; }
  .e-con.lgdla-cell--d .elementor-button { justify-content: center; }
}

/* ---------- Nature : texte à gauche | photo carrée à droite -------------------------------
   Gabarit client (14/10/2026, 2e version) : titre, sous-titre, paragraphes, UN bouton ; photo carrée.
   Desktop : le bouton est calé en bas de la colonne (margin-top:auto), donc au niveau du bas de la photo ;
   la photo s'étire à la hauteur du texte (align-items: stretch) mais reste au moins carrée.
   ≤ 1024 px : la colonne texte devient « display: contents » : ses blocs se réordonnent autour de la photo
   → titre + sous-titre, photo, texte, bouton.                                                              */

.e-con.lgdla-nature { align-items: stretch; }
.e-con.lgdla-nature__text, .e-con.lgdla-nature__photo { min-width: 0; }
.lgdla-nature__sub .elementor-heading-title {
  font-family: var(--f-body);                 /* sous-titre en Lora : seul le titre est en Nova Mono */
  font-size: var(--fs-lead); line-height: var(--lh-lead); letter-spacing: 0;
  color: var(--c-muted);
}
.e-con.lgdla-nature__text .elementor-widget-button { margin-top: auto; }
/* Carrée au minimum ; dès que le texte est plus haut, la photo suit sa hauteur (height:100% prend le dessus sur le ratio)
   pour que son bord bas retombe au niveau du bouton, comme dans le gabarit. Le rayon porte sur le conteneur (overflow du parallax). */
.lgdla-nature__photo .elementor-widget-image { width: 100%; height: 100%; aspect-ratio: 1 / 1; border-radius: var(--r-sm); }
.lgdla-nature__photo .elementor-widget-container { height: 100%; }
.e-con .lgdla-nature__photo img { width: 100%; height: 100% !important; object-fit: cover; object-position: 42% 50%; }
@media (max-width: 1024px) {
  .e-con.lgdla-nature__text { display: contents; }
  .e-con.lgdla-nature { gap: 32px; }
  .e-con.lgdla-nature__head { order: 1; }
  .e-con.lgdla-nature__photo { order: 2; }
  .e-con .elementor-widget.lgdla-nature__body { order: 3; }          /* Elementor pose son propre « order » sur les widgets */
  .e-con .elementor-widget.lgdla-nature__cta { order: 4; margin-top: 0 !important; }
  .lgdla-nature__photo .elementor-widget-image { height: auto; aspect-ratio: 4 / 3; }
}

/* ---------- Parallaxe douce (desktop uniquement, pilotée par le JS) ---------- */

.lgdla-parallax { overflow: hidden; }
.lgdla-parallax img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lgdla-js:not(.lgdla-editing) .lgdla-parallax img { transform: scale(1.1); }
@media (max-width: 1024px) { .lgdla-js .lgdla-parallax img { transform: none !important; } }

/* ---------- Respiration : une photo, rien d'autre --------------------------- */

.e-con.lgdla-breath { min-height: 60vh; min-height: 60svh; }
@media (max-width: 1024px) { .e-con.lgdla-breath { min-height: 50vh; min-height: 50svh; } }
@media (max-width: 767px)  { .e-con.lgdla-breath { min-height: 42vh; min-height: 42svh; } }

/* ---------- Sanctuaire : grande photo + petite photo à cheval sur son bord gauche ----------
   Modèle fourni par le client (13/10/2026) : photo portrait arrondie calée à droite ; seconde photo,
   plus petite, qui déborde vers le texte à ~30 % de la hauteur, cerclée d'un filet clair.
   Cotes en % du conteneur : la composition garde ses proportions à toutes les largeurs.
   Réserve : 16 % de vide à gauche de la grande photo, + l'espace entre colonnes, pour le débord. */

.e-con.lgdla-overlap { position: relative; align-items: flex-end; }       /* grande photo calée à droite */
.e-con.lgdla-overlap .elementor-widget.lgdla-overlap__a { width: 84%; }   /* largeur posée avant chargement : pas de saut de mise en page */
/* « .e-con » en préfixe : Elementor pose border-radius:0 sur « .elementor img », chargé après ce fichier */
.e-con .lgdla-overlap__a img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 12px; display: block; }
.e-con.lgdla-overlap .elementor-widget.lgdla-overlap__b { position: absolute; top: 30%; left: -4%; width: 48%; z-index: 2; }
.e-con .lgdla-overlap__b img {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover; display: block;
  border: 6px solid var(--c-bg); border-radius: 16px;
  box-shadow: 0 14px 32px -16px rgba(34, 30, 31, .38);
}
/* Colonne unique (tablette / mobile) : on borne la composition pour que la grande photo ne devienne pas géante */
@media (max-width: 1024px) { .e-con.lgdla-overlap { max-width: 640px; margin-inline: auto; } }

/* ---------- Cuisine « À table » : bannière terrasse, potager qui déborde, texte, trois repères ----------
   Desktop : la bannière (21/9) porte le titre ; la photo du potager (4/5) remonte de 120 px sur la bannière,
   le texte s'installe à sa droite. Tablette / mobile : tout s'empile, sans débord (pas de chevauchement tactile). */

.e-con.lgdla-table__banner {
  position: relative; overflow: hidden; isolation: isolate;
  min-height: clamp(360px, 38vw, 520px);
  padding: clamp(24px, 4vw, 56px);
  border-radius: 28px;
  color: var(--c-on-dark);
}
.e-con.lgdla-table__banner .elementor-widget.lgdla-table__banner-img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; z-index: 0; }
.lgdla-table__banner-img .elementor-widget-container { height: 100%; }
.lgdla-table__banner-img img { width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: 50% 62%; display: block; border-radius: 0; }
/* Voile bas : plancher de contraste du titre blanc (≥ 4,5:1 même sur le ciel clair de la photo) */
.e-con.lgdla-table__banner::before {   /* .e-con:: before d'Elementor (content: var(--background-overlay)) l'emportait : le voile n'existait pas */
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(0deg, rgba(34,30,31,.80) 0%, rgba(34,30,31,.68) 46%, rgba(34,30,31,.40) 74%, rgba(34,30,31,.10) 100%);
}
.lgdla-table__banner .elementor-widget-heading { position: relative; z-index: 2; }
.lgdla-table__title .elementor-heading-title {
  color: var(--c-on-dark);
  font-size: var(--fs-h1); line-height: var(--lh-h1); letter-spacing: var(--ls-h1);
  max-width: 14ch;
}
/* Desktop : le titre s'aligne sur la colonne de texte (même retrait que le potager + son écart), le potager déborde sous la bannière sans le couvrir */
@media (min-width: 1025px) {
  .e-con.lgdla-table__banner { padding-left: calc(min(36%, 400px) + 80px); }
  .lgdla-table__title .elementor-heading-title { max-width: 16ch; }
}

.e-con.lgdla-table__body { padding-top: 0; position: relative; z-index: 2; }
.e-con .elementor-widget.lgdla-table__photo { flex: 0 0 auto; width: min(36%, 400px); margin-top: -120px; }
.e-con .lgdla-table__photo img {
  width: 100%; aspect-ratio: 4 / 5; object-fit: cover; display: block;
  border: 8px solid var(--c-bg); border-radius: 20px;
  box-shadow: 0 24px 48px -28px rgba(34, 30, 31, .45);
}
.e-con.lgdla-table__text { flex: 1 1 0; min-width: 0; padding-top: 72px; }

/* « Voix » de Katinka : le premier paragraphe en tête, en grand, en Lora italique */
.lgdla-table__lead, .lgdla-table__lead p {
  font-family: var(--f-body); font-style: italic;
  font-size: var(--fs-quote); line-height: var(--lh-quote);
  max-width: 34em; text-wrap: pretty;
}

/* Trois repères : filet doré, mot en Nova Mono */
.e-con.lgdla-table__marks { padding-top: 24px; border-top: 1px solid var(--c-border); }
.e-con.lgdla-table__mark { flex: 1 1 0; min-width: 0; }
.lgdla-table__dash .lgdla-dash { margin: 0; width: 28px; }
.lgdla-table__mark-title .elementor-heading-title {
  font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4);
}
.lgdla-table__mark:nth-child(2) { transition-delay: .08s; }
.lgdla-table__mark:nth-child(3) { transition-delay: .16s; }

/* Le potager se dévoile de bas en haut : l'unique moment « écrit » de la section */
.lgdla-js:not(.lgdla-editing) .lgdla-unveil img { clip-path: inset(0 0 100% 0); transition: clip-path 1.1s var(--ease-out); }   /* sur l'enfant : l'observateur ignore un élément entièrement rogné */
.lgdla-js:not(.lgdla-editing) .lgdla-unveil.is-in img { clip-path: inset(0 0 0 0); }

@media (max-width: 1024px) {
  .e-con.lgdla-table__body { flex-direction: column; gap: 40px; }
  .e-con .elementor-widget.lgdla-table__photo { width: 100%; max-width: 440px; margin-top: 40px; }
  .e-con.lgdla-table__text { padding-top: 0; width: 100%; }
  .e-con .lgdla-table__photo img { aspect-ratio: 4 / 3; }
}
@media (max-width: 767px) {
  .e-con.lgdla-table__banner { min-height: 320px; border-radius: 20px; }
  .e-con .elementor-widget.lgdla-table__photo { margin-top: 32px; max-width: none; }
  .e-con .lgdla-table__photo img { border-width: 6px; border-radius: 16px; }
}

/* ---------- Appel final : feuille arrondie sur la façade --------------------------------------------- */

.e-con.lgdla-reserver {
  position: relative; overflow: hidden; isolation: isolate;
  width: calc(100% - 2 * var(--gutter)) !important;
  margin-inline: auto;
  border-radius: 32px;
  color: var(--c-on-dark);
}
.e-con.lgdla-reserver::before {          /* voile encre uniforme : texte blanc ≥ 4,5:1 sur toute la photo */
  content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(34,30,31,.78) 0%, rgba(34,30,31,.84) 100%);
}
.e-con.lgdla-reserver > .e-con-inner, .e-con.lgdla-reserver > .elementor-element { position: relative; z-index: 1; }
.e-con.lgdla-reserver__inner { width: 100%; max-width: 820px; margin-inline: auto; }
.lgdla-reserver .elementor-heading-title,
.lgdla-reserver .lgdla-prose, .lgdla-reserver .lgdla-prose p { color: var(--c-on-dark); }
.lgdla-reserver .lgdla-prose p { color: rgba(248, 247, 245, .86); }   /* 12:1 sur le voile */
/* Mot de la fin, après les boutons : séparé de l'appel à l'action par une vraie pause + un filet */
.lgdla-reserver__sub { margin-top: var(--s-8); padding-top: var(--s-8); border-top: 1px solid var(--c-on-dark-border); width: 100%; }
@media (max-width: 767px) {
  .lgdla-reserver__sub { margin-top: var(--s-6); padding-top: var(--s-7); }
  .e-con.lgdla-reserver { border-radius: 24px; }
}

/* ---------- Réseaux : un bloc par réseau ------------------------------------------------------------- */

.e-con.lgdla-social { border-top: 0; }
.e-con.lgdla-social__block { padding-block: 32px; border-top: 1px solid var(--c-border); }
.e-con.lgdla-social__block:first-child { padding-top: 0; border-top: 0; }
.lgdla-social__name .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.lgdla-social__text, .lgdla-social__text p { margin: 0; max-width: 52ch; text-wrap: pretty; }

/* ---------- Équipements : bande de pictogrammes sous les chambres ---------------------------------
   Cinq équipements (parking, wifi, animaux non acceptés, terrasse, salon commun) : pictogramme « duotone » (contour or foncé, aplats or clair,
   touches d'or plein : voir lg_amenity_svg() dans build/lg-amenity-svg.php) au-dessus de son libellé. Aucune tuile, aucune ombre, aucun survol.
   5 colonnes (desktop) · 3 + 2 centrées (tablette) · 2 + 2 + 1 (mobile) : la dernière rangée reste centrée.
   Aucun filet : la bande se fond dans la page, entre les chambres et la nature.                          */

.e-con.lgdla-amenities { --lg-amenity-gap: 24px; }
/* L'écart horizontal doit être celui que supposent les largeurs ci-dessous (Elementor en impose un autre) */
.e-con.lgdla-amenities > .e-con-inner { column-gap: var(--lg-amenity-gap) !important; }
.e-con.lgdla-amenity {
  width: calc((100% - 4 * var(--lg-amenity-gap)) / 5 - .5px);     /* -.5 px : évite qu'un arrondi fasse passer le dernier à la ligne */
  flex: 0 0 auto;
  min-width: 0;
  text-align: center;
}
/* Chaque pictogramme est posé dans une case aux coins arrondis (fond blanc, filet de la charte), comme les cartes du bento */
.e-con .elementor-widget.lgdla-amenity__icon { position: relative; width: 112px; height: 112px; margin-inline: auto; border-radius: 28px; background: #fff; box-shadow: inset 0 0 0 1px var(--c-border); }
.e-con .elementor-widget.lgdla-amenity__icon, .lgdla-amenity__icon .elementor-widget-container { display: flex; justify-content: center; align-items: center; }   /* Elementor pose le SVG directement dans le widget : on centre les deux cas */
.lgdla-amenity__icon .elementor-widget-container { width: 100%; height: 100%; }
.lgdla-amenity__icon svg { display: block; width: 64px; height: 64px; }
.lgdla-amenity__title .elementor-heading-title {
  font-size: clamp(.9375rem, .88rem + .2vw, 1.0625rem); line-height: 1.3; letter-spacing: var(--ls-h4);
  text-wrap: balance;
}
/* Survol (souris, hors mouvement réduit) : la case se soulève et se teinte d'or, et chaque pictogramme joue son petit geste
   (parking : le panneau oscille · wifi : les arcs s'allument · patte : elle tape · parasol : il se balance · canapé : il rebondit). */
.e-con .elementor-widget.lgdla-amenity__icon { transition: transform var(--t-mid) var(--ease-out), box-shadow var(--t-mid) var(--ease-out), background-color var(--t-mid) var(--ease); }
.lgdla-amenity__icon svg [class^="ic-"] { transform-box: view-box; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .lgdla-amenity:hover .elementor-widget.lgdla-amenity__icon {
    transform: translateY(-6px);
    background-color: color-mix(in srgb, var(--c-gold) 14%, #fff);
    box-shadow: inset 0 0 0 1px var(--c-gold-dark), 0 16px 26px -18px rgba(200, 148, 40, .6);
  }
  .lgdla-amenity:hover .ic-sign  { transform-origin: 32px 44px; animation: lgdla-ic-wobble .9s var(--ease-out) 2; }
  .lgdla-amenity:hover .ic-a1, .lgdla-amenity:hover .ic-a2, .lgdla-amenity:hover .ic-a3 { animation: lgdla-ic-arc 1s ease-in-out 2; }
  .lgdla-amenity:hover .ic-a2 { animation-delay: .14s; }
  .lgdla-amenity:hover .ic-a3 { animation-delay: .28s; }
  .lgdla-amenity:hover .ic-paw   { transform-origin: 32px 36px; animation: lgdla-ic-pat .8s var(--ease-out) 2; }
  .lgdla-amenity:hover .ic-sway  { transform-origin: 32px 56px; animation: lgdla-ic-sway 1.6s ease-in-out 1; }
  .lgdla-amenity:hover .ic-sun   { transform-origin: 55px 9px; animation: lgdla-ic-pat .8s var(--ease-out) 2; }
  .lgdla-amenity:hover .ic-sofa  { animation: lgdla-ic-bounce .7s var(--ease-out) 2; }
}
@keyframes lgdla-ic-wobble { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-5deg); } 60% { transform: rotate(4deg); } }
@keyframes lgdla-ic-arc    { 0%, 100% { opacity: 1; } 45% { opacity: .15; } }
@keyframes lgdla-ic-pat    { 0%, 100% { transform: scale(1); } 40% { transform: scale(1.12); } }
@keyframes lgdla-ic-sway   { 0%, 100% { transform: rotate(0); } 30% { transform: rotate(-4deg); } 70% { transform: rotate(4deg); } }
@keyframes lgdla-ic-bounce { 0%, 100% { transform: translateY(0); } 40% { transform: translateY(-3px); } }
/* Légère cascade à l'apparition */
.lgdla-amenity:nth-child(2) { transition-delay: .06s; }
.lgdla-amenity:nth-child(3) { transition-delay: .12s; }
.lgdla-amenity:nth-child(4) { transition-delay: .18s; }
.lgdla-amenity:nth-child(5) { transition-delay: .24s; }

@media (max-width: 1024px) {
  .e-con.lgdla-amenity { width: calc((100% - 2 * var(--lg-amenity-gap)) / 3 - .5px); }
}
@media (max-width: 767px) {
  .e-con.lgdla-amenities { --lg-amenity-gap: 16px; }
  .e-con .elementor-widget.lgdla-amenity__icon { width: 92px; height: 92px; border-radius: 24px; }
  .lgdla-amenity__icon svg { width: 52px; height: 52px; }
  .e-con.lgdla-amenity { width: calc((100% - var(--lg-amenity-gap)) / 2 - .5px); }
  .lgdla-amenity:nth-child(n) { transition-delay: 0s; }
}

/* ---------- Footer (noir) ------------------------------------------------------------------
   Gabarit : grand titre + réseaux à gauche, coordonnées à droite · 4 colonnes · barre de fin.
   Template Ultimate Addons « LGDLA Footer » (voir build/home-page.php). Chargé sur toutes les pages :
   les rembourrages sont posés explicitement (pas de dépendance à .lgdla-page).                       */

.e-con.lgdla-footer {
  --lg-line: var(--c-on-dark-border);
  --lg-mute: rgba(248, 247, 245, .55);      /* plancher AA sur fond noir */
  width: 100%;
  background: var(--c-black);
  color: var(--c-on-dark);
  padding: 112px 40px 32px;
  align-items: center;
}
.lgdla-footer .e-con { padding: 0; }
.e-con.lgdla-footer__inner { width: 100%; max-width: var(--w-content); }

/* Logo du footer : posé sur un disque clair (le logo est détouré, ses traits sombres disparaîtraient sur le fond noir) */
.lgdla-footer .elementor-widget-image.lgdla-footer__logo { position: relative; width: 172px; height: 172px; flex: 0 0 auto; border-radius: 50%; overflow: hidden; background: var(--c-bg); }   /* Elementor n'ajoute pas toujours .elementor-widget-container : le disque est posé sur le widget lui-même */
.lgdla-footer .lgdla-footer__logo a { display: block; width: 100%; height: 100%; border-radius: 50%; }
.lgdla-footer .lgdla-footer__logo img { position: absolute; left: 50%; top: 51%; width: 104% !important; max-width: none !important; height: auto !important; transform: translate(-50%, -50%); border-radius: 0; }
.lgdla-footer .lgdla-footer__logo a:focus-visible { outline: 2px solid var(--c-gold); outline-offset: 4px; }
@media (max-width: 767px) {
  .lgdla-footer .elementor-widget-image.lgdla-footer__logo { width: 140px; height: 140px; }
}

.e-con.lgdla-footer__top {
  display: grid !important;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 64px;
  align-items: start;
  padding-bottom: 80px;
}
.e-con.lgdla-footer__info { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 40px; padding-top: 12px; }
.e-con.lgdla-footer__cols {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 40px;
  padding: 56px 0;
  border-top: 1px solid var(--lg-line);
}
.e-con.lgdla-footer__bottom {
  display: flex !important; flex-direction: row !important; justify-content: space-between; align-items: center; gap: 24px;
  padding-top: 28px;
  border-top: 1px solid var(--lg-line);
}

/* Titre */
.lgdla-footer__title .elementor-heading-title {
  font-size: clamp(2.5rem, 1rem + 5.2vw, 5.5rem);
  line-height: 1.02;
  letter-spacing: -.04em;
  color: var(--c-on-dark);
  max-width: 12ch;
}

/* Repère <main id="content"> posé par lgdla-front.php : cible du lien d'évitement, sans cadre de focus */
.lgdla-main:focus { outline: none; }

/* Réseaux : pastilles rondes à filet fin, dorées au survol */
.lgdla-footer__social, .lgdla-footer__social .elementor-widget-container { text-align: left; }
.lgdla-footer__social .elementor-social-icons-wrapper { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 12px; }
.lgdla-footer__social .elementor-grid-item { margin: 0; }
.lgdla-footer__social .elementor-social-icon {
  width: 48px; height: 48px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: transparent !important;
  border: 1px solid rgba(248, 247, 245, .24);
  transition: background-color var(--t-mid) var(--ease), border-color var(--t-mid) var(--ease), transform var(--t-mid) var(--ease-out);
}
.lgdla-footer__social .elementor-social-icon i { color: var(--c-on-dark); font-size: 18px; transition: color var(--t-mid) var(--ease); }
/* Icônes SVG en ligne (option Elementor « Font Awesome Inline ») : même rendu que la police d'icônes */
.lgdla-footer__social .elementor-social-icon svg { width: 18px; height: 18px; fill: var(--c-on-dark); transition: fill var(--t-mid) var(--ease); }
.lgdla-footer__social .elementor-social-icon:focus-visible,
.lgdla-footer__social .elementor-social-icon:active { background: var(--c-gold) !important; border-color: var(--c-gold); }
.lgdla-footer__social .elementor-social-icon:focus-visible i,
.lgdla-footer__social .elementor-social-icon:active i { color: var(--c-ink); }
.lgdla-footer__social .elementor-social-icon:focus-visible svg,
.lgdla-footer__social .elementor-social-icon:active svg { fill: var(--c-ink); }
@media (hover: hover) {
  .lgdla-footer__social .elementor-social-icon:hover { background: var(--c-gold) !important; border-color: var(--c-gold); transform: translateY(-2px); }
  .lgdla-footer__social .elementor-social-icon:hover i { color: var(--c-ink); }
  .lgdla-footer__social .elementor-social-icon:hover svg { fill: var(--c-ink); }
}

/* Libellés, textes, listes */
.e-con.lgdla-footer__col { min-width: 0; }
.lgdla-footer .lgdla-footer__label .elementor-heading-title {
  font-family: var(--f-title);
  font-size: .78rem; line-height: 1.4; letter-spacing: var(--ls-eyebrow); text-transform: uppercase;
  color: var(--lg-mute);
}
.lgdla-footer .lgdla-footer__text,
.lgdla-footer .lgdla-footer__text p { color: rgba(248, 247, 245, .92); font-size: .98rem; line-height: 1.6; margin: 0; max-width: none; }
.lgdla-footer .lgdla-footer__text p + p { margin-top: .8em; }
.lgdla-footer .lgdla-footer__text ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }

/* Liens : soulignement qui se dessine au survol, or */
.lgdla-footer .elementor-widget-text-editor a {
  color: inherit; text-decoration: none;
  background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
  transition: background-size var(--t-mid) var(--ease-out), color var(--t-fast) var(--ease);
}
.lgdla-footer .elementor-widget-text-editor a:focus-visible { color: var(--c-gold); background-size: 100% 1px; }
@media (hover: hover) { .lgdla-footer .elementor-widget-text-editor a:hover { color: var(--c-gold); background-size: 100% 1px; } }
.lgdla-footer a:focus-visible { outline: 2px solid var(--c-on-dark); outline-offset: 4px; border-radius: 2px; }

/* Barre de fin */
.lgdla-footer .lgdla-footer__copy, .lgdla-footer .lgdla-footer__copy p,
.lgdla-footer .lgdla-footer__totop, .lgdla-footer .lgdla-footer__totop p { color: var(--lg-mute); font-size: .88rem; margin: 0; }
/* « / '' » : texte alternatif vide, la flèche décorative n'est pas lue par les lecteurs d'écran (1re ligne = repli) */
.lgdla-footer .lgdla-footer__totop a::before { content: '↑'; content: '↑' / ''; margin-right: .6em; font-family: system-ui, sans-serif; }
@media (hover: hover) { .lgdla-footer .lgdla-footer__totop a:hover { color: var(--c-on-dark); } }

@media (max-width: 1024px) {
  .e-con.lgdla-footer { padding: 80px 32px 28px; }
  .e-con.lgdla-footer__top { grid-template-columns: minmax(0, 1fr); gap: 56px; padding-bottom: 64px; }
  .e-con.lgdla-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px 32px; padding: 48px 0; }
}
@media (max-width: 767px) {
  .e-con.lgdla-footer { padding: 64px 20px 24px; }
  .e-con.lgdla-footer__top { gap: 48px; padding-bottom: 48px; }
  .e-con.lgdla-footer__info { grid-template-columns: minmax(0, 1fr); gap: 32px; padding-top: 0; }
  .e-con.lgdla-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 20px; padding: 40px 0; }
  .e-con.lgdla-footer__cols > .lgdla-footer__col:nth-child(n+3) { grid-column: 1 / -1; }   /* Navigation + Informations côte à côte, le reste pleine largeur */
  .e-con.lgdla-footer__bottom { flex-direction: column !important; align-items: flex-start; gap: 12px; }
}

/* ---------- Page « Les chambres » ------------------------------------------------------------------
   Introduction · deux chambres (colonne texte + galerie de 3 photos) · compris · salon · engagements · appel final.
   Colonnes, marges et textes : build/chambres-page.php. Les photos de chambre sont en portrait (3:4) :
   la galerie les recadre autour d'un point d'ancrage (classes lgdla-pos-X-Y → --pos).                          */

/* Surtitres : gris discret (5,2:1 sur le fond), sauf sur photo */
:is(.lgdla-ch-intro, .lgdla-ch-room, .lgdla-ch-inclus, .lgdla-ch-salon, .lgdla-ch-eco) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }

.lgdla-prose p.lgdla-ch-lead { font-size: var(--fs-lead); line-height: var(--lh-lead); max-width: 30ch; }
.e-con.lgdla-ch-jump { padding-top: 4px; }

/* Une chambre : texte | galerie (inversés d'une chambre à l'autre) */
.e-con.lgdla-ch-room { scroll-margin-top: 104px; }
.e-con.lgdla-ch-room__text { min-width: 0; }

/* Galerie : une grande photo à gauche, deux plus petites empilées à droite (5:4 desktop) */
.e-con.lgdla-ch-gallery {
  display: grid !important;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 12px;
  aspect-ratio: 5 / 4;
}
.e-con.lgdla-ch-gallery > .elementor-widget {
  width: 100%; height: 100%; min-height: 0; margin: 0;
  overflow: hidden; border-radius: 16px;       /* le rayon sur le widget : Elementor remet border-radius:0 sur « .elementor img » */
}
.lgdla-ch-shot .elementor-widget-container { height: 100%; }
/* Image posée en absolu : sa hauteur d'origine (portrait 3:4) ne pousse plus la grille, la galerie garde son ratio à toute largeur */
.e-con .elementor-widget.lgdla-ch-shot { position: relative; }
.e-con .lgdla-ch-shot img {
  position: absolute; inset: 0;
  width: 100%; height: 100% !important; max-width: none;
  object-fit: cover; object-position: var(--pos, 50% 50%);
  display: block; border-radius: 0;
  transition: transform var(--t-photo) var(--ease-out);
}
.e-con .lgdla-ch-shot--main { grid-column: 1; grid-row: 1 / span 2; }
.e-con .lgdla-ch-shot--a    { grid-column: 2; grid-row: 1; }
.e-con .lgdla-ch-shot--b    { grid-column: 2; grid-row: 2; }
.lgdla-pos-50-40 { --pos: 50% 40%; }
.lgdla-pos-50-45 { --pos: 50% 45%; }
.lgdla-pos-50-50 { --pos: 50% 50%; }
.lgdla-pos-50-55 { --pos: 50% 55%; }
.lgdla-pos-50-60 { --pos: 50% 60%; }
@media (hover: hover) { .lgdla-ch-shot:hover img { transform: scale(1.03); } }

/* Fiche technique : filets fins, libellé en Nova Mono discret, valeur en Lora */
.lgdla-ch-facts dl { margin: 0; border-top: 1px solid var(--c-border); }
.lgdla-ch-facts dl > div {
  display: grid; grid-template-columns: minmax(7.5rem, 9.5rem) minmax(0, 1fr); gap: 16px;
  align-items: baseline; padding: 10px 0; border-bottom: 1px solid var(--c-border);
}
.lgdla-ch-facts dt {
  font-family: var(--f-title); font-size: var(--fs-eyebrow); letter-spacing: var(--ls-eyebrow);
  text-transform: uppercase; line-height: 1.4; color: var(--c-muted); margin: 0;
}
.lgdla-ch-facts dd { margin: 0; font-size: var(--fs-small); line-height: 1.5; }

/* Compris dans le séjour */
.lgdla-ch-inclus__list ul { margin: 0; }
.lgdla-ch-inclus__list li { margin: .7em 0; }
.lgdla-prose.lgdla-ch-note p, .lgdla-ch-note p { color: var(--c-muted); font-size: var(--fs-small); line-height: 1.6; margin: 0; }

/* Salon commun : bandeau photo, texte dessous (aucun texte sur photo : lisible à toute largeur) */
.e-con .elementor-widget.lgdla-ch-salon__img { width: 100%; aspect-ratio: 2 / 1; overflow: hidden; border-radius: 28px; }
.lgdla-ch-salon__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-ch-salon__img img { width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: 50% 55%; display: block; border-radius: 0; }

/* Trois engagements : pas de cartes, un filet doré, un titre, un texte */
.e-con.lgdla-ch-marks { padding-top: 40px; border-top: 1px solid var(--c-border); }
.e-con.lgdla-ch-mark { flex: 1 1 0; min-width: 0; }
.lgdla-ch-mark__title .elementor-heading-title { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4); }
.lgdla-ch-mark__text, .lgdla-ch-mark__text p { margin: 0; max-width: 40ch; text-wrap: pretty; }
.lgdla-ch-mark:nth-child(2) { transition-delay: .08s; }
.lgdla-ch-mark:nth-child(3) { transition-delay: .16s; }

/* Appel final : respire avant le pied de page noir */
.e-con.lgdla-ch-cta { margin-bottom: clamp(48px, 7vw, 96px); }

/* Tablette : la colonne texte passe en « display: contents » → titre, photos, texte, fiche, lien */
@media (max-width: 1024px) {
  .e-con.lgdla-ch-room { scroll-margin-top: 88px; }
  /* Section « boxed » : le flex est porté par .e-con-inner. stretch : sans lui, la fiche et le lien (largeur auto) se centraient */
  .e-con.lgdla-ch-room > .e-con-inner { gap: 32px; align-items: stretch; }
  .e-con.lgdla-ch-room__text { display: contents; }
  .e-con.lgdla-ch-room__head { order: 1; }
  .e-con.lgdla-ch-room__gallery { order: 2; }
  .e-con .elementor-widget.lgdla-ch-room__body { order: 3; }          /* Elementor pose son propre « order » sur les widgets */
  .e-con .elementor-widget.lgdla-ch-facts { order: 4; }
  .e-con .elementor-widget.lgdla-ch-room__cta { order: 5; }
  /* Elementor donne aux widgets une largeur issue de l'alignement du conteneur d'origine (centré) : on la force à 100 % */
  .e-con .elementor-widget.lgdla-ch-room__body, .e-con .elementor-widget.lgdla-ch-facts, .e-con .elementor-widget.lgdla-ch-room__cta { width: 100%; }
  .e-con .elementor-widget.lgdla-ch-salon__img { aspect-ratio: 16 / 9; }
}
/* Mobile : la grande photo en pleine largeur (4:5), les deux autres côte à côte (carrées) */
@media (max-width: 767px) {
  .e-con.lgdla-ch-room > .e-con-inner { gap: 24px; }
  .e-con.lgdla-ch-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: none; aspect-ratio: auto; gap: 10px; }
  .e-con.lgdla-ch-gallery > .elementor-widget { height: auto; border-radius: 14px; }
  .e-con .lgdla-ch-shot--main { grid-column: 1 / -1; grid-row: 1; aspect-ratio: 4 / 5; }
  .e-con .lgdla-ch-shot--a { grid-column: 1; grid-row: 2; aspect-ratio: 1 / 1; }
  .e-con .lgdla-ch-shot--b { grid-column: 2; grid-row: 2; aspect-ratio: 1 / 1; }
  .lgdla-ch-facts dl > div { grid-template-columns: minmax(6.5rem, 8rem) minmax(0, 1fr); gap: 12px; }
  .e-con .elementor-widget.lgdla-ch-salon__img { aspect-ratio: 4 / 3; border-radius: 20px; }
  .lgdla-ch-mark:nth-child(n) { transition-delay: 0s; }
}
@media (prefers-reduced-motion: reduce) {
  .e-con .lgdla-ch-shot img { transition: none; transform: none !important; }
}

/* ---------- Page « Tarifs et réservations » (refonte du 14/10/2026) ---------------------------------------
   Hero « feuille encre » à trois photos · trois cartes tarifs (compteur GSAP) · phrase d'accroche qui se révèle au défilement +
   prestations en cartes + photo haute · galerie (widget Carrousel d'images d'Elementor) · chambres à pastilles + calendriers
   WP Simple Booking Calendar (couleurs d'origine du plugin) · réserver · questions pratiques (accordéon) · appel final.
   Contenu et colonnes : build/tarifs-page.php. Animations : initTarifs() dans lgdla-front.js.                              */

:is(.lgdla-tf-grille, .lgdla-tf-inclus, .lgdla-tf-dispo, .lgdla-tf-resa, .lgdla-tf-faq, .lgdla-tf-galerie) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }
.lgdla-pos-35-50 { --pos: 35% 50%; }

/* Hero : une feuille encre arrondie, calée sur la grille comme l'appel final de l'accueil ; la pilule du header flotte au-dessus */
.e-con.lgdla-tf-hero {
  width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto;
  position: relative; overflow: hidden; border-radius: 32px; color: var(--c-on-dark);
}
.e-con.lgdla-tf-hero__photos { align-items: flex-start; min-width: 0; }
.e-con .elementor-widget.lgdla-tf-ph { position: relative; flex: 1 1 0; width: auto; min-width: 0; overflow: hidden; border-radius: 20px; }
.lgdla-tf-ph .elementor-widget-container { height: 100%; }
.e-con .lgdla-tf-ph img {
  position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none;
  object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0;
}
/* Pas de transition CSS sur les éléments pilotés par GSAP (Elementor en pose une sur transform : mouvement en retard et valeurs d'arrivée faussées) */
.e-con .elementor-widget.lgdla-tf-ph, .lgdla-tf-hero__text > .elementor-widget, .lgdla-tf-hero__text > .e-con { transition: none; }
.e-con .elementor-widget.lgdla-tf-ph--1 { aspect-ratio: 3 / 4.3; margin-top: 64px; }
.e-con .elementor-widget.lgdla-tf-ph--2 { aspect-ratio: 3 / 4.7; }
.e-con .elementor-widget.lgdla-tf-ph--3 { aspect-ratio: 3 / 4.1; margin-top: 32px; }
.lgdla-tf-hero .elementor-heading-title { color: var(--c-on-dark); }
.lgdla-tf-hero .lgdla-tf-hero__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-tf-hero__lead p { color: var(--c-on-dark-70); max-width: 44ch; }
.lgdla-tf-hero__lead p.lgdla-tf-lead { font-family: var(--f-title); font-size: var(--fs-h4); line-height: 1.35; letter-spacing: var(--ls-h4); color: var(--c-on-dark); max-width: 22ch; }
.e-con.lgdla-tf-hero__text { min-width: 0; }

/* Trois cartes tarifs : le prix pour deux est l'information principale (grand), le prix pour une personne vient dessous */
.e-con.lgdla-tf-prices { align-items: stretch; }
.lgdla-tf-note, .lgdla-tf-note p { color: var(--c-muted); font-size: var(--fs-small); line-height: 1.6; max-width: 46ch; margin: 0; }
.e-con.lgdla-tf-price {
  flex: 1 1 0; min-width: 0; padding: 40px 36px 36px;
  background: #fff; border: 1px solid var(--c-border); border-radius: 28px;
  transition: transform var(--t-mid) var(--ease-out), box-shadow var(--t-mid) var(--ease-out);
}
.e-con.lgdla-tf-price::before { content: ''; position: absolute; top: -1px; left: 36px; width: 44px; height: 3px; background: var(--c-gold); border-radius: 0 0 3px 3px; }
.lgdla-tf-price__season .elementor-heading-title { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4); }
.lgdla-tf-price__num .elementor-heading-title { font-size: clamp(3.5rem, 2.2rem + 4.4vw, 5.5rem); line-height: 1; letter-spacing: -.045em; font-variant-numeric: tabular-nums; }
.lgdla-tf-price__for, .lgdla-tf-price__for p { margin: 0; color: var(--c-muted); font-size: var(--fs-small); }
.e-con .elementor-widget.lgdla-tf-price__one { margin-top: 10px; padding-top: 18px; border-top: 1px solid var(--c-border); width: 100%; }
.lgdla-tf-price__one p { margin: 0; font-size: var(--fs-body); }
.lgdla-tf-price__one strong { font-family: var(--f-title); font-weight: 400; font-size: var(--fs-h4); letter-spacing: var(--ls-h4); margin-right: .15em; }
.e-con .elementor-widget.lgdla-tf-price__when { margin-top: auto; padding-top: 10px; width: 100%; }
.lgdla-tf-price__when p { margin: 0; color: var(--c-muted); font-size: var(--fs-small); line-height: 1.55; text-wrap: pretty; }
.lgdla-tf-price:nth-child(2) { transition-delay: .08s; }
.lgdla-tf-price:nth-child(3) { transition-delay: .16s; }
@media (hover: hover) {
  .e-con.lgdla-tf-price:hover { transform: translateY(-4px); box-shadow: var(--sh-2); }
}

/* Prestations : phrase d'accroche (mots révélés au défilement), deux cartes, photo haute à droite */
.e-con.lgdla-tf-inclus__main { min-width: 0; }
.lgdla-tf-statement p { font-family: var(--f-body); font-size: clamp(1.5rem, 1rem + 1.9vw, 2.5rem); line-height: 1.28; letter-spacing: -.012em; max-width: 24em; margin: 0; color: var(--c-ink); text-wrap: pretty; }
.lgdla-word { display: inline; }
.e-con.lgdla-tf-cards { align-items: stretch; }
.e-con.lgdla-tf-card {
  flex: 1 1 0; min-width: 0; padding: 36px 32px 32px;
  background: #fff; border: 1px solid var(--c-border); border-radius: 28px;
}
.lgdla-tf-card__title .elementor-heading-title { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4); }
.lgdla-tf-card__list ul { margin: 0; }
.lgdla-tf-card__list li { margin: .75em 0; }
.e-con.lgdla-tf-card--ink { background: var(--c-ink); border-color: var(--c-ink); color: var(--c-on-dark); }
.lgdla-tf-card--ink .elementor-heading-title, .lgdla-tf-card--ink .lgdla-prose, .lgdla-tf-card--ink li { color: var(--c-on-dark); }
.e-con .elementor-widget.lgdla-tf-shoes { margin-top: auto; padding-top: 20px; border-top: 1px solid var(--c-border); width: 100%; }
.lgdla-tf-shoes p { margin: 0; font-size: var(--fs-small); line-height: 1.6; color: var(--c-ink); }
.e-con.lgdla-tf-tall { position: relative; overflow: hidden; border-radius: 28px; min-height: 560px; }
.e-con .elementor-widget.lgdla-tf-tall__img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.lgdla-tf-tall__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-tf-tall__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }

/* Galerie : le Carrousel d'images d'Elementor, la photo du centre en avant, les voisines atténuées (desktop) */
.e-con.lgdla-tf-galerie { overflow: hidden; }
.e-con .elementor-widget.lgdla-tf-carousel { width: 100%; max-width: 1500px; margin-inline: auto; padding-inline: var(--gutter); position: relative; }
.lgdla-tf-carousel .elementor-image-carousel-wrapper { overflow: visible; }
.lgdla-tf-carousel .swiper { overflow: hidden; padding: 28px 0; }
.lgdla-tf-carousel .swiper-slide { transition: transform .7s var(--ease-out), opacity .7s var(--ease-out); }
.e-con .lgdla-tf-carousel .swiper-slide-image { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 24px; display: block; }
@media (min-width: 1025px) {
  .lgdla-tf-carousel .swiper-slide { opacity: .5; transform: scale(.86); }
  .lgdla-tf-carousel .swiper-slide-next { opacity: 1; transform: scale(1); }
}
/* Flèches : pastilles blanches rondes, posées sur les photos voisines */
.lgdla-tf-carousel .elementor-swiper-button {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 52px; height: 52px; display: grid; place-items: center; border-radius: 50%;
  background: #fff; color: var(--c-ink); box-shadow: var(--sh-1); cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease-out);
}
.lgdla-tf-carousel .elementor-swiper-button-prev { left: calc(var(--gutter) + 12px); }
.lgdla-tf-carousel .elementor-swiper-button-next { right: calc(var(--gutter) + 12px); }
.lgdla-tf-carousel .elementor-swiper-button svg, .lgdla-tf-carousel .elementor-swiper-button i { width: 20px; height: 20px; font-size: 20px; fill: currentColor; color: var(--c-ink); }
/* Elementor impose sa propre couleur de flèche (gris clair, quasi invisible sur la pastille blanche) */
.lgdla-tf-carousel .elementor-swiper-button svg, .lgdla-tf-carousel .elementor-swiper-button svg path { fill: var(--c-ink) !important; }
.lgdla-tf-carousel .elementor-swiper-button:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 3px; background: var(--c-gold); }
@media (hover: hover) { .lgdla-tf-carousel .elementor-swiper-button:hover { background: var(--c-gold); } }

/* Chambres : grande photo à pastilles + texte, puis le calendrier dans une carte blanche */
.e-con.lgdla-tf-room { scroll-margin-top: 104px; }
.e-con.lgdla-tf-room__media { position: relative; border-radius: 28px; overflow: hidden; min-width: 0; }
.e-con .elementor-widget.lgdla-tf-room__photo { position: relative; width: 100%; aspect-ratio: 4 / 5; overflow: hidden; }
.lgdla-tf-room__photo .elementor-widget-container { height: 100%; }
.e-con .lgdla-tf-room__photo img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }
.e-con.lgdla-tf-chips { position: absolute; left: 20px; right: 20px; bottom: 20px; z-index: 2; }
.e-con .elementor-widget.lgdla-chip { width: auto; flex: 0 0 auto; }
.lgdla-chip .elementor-heading-title {
  display: inline-block; background: #fff; color: var(--c-ink); border-radius: var(--r-full);
  font-family: var(--f-title); font-size: .8125rem; line-height: 1.2; letter-spacing: .02em; padding: .65em 1.15em;
}
.e-con.lgdla-tf-room__text { min-width: 0; }
.e-con.lgdla-tf-cal { padding: 36px 36px 28px; background: #fff; border: 1px solid var(--c-border); border-radius: 28px; min-width: 0; }
.lgdla-tf-cal__title .elementor-heading-title { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4); }
.lgdla-cal .wpsbc-container { max-width: none; }
/* Couleurs d'origine du plugin (vert disponible, rouge réservé) conservées ; seul le chiffre passe en blanc pour rester lisible dessus (≥ 5:1) */
.lgdla-cal .wpsbc-date:not(.wpsbc-gap) .wpsbc-date-number { color: #fff; }


/* Réserver */
.e-con.lgdla-tf-resa { scroll-margin-top: 104px; }
.e-con.lgdla-tf-fallback { padding: 32px; border: 1px solid var(--c-border); border-radius: 28px; background: #fff; }
.e-con.lgdla-tf-resa__form { min-width: 0; }

/* Questions pratiques : accordéon Elementor (gratuit) à filets fins */
.e-con .elementor-widget.lgdla-tf-accordion { width: 100%; }
.lgdla-tf-accordion .elementor-accordion .elementor-accordion-item { border: 0; border-top: 1px solid var(--c-border); }
.lgdla-tf-accordion .elementor-accordion .elementor-accordion-item:last-child { border-bottom: 1px solid var(--c-border); }
.lgdla-tf-accordion .elementor-accordion .elementor-tab-title {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 24px 0; border: 0; background: transparent; cursor: pointer;
}
.lgdla-tf-accordion .elementor-accordion .elementor-tab-title a {
  flex: 1 1 auto; font-family: var(--f-title); font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4);
  color: var(--c-ink); text-decoration: none; text-wrap: balance; font-weight: 400;
}
.lgdla-tf-accordion .elementor-accordion .elementor-tab-title.elementor-active a { color: var(--c-ink); }
.lgdla-tf-accordion .elementor-accordion .elementor-accordion-icon { order: 2; float: none; width: 32px; height: 32px; margin: 0; display: grid; place-items: center; color: var(--c-ink); }
.lgdla-tf-accordion .elementor-accordion .elementor-accordion-icon svg { width: 16px; height: 16px; fill: currentColor; }
.lgdla-tf-accordion .elementor-accordion .elementor-tab-content { padding: 0 56px 28px 0; border: 0; color: var(--c-ink); font-size: var(--fs-body); line-height: var(--lh-body); }
.lgdla-tf-accordion .elementor-tab-content p { margin: 0 0 1em; max-width: var(--measure-text); }
.lgdla-tf-accordion .elementor-tab-content p:last-child { margin-bottom: 0; }
.lgdla-tf-accordion .elementor-tab-content ul { list-style: none; margin: 0 0 1em; padding: 0; max-width: var(--measure-text); }
.lgdla-tf-accordion .elementor-tab-content li { position: relative; padding-left: 1.7em; margin: .5em 0; }
.lgdla-tf-accordion .elementor-tab-content li::before { content: ''; position: absolute; left: 0; top: .9em; width: .95em; height: 2px; background: var(--c-gold); }
.lgdla-tf-accordion .elementor-tab-content a { color: var(--c-ink); text-decoration: underline; text-decoration-color: var(--c-gold); text-underline-offset: 3px; text-decoration-thickness: 2px; }
.lgdla-tf-accordion .elementor-tab-title:focus-within { outline: 2px solid var(--c-gold); outline-offset: 2px; }

/* Tablette : cartes tarifs côte à côte quand ça tient, photos plus larges que hautes */
@media (max-width: 1024px) {
  .e-con.lgdla-tf-herowrap { padding-top: 104px; }
  .e-con.lgdla-tf-hero__photos { max-width: 640px; }
  .e-con .elementor-widget.lgdla-tf-ph--1 { margin-top: 40px; }
  .e-con .elementor-widget.lgdla-tf-ph--3 { margin-top: 20px; }
  .e-con.lgdla-tf-price { padding: 32px 28px 28px; }
  .e-con.lgdla-tf-tall { min-height: 0; aspect-ratio: 3 / 2; }
  .e-con.lgdla-tf-room, .e-con.lgdla-tf-resa { scroll-margin-top: 88px; }
  .e-con .elementor-widget.lgdla-tf-room__photo { aspect-ratio: 3 / 2; }
  .e-con.lgdla-tf-cal { padding: 28px 24px 20px; }
  .lgdla-tf-carousel .elementor-swiper-button-prev { left: calc(var(--gutter) + 8px); }
  .lgdla-tf-carousel .elementor-swiper-button-next { right: calc(var(--gutter) + 8px); }
}

/* Mobile */
@media (max-width: 767px) {
  .e-con.lgdla-tf-hero { border-radius: 24px; }
  .e-con.lgdla-tf-hero__photos { gap: 8px; }
  .e-con .elementor-widget.lgdla-tf-ph { border-radius: 14px; }
  .e-con .elementor-widget.lgdla-tf-ph--1 { margin-top: 28px; }
  .e-con .elementor-widget.lgdla-tf-ph--3 { margin-top: 14px; }
  .e-con.lgdla-tf-price { padding: 28px 24px 24px; border-radius: 22px; }
  .e-con.lgdla-tf-card { padding: 28px 24px 24px; border-radius: 22px; }
  .e-con.lgdla-tf-tall { border-radius: 22px; aspect-ratio: 4 / 3; }
  .e-con .lgdla-tf-carousel .swiper-slide-image { border-radius: 18px; }
  .lgdla-tf-carousel .elementor-swiper-button { width: 44px; height: 44px; }
  .e-con.lgdla-tf-room__media { border-radius: 22px; }
  .e-con .elementor-widget.lgdla-tf-room__photo { aspect-ratio: 4 / 5; }
  .e-con.lgdla-tf-chips { left: 12px; right: 12px; bottom: 12px; }
  .e-con.lgdla-tf-cal { padding: 22px 16px 16px; border-radius: 22px; }
  .lgdla-tf-accordion .elementor-accordion .elementor-tab-content { padding-right: 0; }
  .lgdla-tf-accordion .elementor-accordion .elementor-tab-title { padding: 20px 0; }
  .e-con.lgdla-tf-fallback { padding: 24px 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .lgdla-tf-carousel .swiper-slide, .e-con.lgdla-tf-price { transition: none; }
}


/* ---------- Page « La Grange » (refonte du 14/10/2026) ---------------------------------------------------------
   Hero façade en feuille arrondie · phrase d'accroche (mots révélés) + photo du ciel · « Avant, pendant, après » (desktop : section
   épinglée, les photos se fondent au défilement ; tablette / mobile : pile de photos légendées) · galerie (Carrousel d'images
   d'Elementor, mêmes règles que la page Tarifs) · phrase sur feuille encre · quatre piliers numérotés · savoir-faire locaux.
   Contenu : build/grange-page.php. Animations : initGrange() dans lgdla-front.js.                                              */

:is(.lgdla-gr-renaissance, .lgdla-gt, .lgdla-gr-piliers, .lgdla-gr-locaux) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }

/* Hero : la photo remplit la feuille, un voile encre garantit le contraste du titre blanc */
.e-con.lgdla-gr-hero {
  width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto;
  position: relative; overflow: hidden; isolation: isolate; border-radius: 32px; color: var(--c-on-dark);
  min-height: max(520px, 66vh); justify-content: flex-end;
}
.e-con.lgdla-gr-hero::before {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(34,30,31,.12) 0%, rgba(34,30,31,.22) 38%, rgba(34,30,31,.82) 100%);
}
.e-con .elementor-widget.lgdla-gr-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; z-index: 0; }
.lgdla-gr-hero__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-gr-hero__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }
.e-con.lgdla-gr-hero__inner { position: relative; z-index: 2; max-width: 900px; }
.lgdla-gr-hero .elementor-heading-title { color: var(--c-on-dark); }
.lgdla-gr-hero .lgdla-gr-hero__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-gr-hero__inner > .elementor-widget, .lgdla-gr-hero__inner > .e-con { transition: none; }
.lgdla-chip--dark .elementor-heading-title { background: rgba(34,30,31,.55); color: var(--c-on-dark); border: 1px solid rgba(248,247,245,.28); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }

/* La renaissance : phrase d'accroche, texte, photo du ciel à légende */
.e-con.lgdla-gr-aerial { position: relative; border-radius: 28px; overflow: hidden; min-width: 0; }
.e-con .elementor-widget.lgdla-gr-aerial__img { position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; }
.lgdla-gr-aerial__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-gr-aerial__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; display: block; border-radius: 0; }

/* Avant, pendant, après — repli (tablette, mobile, sans JS) : une pile de photos légendées */
.e-con.lgdla-gt__stage { min-width: 0; }
.e-con.lgdla-gt__step { position: relative; }
.e-con .elementor-widget.lgdla-gt__img { position: relative; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 24px; }
.lgdla-gt__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-gt__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }
.e-con.lgdla-gt__cap { padding: 14px 4px 0; }
.lgdla-gt__tag .elementor-heading-title {
  display: inline-block; background: var(--c-gold); color: var(--c-ink); border-radius: var(--r-full);
  font-family: var(--f-title); font-size: .75rem; line-height: 1.2; letter-spacing: .08em; text-transform: uppercase; padding: .5em 1em;
}
.lgdla-gt__title .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-small); line-height: 1.5; letter-spacing: 0; color: var(--c-muted); }

/* Avant, pendant, après — desktop épinglé : les étapes s'empilent dans un cadre, le JS les fond l'une dans l'autre */
.lgdla-gt--pin .e-con.lgdla-gt__stage, .lgdla-gt--pin.lgdla-gt .lgdla-gt__stage {
  position: relative; height: min(580px, calc(100vh - 240px)); border-radius: 28px; overflow: hidden; background: var(--c-ink); gap: 0;
}
.lgdla-gt--pin .e-con.lgdla-gt__step { position: absolute; inset: 0; transition: none; }
.lgdla-gt--pin .e-con .elementor-widget.lgdla-gt__img, .lgdla-gt--pin .elementor-widget.lgdla-gt__img { position: absolute; inset: 0; aspect-ratio: auto; height: 100%; border-radius: 0; }
.lgdla-gt--pin .e-con.lgdla-gt__step::after { content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(180deg, rgba(34,30,31,0) 68%, rgba(34,30,31,.62) 100%); }
.lgdla-gt--pin .e-con.lgdla-gt__cap { position: absolute; left: 28px; right: 28px; bottom: 26px; z-index: 2; padding: 0; }
.lgdla-gt--pin .lgdla-gt__title .elementor-heading-title { color: var(--c-on-dark); font-size: var(--fs-body); }
.lgdla-gt__ui { display: flex; align-items: center; gap: 18px; margin-top: 8px; }
.lgdla-gt__count { font-family: var(--f-title); font-size: var(--fs-h4); letter-spacing: var(--ls-h4); font-variant-numeric: tabular-nums; }
.lgdla-gt__dots { display: flex; gap: 8px; }
.lgdla-gt__dots i { width: 28px; height: 3px; border-radius: 2px; background: var(--c-border); transition: background-color var(--t-mid) var(--ease), width var(--t-mid) var(--ease-out); }
.lgdla-gt__dots i.is-on { background: var(--c-gold); width: 44px; }

/* Phrase sur feuille encre */
.e-con.lgdla-gr-quote { width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto; border-radius: 32px; color: var(--c-on-dark); }
.lgdla-gr-quote .lgdla-gr-quote__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-gr-quote__text p {
  font-family: var(--f-body); font-style: italic; font-size: clamp(1.625rem, 1rem + 2.4vw, 3rem); line-height: 1.3; letter-spacing: -.012em;
  max-width: 26em; margin-inline: auto; color: var(--c-on-dark); text-wrap: balance;
}

/* Quatre piliers : titre collant à gauche, liste éditoriale à droite (numéro très clair, jamais doré) */
.e-con.lgdla-gr-piliers__head { min-width: 0; }
@media (min-width: 1025px) { .e-con.lgdla-gr-piliers__head { position: sticky; top: 120px; align-self: flex-start; } }
.e-con.lgdla-gr-list { min-width: 0; }
.e-con.lgdla-gr-pillar { padding: 44px 0 48px; border-top: 1px solid var(--c-border); align-items: flex-start; }
.e-con.lgdla-gr-pillar:first-child { border-top: 0; padding-top: 0; }
.e-con .elementor-widget.lgdla-gr-pillar__num { width: 112px; flex: 0 0 112px; }
.lgdla-gr-pillar__num .elementor-heading-title { font-size: clamp(2.5rem, 1.6rem + 2.6vw, 3.5rem); line-height: 1; letter-spacing: -.04em; color: var(--c-border); font-variant-numeric: tabular-nums; }
.e-con.lgdla-gr-pillar__body { flex: 1 1 0; min-width: 0; }
.lgdla-gr-pillar__title .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.lgdla-gr-pillar__text p { max-width: 56ch; margin: 0; text-wrap: pretty; }

/* Savoir-faire locaux */
.e-con.lgdla-gr-locaux__media { position: relative; border-radius: 28px; overflow: hidden; min-width: 0; }
.e-con .elementor-widget.lgdla-gr-locaux__img { position: relative; width: 100%; aspect-ratio: 5 / 4; overflow: hidden; }
.lgdla-gr-locaux__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-gr-locaux__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }
.e-con.lgdla-gr-locaux__text { min-width: 0; }

@media (max-width: 1024px) {
  .e-con.lgdla-gr-hero { min-height: max(460px, 52vh); border-radius: 28px; }
  .e-con.lgdla-gr-pillar { padding: 36px 0 40px; }
  .e-con .elementor-widget.lgdla-gr-pillar__num { width: 88px; flex-basis: 88px; }
  .e-con.lgdla-gr-quote { border-radius: 28px; }
  .e-con.lgdla-gr-locaux__media, .e-con.lgdla-gr-aerial { border-radius: 24px; }
}
@media (max-width: 767px) {
  .e-con.lgdla-gr-hero { min-height: 480px; border-radius: 24px; }
  .e-con .elementor-widget.lgdla-gr-pillar__num { width: auto; flex-basis: auto; }
  .e-con.lgdla-gr-pillar { padding: 32px 0 34px; }
  .e-con .elementor-widget.lgdla-gt__img { border-radius: 18px; }
  .e-con.lgdla-gr-quote { border-radius: 24px; }
  .e-con.lgdla-gr-locaux__media, .e-con.lgdla-gr-aerial { border-radius: 20px; }
}
@media (prefers-reduced-motion: reduce) { .lgdla-gt__dots i { transition: none; } }

/* ---------- Page « Table d'hôtes » (réutilise le hero, la phrase d'accroche et la liste numérotée de La Grange) -------------- */
:is(.lgdla-th-video) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }
.lgdla-chip--line .elementor-heading-title { background: transparent; color: var(--c-ink); border: 1px solid var(--c-border); }
.e-con.lgdla-th-tags { padding-top: 8px; }
.e-con.lgdla-th-duo { min-width: 0; }
.e-con .elementor-widget.lgdla-th-duo__img { position: relative; flex: 1 1 0; width: auto; min-width: 0; overflow: hidden; border-radius: 24px; aspect-ratio: 4 / 5; }
.e-con .elementor-widget.lgdla-th-duo__img--b { margin-top: 56px; }
.lgdla-th-duo__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-th-duo__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }
.e-con .elementor-widget.lgdla-th-video__player { width: 100%; max-width: 1080px !important; margin-inline: auto; border-radius: 28px; overflow: hidden; }
.lgdla-th-video__player .elementor-custom-embed-play { color: #fff; }
.lgdla-th-video__player .elementor-custom-embed-play i, .lgdla-th-video__player .elementor-custom-embed-play svg { color: #fff; fill: #fff; font-size: 64px; width: 64px; height: 64px; filter: drop-shadow(0 2px 12px rgba(34,30,31,.5)); }
.e-con.lgdla-th-plist { align-items: flex-start; min-width: 0; column-gap: 40px; }
.e-con.lgdla-th-plist > .e-con.lgdla-th-partner { flex: 0 0 calc(50% - 20px); width: calc(50% - 20px); }
/* Hero sur photo claire (vapeur) : voile plus dense pour la lisibilité du surtitre doré et du titre */
.e-con.lgdla-th-hero::before { background: linear-gradient(180deg, rgba(34,30,31,.32) 0%, rgba(34,30,31,.36) 40%, rgba(34,30,31,.86) 100%); }
.e-con.lgdla-th-partner { flex: 0 0 calc(50% - 20px); min-width: 0; padding: 26px 0 28px; border-top: 1px solid var(--c-border); }
.lgdla-th-partner__name .elementor-heading-title { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4); }
.lgdla-th-partner__what, .lgdla-th-partner__what p { margin: 0; color: var(--c-muted); font-size: var(--fs-small); line-height: 1.55; }
@media (max-width: 1024px) { .e-con .elementor-widget.lgdla-th-video__player { border-radius: 24px; } }
@media (max-width: 767px) {
  .e-con .elementor-widget.lgdla-th-duo__img { border-radius: 16px; }
  .e-con .elementor-widget.lgdla-th-duo__img--b { margin-top: 28px; }
  .e-con.lgdla-th-plist > .e-con.lgdla-th-partner { flex-basis: 100%; width: 100%; }
  .e-con .elementor-widget.lgdla-th-video__player { border-radius: 20px; }
}

/* Le dîner (feuille encre) : prix en très grand, horaires et convives, menu du jour en quatre temps */
.lgdla-pos-40-50 { --pos: 40% 50%; }
.e-con.lgdla-th-diner { width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto; border-radius: 32px; color: var(--c-on-dark); scroll-margin-top: 104px; }
.lgdla-th-diner .elementor-heading-title { color: var(--c-on-dark); }
.lgdla-th-diner .lgdla-th-diner__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-th-diner__price .elementor-heading-title { font-size: clamp(4.5rem, 2.4rem + 8.4vw, 9rem); line-height: .92; letter-spacing: -.05em; font-variant-numeric: tabular-nums; }
.lgdla-th-diner__unit .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-lead); line-height: 1.4; letter-spacing: 0; color: var(--c-on-dark-70); }
.e-con.lgdla-th-facts { align-items: flex-start; }
.e-con.lgdla-th-fact { flex: 1 1 0; min-width: 0; padding-left: 22px; border-left: 2px solid var(--c-gold); }
.lgdla-th-fact__label .elementor-heading-title { font-family: var(--f-title); font-size: var(--fs-eyebrow); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--c-on-dark-70); }
.lgdla-th-fact__value .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.lgdla-th-menu__title .elementor-heading-title { max-width: 26ch; }
.e-con.lgdla-th-courses { align-items: stretch; }
.e-con.lgdla-th-course { flex: 1 1 0; min-width: 0; padding: 26px 24px 8px 0; border-top: 1px solid var(--c-on-dark-border); }
.lgdla-th-course__n .elementor-heading-title { font-size: var(--fs-small); letter-spacing: .08em; color: var(--c-gold); }
.lgdla-th-course__name .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.lgdla-th-course:nth-child(2) { transition-delay: .08s; } .lgdla-th-course:nth-child(3) { transition-delay: .16s; } .lgdla-th-course:nth-child(4) { transition-delay: .24s; }
@media (max-width: 1024px) { .e-con.lgdla-th-diner { border-radius: 28px; scroll-margin-top: 88px; } }
@media (max-width: 767px) {
  .e-con.lgdla-th-diner { border-radius: 24px; }
  .e-con.lgdla-th-course { flex: 0 0 auto; padding: 20px 0 14px; }
}

/* Bandeau final de la page Table d'hôtes : photo à gauche, aplat or de la charte à droite (texte et boutons en encre) */
.lgdla-pos-50-65 { --pos: 50% 65%; }
.e-con.lgdla-th-final { width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto; border-radius: 32px; overflow: hidden; min-height: 560px; }
.e-con.lgdla-th-final__media { position: relative; min-height: 420px; }
.e-con .elementor-widget.lgdla-th-final__img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.lgdla-th-final__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-th-final__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }
.lgdla-th-final .lgdla-th-final__eyebrow .elementor-heading-title, .lgdla-th-final .elementor-heading-title { color: var(--c-ink); }
.lgdla-th-final__text, .lgdla-th-final__text p { color: var(--c-ink); max-width: 38ch; margin: 0; font-size: var(--fs-lead); line-height: 1.55; }
.lgdla-th-final__body { min-width: 0; }
/* Bouton encre sur l'aplat or ; bouton contour : filet encre, déjà prévu (lgdla-btn--outline) */
.lgdla-btn--ink .elementor-button { background: var(--c-ink) !important; color: var(--c-bg) !important; border-color: var(--c-ink) !important; }
@media (hover: hover) { .lgdla-btn--ink .elementor-button:hover { background: var(--c-black) !important; color: var(--c-bg) !important; } }
.lgdla-btn--ink .elementor-button:focus-visible { background: var(--c-black) !important; outline: 2px solid var(--c-ink); outline-offset: 3px; }
@media (max-width: 1024px) { .e-con.lgdla-th-final { border-radius: 28px; min-height: 0; } .e-con.lgdla-th-final__media { min-height: 0; aspect-ratio: 3 / 2; } }
@media (max-width: 767px) { .e-con.lgdla-th-final { border-radius: 24px; } .e-con.lgdla-th-final__media { aspect-ratio: 4 / 3; } }

/* Galerie « La table en images » : mosaïque asymétrique (Galerie d'images d'Elementor, lightbox groupée) */
.lgdla-th-hint, .lgdla-th-hint p { margin: 0; color: var(--c-muted); font-size: var(--fs-small); }
.e-con .elementor-widget.lgdla-th-mosaic { width: 100%; }
.lgdla-th-mosaic .gallery { display: grid !important; grid-template-columns: repeat(6, minmax(0, 1fr)); grid-auto-rows: 188px; gap: 14px; margin: 0; }
.lgdla-th-mosaic .gallery::before, .lgdla-th-mosaic .gallery::after { content: none; }
.lgdla-th-mosaic .gallery .gallery-item { float: none; display: block; width: 100% !important; max-width: none !important; margin: 0; padding: 0; position: relative; overflow: hidden; border-radius: 22px; min-width: 0; }
.lgdla-th-mosaic .gallery-icon, .lgdla-th-mosaic .gallery-icon a { display: block; height: 100%; }
.lgdla-th-mosaic .gallery-item img { width: 100%; height: 100% !important; max-width: none; object-fit: cover; display: block; border-radius: 0 !important; transition: transform var(--t-photo) var(--ease-out); }
@media (hover: hover) { .lgdla-th-mosaic .gallery-item:hover img { transform: scale(1.05); } }
.lgdla-th-mosaic .gallery-item a:focus-visible { outline: 3px solid var(--c-gold); outline-offset: -3px; }
.lgdla-th-mosaic .gallery-item:nth-child(1) { grid-column: 1 / span 2; grid-row: 1 / span 4; }
.lgdla-th-mosaic .gallery-item:nth-child(2) { grid-column: 3 / span 3; grid-row: 1 / span 2; }
.lgdla-th-mosaic .gallery-item:nth-child(3) { grid-column: 6; grid-row: 1 / span 2; }
.lgdla-th-mosaic .gallery-item:nth-child(4) { grid-column: 3 / span 2; grid-row: 3 / span 2; }
.lgdla-th-mosaic .gallery-item:nth-child(5) { grid-column: 5 / span 2; grid-row: 3; }
.lgdla-th-mosaic .gallery-item:nth-child(6) { grid-column: 5 / span 2; grid-row: 4; }
.lgdla-th-mosaic .gallery-item:nth-child(1) img { object-position: 50% 60%; }
@media (max-width: 1024px) {
  .lgdla-th-mosaic .gallery { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 168px; gap: 12px; }
  .lgdla-th-mosaic .gallery-item { border-radius: 18px; }
  .lgdla-th-mosaic .gallery-item:nth-child(1) { grid-column: 1 / span 2; grid-row: 1 / span 3; }
  .lgdla-th-mosaic .gallery-item:nth-child(2) { grid-column: 3 / span 2; grid-row: 1 / span 2; }
  .lgdla-th-mosaic .gallery-item:nth-child(3) { grid-column: 3; grid-row: 3; }
  .lgdla-th-mosaic .gallery-item:nth-child(4) { grid-column: 4; grid-row: 3; }
  .lgdla-th-mosaic .gallery-item:nth-child(5) { grid-column: 1 / span 2; grid-row: 4; }
  .lgdla-th-mosaic .gallery-item:nth-child(6) { grid-column: 3 / span 2; grid-row: 4; }
}
@media (max-width: 767px) {
  .lgdla-th-mosaic .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 150px; gap: 10px; }
  .lgdla-th-mosaic .gallery-item { border-radius: 14px; }
  .lgdla-th-mosaic .gallery-item:nth-child(1) { grid-column: 1 / span 2; grid-row: 1 / span 2; }
  .lgdla-th-mosaic .gallery-item:nth-child(2) { grid-column: 1 / span 2; grid-row: 3; }
  .lgdla-th-mosaic .gallery-item:nth-child(3) { grid-column: 1; grid-row: 4; }
  .lgdla-th-mosaic .gallery-item:nth-child(4) { grid-column: 2; grid-row: 4; }
  .lgdla-th-mosaic .gallery-item:nth-child(5) { grid-column: 1; grid-row: 5; }
  .lgdla-th-mosaic .gallery-item:nth-child(6) { grid-column: 2; grid-row: 5; }
}
@media (prefers-reduced-motion: reduce) { .lgdla-th-mosaic .gallery-item img { transition: none; transform: none !important; } }

/* ---------- Page « Contact et accès » (réutilise chips, duo de photos, feuille encre, formulaire de repli) ------------------------------ */
:is(.lgdla-ct-hero, .lgdla-ct-itin, .lgdla-ct-village, .lgdla-ct-ecrire) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }
.lgdla-pos-60-50 { --pos: 60% 50%; }
.lgdla-pos-45-50 { --pos: 45% 50%; }
.lgdla-ct-lead, .lgdla-ct-lead p { font-size: var(--fs-lead); line-height: 1.6; max-width: 34ch; }
.e-con.lgdla-ct-cards { min-width: 0; }
.e-con.lgdla-ct-card { padding: 28px 32px 30px; background: #fff; border: 1px solid var(--c-border); border-radius: 24px; transition: transform var(--t-mid) var(--ease-out), box-shadow var(--t-mid) var(--ease-out); }
@media (hover: hover) { .e-con.lgdla-ct-card:hover { transform: translateY(-3px); box-shadow: var(--sh-2); } }
.lgdla-ct-card__label .elementor-heading-title { font-family: var(--f-title); font-size: var(--fs-eyebrow); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--c-muted); }
.lgdla-ct-card__value, .lgdla-ct-card__value p, .lgdla-ct-card__value address { margin: 0; font-family: var(--f-title); font-style: normal; font-size: var(--fs-h3); line-height: 1.25; letter-spacing: var(--ls-h3); color: var(--c-ink); overflow-wrap: anywhere; }
.lgdla-ct-card__value a { color: var(--c-ink); text-decoration: none; border-bottom: 2px solid var(--c-gold); padding-bottom: 2px; }
@media (hover: hover) { .lgdla-ct-card__value a:hover { border-bottom-color: var(--c-gold-dark); } }
.lgdla-ct-card__value a:focus-visible { outline: 2px solid var(--c-gold-dark); outline-offset: 4px; }
.e-con.lgdla-ct-card--phone .lgdla-ct-card__value, .lgdla-ct-card--phone .lgdla-ct-card__value p { font-size: clamp(1.75rem, 1.1rem + 2.4vw, 2.75rem); line-height: 1.1; }
.lgdla-ct-card__value address { font-size: var(--fs-h4); line-height: 1.4; letter-spacing: var(--ls-h4); }

/* Venir : feuille encre, trois modes de transport, les durées en grand */
.e-con.lgdla-ct-venir { width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto; border-radius: 32px; color: var(--c-on-dark); scroll-margin-top: 104px; }
.lgdla-ct-venir .elementor-heading-title { color: var(--c-on-dark); }
.lgdla-ct-venir .lgdla-ct-venir__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-ct-venir__hint, .lgdla-ct-venir__hint p { margin: 0; color: var(--c-on-dark-70); max-width: 32ch; }
.e-con.lgdla-ct-modes { align-items: stretch; }
.e-con.lgdla-ct-mode { flex: 1 1 0; min-width: 0; padding: 28px 28px 8px 0; border-top: 1px solid var(--c-on-dark-border); }
.e-con.lgdla-ct-mode + .e-con.lgdla-ct-mode { padding-left: 28px; border-left: 1px solid var(--c-on-dark-border); }
.lgdla-ct-mode__title .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.e-con.lgdla-ct-trip { flex-wrap: nowrap; padding: 14px 0 12px; border-bottom: 1px solid var(--c-on-dark-border); }
.lgdla-ct-trip__place .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-small); line-height: 1.4; letter-spacing: 0; color: var(--c-on-dark-70); }
.lgdla-ct-trip__time .elementor-heading-title { font-size: var(--fs-h3); line-height: 1.1; letter-spacing: var(--ls-h3); color: var(--c-gold); font-variant-numeric: tabular-nums; white-space: nowrap; }
.lgdla-ct-mode__note, .lgdla-ct-mode__note p { margin: 0; color: var(--c-on-dark-70); font-size: var(--fs-small); line-height: 1.6; max-width: 38ch; }

/* Itinéraire : la maison vue du ciel */
.e-con.lgdla-ct-aerial { position: relative; border-radius: 28px; overflow: hidden; min-width: 0; }
.e-con .elementor-widget.lgdla-ct-aerial__img { position: relative; width: 100%; aspect-ratio: 16 / 11; overflow: hidden; }
.lgdla-ct-aerial__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-ct-aerial__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; display: block; border-radius: 0; }
.e-con.lgdla-ct-itin__text { min-width: 0; }
.e-con.lgdla-ct-social { padding-top: 6px; }

@media (max-width: 1024px) {
  .e-con.lgdla-ct-venir { border-radius: 28px; scroll-margin-top: 88px; }
  .e-con.lgdla-ct-mode, .e-con.lgdla-ct-mode + .e-con.lgdla-ct-mode { padding: 24px 0 6px; border-left: 0; }
  .e-con.lgdla-ct-aerial { border-radius: 24px; }
}
@media (max-width: 767px) {
  .e-con.lgdla-ct-venir { border-radius: 24px; }
  .lgdla-ct-card__value, .lgdla-ct-card__value p { font-size: clamp(1.0625rem, .62rem + 2.6vw, 1.375rem); }
  .e-con.lgdla-ct-card--phone .lgdla-ct-card__value, .lgdla-ct-card--phone .lgdla-ct-card__value p { font-size: 1.875rem; }
  .lgdla-ct-trip__place { flex: 1 1 auto; min-width: 0; }
  .e-con.lgdla-ct-card { padding: 22px 22px 24px; border-radius: 20px; }
  .e-con.lgdla-ct-aerial { border-radius: 20px; }
}

/* Bandeau final de Contact : le numéro en énorme + bande panoramique (sans feuille ni fond coloré) */
.lgdla-ct-final .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }
.e-con .elementor-widget.lgdla-ct-final__phone { margin-bottom: clamp(16px, 3vw, 40px); width: 100%; }
.lgdla-ct-final__phone .elementor-heading-title { font-size: clamp(2.75rem, .9rem + 8.6vw, 9.5rem); line-height: .95; letter-spacing: -.05em; font-variant-numeric: tabular-nums; }
.lgdla-ct-final__phone a { color: var(--c-ink); text-decoration: none; background: linear-gradient(var(--c-gold), var(--c-gold)) 0 100% / 100% .09em no-repeat; padding-bottom: .04em; transition: background-size var(--t-mid) var(--ease-out); }
@media (hover: hover) { .lgdla-ct-final__phone a:hover { background-size: 100% .5em; } }
.lgdla-ct-final__phone a:focus-visible { outline: 3px solid var(--c-gold-dark); outline-offset: 8px; }
.e-con .elementor-widget.lgdla-ct-final__strip { position: relative; width: 100%; aspect-ratio: 21 / 8; overflow: hidden; border-radius: 28px; }
.lgdla-ct-final__strip .elementor-widget-container { height: 100%; }
.e-con .lgdla-ct-final__strip img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: 50% 62%; display: block; border-radius: 0; }
@media (max-width: 1024px) { .e-con .elementor-widget.lgdla-ct-final__strip { aspect-ratio: 16 / 7; border-radius: 24px; } }
@media (max-width: 767px) { .e-con .elementor-widget.lgdla-ct-final__strip { aspect-ratio: 4 / 3; border-radius: 20px; } .lgdla-ct-final__phone .elementor-heading-title { font-size: clamp(2.125rem, 1rem + 8vw, 3rem); letter-spacing: -.04em; } }

/* ---------- Formulaires Fluent Forms Lite (demande de séjour, contact) : charte du site ---------------------------------------------- */
.lgdla-prose a, .lgdla-tf-accordion .elementor-tab-content a { color: var(--c-ink); text-decoration: underline; text-decoration-color: var(--c-gold); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.e-con .elementor-widget.lgdla-tf-form { width: 100%; }
.lgdla-tf-form .fluentform, .lgdla-tf-form .frm-fluent-form { font-family: var(--f-body); color: var(--c-ink); }
.lgdla-tf-form .frm-fluent-form fieldset { border: 0; padding: 0; margin: 0; min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 20px; row-gap: 6px; }
.lgdla-tf-form .ff-el-group { margin: 0 0 14px; min-width: 0; }
.lgdla-tf-form .ff-el-group:has(textarea), .lgdla-tf-form .ff-el-group:has(input[type=checkbox]), .lgdla-tf-form .ff-el-group.ff_submit_btn_wrapper, .lgdla-tf-form .ff-el-group:has(.ff_gdpr_field) { grid-column: 1 / -1; }
.lgdla-tf-form .ff-el-input--label label { font-family: var(--f-body); font-size: var(--fs-small); font-weight: 500; color: var(--c-ink); margin-bottom: 8px; }
.lgdla-tf-form .ff-el-is-required.asterisk-right label::after { color: var(--c-ink); margin-left: 2px; }
.lgdla-tf-form .ff-el-form-control {
  font-family: var(--f-body); font-size: 1rem; line-height: 1.4; color: var(--c-ink);
  background: #fff; border: 1px solid var(--c-border); border-radius: 14px; padding: 15px 18px; min-height: 52px; box-shadow: none; transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.lgdla-tf-form textarea.ff-el-form-control { min-height: 140px; border-radius: 18px; }
.lgdla-tf-form .ff-el-form-control::placeholder { color: var(--c-muted); opacity: 1; }
.lgdla-tf-form .ff-el-form-control:focus { border-color: var(--c-gold-dark); box-shadow: 0 0 0 3px rgba(225, 179, 76, .35); outline: 0; background: #fff; color: var(--c-ink); }
.lgdla-tf-form .ff-el-form-check { margin-bottom: 8px; }
.lgdla-tf-form .ff-el-form-check-label, .lgdla-tf-form .ff_tc_label { font-size: var(--fs-small); line-height: 1.55; color: var(--c-ink); display: flex; gap: 12px; align-items: flex-start; cursor: pointer; }
.lgdla-tf-form .ff_tc_checkbox { display: inline-block; vertical-align: top; margin-right: 12px; }
.lgdla-tf-form .ff_tc_label { display: flex !important; gap: 12px; align-items: flex-start; }
.lgdla-tf-form .ff_tc_checkbox { margin-right: 0; }
.lgdla-tf-form .ff-el-is-error .ff-el-input--label label, .lgdla-tf-form .ff-el-is-error .ff_tc_label, .lgdla-tf-form .ff-el-is-error .text-danger, .lgdla-tf-form .error.text-danger { color: var(--c-error) !important; }
.lgdla-tf-form input[type=checkbox] { appearance: none; -webkit-appearance: none; flex: 0 0 22px; width: 22px; height: 22px; margin: 1px 0 0; border: 1.5px solid var(--c-ink); border-radius: 6px; background: #fff; display: inline-grid; place-content: center; cursor: pointer; }
.lgdla-tf-form input[type=checkbox]::after { content: ''; width: 11px; height: 6px; border-left: 2.5px solid var(--c-ink); border-bottom: 2.5px solid var(--c-ink); transform: rotate(-45deg) translate(1px, -1px); opacity: 0; }
.lgdla-tf-form input[type=checkbox]:checked { background: var(--c-gold); border-color: var(--c-ink); }
.lgdla-tf-form input[type=checkbox]:checked::after { opacity: 1; }
.lgdla-tf-form input[type=checkbox]:focus-visible { outline: 2px solid var(--c-gold-dark); outline-offset: 3px; }
.lgdla-tf-form .ff-btn-submit, .lgdla-tf-form button.ff-btn-submit {
  background: var(--c-gold) !important; color: var(--c-ink) !important; border: 1px solid transparent; border-radius: var(--r-full);
  font-family: var(--f-title); font-size: var(--fs-btn); letter-spacing: var(--ls-btn); line-height: 1; padding: 1.15em 1.9em; cursor: pointer; transition: background-color var(--t-mid) var(--ease), transform var(--t-mid) var(--ease-out);
}
@media (hover: hover) { .lgdla-tf-form .ff-btn-submit:hover { background: var(--c-gold-dark) !important; transform: translateY(-1px); opacity: 1; } }
.lgdla-tf-form .ff-btn-submit:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 3px; background: var(--c-gold-dark) !important; }
.lgdla-tf-form .ff-btn-submit:active { transform: translateY(1px); }
.lgdla-tf-form .ff-el-is-error .ff-el-form-control { border-color: var(--c-error); }
.lgdla-tf-form .error, .lgdla-tf-form .text-danger { color: var(--c-error); font-size: var(--fs-small); margin-top: 6px; }
.lgdla-tf-form .ff-message-success { background: #fff; border: 1px solid var(--c-border); border-left: 4px solid var(--c-gold); border-radius: 14px; padding: 22px 24px; color: var(--c-ink); font-size: var(--fs-body); line-height: 1.6; box-shadow: none; }
.lgdla-tf-form .ff-el-input--label.ff-el-is-required label::after, .lgdla-tf-form .ff-el-is-required.asterisk-right label::after, .lgdla-tf-form .ff-el-is-required.asterisk-left label::before { color: var(--c-ink) !important; }
.lgdla-tf-form .ff-el-group a, .lgdla-tf-form .ff-el-tc a { color: var(--c-ink); text-decoration: underline; text-decoration-color: var(--c-gold); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.flatpickr-day.selected, .flatpickr-day.selected:hover, .flatpickr-day.startRange, .flatpickr-day.endRange { background: var(--c-gold); border-color: var(--c-gold); color: var(--c-ink); }
.flatpickr-day.today { border-color: var(--c-gold-dark); }
@media (max-width: 767px) { .lgdla-tf-form .frm-fluent-form fieldset { grid-template-columns: minmax(0, 1fr); } .lgdla-tf-form .ff-btn-submit { width: 100%; } }

/* ---------- Page « Bons cadeaux » : le bon (ticket), bande horizontale, formules épinglées, fil des étapes, rangées de photos, bon en direct ---------- */
.lgdla-bc-herowrap, .lgdla-bc-compose { color: var(--c-on-dark); }
.e-con.lgdla-bc-herowrap { overflow-x: clip; }
.lgdla-bc-herowrap .elementor-heading-title, .lgdla-bc-compose .elementor-heading-title { color: var(--c-on-dark); }
.lgdla-bc-hero .lgdla-bc-hero__eyebrow .elementor-heading-title, .lgdla-bc-compose .lgdla-bc-compose__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-bc-hero__lead p { color: var(--c-on-dark-70); max-width: 44ch; }
.lgdla-bc-compose__lead, .lgdla-bc-compose__lead p { color: var(--c-on-dark-70); max-width: 52ch; margin: 0; }
:is(.lgdla-bc-offre, .lgdla-bc-hs, .lgdla-bc-etapes, .lgdla-bc-contact) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }
.e-con.lgdla-bc-hero { min-width: 0; }
.e-con.lgdla-bc-stage { perspective: 1100px; min-width: 0; }

/* Le bon : carte dorée, souche (logo) à gauche, corps à droite, entailles en demi-cercle */
.e-con.lgdla-tk { --tk-bg: var(--c-ink); position: relative; width: 100%; max-width: 540px; margin-inline: auto; background: var(--c-gold); color: var(--c-ink); border-radius: 22px; transform-style: preserve-3d; will-change: transform; transition: none; }
.e-con.lgdla-tk--hero { transform: rotate(-4deg); }
.e-con.lgdla-tk__stub { flex: 0 0 148px; padding: 24px 14px; position: relative; border-right: 2px dashed rgba(34,30,31,.45); text-align: center; }
.e-con.lgdla-tk__stub::before, .e-con.lgdla-tk__stub::after { content: ''; position: absolute; right: -14px; width: 26px; height: 26px; border-radius: 50%; background: var(--tk-bg); z-index: 2; }
.e-con.lgdla-tk__stub::before { top: -13px; }
.e-con.lgdla-tk__stub::after { bottom: -13px; }
.e-con .elementor-widget.lgdla-tk__logo { width: 96px; }
.lgdla-tk__logo img { width: 96px; height: 96px; object-fit: contain; border-radius: 50%; display: block; margin: 0 auto; }
.lgdla-tk__valid .elementor-heading-title { font-size: var(--fs-small); line-height: 1.3; letter-spacing: 0; text-align: center; }
.e-con.lgdla-tk__body { flex: 1 1 auto; min-width: 0; padding: 28px 28px 26px; }
.lgdla-tk .elementor-heading-title { color: var(--c-ink); }
.lgdla-tk__eyebrow .elementor-heading-title { font-family: var(--f-title); font-size: var(--fs-eyebrow); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; }
.lgdla-tk__title .elementor-heading-title { font-size: var(--fs-h4); line-height: 1.25; letter-spacing: var(--ls-h4); }
.e-con.lgdla-tk__row { padding: 9px 0; border-top: 1px solid rgba(34,30,31,.28); }
.lgdla-tk__k .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-small); letter-spacing: 0; line-height: 1.3; color: rgba(34,30,31,.78); }
.lgdla-tk__v .elementor-heading-title { font-size: var(--fs-small); line-height: 1.3; letter-spacing: 0; text-align: right; overflow-wrap: anywhere; }
.lgdla-tk__mot .elementor-heading-title { font-family: var(--f-body); font-style: italic; font-size: var(--fs-small); line-height: 1.5; letter-spacing: 0; color: rgba(34,30,31,.78); }
.e-con.lgdla-tk__total { padding-top: 12px; border-top: 2px solid var(--c-ink); }
.lgdla-tk__price .elementor-heading-title { font-size: clamp(2.5rem, 1.6rem + 3vw, 3.75rem); line-height: 1; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
.lgdla-tk__note .elementor-heading-title { font-family: var(--f-body); font-size: .8125rem; line-height: 1.45; letter-spacing: 0; color: rgba(34,30,31,.78); }
@media (max-width: 767px) {
  .e-con.lgdla-tk { flex-direction: column; max-width: 420px; }
  .e-con.lgdla-tk--hero { transform: rotate(-2deg); }
  .e-con.lgdla-tk__stub { flex: 0 0 auto; flex-direction: row; justify-content: flex-start; gap: 14px; border-right: 0; border-bottom: 2px dashed rgba(34,30,31,.45); padding: 16px 20px; }
  .e-con.lgdla-tk__stub::before, .e-con.lgdla-tk__stub::after { top: auto; bottom: -13px; right: auto; }
  .e-con.lgdla-tk__stub::before { left: -13px; } .e-con.lgdla-tk__stub::after { right: -13px; left: auto; }
  .e-con .elementor-widget.lgdla-tk__logo, .lgdla-tk__logo img { width: 56px; height: 56px; }
  .e-con.lgdla-tk__body { padding: 22px 22px 22px; }
}

/* La phrase du site en trois lignes : alternées gauche / droite, mots clés soulignés d'or (le tout reste lisible sans JS) */
.e-con.lgdla-bc-phrase { overflow-x: clip; }
.e-con .elementor-widget.lgdla-bc-phrase__line { width: 100%; will-change: transform, opacity; }
.lgdla-bc-phrase__line .elementor-heading-title { font-size: clamp(2.125rem, .6rem + 6.4vw, 6.25rem); line-height: 1.08; letter-spacing: -.045em; text-wrap: balance; }
.lgdla-bc-phrase__line--2 .elementor-heading-title { text-align: right; }
.lgdla-bc-mk { background: linear-gradient(var(--c-gold), var(--c-gold)) 0 90% / calc(var(--mk, 1) * 100%) .3em no-repeat; padding-inline: .04em; -webkit-box-decoration-break: clone; box-decoration-break: clone; }

/* Repères sous la phrase d'accroche (fond clair) */
.lgdla-bc-fact .elementor-heading-title { color: var(--c-ink); }
.lgdla-bc-fact .lgdla-th-fact__label .elementor-heading-title { color: var(--c-muted); }
.e-con.lgdla-bc-fact { border-left-color: var(--c-gold); }

/* Formules : piste horizontale (épinglée au scroll sur desktop, glissement tactile ailleurs) */
.e-con.lgdla-bc-hs { scroll-padding-inline: var(--gutter); overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scrollbar-width: none; padding: clamp(24px, 4vw, 56px) 0 clamp(48px, 6vw, 88px); position: relative; }
.e-con.lgdla-bc-hs::-webkit-scrollbar { display: none; }
.e-con.lgdla-bc-hs__track { width: max-content !important; max-width: none !important; flex-wrap: nowrap; align-items: stretch; padding-inline: var(--gutter) !important; will-change: transform; transition: none; }
.e-con.lgdla-bc-hs__intro { flex: 0 0 min(86vw, 460px) !important; width: min(86vw, 460px) !important; scroll-snap-align: start; padding-right: 24px; }
.lgdla-bc-hs__hint .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-small); letter-spacing: 0; color: var(--c-muted); }
.e-con.lgdla-bc-card { flex: 0 0 min(84vw, 400px) !important; width: min(84vw, 400px) !important; scroll-snap-align: center; background: #fff; border: 1px solid var(--c-border); border-radius: 28px; overflow: hidden; transition: none; }
.e-con .elementor-widget.lgdla-bc-card__img { position: relative; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; }
.lgdla-bc-card__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-bc-card__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; transition: transform var(--t-photo) var(--ease-out); }
@media (hover: hover) { .lgdla-bc-card:hover .lgdla-bc-card__img img { transform: scale(1.05); } }
.e-con.lgdla-bc-card__body { padding: 28px 28px 30px; flex: 1 1 auto; }
.lgdla-bc-card__sub .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-small); letter-spacing: 0; color: var(--c-muted); }
.lgdla-bc-card__title .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.lgdla-bc-card__price .elementor-heading-title { font-family: var(--f-title); font-size: var(--fs-small); line-height: 1.4; letter-spacing: 0; padding: .6em 1.1em; display: block; width: fit-content; max-width: 100%; white-space: normal; background: var(--c-surface); border-radius: 18px; }
.lgdla-bc-card__list ul { margin: 0; }
.lgdla-bc-card__list li { margin: .5em 0; font-size: var(--fs-small); line-height: 1.55; }
.lgdla-bc-card__tag, .lgdla-bc-card__tag p { margin: 0; color: var(--c-muted); font-style: italic; font-size: var(--fs-small); line-height: 1.55; }
.e-con .elementor-widget.lgdla-bc-card__cta { margin-top: auto; padding-top: 8px; }
.e-con.lgdla-bc-card--feat { background: var(--c-ink); border-color: var(--c-ink); color: var(--c-on-dark); }
.lgdla-bc-card--feat .elementor-heading-title, .lgdla-bc-card--feat li, .lgdla-bc-card--feat .lgdla-bc-card__tag, .lgdla-bc-card--feat .lgdla-bc-card__tag p { color: var(--c-on-dark); }
.lgdla-bc-card--feat .lgdla-bc-card__sub .elementor-heading-title { color: var(--c-on-dark-70); }
.lgdla-bc-card--feat .lgdla-bc-card__price .elementor-heading-title { background: var(--c-gold); color: var(--c-ink); }
.lgdla-bc-card--feat .lgdla-btn--ink .elementor-button { background: var(--c-gold) !important; color: var(--c-ink) !important; border-color: var(--c-gold) !important; }
.lgdla-bc-hs__bar { position: absolute; left: var(--gutter); right: var(--gutter); bottom: 28px; height: 3px; background: var(--c-border); border-radius: 2px; overflow: hidden; display: none; }
.lgdla-bc-hs__bar i { display: block; height: 100%; width: 100%; background: var(--c-gold); transform-origin: left; transform: scaleX(0); }
.e-con.lgdla-bc-hs--pin { overflow: hidden; scroll-snap-type: none; min-height: 100vh; justify-content: center; padding-block: 0; }
.lgdla-bc-hs--pin .lgdla-bc-hs__bar { display: block; }
.e-con.lgdla-bc-hs__track { align-items: flex-start; }
.e-con.lgdla-bc-hs--pin .lgdla-bc-hs__track { align-items: stretch; }
.lgdla-bc-hs--pin .lgdla-bc-hs__track { padding-right: calc(var(--gutter) + 6vw); }
.e-con.lgdla-bc-hs--pin .lgdla-bc-hs__intro { flex-basis: 440px !important; width: 440px !important; }
.e-con.lgdla-bc-hs--pin .lgdla-bc-card { flex-basis: 400px !important; width: 400px !important; }

/* Étapes : le fil doré se trace pendant le défilement */
.e-con.lgdla-bc-steps { position: relative; }
.e-con.lgdla-bc-steps::before, .e-con.lgdla-bc-steps::after { content: ''; position: absolute; left: 21px; top: 22px; bottom: 22px; width: 2px; background: var(--c-border); }
.e-con.lgdla-bc-steps::after { background: var(--c-gold); transform-origin: top; transform: scaleY(var(--p, 1)); }
.e-con.lgdla-bc-step { position: relative; z-index: 1; flex-wrap: nowrap !important; flex-direction: row !important; }
.e-con.lgdla-bc-step > .e-con { flex: 1 1 0; min-width: 0; }
.e-con .elementor-widget.lgdla-bc-step__n { flex: 0 0 44px; width: 44px !important; }
.lgdla-bc-step__n .elementor-heading-title { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 50%; background: var(--c-bg); border: 2px solid var(--c-ink); font-size: 1rem; line-height: 1; letter-spacing: 0; transition: background-color var(--t-mid) var(--ease); }
.lgdla-js .lgdla-bc-step.is-on .lgdla-bc-step__n .elementor-heading-title { background: var(--c-gold); }
.lgdla-bc-step__title .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.lgdla-bc-step__text p { margin: 0; max-width: 48ch; }
@media (min-width: 1025px) { .e-con.lgdla-bc-etapes__head { position: sticky; top: 120px; align-self: flex-start; } }

/* Bento : photos et vidéos. Une case = un conteneur « lgdla-bn__cell » ; ses 12 premières places sont définies, les suivantes se rangent à la suite. */
.e-con.lgdla-bn { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 232px; grid-auto-flow: dense; gap: 14px; align-items: stretch; }
.e-con.lgdla-bn > .e-con.lgdla-bn__cell { position: relative; width: auto !important; min-width: 0; min-height: 0; overflow: hidden; border-radius: 24px; background: var(--c-surface); isolation: isolate; transition: none; }
.e-con.lgdla-bn > .lgdla-bn__cell:nth-child(1)  { grid-column: 1 / span 2; grid-row: 1 / span 2; }
.e-con.lgdla-bn > .lgdla-bn__cell:nth-child(3)  { grid-column: 4; grid-row: 1 / span 2; }
.e-con.lgdla-bn > .lgdla-bn__cell:nth-child(5)  { grid-column: 1 / span 2; }
.e-con.lgdla-bn > .lgdla-bn__cell:nth-child(7)  { grid-column: 4; grid-row: span 2; }
.e-con.lgdla-bn > .lgdla-bn__cell:nth-child(8)  { grid-column: 1 / span 2; }
.e-con.lgdla-bn > .lgdla-bn__cell:nth-child(12) { grid-column: 3 / span 2; }
.e-con .elementor-widget.lgdla-bn__media { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.lgdla-bn__media .elementor-widget-container { height: 100%; }
.e-con .lgdla-bn__media img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; transition: transform var(--t-photo) var(--ease-out); }
@media (hover: hover) { .lgdla-bn__cell:hover .lgdla-bn__media img, .lgdla-bn__cell:hover .elementor-custom-embed-image-overlay { transform: scale(1.05); } }
/* Vidéos : le lecteur remplit la case (le 16:9 d'Elementor est neutralisé), l'aperçu est recadré comme une photo */
.lgdla-bn__video .elementor-wrapper { position: absolute !important; inset: 0; height: 100%; padding: 0 !important; aspect-ratio: auto !important; }
.lgdla-bn__video .elementor-widget-container { height: 100%; }
.lgdla-bn__video .elementor-custom-embed-image-overlay, .lgdla-bn__video .elementor-video { position: absolute; inset: 0; width: 100%; height: 100%; background-size: cover; background-position: var(--pos, 50% 50%); object-fit: cover; transition: transform var(--t-photo) var(--ease-out); }
.lgdla-bn__video .elementor-custom-embed-play { z-index: 2; }
.lgdla-bn__video .elementor-custom-embed-play svg, .lgdla-bn__video .elementor-custom-embed-play i { color: #fff; fill: #fff; width: 56px; height: 56px; font-size: 56px; filter: drop-shadow(0 2px 12px rgba(34,30,31,.5)); }
.lgdla-bn__cell--video::after { content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(180deg, rgba(34,30,31,0) 55%, rgba(34,30,31,.4) 100%); }
.e-con .elementor-widget.lgdla-bn__tag { position: absolute; left: 14px; bottom: 14px; z-index: 3; width: auto; pointer-events: none; }
.lgdla-bn__tag .elementor-heading-title { font-size: .75rem; padding: .5em 1em; }
button.lgdla-pause--bento { right: 10px; bottom: 10px; color: #fff; z-index: 5; }
button.lgdla-pause--bento:hover, button.lgdla-pause--bento:focus, button.lgdla-pause--bento:active { color: #fff; }
.lgdla-bn__cell:focus-within { outline: 3px solid var(--c-gold); outline-offset: -3px; }
@media (max-width: 1024px) {
  .e-con.lgdla-bn { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 176px; gap: 12px; }
  .e-con.lgdla-bn > .e-con.lgdla-bn__cell { border-radius: 20px; grid-column: auto; grid-row: auto; }
  .e-con.lgdla-bn > .lgdla-bn__cell:nth-child(1)  { grid-column: 1 / span 2; grid-row: span 2; }
  .e-con.lgdla-bn > .lgdla-bn__cell:nth-child(3), .e-con.lgdla-bn > .lgdla-bn__cell:nth-child(7) { grid-column: auto; grid-row: span 2; }
  .e-con.lgdla-bn > .lgdla-bn__cell:nth-child(5), .e-con.lgdla-bn > .lgdla-bn__cell:nth-child(8), .e-con.lgdla-bn > .lgdla-bn__cell:nth-child(12) { grid-column: 1 / span 2; grid-row: auto; }
}
@media (max-width: 767px) {
  .e-con.lgdla-bn { grid-auto-rows: 150px; gap: 10px; }
  .e-con.lgdla-bn > .e-con.lgdla-bn__cell { border-radius: 16px; }
  .lgdla-bn__video .elementor-custom-embed-play svg, .lgdla-bn__video .elementor-custom-embed-play i { width: 44px; height: 44px; font-size: 44px; }
}
@media (prefers-reduced-motion: reduce) { .lgdla-bn__media img, .lgdla-bn__video .elementor-custom-embed-image-overlay { transition: none; transform: none !important; } }

/* Composer : formulaire (carte claire) + bon qui se compose en direct */
.e-con.lgdla-bc-compose { width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto; border-radius: 32px; scroll-margin-top: 104px; --tk-bg: var(--c-ink); }
.e-con.lgdla-bc-compose__form { background: var(--c-bg); border-radius: 28px; padding: 40px 40px 28px; min-width: 0; color: var(--c-ink); }
.lgdla-bc-compose__form .lgdla-tf-form .frm-fluent-form { color: var(--c-ink); }
.lgdla-bc-compose__form .frm-fluent-form fieldset { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.lgdla-bc-compose__form .ff-el-group:has(select[name="formule"]), .lgdla-bc-compose__form .ff-el-group:has(input[type=radio]), .lgdla-bc-compose__form .ff-el-group:has(input[name="beneficiaire"]) { grid-column: 1 / -1; }
.lgdla-tf-form input[type=radio] { appearance: none; -webkit-appearance: none; flex: 0 0 22px; width: 22px; height: 22px; margin: 1px 0 0; border: 1.5px solid var(--c-ink); border-radius: 50%; background: #fff; display: inline-grid; place-content: center; cursor: pointer; }
.lgdla-tf-form input[type=radio]::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: var(--c-ink); opacity: 0; }
.lgdla-tf-form input[type=radio]:checked { background: var(--c-gold); }
.lgdla-tf-form input[type=radio]:checked::after { opacity: 1; }
.lgdla-tf-form input[type=radio]:focus-visible { outline: 2px solid var(--c-gold-dark); outline-offset: 3px; }
.e-con.lgdla-bc-compose__ticket { min-width: 0; }
@media (min-width: 1025px) { .e-con.lgdla-bc-compose__ticket { position: sticky; top: 112px; align-self: flex-start; } }
.e-con.lgdla-tk--live { transform: rotate(1.5deg); }

/* Contact : trois grandes lignes qui se remplissent d'or au survol */
.lgdla-bc-linkrow, .lgdla-bc-linkrow p { margin: 0; }
.lgdla-bc-linkrow a { position: relative; display: flex; justify-content: space-between; align-items: baseline; gap: 24px; padding: clamp(22px, 3vw, 36px) 0; border-top: 1px solid var(--c-border); color: var(--c-ink); text-decoration: none; overflow: hidden; isolation: isolate; }
.lgdla-bc-linkrows .elementor-widget:last-child .lgdla-bc-linkrow a, .lgdla-bc-linkrows > :last-child a { border-bottom: 1px solid var(--c-border); }
.lgdla-bc-linkrow a::before { content: ''; position: absolute; inset: 0; background: var(--c-gold); transform: scaleY(0); transform-origin: bottom; transition: transform var(--t-mid) var(--ease-out); z-index: -1; }
@media (hover: hover) { .lgdla-bc-linkrow a:hover::before { transform: scaleY(1); } .lgdla-bc-linkrow a:hover { padding-inline: 22px; } }
.lgdla-bc-linkrow a { transition: padding var(--t-mid) var(--ease-out); }
.lgdla-bc-linkrow a:focus-visible { outline: 3px solid var(--c-ink); outline-offset: -3px; }
.lgdla-bc-linkrow a:focus-visible::before { transform: scaleY(1); }
.lgdla-bc-row__k { font-family: var(--f-body); font-size: var(--fs-small); color: var(--c-muted); white-space: nowrap; }
.lgdla-bc-row__v { font-family: var(--f-title); font-size: clamp(1.25rem, .5rem + 3.6vw, 3.5rem); line-height: 1.1; letter-spacing: -.03em; text-align: right; overflow-wrap: anywhere; }
.lgdla-bc-closing, .lgdla-bc-closing p { margin: 0; font-family: var(--f-body); font-style: italic; font-size: clamp(1.5rem, 1rem + 2vw, 2.75rem); line-height: 1.3; letter-spacing: -.01em; color: var(--c-ink); text-wrap: balance; }

@media (max-width: 1024px) {
  .e-con.lgdla-bc-compose { border-radius: 28px; scroll-margin-top: 88px; }
  .e-con.lgdla-bc-compose__form { padding: 30px 26px 20px; }
}
@media (max-width: 767px) {
  .e-con.lgdla-bc-compose { border-radius: 24px; }
  .e-con.lgdla-bc-compose__form { padding: 24px 18px 14px; border-radius: 22px; }
  .lgdla-bc-compose__form .frm-fluent-form fieldset { grid-template-columns: minmax(0, 1fr); }
  .e-con.lgdla-bc-card { border-radius: 22px; }
  .lgdla-bc-linkrow a { flex-direction: column; align-items: flex-start; gap: 4px; }
  .lgdla-bc-row__v { text-align: left; }
  .e-con.lgdla-bc-steps::before, .e-con.lgdla-bc-steps::after { left: 21px; }
}
@media (prefers-reduced-motion: reduce) { .lgdla-bc-linkrow a, .lgdla-bc-linkrow a::before { transition: none; } .lgdla-bc-step__n .elementor-heading-title { transition: none; } }

/* ---------- Page « Autour de la Grange » : compteurs, barre d'ancres, anneau 3D des activités, filtre des producteurs, carte des restaurants, cartes empilées ---------- */
.lgdla-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
:is(.lgdla-au-hero, .lgdla-au-act, .lgdla-au-prod, .lgdla-au-march, .lgdla-au-final) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }
.lgdla-au-lead, .lgdla-au-lead p { font-size: var(--fs-lead); line-height: 1.6; max-width: 38ch; margin: 0; }

/* En-tête : compteurs qui servent d'ancres, bande panoramique */
.e-con.lgdla-au-stats { align-items: flex-start; width: 100% !important; }
.e-con.lgdla-au-stat { flex: 1 1 160px; width: auto !important; min-width: 0; padding-top: 18px; border-top: 2px solid var(--c-ink); }
.lgdla-au-stat__n .elementor-heading-title { font-size: clamp(3.5rem, 1.6rem + 6vw, 7rem); line-height: .9; letter-spacing: -.05em; font-variant-numeric: tabular-nums; }
.lgdla-au-stat__l, .lgdla-au-stat__l p { margin: 0; font-size: var(--fs-small); }
.lgdla-au-stat__l a { color: var(--c-ink); text-decoration: none; border-bottom: 2px solid var(--c-gold); padding-bottom: 2px; }
@media (hover: hover) { .lgdla-au-stat__l a:hover { border-bottom-color: var(--c-gold-dark); } }
.e-con .elementor-widget.lgdla-au-band { position: relative; width: 100%; aspect-ratio: 21 / 8; overflow: hidden; border-radius: 28px; }
.lgdla-au-band .elementor-widget-container { height: 100%; }
.e-con .lgdla-au-band img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; }

/* Barre d'ancres collante */
.e-con.lgdla-au-nav { position: sticky; top: 100px; z-index: 60; pointer-events: none; padding: 0 var(--gutter); margin-bottom: -4px; }
.e-con.lgdla-au-nav__in { pointer-events: auto; width: auto; background: rgba(255,255,255,.94); border: 1px solid var(--c-border); border-radius: var(--r-full); padding: 5px; box-shadow: var(--sh-1); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.e-con .elementor-widget.lgdla-au-nav__a { width: auto; }
.lgdla-au-nav__a a { display: block; font-family: var(--f-title); font-size: var(--fs-small); color: var(--c-ink); text-decoration: none; padding: .65em 1.15em; border-radius: var(--r-full); transition: background-color var(--t-fast) var(--ease); white-space: nowrap; }
.lgdla-au-nav__a a.is-active { background: var(--c-gold); }
@media (hover: hover) { .lgdla-au-nav__a a:hover { background: var(--c-surface); } .lgdla-au-nav__a a.is-active:hover { background: var(--c-gold); } }
.lgdla-au-nav__a a:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 1px; }
@media (max-width: 1024px) { .e-con.lgdla-au-nav { top: 84px; } }
@media (max-width: 767px) { .e-con.lgdla-au-nav { top: 76px; justify-content: flex-start; overflow-x: auto; scrollbar-width: none; padding-inline: 12px; } .e-con.lgdla-au-nav__in { flex: 0 0 auto; width: max-content !important; } .e-con .elementor-widget.lgdla-au-nav__a { flex: 0 0 auto; } .e-con.lgdla-au-nav::-webkit-scrollbar { display: none; } }
.e-con.lgdla-au-act, .e-con.lgdla-au-prod, .e-con.lgdla-au-resto, .e-con.lgdla-au-march { scroll-margin-top: 150px; }

/* Cartes (activités) : pastille média + texte. Repli (sans JS, éditeur, tablette) : grille 4 colonnes / 2 / défilement tactile */
.e-con.lgdla-au-ring { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; padding: 24px var(--gutter) 96px; max-width: 1360px; margin-inline: auto; }
.e-con.lgdla-au-card, .e-con.lgdla-au-p { position: relative; background: #fff; border: 1px solid var(--c-border); border-radius: 24px; overflow: hidden; min-width: 0; transition: none; }
.e-con .elementor-widget.lgdla-au-tile { position: relative; width: 100%; aspect-ratio: 4 / 3; overflow: hidden; background: #fff; border-bottom: 1px solid var(--c-border); }
.lgdla-au-tile .elementor-widget-container { height: 100%; }
.e-con .lgdla-au-tile img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; display: block; border-radius: 0; }
.e-con .lgdla-au-tile--logo img { object-fit: contain; padding: 18px 22px; }
.e-con .lgdla-au-tile--photo img { object-fit: cover; object-position: 50% 50%; }
.e-con .elementor-widget.lgdla-au-mono { width: 100%; aspect-ratio: 4 / 3; display: grid; place-items: center; background: var(--c-surface); border-bottom: 1px solid var(--c-border); }
.lgdla-au-mono .elementor-heading-title { font-size: clamp(3.5rem, 2rem + 4vw, 5.5rem); line-height: 1; letter-spacing: 0; color: var(--c-gold-dark); }
.e-con.lgdla-au-card__body, .e-con.lgdla-au-p__body { padding: 20px 22px 22px; flex: 1 1 auto; }
.lgdla-au-card__type .elementor-heading-title, .lgdla-au-p__type .elementor-heading-title { font-family: var(--f-body); font-size: .8125rem; line-height: 1.4; letter-spacing: 0; color: var(--c-muted); }
.lgdla-au-card__name .elementor-heading-title, .lgdla-au-p__name .elementor-heading-title { font-size: var(--fs-h4); line-height: var(--lh-h4); letter-spacing: var(--ls-h4); }
.lgdla-au-card__text, .lgdla-au-card__text p, .lgdla-au-p__text, .lgdla-au-p__text p { margin: 0; font-size: var(--fs-small); line-height: 1.55; text-wrap: pretty; }
.e-con .elementor-widget.lgdla-au-link { position: static; margin-top: auto; padding-top: 6px; }
.lgdla-au-link a::before { content: ''; position: absolute; inset: 0; z-index: 2; }
.lgdla-au-link a { position: static; }
.lgdla-au-link a::after { content: ''; display: inline-block; width: .9em; height: .9em; margin-left: .45em; vertical-align: -.1em; background: currentColor; -webkit-mask: var(--lg-ico-go) center / contain no-repeat; mask: var(--lg-ico-go) center / contain no-repeat; }
@media (hover: hover) { .lgdla-au-card:hover .lgdla-au-link a, .lgdla-au-p:hover .lgdla-au-link a { border-color: var(--c-gold-dark); box-shadow: 0 1px 0 var(--c-gold-dark); } }
.lgdla-au-hint .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-small); letter-spacing: 0; color: var(--c-muted); }
.lgdla-au-hint--ring { display: none; }

/* Activités — anneau 3D épinglé (desktop, ajouté par le JS : classe lgdla-au-ring--3d) */
.lgdla-au-act--3d { overflow: hidden; }
.lgdla-au-act--3d .lgdla-au-hint--ring { display: block; }
.lgdla-au-act--3d .e-con.lgdla-au-ring { display: block !important; position: relative; height: clamp(480px, calc(100vh - 290px), 600px); padding: 0; perspective: 2900px; perspective-origin: 50% 42%; max-width: none; }
.lgdla-au-act--3d .lgdla-au-ring__ring { position: absolute; left: 50%; top: 2%; width: 0; height: 80%; transform-style: preserve-3d; }
.lgdla-au-act--3d .e-con.lgdla-au-card { position: absolute; left: 0; top: 0; width: 310px !important; margin-left: -155px; height: 100%; backface-visibility: hidden; -webkit-backface-visibility: hidden; will-change: transform, opacity; box-shadow: var(--sh-2); display: flex; }
.lgdla-au-act--3d .e-con.lgdla-au-card .lgdla-au-tile { flex: 0 0 auto; aspect-ratio: 16 / 10; }
.lgdla-au-act--3d .e-con.lgdla-au-card .lgdla-au-card__body { padding: 16px 20px 18px; gap: 6px; }
.lgdla-au-act--3d .lgdla-au-card__text p { font-size: .875rem; line-height: 1.5; }
.lgdla-au-act--3d .e-con.lgdla-au-act__head { padding-bottom: 72px !important; }
.e-con.lgdla-au-act--3d { padding-bottom: 120px !important; }
.lgdla-au-act--3d .e-con.lgdla-au-card { overflow: hidden; }
.lgdla-au-act--3d .lgdla-au-ring__label { position: absolute; left: 0; right: 0; bottom: 0; text-align: center; font-family: var(--f-title); font-size: var(--fs-small); color: var(--c-muted); font-variant-numeric: tabular-nums; }
@media (max-width: 1024px) {
  .e-con.lgdla-au-ring { grid-template-columns: repeat(2, minmax(0, 1fr)); padding-bottom: 72px; }
}
@media (max-width: 767px) {
  .e-con.lgdla-au-ring { display: flex !important; flex-direction: row !important; flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); gap: 14px; padding-bottom: 56px; scrollbar-width: none; }
  .e-con.lgdla-au-ring::-webkit-scrollbar { display: none; }
  .e-con.lgdla-au-ring > .e-con.lgdla-au-card { flex: 0 0 82% !important; width: 82% !important; scroll-snap-align: center; }
  .lgdla-au-hint--ring { display: block; }
}

/* Producteurs : filtre animé */
.e-con.lgdla-au-chips { position: sticky; top: 168px; z-index: 20; padding: 6px 0; }
.e-con .elementor-widget.lgdla-au-chip { width: auto; flex: 0 0 auto; }
.lgdla-au-chip .elementor-button { white-space: nowrap; }
.lgdla-au-chip .elementor-button { background: transparent !important; color: var(--c-ink) !important; border: 1px solid var(--c-ink) !important; border-radius: var(--r-full); font-family: var(--f-title); font-size: var(--fs-small); letter-spacing: 0; line-height: 1; padding: .85em 1.3em; transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease); }
@media (hover: hover) { .lgdla-au-chip .elementor-button:hover { background: var(--c-surface) !important; } }
.lgdla-au-chip.is-on .elementor-button { background: var(--c-ink) !important; color: var(--c-bg) !important; }
.lgdla-au-chip .elementor-button:focus-visible { outline: 2px solid var(--c-gold-dark); outline-offset: 3px; }
.e-con.lgdla-au-pgrid { align-items: stretch; }
.e-con.lgdla-au-p { flex: 0 0 calc((100% - 54px) / 4); width: calc((100% - 54px) / 4) !important; }
.e-con.lgdla-au-p.is-out { display: none; }
.e-con.lgdla-au-p .lgdla-au-tile { aspect-ratio: 1 / 1; }
.e-con.lgdla-au-p .elementor-widget.lgdla-au-mono { aspect-ratio: 1 / 1; }
.lgdla-au-closing, .lgdla-au-closing p { margin: 0; font-family: var(--f-body); font-style: italic; font-size: clamp(1.375rem, 1rem + 1.6vw, 2.25rem); line-height: 1.35; max-width: 34em; text-wrap: balance; }
@media (max-width: 1024px) { .e-con.lgdla-au-p { flex-basis: calc((100% - 18px) / 2); width: calc((100% - 18px) / 2) !important; } .e-con.lgdla-au-chips { top: 150px; } }
@media (max-width: 767px) {
  .e-con.lgdla-au-chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; top: 136px; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); background: var(--c-bg); }
  .e-con.lgdla-au-chips::-webkit-scrollbar { display: none; }
  .e-con.lgdla-au-p { flex-basis: 100%; width: 100% !important; }
}

/* Restaurants : carte + liste liée */
.e-con.lgdla-au-resto { width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto; border-radius: 32px; color: var(--c-on-dark); }
.lgdla-au-resto .elementor-heading-title { color: var(--c-on-dark); }
.lgdla-au-resto .lgdla-au-resto__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-au-resto__lead, .lgdla-au-resto__lead p { color: var(--c-on-dark-70); margin: 0; max-width: 46ch; }
.e-con.lgdla-au-mapwrap { min-width: 0; }
@media (min-width: 1025px) { .e-con.lgdla-au-mapwrap { position: sticky; top: 120px; align-self: flex-start; } }
.lgdla-au-mapw svg { width: 100%; height: auto; max-height: 78vh; display: block; overflow: visible; }
.lgdla-au-map__land { fill: rgba(248,247,245,.07); stroke: rgba(248,247,245,.55); stroke-width: 1.4; stroke-linejoin: round; }
.lgdla-au-map__ring { fill: none; stroke: rgba(248,247,245,.28); stroke-width: 1; stroke-dasharray: 3 6; }
.lgdla-au-map__rl { font: 11px var(--f-body); fill: rgba(248,247,245,.55); }
.lgdla-au-map__ctx circle { fill: rgba(248,247,245,.4); }
.lgdla-au-map__ctx text { font: 12px var(--f-body); fill: rgba(248,247,245,.5); }
.lgdla-au-pin { cursor: pointer; }
.lgdla-au-pin__halo { fill: var(--c-gold); opacity: 0; transform-box: fill-box; transform-origin: center; transition: opacity var(--t-mid) var(--ease), transform var(--t-mid) var(--ease-out); transform: scale(.4); }
.lgdla-au-pin__dot { fill: var(--c-on-dark); stroke: #221E1F; stroke-width: 2; transform-box: fill-box; transform-origin: center; transition: transform var(--t-mid) var(--ease-out), fill var(--t-fast) var(--ease); }
.lgdla-au-pin__t { font: 14px var(--f-title); fill: var(--c-on-dark); opacity: .85; transition: opacity var(--t-fast) var(--ease), fill var(--t-fast) var(--ease); }
.lgdla-au-pin.is-on .lgdla-au-pin__halo { opacity: .35; transform: scale(1.5); }
.lgdla-au-pin.is-on .lgdla-au-pin__dot { fill: var(--c-gold); transform: scale(1.35); }
.lgdla-au-pin.is-on .lgdla-au-pin__t { fill: var(--c-gold); opacity: 1; }
.lgdla-au-house__pulse { fill: var(--c-gold); opacity: .35; transform-box: fill-box; transform-origin: center; animation: lgdla-map-pulse 2.6s ease-out infinite; }
.lgdla-au-map.is-offscreen .lgdla-au-house__pulse { animation-play-state: paused; }
.lgdla-au-house__dot { fill: var(--c-gold); stroke: #221E1F; stroke-width: 2.5; }
.lgdla-au-house__t { font: 15px var(--f-title); fill: var(--c-gold); }
/* « lgdla-map-pulse » : ce nom était « lgdla-pulse », déjà pris par la pastille « En chantier » (halo de 3 pulsations) : la 2e définition écrasait la 1re */
@keyframes lgdla-map-pulse { 0% { transform: scale(.7); opacity: .5; } 100% { transform: scale(2.6); opacity: 0; } }
.lgdla-au-mapnote, .lgdla-au-mapnote p { margin: 12px 0 0; font-size: .8125rem; line-height: 1.5; color: var(--c-on-dark-55); max-width: 46ch; }
.e-con.lgdla-au-rlist { min-width: 0; }
.e-con.lgdla-au-r { padding: 26px 0 28px; border-top: 1px solid var(--c-on-dark-border); position: relative; transition: padding var(--t-mid) var(--ease-out), background-color var(--t-mid) var(--ease); }
.e-con.lgdla-au-r.is-on { padding-left: 18px; background: rgba(248,247,245,.05); }
.e-con.lgdla-au-r.is-on::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--c-gold); }
.lgdla-au-r__name .elementor-heading-title { font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); }
.lgdla-au-r__meta .elementor-heading-title { font-family: var(--f-body); font-size: var(--fs-small); letter-spacing: 0; color: var(--c-gold); }
.lgdla-au-r__text, .lgdla-au-r__text p { margin: 0; color: var(--c-on-dark-70); font-size: var(--fs-small); line-height: 1.6; max-width: 52ch; }
.lgdla-au-resto .lgdla-au-link a { color: var(--c-on-dark); border-color: var(--c-on-dark); }
.lgdla-au-resto .lgdla-au-link a::before { display: none; }
.lgdla-au-resto .elementor-widget.lgdla-au-link { position: relative; }

/* Marchastel : cartes qui s'empilent (collantes) */
.e-con.lgdla-au-steps { position: relative; }
.e-con.lgdla-au-step { position: sticky; top: calc(150px + var(--i, 0) * 16px); background: #fff; border: 1px solid var(--c-border); border-radius: 28px; overflow: hidden; min-height: 440px; will-change: transform; transition: none; }
.e-con.lgdla-au-step__media { position: relative; min-height: 340px; background: var(--c-surface); }
.e-con .elementor-widget.lgdla-au-step__img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.lgdla-au-step__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-au-step__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; display: block; border-radius: 0; }
.e-con .lgdla-au-step__img.lgdla-au-tile--photo img { object-fit: cover; }
.e-con .lgdla-au-step__img.lgdla-au-tile--logo img { object-fit: contain; padding: 40px; background: #fff; }
.e-con.lgdla-au-step__body { padding: 48px 52px; min-width: 0; }
.lgdla-au-step__n .elementor-heading-title { font-family: var(--f-title); font-size: var(--fs-small); letter-spacing: .08em; color: var(--c-muted); font-variant-numeric: tabular-nums; }
.lgdla-au-step__title .elementor-heading-title { font-size: var(--fs-h2); line-height: var(--lh-h2); letter-spacing: var(--ls-h2); }
.lgdla-au-step__text p { margin: 0; max-width: 44ch; }
.e-con.lgdla-au-step .lgdla-au-link a::before { display: none; }
.e-con.lgdla-au-step .elementor-widget.lgdla-au-link { position: relative; }
@media (max-width: 1024px) { .e-con.lgdla-au-step { top: calc(120px + var(--i, 0) * 12px); min-height: 0; } .e-con.lgdla-au-step__body { padding: 32px 30px; } .e-con.lgdla-au-step__media { min-height: 0; aspect-ratio: 16 / 9; } .e-con.lgdla-au-resto { border-radius: 28px; } }
@media (max-width: 767px) { .e-con.lgdla-au-step { position: relative; top: auto; border-radius: 22px; } .e-con.lgdla-au-step__body { padding: 24px 22px; } .e-con.lgdla-au-resto { border-radius: 24px; } .e-con.lgdla-au-r.is-on { padding-left: 12px; } .e-con .elementor-widget.lgdla-au-band { aspect-ratio: 16 / 9; border-radius: 20px; } }
.e-con.lgdla-au-final { align-items: flex-end; }
@media (prefers-reduced-motion: reduce) { .lgdla-au-house__pulse { animation: none; } .lgdla-au-pin__halo, .lgdla-au-pin__dot { transition: none; } }

/* ---------- Page « L'actualité » = les avis Google : note, carrousel, liste. Données = extension WP Social Ninja, affichage = [lgdla_avis] ---------- */
:is(.lgdla-av-hero, .lgdla-av-split, .lgdla-av-fin) .lgdla-eyebrow .elementor-heading-title { color: var(--c-muted); }
.lgdla-av-lead, .lgdla-av-lead p { font-size: var(--fs-lead); line-height: 1.6; max-width: 40ch; margin: 0; }
.lgdla-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* Étoiles (masque CSS, couleur or) */
.lgdla-stars { display: inline-flex; gap: 3px; vertical-align: middle; }
.lgdla-stars i { width: 1em; height: 1em; background: var(--c-gold); -webkit-mask: var(--lg-ico-star) center / contain no-repeat; mask: var(--lg-ico-star) center / contain no-repeat; display: block; }
:root { --lg-ico-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 2.2l2.9 6.1 6.7.8-4.9 4.6 1.3 6.6L12 17l-6 3.3 1.3-6.6L2.4 9.1l6.7-.8z'/%3E%3C/svg%3E"); }

/* La note en grand */
.e-con.lgdla-av-big { padding-left: 28px; border-left: 3px solid var(--c-gold); min-width: 0; }
.lgdla-avs { display: flex; flex-direction: column; gap: 10px; }
.lgdla-avs__n { margin: 0; font-family: var(--f-title); font-size: clamp(6rem, 3rem + 10vw, 12rem); line-height: .85; letter-spacing: -.06em; font-variant-numeric: tabular-nums; color: var(--c-ink); }
.lgdla-avs .lgdla-stars { font-size: 1.75rem; margin-top: 22px; }
.lgdla-avs__l { margin: 0; font-size: var(--fs-body); }
.lgdla-avs__l a { color: var(--c-ink); text-decoration: underline; text-decoration-color: var(--c-gold); text-decoration-thickness: 2px; text-underline-offset: 3px; }

/* Feuille encre + carrousel */
.e-con.lgdla-av-sheet { width: calc(100% - 2 * var(--gutter)) !important; margin-inline: auto; border-radius: 32px; color: var(--c-on-dark); overflow: hidden; scroll-margin-top: 104px; }
.lgdla-av-sheet .elementor-heading-title { color: var(--c-on-dark); }
.lgdla-av-sheet .lgdla-av-sheet__eyebrow .elementor-heading-title { color: var(--c-gold); }
.lgdla-av-sheet__lead, .lgdla-av-sheet__lead p { margin: 0; color: var(--c-on-dark-70); max-width: 46ch; }
.e-con .elementor-widget.lgdla-av-carousel { width: 100%; }
.lgdla-avc { --w: min(560px, 80vw); --g: 24px; width: 100%; display: flex; flex-direction: column; align-items: center; gap: 36px; }
.lgdla-av-sheet .lgdla-av-sheet__eyebrow, .lgdla-av-sheet .lgdla-av-sheet__eyebrow .elementor-heading-title { text-align: center; }
.lgdla-avc__avatars { position: relative; display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: nowrap; max-width: 100%; overflow-x: auto; padding: 14px 20px; scrollbar-width: none; }
.lgdla-avc__avatars::-webkit-scrollbar { display: none; }
button.lgdla-avc__av { flex: 0 0 auto; width: 48px; height: 48px; padding: 0; border-radius: 50%; border: 2px solid transparent; background: rgba(248,247,245,.12); color: var(--c-on-dark); font-family: var(--f-title); font-size: 1.0625rem; display: grid; place-items: center; cursor: pointer; opacity: .55; transition: transform var(--t-mid) var(--ease-out), opacity var(--t-mid) var(--ease), background-color var(--t-mid) var(--ease), border-color var(--t-mid) var(--ease); min-width: 0; }
button.lgdla-avc__av:hover, button.lgdla-avc__av:focus { background: rgba(248,247,245,.2); color: var(--c-on-dark); }
button.lgdla-avc__av.is-on, button.lgdla-avc__av.is-on:hover { opacity: 1; transform: scale(1.35); border-color: var(--c-gold); background: var(--c-gold); color: var(--c-ink); }
button.lgdla-avc__av:focus-visible { outline: 2px solid var(--c-gold); outline-offset: 3px; }
.lgdla-avc__view { width: 100%; overflow: hidden; padding: 8px 0 12px; touch-action: pan-y; }
.lgdla-avc__track { display: flex; gap: var(--g); align-items: flex-start; width: max-content; will-change: transform; padding-inline: calc(50vw - var(--w) / 2); }
.lgdla-avc__card { flex: 0 0 var(--w); width: var(--w); box-sizing: border-box; padding: 32px 34px 30px; border-radius: 26px; border: 1px solid rgba(248,247,245,.16); background: rgba(248,247,245,.05); display: flex; flex-direction: column; gap: 22px; opacity: .6; transform: scale(.93); transition: opacity var(--t-photo) var(--ease-out), transform var(--t-photo) var(--ease-out), border-color var(--t-photo) var(--ease); }
.lgdla-avc__card.is-on { opacity: 1; transform: none; border-color: var(--c-gold); background: rgba(248,247,245,.08); }
.lgdla-avc__card header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.lgdla-avc__card .lgdla-stars { font-size: 1.125rem; }
.lgdla-avc__when { font-size: .8125rem; color: var(--c-on-dark-70); }
.lgdla-avc__text { margin: 0; font-family: var(--f-body); font-size: clamp(1.0625rem, .95rem + .45vw, 1.3125rem); line-height: 1.6; color: var(--c-on-dark); display: -webkit-box; -webkit-line-clamp: 9; -webkit-box-orient: vertical; overflow: hidden; text-wrap: pretty; }
.lgdla-avc__card footer { display: flex; align-items: center; gap: 14px; }
.lgdla-avc__mono { width: 42px; height: 42px; flex: 0 0 42px; border-radius: 50%; background: var(--c-gold); color: var(--c-ink); display: grid; place-items: center; font-family: var(--f-title); }
.lgdla-avc__who { font-family: var(--f-title); font-size: var(--fs-body); overflow-wrap: anywhere; }
.lgdla-avc__nav { display: flex; gap: 12px; }
button.lgdla-avc__btn { width: 52px; height: 52px; border-radius: 50%; border: 1px solid rgba(248,247,245,.4); background: transparent; color: var(--c-on-dark); padding: 0; cursor: pointer; min-width: 0; display: grid; place-items: center; transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease); }
button.lgdla-avc__btn::before { content: ''; width: 20px; height: 20px; background: currentColor; -webkit-mask: var(--lg-ico-go) center / contain no-repeat; mask: var(--lg-ico-go) center / contain no-repeat; }
button.lgdla-avc__prev::before { transform: scaleX(-1); }
@media (hover: hover) { button.lgdla-avc__btn:hover { background: var(--c-gold); color: var(--c-ink); border-color: var(--c-gold); } }
button.lgdla-avc__btn:focus-visible { outline: 2px solid var(--c-gold); outline-offset: 3px; background: transparent; }
button.lgdla-avc__btn[disabled] { opacity: .3; cursor: default; }

/* Liste en entier : titre collant à gauche, colonne à droite */
@media (min-width: 1025px) { .e-con.lgdla-av-split__head { position: sticky; top: 130px; align-self: flex-start; } }
.e-con.lgdla-av-split__list { min-width: 0; }
.lgdla-avl { display: flex; flex-direction: column; gap: 18px; }
.lgdla-avl__card { background: #fff; border: 1px solid var(--c-border); border-radius: 24px; padding: 28px 30px 30px; }
.lgdla-avl__card header { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.lgdla-avl__card header > div { flex: 1 1 auto; min-width: 0; }
.lgdla-avl__mono { width: 46px; height: 46px; flex: 0 0 46px; border-radius: 50%; background: var(--c-gold); color: var(--c-ink); display: grid; place-items: center; font-family: var(--f-title); font-size: 1.125rem; }
.lgdla-avl__name { margin: 0; font-family: var(--f-title); font-size: var(--fs-body); line-height: 1.3; letter-spacing: 0; overflow-wrap: anywhere; }
.lgdla-avl__when { margin: 0; font-size: .8125rem; color: var(--c-muted); }
.lgdla-avl__card .lgdla-stars { font-size: 1rem; }
.lgdla-avl__text { margin: 0; line-height: 1.7; }

@media (max-width: 1024px) { .e-con.lgdla-av-sheet { border-radius: 28px; scroll-margin-top: 88px; } .e-con.lgdla-av-big { padding-left: 20px; } }
@media (max-width: 767px) {
  .e-con.lgdla-av-sheet { border-radius: 24px; }
  .lgdla-avc { --g: 14px; gap: 28px; }
  .lgdla-avc__card { padding: 24px 22px 22px; border-radius: 22px; }
  .lgdla-avl__card { padding: 22px 20px 24px; border-radius: 20px; }
  .lgdla-avl__card header { flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) { .lgdla-avc__card, button.lgdla-avc__av, button.lgdla-avc__btn { transition: none; } }

/* ---------- Pages légales : sommaire collant + texte de lecture (le texte juridique est repris tel quel) ---------- */
.lgdla-lg-eyebrow .elementor-heading-title { color: var(--c-muted); }
.lgdla-lg-title .elementor-heading-title { font-size: clamp(2.25rem, 1.2rem + 4.2vw, 4.5rem); max-width: 18ch; }
.e-con .elementor-widget.lgdla-lg-tab { width: auto; }
.lgdla-lg-tab a { display: inline-block; font-family: var(--f-title); font-size: var(--fs-small); color: var(--c-ink); text-decoration: none; border: 1px solid var(--c-border); background: #fff; border-radius: var(--r-full); padding: .7em 1.2em; transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease); }
.lgdla-lg-tab.is-on a { background: var(--c-ink); color: var(--c-bg); border-color: var(--c-ink); }
@media (hover: hover) { .lgdla-lg-tab:not(.is-on) a:hover { border-color: var(--c-ink); } }
.lgdla-lg-tab a:focus-visible { outline: 2px solid var(--c-gold-dark); outline-offset: 3px; }

/* Sommaire */
.e-con.lgdla-lg-tocwrap, .lgdla-lg-tocwrap .elementor-widget, .lgdla-lg-tocwrap .elementor-widget-container, .lgdla-lg-toc { min-width: 0; max-width: 100%; }
.lgdla-lg-tocwrap { overflow: hidden; }
@media (min-width: 1025px) { .lgdla-lg-tocwrap { overflow: visible; } }
@media (min-width: 1025px) { .e-con.lgdla-lg-tocwrap { position: sticky; top: 120px; align-self: flex-start; } }
.lgdla-lg-toc { position: relative; padding-left: 22px; }
.lgdla-lg-toc::before, .lgdla-lg-toc::after { content: ''; position: absolute; left: 0; top: 34px; bottom: 0; width: 2px; background: var(--c-border); }
.lgdla-lg-toc::after { background: var(--c-gold); transform-origin: top; transform: scaleY(var(--p, 0)); }
.lgdla-lg-toc__t { margin: 0 0 14px; font-family: var(--f-title); font-size: var(--fs-eyebrow); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--c-muted); }
.lgdla-lg-toc__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.lgdla-lg-toc__list a { display: block; padding: 7px 0; font-size: var(--fs-small); line-height: 1.4; color: var(--c-muted); text-decoration: none; transition: color var(--t-fast) var(--ease), padding var(--t-mid) var(--ease-out); }
.lgdla-lg-toc__list a.is-on { color: var(--c-ink); padding-left: 8px; font-weight: 500; }
@media (hover: hover) { .lgdla-lg-toc__list a:hover { color: var(--c-ink); } }
.lgdla-lg-toc__list a:focus-visible { outline: 2px solid var(--c-gold-dark); outline-offset: 2px; color: var(--c-ink); }
@media (max-width: 1024px) {
  .e-con.lgdla-lg-tocwrap { position: sticky; top: 76px; z-index: 30; background: var(--c-bg); margin-inline: calc(var(--gutter) * -1); padding: 8px var(--gutter); }
  .lgdla-lg-toc { padding-left: 0; }
  .lgdla-lg-toc::before, .lgdla-lg-toc::after, .lgdla-lg-toc__t { display: none; }
  .lgdla-lg-toc__list { flex-direction: row; overflow-x: auto; scrollbar-width: none; gap: 8px; }
  .lgdla-lg-toc__list::-webkit-scrollbar { display: none; }
  .lgdla-lg-toc__list li { flex: 0 0 auto; }
  .lgdla-lg-toc__list a { border: 1px solid var(--c-border); border-radius: var(--r-full); padding: .55em 1em; white-space: nowrap; background: #fff; }
  .lgdla-lg-toc__list a.is-on { padding-left: 1em; background: var(--c-ink); color: var(--c-bg); border-color: var(--c-ink); }
}

/* Texte : confortable, sans effet */
.e-con.lgdla-lg-bodywrap { min-width: 0; }
.lgdla-lg-body { font-size: var(--fs-body); line-height: 1.8; }
.lgdla-lg-body > .elementor-widget-container > * { max-width: 70ch; }
.lgdla-lg-body p { margin: 0 0 1.1em; overflow-wrap: anywhere; }
.lgdla-lg-body h2 { font-family: var(--f-title); font-weight: 400; font-size: var(--fs-h3); line-height: var(--lh-h3); letter-spacing: var(--ls-h3); margin: 2.2em 0 .7em; padding-top: 1.1em; border-top: 1px solid var(--c-border); scroll-margin-top: 150px; text-wrap: balance; }
.lgdla-lg-body h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.lgdla-lg-body h3 { font-family: var(--f-title); font-weight: 400; font-size: var(--fs-h4); margin: 1.6em 0 .5em; scroll-margin-top: 150px; }
.lgdla-lg-body ul, .lgdla-lg-body ol { margin: 0 0 1.1em; padding-left: 1.3em; }
.lgdla-lg-body li { margin: .35em 0; }
.lgdla-lg-body a { color: var(--c-ink); text-decoration: underline; text-decoration-color: var(--c-gold); text-decoration-thickness: 2px; text-underline-offset: 3px; overflow-wrap: anywhere; }
@media (hover: hover) { .lgdla-lg-body a:hover { text-decoration-color: var(--c-gold-dark); } }
.lgdla-lg-body strong { font-weight: 600; }
.e-con.lgdla-lg-foot { border-top: 1px solid var(--c-border); margin-top: 24px; }
.lgdla-lg-foot__t, .lgdla-lg-foot__t p { margin: 0; }
.lgdla-lg-foot__t a { color: var(--c-ink); text-decoration: underline; text-decoration-color: var(--c-gold); text-decoration-thickness: 2px; text-underline-offset: 3px; }

/* Pied de page : un mot long du grand titre ne doit jamais élargir la page sur mobile */
.e-con.lgdla-footer { overflow-x: clip; }
.lgdla-footer .elementor-heading-title { overflow-wrap: anywhere; }

/* ---------- Fins de page : une conclusion différente par page (Accueil, Chambres, Tarifs, La Grange) ---------- */
.lgdla-fin-eyebrow .elementor-heading-title { color: var(--c-muted); }

/* 1. Accueil — « Arche » : façade en arche, bouton rond or qui la chevauche */
.e-con.lgdla-fin-arche__main { display: grid !important; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 88px; align-items: center; }
.e-con.lgdla-fin-arche__text { min-width: 0; }
.e-con.lgdla-fin-arche__media { position: relative; min-width: 0; width: 100%; max-width: 520px; margin-inline-start: auto; }
.e-con .elementor-widget.lgdla-fin-arche__arch { position: relative; width: 100%; aspect-ratio: 4 / 5; border-radius: 999px 999px 28px 28px; overflow: hidden; }
.lgdla-fin-arche__arch .elementor-widget-container { height: 100%; }
.e-con .lgdla-fin-arche__arch img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: 50% 62%; display: block; border-radius: 0; }
.e-con .elementor-widget.lgdla-fin-arche__go { position: absolute; left: -76px; bottom: 72px; width: auto; z-index: 2; transition: none; }
.lgdla-fin-arche__go .elementor-button {
  width: 172px; height: 172px; padding: 22px; border-radius: 50%; justify-content: center; flex-direction: column; text-align: center; gap: .6em;
  line-height: 1.25; box-shadow: 0 0 0 10px var(--c-bg);          /* anneau couleur du fond : la photo semble découpée autour du bouton */
}
.lgdla-fin-arche__go .elementor-button::after { width: 1.1em; height: 1.1em; }
.e-con.lgdla-fin-arche__foot { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 56px; align-items: start; border-top: 1px solid var(--c-border); padding-top: 56px; }
.lgdla-fin-arche__foot .lgdla-prose p { max-width: 62ch; }
@media (max-width: 1024px) {
  .e-con.lgdla-fin-arche__main { grid-template-columns: minmax(0, 1fr); gap: 48px; }
  .e-con.lgdla-fin-arche__media { max-width: 440px; margin-inline: auto; }
  .e-con.lgdla-fin-arche__foot { grid-template-columns: minmax(0, 1fr); gap: 24px; padding-top: 40px; }
  .e-con .elementor-widget.lgdla-fin-arche__go { left: 12px; bottom: 36px; }
}
@media (max-width: 767px) {
  .lgdla-fin-arche__go .elementor-button { width: 148px; height: 148px; padding: 12px; box-shadow: 0 0 0 7px var(--c-bg); font-size: .9375rem; }
  .e-con .elementor-widget.lgdla-fin-arche__go { left: 6px; bottom: 28px; }
}

/* 2. Les chambres — « Deux portes » : le panneau survolé s'ouvre */
.e-con.lgdla-fin-duo__head { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr); gap: 64px; align-items: end; }
.e-con.lgdla-fin-duo__panels { display: flex !important; flex-direction: row !important; gap: 16px; height: clamp(440px, 44vw, 620px); }
.e-con.lgdla-fin-duo__panel {
  position: relative; flex: 1 1 0 !important; width: auto !important; min-width: 0; overflow: hidden; border-radius: 28px; isolation: isolate;
  transition: flex-grow .7s var(--ease-out);
}
.e-con .elementor-widget.lgdla-fin-duo__img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; }
.lgdla-fin-duo__img .elementor-widget-container { height: 100%; }
.e-con .lgdla-fin-duo__img img { position: absolute; inset: 0; width: 100%; height: 100% !important; max-width: none; object-fit: cover; object-position: var(--pos, 50% 50%); display: block; border-radius: 0; transition: transform 1.1s var(--ease-out); }
.e-con.lgdla-fin-duo__cap {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 96px 32px 30px;
  background: linear-gradient(to top, rgba(21, 18, 19, .88) 0%, rgba(21, 18, 19, .70) 55%, rgba(21, 18, 19, 0) 100%);   /* 24/10 : voile renforcé (étiquette « La chambre » à 3,9:1 sur mobile) */
}
.lgdla-fin-duo__tag .elementor-heading-title { font-family: var(--f-title); font-size: var(--fs-eyebrow); letter-spacing: var(--ls-eyebrow); text-transform: uppercase; color: var(--c-on-dark); }
.lgdla-fin-duo__name .elementor-heading-title { font-size: clamp(2rem, 1.1rem + 3vw, 3.5rem); line-height: 1; letter-spacing: -.03em; color: var(--c-on-dark); }
.lgdla-fin-duo__go a {
  position: static; display: inline-block; font-family: var(--f-title); font-size: var(--fs-small); color: var(--c-on-dark); text-decoration: none; border: 0;
  background: linear-gradient(var(--c-gold), var(--c-gold)) 0 100% / 100% 2px no-repeat; padding-bottom: 3px; transition: background-size var(--t-mid) var(--ease-out), color var(--t-mid) var(--ease);
}
.lgdla-fin-duo__go a::after { content: ''; position: absolute; inset: 0; z-index: 2; }      /* tout le panneau est cliquable */
.lgdla-fin-duo__go a:focus-visible { outline: 3px solid var(--c-gold); outline-offset: -6px; box-shadow: none; }
.e-con.lgdla-fin-duo__panel:focus-within { box-shadow: 0 0 0 3px var(--c-gold); }
@media (hover: hover) and (min-width: 1025px) {
  .e-con.lgdla-fin-duo__panels:hover .lgdla-fin-duo__panel { flex-grow: .72 !important; }
  .e-con.lgdla-fin-duo__panels .lgdla-fin-duo__panel:hover { flex-grow: 1.7 !important; }
  .lgdla-fin-duo__panel:hover .lgdla-fin-duo__img img { transform: scale(1.05); }
  .lgdla-fin-duo__panel:hover .lgdla-fin-duo__go a { background-size: 100% 100%; color: var(--c-ink); box-shadow: none; }
}
@media (max-width: 1024px) {
  .e-con.lgdla-fin-duo__head { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .e-con.lgdla-fin-duo__panels { flex-direction: column !important; height: auto; }
  .e-con.lgdla-fin-duo__panel { flex: none !important; width: 100% !important; height: 340px; }
}
@media (max-width: 767px) {
  .e-con.lgdla-fin-duo__panel { height: 280px; border-radius: 22px; }
  .e-con.lgdla-fin-duo__cap { padding: 72px 22px 22px; }
}

/* 3. Tarifs et réservations — « Mots » : la phrase s'allume mot à mot, un filet doré suit la lecture */
.lgdla-fin-mots__text { position: relative; padding-left: clamp(22px, 3.4vw, 52px); }
.lgdla-fin-mots__text::before {
  content: ''; position: absolute; left: 0; top: .35em; bottom: .35em; width: 4px; border-radius: 4px; background: var(--c-gold);
  transform-origin: top; transform: scaleY(var(--p, 1));
}
.lgdla-fin-mots__text p { font-family: var(--f-title); font-size: clamp(1.75rem, .8rem + 3.3vw, 3.75rem); line-height: 1.16; letter-spacing: -.035em; color: var(--c-ink); max-width: 22em; margin: 0; text-wrap: balance; }
.lgdla-fin-mots__text.is-split .lgdla-w { opacity: .16; }
.lgdla-fin-mots__text.is-split::before { transform: scaleY(var(--p, 0)); }
.e-con.lgdla-fin-mots__foot { padding-left: clamp(22px, 3.4vw, 52px); }
.lgdla-fin-mots__foot .lgdla-prose p { margin: 0; max-width: 34ch; }
@media (max-width: 1024px) { .e-con.lgdla-fin-mots__foot { align-items: flex-start !important; } }

/* 4. La Grange — « Polaroïds » : photos éparpillées autour du texte */
.e-con.lgdla-fin-pola { position: relative; min-height: clamp(660px, 56vw, 760px); }
.e-con.lgdla-fin-pola__text { position: relative; z-index: 2; width: min(100%, 560px); }
.e-con .elementor-widget.lgdla-fin-pola__p {
  position: absolute; z-index: 1; box-sizing: border-box; padding: 8px 8px 30px; background: #fff; border-radius: 4px;
  box-shadow: 0 22px 44px -22px rgba(34, 30, 31, .4); rotate: var(--rot, 0deg); transition: rotate .5s var(--ease-out), scale .5s var(--ease-out), box-shadow .5s var(--ease-out);
}
.lgdla-fin-pola__p img { display: block; width: 100%; height: auto !important; aspect-ratio: var(--ar, 3 / 4); object-fit: cover; border-radius: 0; }
.e-con .elementor-widget.lgdla-fin-pola__p1 { --rot: -5deg; --ar: 3 / 4; left: 1%; top: 6%; width: 20%; }
.e-con .elementor-widget.lgdla-fin-pola__p2 { --rot: 4deg;  --ar: 4 / 3; right: 1%; top: 3%; width: 25%; }
.e-con .elementor-widget.lgdla-fin-pola__p3 { --rot: 3deg;  --ar: 3 / 4; left: 10%; bottom: 3%; width: 18%; }
.e-con .elementor-widget.lgdla-fin-pola__p4 { --rot: -4deg; --ar: 1 / 1; right: 9%; bottom: 4%; width: 19%; }
@media (hover: hover) { .e-con .elementor-widget.lgdla-fin-pola__p:hover { rotate: 0deg; scale: 1.05; z-index: 3; box-shadow: 0 30px 56px -24px rgba(34, 30, 31, .5); } }
@media (max-width: 1024px) {
  .e-con.lgdla-fin-pola { min-height: 0; }
  .e-con.lgdla-fin-pola > .e-con-inner { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 16px; align-items: start; width: 100%; }   /* conteneur « boxed » : les enfants sont dans .e-con-inner */
  .e-con.lgdla-fin-pola__text { grid-column: 1 / -1; grid-row: 1; width: 100%; margin-bottom: 28px; }
  .e-con .elementor-widget.lgdla-fin-pola__p { position: relative; inset: auto !important; width: 100% !important; margin: 0; }
  .e-con .elementor-widget.lgdla-fin-pola__p1 { --rot: -2.5deg; } .e-con .elementor-widget.lgdla-fin-pola__p2 { --rot: 2deg; }
  .e-con .elementor-widget.lgdla-fin-pola__p3 { --rot: 2deg; }    .e-con .elementor-widget.lgdla-fin-pola__p4 { --rot: -2deg; }
}

/* ---------- Hero de l'accueil : séquence de trois vidéos (voir initHeroSeq dans lgdla-front.js) ----------
   `lgdla-seq` est posé sur <html> par un petit script de <head> (lgdla-front.php) : sans lui (mobile, mouvement réduit, éditeur) rien de tout cela ne s'applique. */
.lgdla-hero__vid { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 0; opacity: 0; transition: opacity 1.1s ease; pointer-events: none; }
.lgdla-hero.is-v2 .lgdla-hero__vid--2, .lgdla-hero.is-v3 .lgdla-hero__vid--3 { opacity: 1; }

/* Gros titre d'ouverture : décoratif (aria-hidden) ; le vrai titre h1 reste celui du hero. Calé en bas à gauche, sous le village,
   les deux lignes de même taille, « de L'Abille » décalé vers la droite. */
.lgdla-intro { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; pointer-events: none;
  padding: 0 5vw calc(var(--lg-cap-h, 120px) / 2 + 3.5%); }
.lgdla-intro__title { display: contents; }
.lgdla-intro__line { display: block; white-space: nowrap; text-align: left; font-family: var(--f-title); font-weight: 400; line-height: 1.12; letter-spacing: -.045em;
  color: var(--c-on-dark); text-shadow: 0 2px 40px rgba(21, 18, 19, .35); opacity: 0; }
.lgdla-intro__line:nth-child(2) { margin-left: 12vw; }
.lgdla-hero.is-intro .lgdla-intro__line { animation: lgdla-fade 1.2s cubic-bezier(.4, 0, .2, 1) .2s forwards; }
.lgdla-hero.is-v2 .lgdla-intro__line { animation: none; opacity: 0; transition: opacity .7s ease; }
.lgdla-hero.is-final .lgdla-intro { display: none; }
@keyframes lgdla-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes lgdla-failsafe { to { opacity: 1; visibility: visible; } }

/* Cachés jusqu'à leur fondu : titre, texte, boutons du hero et header (la cascade se termine vers 4 s) */
html.lgdla-seq .lgdla-hero__title, html.lgdla-seq .lgdla-hero__lead, html.lgdla-seq .lgdla-hero__cta, html.lgdla-seq .lgdla-hero__pause { opacity: 0; visibility: hidden; }
html.lgdla-seq .e-con.lgdla-header { opacity: 0; visibility: hidden;
  transition: opacity 1s cubic-bezier(.4, 0, .2, 1), visibility 0s linear 1s, background-color var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease), transform var(--t-mid) var(--ease); }
html.lgdla-seq.lgdla-hdr-on .e-con.lgdla-header { opacity: 1; visibility: visible;
  transition: opacity 1s cubic-bezier(.4, 0, .2, 1), visibility 0s, background-color var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease), transform var(--t-mid) var(--ease); }
.lgdla-hero.is-ui .lgdla-hero__title, .lgdla-hero.is-ui .lgdla-hero__lead, .lgdla-hero.is-ui .lgdla-hero__cta, .lgdla-hero.is-ui .lgdla-hero__pause { visibility: visible; animation: lgdla-fade 1s cubic-bezier(.4, 0, .2, 1) both; }
.lgdla-hero.is-ui .lgdla-hero__title { animation-delay: .2s; }
.lgdla-hero.is-ui .lgdla-hero__lead { animation-delay: .4s; }
.lgdla-hero.is-ui .lgdla-hero__cta { animation-delay: .6s; }
.lgdla-hero.is-ui .lgdla-hero__pause { animation-delay: .8s; }
.lgdla-hero.is-final .lgdla-hero__title, .lgdla-hero.is-final .lgdla-hero__lead, .lgdla-hero.is-final .lgdla-hero__cta, .lgdla-hero.is-final .lgdla-hero__pause { opacity: 1; visibility: visible; animation: none; }
/* Secours : si le JS n'a pas démarré au bout de 6 s, tout s'affiche quand même */
html.lgdla-seq:not(.lgdla-ready) .lgdla-hero__title, html.lgdla-seq:not(.lgdla-ready) .lgdla-hero__lead, html.lgdla-seq:not(.lgdla-ready) .lgdla-hero__cta,
html.lgdla-seq:not(.lgdla-ready) .e-con.lgdla-header { animation: lgdla-failsafe 0s linear 6s forwards; }
html.lgdla-editing .lgdla-intro, html.lgdla-editing .lgdla-hero__vid, html.lgdla-editing .lgdla-hero__pause { display: none; }

/* Pause (WCAG 2.2.2 : mouvement de plus de 5 s) : bas à droite, au-dessus de la capsule des labels */
/* Le thème Hello habille les <button> (rose, carré) : on reprend la main avec .lgdla-hero + !important sur l'essentiel */
.lgdla-hero .lgdla-hero__pause { position: absolute; z-index: 6; right: 24px; bottom: calc(var(--lg-cap-h, 120px) / 2 + 24px); width: 44px; height: 44px; padding: 0; margin: 0;
  border-radius: 50% !important; border: 1px solid rgba(248, 247, 245, .6) !important; background: rgba(21, 18, 19, .35) !important; color: var(--c-on-dark) !important; cursor: pointer;
  display: grid; place-items: center; line-height: 1; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); box-shadow: none; transition: background-color var(--t-fast) var(--ease); }
.lgdla-hero .lgdla-hero__pause:hover { background: rgba(21, 18, 19, .6) !important; color: var(--c-on-dark) !important; }
.lgdla-hero .lgdla-hero__pause:focus-visible { outline: 3px solid var(--c-gold); outline-offset: 3px; background: rgba(21, 18, 19, .6) !important; }
.lgdla-hero .lgdla-hero__pause[hidden] { display: none; }
.lgdla-hero__pause svg { width: 16px; height: 16px; fill: currentColor; }
.lgdla-hero__pause .i-play { display: none; }
.lgdla-hero__pause[aria-pressed="true"] .i-play { display: block; }
.lgdla-hero__pause[aria-pressed="true"] .i-pause { display: none; }
@media (max-width: 1024px) { .lgdla-hero .lgdla-hero__pause { right: 16px; } }

/* ---------- Éditeur de texte réglé dans le panneau Elementor ----------
   Les valeurs de typographie / couleur / alignement sont écrites dans le widget (build/widget-styles.php). Pour qu'une modification faite dans le
   panneau s'applique, les paragraphes héritent de la typographie du widget au lieu de la redéfinir (classe lgdla-ed, posée par le script). */
html body .elementor-widget-text-editor.lgdla-ed p {
  font-family: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; letter-spacing: inherit;
  text-transform: inherit; font-style: inherit; color: inherit; text-align: inherit;
}

/* ---------- Apparitions au scroll ------------------------------------------ */
/* Visible par défaut ; masqué seulement quand le JS tourne et hors éditeur. */

.lgdla-js:not(.lgdla-editing) .lgdla-reveal {
  opacity: 0;
  transform: translateY(var(--reveal-shift));
  transition: opacity var(--t-reveal) var(--ease-out), transform var(--t-reveal) var(--ease-out);
}
.lgdla-js:not(.lgdla-editing) .lgdla-reveal.is-in { opacity: 1; transform: none; }

/* Même apparition, mais seulement sur tablette / mobile : sur desktop, GSAP pilote ces éléments (bento) */
@media (max-width: 1024px) {
  .lgdla-js:not(.lgdla-editing) .lgdla-reveal-sm {
    opacity: 0;
    transform: translateY(var(--reveal-shift));
    transition: opacity var(--t-reveal) var(--ease-out), transform var(--t-reveal) var(--ease-out);
  }
  .lgdla-js:not(.lgdla-editing) .lgdla-reveal-sm.is-in { opacity: 1; transform: none; }
}

/* SECOURS : « lgdla-js » (posé dans le <head>) masque ces blocs ; « lgdla-ready » (posé par lgdla-front.js dès son démarrage)
   annule ce secours. Si le script est bloqué, arrive trop tard ou plante, tout s'affiche au bout de 4 s au lieu de rester invisible. */
@keyframes lgdla-reveal-fallback { to { opacity: 1; transform: none; } }
@keyframes lgdla-unveil-fallback { to { clip-path: inset(0); } }
.lgdla-js:not(.lgdla-ready):not(.lgdla-editing) .lgdla-unveil img { animation: lgdla-unveil-fallback .01s 4s forwards; }
.lgdla-js:not(.lgdla-ready):not(.lgdla-editing) .lgdla-reveal { animation: lgdla-reveal-fallback .01s 4s forwards; }
@media (max-width: 1024px) {
  .lgdla-js:not(.lgdla-ready):not(.lgdla-editing) .lgdla-reveal-sm { animation: lgdla-reveal-fallback .01s 4s forwards; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  .lgdla-btn .elementor-button, .lgdla-btn .elementor-button::after, .lgdla-room__media img { transition: none; transform: none !important; }
  /* Pastilles de réseaux, pastille de bouton « split » : aucun déplacement au survol */
  .lgdla-footer__social .elementor-social-icon,
  .lgdla-btn.lgdla-btn--split .elementor-button::before, .lgdla-btn.lgdla-btn--split .elementor-button::after { transition: none; transform: none !important; }
  .e-con.lgdla-header { transition: none; }
  .lgdla-js .lgdla-reveal, .lgdla-js .lgdla-reveal-sm { opacity: 1 !important; transform: none !important; transition: none !important; }
  .lgdla-unveil img { clip-path: none !important; transition: none !important; }
  .lgdla-marquee__track, .e-con.lgdla-marquee__track { animation: none; }   /* .e-con. : sinon la règle de la bande (plus spécifique) l'emporte et elle défile malgré la préférence */
  .e-con.lgdla-marquee { overflow-x: auto; scrollbar-width: none; }
  .lgdla-bee { display: none; }
}

/* ---------- Bannière de cookies (CookieYes) ---------------------------------------------------------------------------------
   24/10 (audit) : les boutons étaient en blanc sur #FAA916 (1,95:1) sur toutes les pages, la croix en rose, « Afficher plus » en bleu,
   les interrupteurs gris pâle (1,5:1). La bannière reprend la charte : fond #F8F7F5, texte encre, boutons pilule or / encre comme
   les boutons du site (≥ 8,6:1, survol or foncé ≥ 6,1:1). « Tout rejeter » et « Accepter tout » ont le MÊME style et la même taille
   (refuser doit être aussi facile qu'accepter : recommandation CNIL). Sauvegarde : build/backups/lgdla-front-avant-cookies.css */
html body .cky-consent-container .cky-consent-bar,
html body .cky-modal .cky-preference-center {
  background: var(--c-bg) !important;
  color: var(--c-ink) !important;
  border: 1px solid var(--c-border) !important;
  border-radius: 20px !important;
  box-shadow: var(--sh-2) !important;
}
html body .cky-consent-container .cky-title,
html body .cky-consent-container .cky-notice-des,
html body .cky-consent-container .cky-notice-des p,
html body .cky-modal .cky-preference-title,
html body .cky-modal .cky-preference-content-wrapper p,
html body .cky-modal .cky-accordion-btn,
html body .cky-modal .cky-accordion-header-des p { color: var(--c-ink) !important; }
html body .cky-consent-container .cky-title,
html body .cky-modal .cky-preference-title { font-family: var(--f-title); font-weight: 400; letter-spacing: .01em; }

/* Boutons : pilule or, texte encre, police des boutons du site */
html body .cky-consent-container .cky-btn,
html body .cky-modal .cky-btn {
  background: var(--c-gold) !important;
  color: var(--c-ink) !important;
  border: 1px solid transparent !important;
  border-radius: var(--r-full) !important;
  font-family: var(--f-title);
  font-size: 14px;
  font-weight: 400;
  letter-spacing: .02em;
  line-height: 1.2;
  min-height: 44px;
  padding: .7em 1.4em;
  opacity: 1 !important;
  transition: background-color var(--t-mid) var(--ease);
}
html body .cky-consent-container .cky-btn:focus-visible,
html body .cky-modal .cky-btn:focus-visible { background: var(--c-gold-dark) !important; color: var(--c-ink); outline: 2px solid var(--c-ink); outline-offset: 3px; }
html body .cky-consent-container .cky-btn:active,
html body .cky-modal .cky-btn:active { background: var(--c-gold-dark) !important; color: var(--c-ink); }
@media (hover: hover) {
  html body .cky-consent-container .cky-btn:hover,
  html body .cky-modal .cky-btn:hover { background: var(--c-gold-dark) !important; color: var(--c-ink); opacity: 1 !important; }
}
/* « Personnaliser » : même poids visuel que les deux autres (contour encre, fond transparent), jamais un lien perdu */
html body .cky-consent-container .cky-btn-customize,
html body .cky-modal .cky-btn-customize { background: transparent !important; border-color: var(--c-ink) !important; }

/* Croix de fermeture, « Afficher plus », « Toujours actif » : encre, sans rose, bleu ni vert */
html body .cky-modal .cky-btn-close { color: var(--c-ink) !important; min-width: 44px; min-height: 44px; }
html body .cky-modal .cky-btn-close img { filter: brightness(0) saturate(100%) !important; }
html body .cky-modal .cky-show-desc-btn,
html body .cky-modal .cky-policy,
html body .cky-consent-container .cky-policy { color: var(--c-ink) !important; text-decoration: underline; text-underline-offset: 3px; }
html body .cky-modal .cky-always-active { color: var(--c-ink) !important; font-family: var(--f-title); font-size: 13px; }

/* Interrupteurs : fermé = muted (5,7:1 sur le fond), ouvert = encre ; la bille blanche et le libellé disent aussi l'état (pas la couleur seule) */
html body .cky-modal .cky-switch input[type="checkbox"] { background-color: var(--c-muted) !important; }
html body .cky-modal .cky-switch input[type="checkbox"]:checked { background-color: var(--c-ink) !important; }
html body .cky-modal .cky-switch input[type="checkbox"]:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 3px; }
html body .cky-modal .cky-horizontal-separator,
html body .cky-modal .cky-accordion { border-color: var(--c-border) !important; }

/* Bouton flottant « revoir mes choix » */
html body .cky-btn-revisit-wrapper { background: var(--c-gold) !important; }
html body .cky-btn-revisit-wrapper:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 3px; }

@media (max-width: 767px) {
  html body .cky-consent-container .cky-notice-btn-wrapper { gap: 8px; }
  html body .cky-consent-container .cky-btn { padding-inline: 1em; }
}

/* Bande des labels atteignable au clavier quand elle se fait défiler à la main (« réduire les animations ») */
.lgdla-marquee:focus-visible { outline: 2px solid var(--c-ink); outline-offset: -4px; }
/* Anneau de focus de la bannière : encre (CookieYes met un bleu hors charte) */
html body .cky-consent-container :focus-visible, html body .cky-modal :focus-visible { outline: 2px solid var(--c-ink) !important; outline-offset: 3px; }

/* Vidéo d'ambiance remplacée par son image d'aperçu (petit écran, économie de données, « réduire les animations ») : rien à mettre en pause */
.is-poster-only .lgdla-pause { display: none; }

/* ---------- Adaptation tactile et petits écrans (24/10, audit P2 « adapt ») ----------------------------------------------------
   Cibles tactiles : 44 × 44 px minimum sur téléphone ET sur tout écran tactile (tablette, portable à écran tactile).
   Texte : 14 px minimum sur téléphone (étiquettes, légendes, calendriers). Les réglages de typographie d'Elementor étant écrits dans chaque
   widget (build/widget-styles.php), les planchers de taille de texte utilisent !important ; ils ne touchent que ≤ 767 px.
   Sauvegarde : build/backups/lgdla-front-avant-adapt.css */
@media (max-width: 767px), (pointer: coarse) {
  /* Sélecteur de langue : la zone tactile dépasse le bouton (pseudo-élément), l'en-tête ne change pas de taille */
  .lgdla-lang a { position: relative; }
  .lgdla-lang a::after { content: ''; position: absolute; inset: -6px 0; }

  /* Cases à cocher et boutons radio (Fluent Forms) : boîte de 24 px, et tout le libellé est la cible (≥ 44 px de haut) */
  .lgdla-tf-form .ff-el-form-check-label, .lgdla-tf-form .ff_tc_label { min-height: 44px; align-items: flex-start; padding-block: 10px; box-sizing: border-box; }
  .lgdla-tf-form input[type=checkbox], .lgdla-tf-form input[type=radio] { flex: 0 0 24px; width: 24px; height: 24px; margin: 0; }

  /* Calendrier de disponibilités : flèches de mois et sélecteur de mois */
  /* le plugin place les flèches en absolu, centrées sur 26 px (top: 50 %, margin-top: -13 px) : on garde le centrage avec 44 px */
  .lgdla-cal .wpsbc-calendar-header-navigation { padding: 0 52px; }
  .lgdla-cal a.wpsbc-prev, .lgdla-cal a.wpsbc-next { min-width: 44px; min-height: 44px; margin-top: -22px !important; display: flex; align-items: center; justify-content: center; }   /* min- : le plugin fixe width / height */
  .lgdla-cal .wpsbc-select-container select { min-height: 44px; font-size: 16px; }

  /* Sommaire des pages légales (pastilles), filtres de la page Autour, titres de l'accordéon */
  .lgdla-lg-toc__list a { min-height: 44px; display: inline-flex; align-items: center; }
  .lgdla-au-chip .elementor-button { min-height: 44px; }
  .lgdla-tf-accordion .elementor-accordion-title { display: block; min-height: 44px; padding-block: 10px; box-sizing: border-box; }
}
@media (max-width: 767px) {
  /* Texte : 14 px au minimum */
  .lgdla-footer__label, .lgdla-footer__label .elementor-heading-title, .lgdla-footer__label p,
  .lgdla-eyebrow, .lgdla-eyebrow .elementor-heading-title, .lgdla-eyebrow p,
  .lgdla-chip .elementor-heading-title,
  .lgdla-ch-facts dt,
  .lgdla-th-fact__label, .lgdla-th-fact__label .elementor-heading-title,
  .lgdla-ct-card__label, .lgdla-ct-card__label .elementor-heading-title,
  .lgdla-fin-duo__tag, .lgdla-fin-duo__tag .elementor-heading-title,
  .lgdla-au-card__type, .lgdla-au-card__type .elementor-heading-title, .lgdla-au-card__type p,
  .lgdla-au-p__type, .lgdla-au-p__type .elementor-heading-title, .lgdla-au-p__type p,
  .lgdla-avl__when, .lgdla-avc__when,
  .lgdla-gt__tag, .lgdla-gt__tag .elementor-heading-title,
  .lgdla-info__k, .lgdla-tk__eyebrow, .lgdla-tk__eyebrow .elementor-heading-title,
  .lgdla-tk__note, .lgdla-tk__note p, .lgdla-au-mapnote, .lgdla-au-mapnote p,
  .lgdla-soon__tag, .lgdla-soon__tag .elementor-heading-title,
  .lgdla-cell__text, .lgdla-cell__text p,
  .lgdla-cal .wpsbc-date-number, .lgdla-cal .wpsbc-calendar-header-navigation { font-size: .875rem !important; }
}

/* En-tête resserré dès 1280 px (24/10) : l'entrée du menu est « Tarifs et réservations » (22 caractères, avant « Tarifs »), comme la page ;
   le menu FR passe de 57 à 73 caractères, DE de 53 à 69. Texte de menu à 14 px, rembourrages et espaces réduits pour tenir sur UNE ligne dans la pilule de 1240 px.
   Sous 1280 px le menu peut passer sur deux lignes (comportement déjà accepté entre 1025 et 1240 px) ; sous 1025 px c'est le menu burger. */
@media (min-width: 1280px) {
  .e-con.lgdla-header { column-gap: 14px !important; }
  .e-con.lgdla-header .hfe-nav-menu a.hfe-menu-item { font-size: .875rem; padding-left: 6px !important; padding-right: 6px !important; }
  .lgdla-header .lgdla-btn .elementor-button { font-size: .875rem; padding-inline: 1.15em; }
  .lgdla-lang a { padding: 4px 7px; gap: 5px; }
}
@media (min-width: 1025px) and (max-width: 1279px) {
  /* menu sur deux lignes : lignes rapprochées (l'en-tête passait de 70 à 106 px) */
  .e-con.lgdla-header .hfe-nav-menu a.hfe-menu-item { padding-top: 6px !important; padding-bottom: 6px !important; }
}

/* ---------- Accueil : retouches du 25/10 (demande du client) ---------------------------------------------------------
   1. Hero : « Bons cadeaux » n'est plus un bouton transparent mais plein, en or foncé de la charte (l'or clair reste celui de « Demander mes dates »).
   2. Équipements : un cadre aux coins arrondis, à ligne fine (or foncé), entoure l'ensemble des pictogrammes.
   3. Réseaux sociaux (fin de page) : le logo en couleur d'Instagram / Facebook devant le libellé du bouton ; repérés par l'adresse du lien,
      donc valables en FR / EN / DE et sans rien changer dans Elementor. Images : lgdla-front/img/social/.                    */
.lgdla-hero__cta .lgdla-btn--ghost .elementor-button {
  background: var(--c-gold-dark) !important;
  color: var(--c-ink) !important;
  border-color: var(--c-gold-dark) !important;
}
.lgdla-hero__cta .lgdla-btn--ghost .elementor-button:focus-visible,
.lgdla-hero__cta .lgdla-btn--ghost .elementor-button:active {
  background: var(--c-gold) !important;
  color: var(--c-ink) !important;
  border-color: var(--c-gold) !important;
}
@media (hover: hover) {
  .lgdla-hero__cta .lgdla-btn--ghost .elementor-button:hover {
    background: var(--c-gold) !important;
    color: var(--c-ink) !important;
    border-color: var(--c-gold) !important;
  }
}

.e-con.lgdla-amenities > .e-con-inner {
  box-sizing: border-box;
  border: 1px solid var(--c-gold-dark);
  border-radius: 36px;
  padding: 44px 32px 40px;
}
@media (max-width: 767px) {
  .e-con.lgdla-amenities > .e-con-inner { border-radius: 28px; padding: 32px 14px 28px; }
}

.lgdla-social__block .elementor-button[href*="instagram.com"]::before,
.lgdla-social__block .elementor-button[href*="facebook.com"]::before {
  content: '';
  flex: 0 0 auto;
  width: 1.9em; height: 1.9em;
  margin: -.45em .05em -.45em -.4em;
  background: center / contain no-repeat;
}
.lgdla-social__block .elementor-button[href*="instagram.com"]::before { background-image: url('../img/social/instagram.png'); }
.lgdla-social__block .elementor-button[href*="facebook.com"]::before { background-image: url('../img/social/facebook.png'); }

/* ---------- Page 404 : un grand « 404 » doré qui se dissout dans la brume (gabarit lgdla-front/templates/404.php ; page Elementor : build/404-page.php) ---------- */
.lgdla-404 { background: var(--c-bg); text-align: center; min-height: 100vh; min-height: 100svh; display: flex; flex-direction: column; justify-content: center; padding: clamp(28px, 6vh, 64px) 20px; overflow: hidden; }
body.lgdla-404-canvas { margin: 0; background: var(--c-bg); }
.lgdla-404__stage { position: relative; max-width: 1200px; width: 100%; margin: 0 auto; min-height: clamp(280px, min(46vw, 54vh), 540px); display: grid; place-items: center; }
.lgdla-404__sky { position: absolute; left: 50%; top: 50%; width: min(1500px, 170vw); height: 100%; transform: translate(-50%, -50%); pointer-events: none; overflow: visible; }
.lgdla-404__num { position: absolute; inset: 0; margin: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; user-select: none; }
.lgdla-404__num, .lgdla-404 .lgdla-404__numw .elementor-heading-title {
  font-family: var(--f-title); font-weight: 700; line-height: .86; letter-spacing: .02em; margin: 0;
  font-size: clamp(10rem, min(34vw, 62vh), 26rem);
  background: linear-gradient(180deg, var(--c-gold-dark) 0%, #D6AA45 38%, rgba(225, 179, 76, .22) 82%, rgba(225, 179, 76, 0) 100%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent;
}
.lgdla-404__title { font-family: var(--f-title); font-size: clamp(1.7rem, 3.8vw, 2.7rem); line-height: 1.15; color: var(--c-ink); margin: clamp(-48px, -5vh, -14px) auto 0; max-width: 24ch; text-wrap: balance; position: relative; z-index: 3; }
.lgdla-404__text { font-family: var(--f-body); font-size: clamp(1rem, 2vw, 1.15rem); color: var(--c-muted); margin: 14px auto 0; position: relative; z-index: 3; }
.lgdla-404__btn {
  position: relative; z-index: 3; display: inline-flex; align-items: center; gap: .6em; margin-top: 30px; min-height: 48px; padding: 1em 1.8em;
  background: var(--c-gold); color: var(--c-ink); border-radius: var(--r-full); text-decoration: none; font-family: var(--f-title); font-size: 1rem; line-height: 1;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset, 0 10px 22px -10px rgba(200, 148, 40, .7);
  transition: background-color var(--t-mid) var(--ease), transform var(--t-mid) var(--ease-out), box-shadow var(--t-mid) var(--ease);
}
.lgdla-404__btn::before { content: '←'; transition: transform var(--t-mid) var(--ease-out); }
.lgdla-404__btn:focus-visible { outline: 2px solid var(--c-ink); outline-offset: 3px; }
@media (hover: hover) {
  .lgdla-404__btn:hover { background: var(--c-gold-dark); transform: translateY(-2px); box-shadow: 0 1px 0 rgba(255, 255, 255, .4) inset, 0 16px 26px -12px rgba(200, 148, 40, .8); }
  .lgdla-404__btn:hover::before { transform: translateX(-4px); }
}
/* Version construite dans Elementor (build/404-page.php) : mêmes classes, portées par les conteneurs et widgets. */
.lgdla-404 .e-con.lgdla-404__root { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; --gap: 0px; --row-gap: 0px; --column-gap: 0px; width: 100%; align-items: center; }
.lgdla-404 .e-con.lgdla-404__stage { position: relative; display: grid !important; place-items: center; width: 100%; max-width: 1200px; margin-inline: auto; padding: 0; --padding-top: 0px; --padding-bottom: 0px; min-height: clamp(280px, min(46vw, 54vh), 540px); }
.lgdla-404 .lgdla-404__stage > .elementor-widget { grid-area: 1 / 1; margin: 0; }
.lgdla-404 .lgdla-404__skyw { position: absolute !important; inset: 0; pointer-events: none; }
/* Nuages (widgets Image) : positions en % de la scène ; a, b derrière les chiffres, c à f devant */
.lgdla-404 .lgdla-404__cl { position: absolute !important; pointer-events: none; margin: 0; }
.lgdla-404 .lgdla-404__cl img { display: block; width: 100%; height: auto; }
.lgdla-404 .lgdla-404__cl--a { right: -14%; top: 2%; width: 58%; opacity: .95; }
.lgdla-404 .lgdla-404__cl--b { left: -8%; top: -6%; width: 42%; opacity: .9; }
.lgdla-404 .lgdla-404__cl--c { left: -6%; bottom: -8%; width: 34%; z-index: 2; }
.lgdla-404 .lgdla-404__cl--d { left: 30%; bottom: -16%; width: 26%; z-index: 2; opacity: .9; }
.lgdla-404 .lgdla-404__cl--e { right: 8%; bottom: -6%; width: 20%; z-index: 2; }
.lgdla-404 .lgdla-404__cl--f { right: -6%; bottom: -12%; width: 32%; z-index: 2; transform: scaleX(-1); }
@media (max-width: 767px) {
  .lgdla-404 .lgdla-404__cl--a { width: 90%; right: -26%; } .lgdla-404 .lgdla-404__cl--b { width: 66%; }
  .lgdla-404 .lgdla-404__cl--c { width: 54%; } .lgdla-404 .lgdla-404__cl--d { width: 40%; } .lgdla-404 .lgdla-404__cl--e { width: 32%; } .lgdla-404 .lgdla-404__cl--f { width: 50%; }
}
.lgdla-404 .lgdla-404__numw { position: absolute !important; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; user-select: none; }
.lgdla-404 .lgdla-404__title .elementor-heading-title { font-family: var(--f-title); font-size: clamp(1.7rem, 3.8vw, 2.7rem); line-height: 1.15; color: var(--c-ink); margin: 0; max-width: 24ch; margin-inline: auto; text-wrap: balance; }
.lgdla-404 .lgdla-404__title { position: relative; z-index: 3; margin: clamp(-48px, -5vh, -14px) auto 0; }
.lgdla-404 .lgdla-404__text { position: relative; z-index: 3; margin: 14px auto 0; }
.lgdla-404 .lgdla-404__text p { margin: 0; font-family: var(--f-body); font-size: clamp(1rem, 2vw, 1.15rem); color: var(--c-muted); }
.lgdla-404 .lgdla-404__btnw { position: relative; z-index: 3; margin-top: 30px; }
@media (prefers-reduced-motion: no-preference) {
  .lgdla-404 .lgdla-404__cl--a img, .lgdla-404 .lgdla-404__cl--c img, .lgdla-404 .lgdla-404__cl--e img { animation: lg404-drift 40s ease-in-out infinite alternate; }
  .lgdla-404 .lgdla-404__cl--b img, .lgdla-404 .lgdla-404__cl--d img, .lgdla-404 .lgdla-404__cl--f img { animation: lg404-drift 32s ease-in-out -12s infinite alternate-reverse; }
}
@keyframes lg404-drift { from { transform: translateX(-3%); } to { transform: translateX(3%); } }
