/* ==========================================================================
   LAMA BOIS — Design system
   Charte issue du flyer : bleu ardoise / anthracite / crème. Aucun blanc.
   Formes arrondies (arches + cercles) avec outline décalé.
   Ce fichier est du CSS natif : aucune recompilation Tailwind nécessaire.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Typographies
   -------------------------------------------------------------------------- */

@font-face {
  font-family: "Playfair Display";
  src: url("../fonts/lamabois/playfairdisplay-latin.woff2") format("woff2");
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Playfair Display";
  src: url("../fonts/lamabois/playfairdisplay-latin-ext.woff2") format("woff2");
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Quicksand";
  src: url("../fonts/lamabois/quicksand-latin.woff2") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
    U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212,
    U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Quicksand";
  src: url("../fonts/lamabois/quicksand-latin-ext.woff2") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
    U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB,
    U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* On réécrit les familles Tailwind pour éviter tout recompilage. */
@font-face {
  font-family: titleFont;
  src: url("../fonts/lamabois/playfairdisplay-latin.woff2") format("woff2");
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: baseTypo;
  src: url("../fonts/lamabois/quicksand-latin.woff2") format("woff2");
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
}

/* --------------------------------------------------------------------------
   2. Tokens
   -------------------------------------------------------------------------- */

:root {
  /* Surfaces */
  --lb-anthracite: #2f3136;
  --lb-anthracite-soft: #383a41;
  --lb-anthracite-deep: #26272b;
  --lb-blue: #3d5c7a;
  --lb-blue-deep: #33506c;
  --lb-blue-soft: #4b6d8d;
  --lb-navy: #1b2a38;

  /* Encre */
  --lb-cream: #f0dfc6;
  --lb-cream-warm: #e4d0af;
  --lb-cream-70: rgba(240, 223, 198, 0.72);
  --lb-cream-45: rgba(240, 223, 198, 0.45);
  --lb-cream-20: rgba(240, 223, 198, 0.2);
  --lb-cream-10: rgba(240, 223, 198, 0.1);

  /* Outline contextuel : redéfini par les sections.
     --lb-surface doit toujours valoir la couleur de fond de la section :
     c'est elle qui creuse l'espace entre la photo et son contour. */
  --lb-surface: #2f3136;
  --lb-outline: var(--lb-navy);
  --lb-outline-w: 2px;
  --lb-outline-gap: 13px;

  /* Rayons */
  --lb-r-sm: 12px;
  --lb-r-md: 20px;
  --lb-r-lg: 32px;
  --lb-r-pill: 999px;

  /* Rythme */
  --lb-section-y: clamp(4.5rem, 8vw, 8.5rem);
  --lb-gutter: clamp(1.25rem, 4vw, 3.5rem);
  --lb-maxw: 1360px;

  /* Nav */
  --lb-nav-h: 88px;

  /* Ombres douces (jamais noires et dures) */
  --lb-shadow: 0 18px 40px -18px rgba(12, 18, 24, 0.55);
  --lb-shadow-lg: 0 28px 70px -26px rgba(12, 18, 24, 0.7);

  /* Compat : anciennes variables pilotées depuis l'admin.
     Elles sont désormais figées sur la charte Lama Bois. */
  --color-primary: #f0dfc6;
  --color-secondary: #3d5c7a;
  --color-item: var(--lb-cream);
  --color-item-hover: var(--lb-cream-warm);
  --color-item-footer: var(--lb-cream);
  --color-item-footer-hover: var(--lb-cream-warm);
  --color-icon-footer: var(--lb-navy);
  --color-icon-footer-hover: var(--lb-navy);
  --color-button: var(--lb-cream);
  --color-button-hover: var(--lb-cream-warm);
}

/* --------------------------------------------------------------------------
   3. Base
   -------------------------------------------------------------------------- */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  background-color: var(--lb-anthracite);
}

body,
body.home,
body.page {
  margin: 0;
  background-color: var(--lb-anthracite);
  color: var(--lb-cream);
  font-family: "Quicksand", "Trebuchet MS", sans-serif;
  font-weight: 500;
  font-size: clamp(1rem, 0.96rem + 0.2vw, 1.0625rem);
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

::selection {
  background: var(--lb-cream);
  color: var(--lb-navy);
}

body ::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
body ::-webkit-scrollbar-track {
  background: var(--lb-anthracite-deep);
}
body ::-webkit-scrollbar-thumb {
  background: var(--lb-blue-soft);
  border-radius: var(--lb-r-pill);
}

/* Le body du thème est en overflow hidden quand le drawer est ouvert */
html.overflow-y-hidden {
  overflow-y: hidden;
}

/* --------------------------------------------------------------------------
   4. Typographie
   -------------------------------------------------------------------------- */

h1,
h2,
h3,
h4,
h5,
h6,
.font-display,
.lb-title {
  font-family: "Playfair Display", "Times New Roman", serif;
  color: var(--lb-cream);
  letter-spacing: -0.01em;
}

.lb-title {
  font-weight: 800;
  line-height: 1.06;
  text-wrap: balance;
}

.lb-title--xl {
  font-size: clamp(2.35rem, 1.5rem + 3vw, 4.1rem);
  text-transform: uppercase;
  letter-spacing: 0.005em;
}

.lb-title--lg {
  font-size: clamp(1.95rem, 1.4rem + 2vw, 3.05rem);
  text-transform: uppercase;
}

.lb-title--md {
  font-size: clamp(1.6rem, 1.2rem + 1.5vw, 2.35rem);
}

/* Surtitre : petite capitale espacée, en Quicksand */
.lb-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.7em;
  font-family: "Quicksand", sans-serif;
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--lb-cream-70);
  margin: 0 0 1.1rem;
  line-height: 1.4;
}

.lb-eyebrow::before {
  content: "";
  width: 34px;
  height: var(--lb-outline-w);
  border-radius: var(--lb-r-pill);
  background: currentColor;
  flex: none;
  opacity: 0.85;
}

.lb-eyebrow--center {
  justify-content: center;
}

.lb-lead {
  color: var(--lb-cream-70);
  font-size: 1.05em;
}

/* Contenu riche (WYSIWYG ACF) */
.lb-rich {
  color: var(--lb-cream-70);
}

.lb-rich > * + * {
  margin-top: 1em;
}

.lb-rich p {
  margin: 0;
}

.lb-rich strong,
.lb-rich b {
  color: var(--lb-cream);
  font-weight: 700;
}

.lb-rich a {
  color: var(--lb-cream);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.lb-rich a:hover {
  color: var(--lb-cream-warm);
}

.lb-rich h2,
.lb-rich h3,
.lb-rich h4 {
  color: var(--lb-cream);
  font-size: clamp(1.3rem, 1.1rem + 0.8vw, 1.7rem);
  margin-top: 1.6em;
  line-height: 1.2;
}

.lb-rich ul,
.lb-rich ol {
  list-style: none;
  padding: 0;
  margin: 1.2em 0 0;
  display: grid;
  gap: 0.65em;
}

.lb-rich ul li,
.lb-rich ol li {
  position: relative;
  padding-left: 2rem;
}

.lb-rich ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.62em;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  border: var(--lb-outline-w) solid var(--lb-cream);
  background: transparent;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
}

.lb-rich ol {
  counter-reset: lb-ol;
}

.lb-rich ol li {
  counter-increment: lb-ol;
}

.lb-rich ol li::before {
  content: counter(lb-ol);
  position: absolute;
  left: 0;
  top: 0.15em;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  border: var(--lb-outline-w) solid var(--lb-cream-45);
  display: grid;
  place-items: center;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--lb-cream);
}

/* Si l'admin active une icône de liste personnalisée, on la respecte */
.iconListEnabled ul li::before,
.iconListEnabled ol li::before {
  border: 0;
  content: "";
  width: 1.15rem;
  height: 1.15rem;
  top: 0.42em;
}

/* --------------------------------------------------------------------------
   5. Layout
   -------------------------------------------------------------------------- */

.lb-section {
  position: relative;
  padding-block: var(--lb-section-y);
  overflow: clip;
}

.lb-shell {
  width: 100%;
  max-width: var(--lb-maxw);
  margin-inline: auto;
  padding-inline: var(--lb-gutter);
}

.lb-shell--wide {
  max-width: 1620px;
}

/* Surfaces */
.lb-surface-anthracite {
  background: var(--lb-anthracite);
  --lb-surface: var(--lb-anthracite);
  --lb-outline: var(--lb-blue-soft);
}

.lb-surface-anthracite-soft {
  background: var(--lb-anthracite-soft);
  --lb-surface: var(--lb-anthracite-soft);
  --lb-outline: var(--lb-blue-soft);
}

.lb-surface-blue {
  background: var(--lb-blue);
  --lb-surface: var(--lb-blue);
  --lb-outline: var(--lb-navy);
}

/* Halo décoratif discret, repris de l'esprit « aplat » du flyer */
.lb-glow::before {
  content: "";
  position: absolute;
  width: min(70vw, 720px);
  aspect-ratio: 1;
  border-radius: 50%;
  background: radial-gradient(
    circle,
    rgba(240, 223, 198, 0.09) 0%,
    rgba(240, 223, 198, 0) 68%
  );
  pointer-events: none;
  z-index: 0;
}

.lb-glow--tr::before {
  right: -18%;
  top: -22%;
}

.lb-glow--bl::before {
  left: -18%;
  bottom: -22%;
}

.lb-section > *,
.lb-hero > *,
.lb-pagehead > * {
  position: relative;
  z-index: 1;
}

.lb-head {
  max-width: 62ch;
  margin-bottom: clamp(2.5rem, 5vw, 4.5rem);
}

.lb-head--center {
  margin-inline: auto;
  text-align: center;
}

.lb-head .lb-title {
  margin: 0;
}

.lb-head .lb-rich,
.lb-head .lb-lead {
  margin-top: 1.4rem;
}

/* Séparateur de titre (option admin) */
.separatorTitle {
  background: var(--lb-cream) !important;
  border-radius: var(--lb-r-pill);
  height: 3px !important;
  opacity: 0.75;
}

/* --------------------------------------------------------------------------
   6. Formes : arches, cercles et outlines
   -------------------------------------------------------------------------- */

.lb-shape {
  position: relative;
  display: block;
  overflow: hidden;
  isolation: isolate;

  /* Le contour décalé, signature du flyer.
     En box-shadow plutôt qu'en pseudo-élément : il n'est pas rogné par
     l'overflow qui contient le zoom, et il épouse exactement l'arche.
     La première ombre reprend la couleur de la section pour creuser le vide. */
  box-shadow:
    0 0 0 var(--lb-outline-gap) var(--lb-surface),
    0 0 0 calc(var(--lb-outline-gap) + var(--lb-outline-w)) var(--lb-outline);
}

.lb-shape__media {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
  background-color: var(--lb-anthracite-soft);
  background-size: cover;
  background-position: center;
}

/* Arche plein cintre.
   Le ratio 3/4 est imposé pour que le rayon vertical du haut (37,5 % de la
   hauteur) vaille exactement la moitié de la largeur : c'est ce qui donne
   un demi-cercle parfait, à n'importe quelle taille. */
.lb-arch {
  aspect-ratio: 3 / 4;
  height: auto;
}

.lb-arch,
.lb-arch .lb-shape__media {
  border-radius: 50% 50% var(--lb-r-md) var(--lb-r-md) / 37.5% 37.5%
    var(--lb-r-md) var(--lb-r-md);
}

/* Cercle */
.lb-circle,
.lb-circle .lb-shape__media {
  border-radius: 50%;
}

.lb-circle .lb-shape__media {
  aspect-ratio: 1;
}

/* --------------------------------------------------------------------------
   7. Boutons — un seul style : aplat crème, pilule
   -------------------------------------------------------------------------- */

.lb-btn {
  --lb-btn-bg: var(--lb-cream);
  --lb-btn-fg: var(--lb-navy);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.65em;
  padding: 0.95em 1.9em;
  min-height: 52px;
  border: 0;
  border-radius: var(--lb-r-pill);
  background: var(--lb-btn-bg);
  color: var(--lb-btn-fg);
  font-family: "Quicksand", sans-serif;
  font-weight: 700;
  font-size: 0.94rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  transition:
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.35s ease,
    color 0.35s ease,
    box-shadow 0.35s ease;
  box-shadow: 0 10px 24px -14px rgba(12, 18, 24, 0.9);
}

.lb-btn:hover,
.lb-btn:focus-visible {
  --lb-btn-bg: var(--lb-cream-warm);
  color: var(--lb-navy);
  transform: translateY(-3px);
  box-shadow: 0 18px 34px -16px rgba(12, 18, 24, 0.95);
}

.lb-btn:active {
  transform: translateY(-1px);
}

.lb-btn svg {
  width: 1.15em;
  height: 1.15em;
  fill: currentColor;
  flex: none;
}

.lb-btn--sm {
  padding: 0.7em 1.35em;
  min-height: 44px;
  font-size: 0.82rem;
}

/* Bouton icône seule : cercle crème */
.lb-btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: var(--lb-cream);
  color: var(--lb-navy);
  flex: none;
  transition:
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.35s ease;
}

.lb-btn-icon svg {
  width: 20px;
  height: 20px;
  fill: currentColor;
}

.lb-btn-icon:hover,
.lb-btn-icon:focus-visible {
  background: var(--lb-cream-warm);
  color: var(--lb-navy);
  transform: translateY(-3px);
}

.lb-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.9rem;
  margin-top: clamp(1.75rem, 3vw, 2.75rem);
}

/* --------------------------------------------------------------------------
   8. Animations
   -------------------------------------------------------------------------- */

@keyframes lb-float {
  0%,
  100% {
    transform: translate3d(0, 0, 0);
  }
  50% {
    transform: translate3d(0, -14px, 0);
  }
}

@keyframes lb-float-soft {
  0%,
  100% {
    transform: translate3d(0, 0, 0);
  }
  50% {
    transform: translate3d(0, -9px, 0);
  }
}

.lb-float {
  animation: lb-float 7.5s ease-in-out infinite;
  will-change: transform;
}

.lb-float--soft {
  animation: lb-float-soft 9s ease-in-out infinite;
}

/* La parallaxe utilise `translate` : elle se compose avec l'animation `transform`. */
[data-lb-parallax] {
  translate: 0 var(--lb-parallax, 0px);
}

.lb-float--d1 {
  animation-delay: -1.6s;
}
.lb-float--d2 {
  animation-delay: -3.2s;
}
.lb-float--d3 {
  animation-delay: -4.8s;
}

/* Zoom au survol, contenu dans la forme */
.lb-zoom .lb-shape__media,
.lb-zoom img {
  transition: transform 0.75s cubic-bezier(0.22, 1, 0.36, 1);
}

.lb-zoom:hover .lb-shape__media,
.lb-zoom:hover img {
  transform: scale(1.07);
}

@media (prefers-reduced-motion: reduce) {
  .lb-float,
  .lb-float--soft {
    animation: none !important;
  }
  html {
    scroll-behavior: auto;
  }
  * {
    transition-duration: 0.01ms !important;
  }
}

/* --------------------------------------------------------------------------
   9. Navigation
   -------------------------------------------------------------------------- */

.lb-header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 200;
}

.lb-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  min-height: var(--lb-nav-h);
  padding: 0.5rem clamp(1rem, 3vw, 2.25rem);
  background: rgba(38, 39, 43, 0.92);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--lb-cream-10);
  transition:
    background-color 0.4s ease,
    box-shadow 0.4s ease;
}

.lb-header.is-scrolled .lb-nav {
  background: rgba(31, 32, 36, 0.97);
  box-shadow: 0 12px 34px -22px rgba(0, 0, 0, 0.9);
}

.lb-nav__logo {
  display: flex;
  align-items: center;
  flex: none;
  text-decoration: none;
}

.lb-nav__logo img {
  height: clamp(44px, 5vw, 62px);
  width: auto;
  object-fit: contain;
  display: block;
  border-radius: var(--lb-r-sm);
}

.lb-nav__logo-text {
  font-family: "Playfair Display", serif;
  font-size: clamp(1.15rem, 2vw, 1.5rem);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--lb-cream);
  margin: 0;
}

/* Liste principale : une seule ligne */
.lb-nav__nav {
  flex: 1 1 auto;
  display: flex;
  justify-content: center;
  min-width: 0;
}

.lb-nav__menu {
  display: flex;
  justify-content: center;
  min-width: 0;
}

#menu-main,
.lb-nav__list {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: nowrap;
  gap: clamp(0.35rem, 1.1vw, 1.15rem);
  list-style: none;
  margin: 0;
  padding: 0;
}

#menu-main > li {
  position: relative;
  display: flex;
  align-items: center;
  height: var(--lb-nav-h);
}

#menu-main li > a {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.55rem 0.7rem;
  border-radius: var(--lb-r-pill);
  font-family: "Quicksand", sans-serif !important;
  font-size: clamp(0.78rem, 0.72vw + 0.5rem, 0.94rem) !important;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.01em;
  color: var(--lb-cream-70);
  text-decoration: none;
  white-space: nowrap;
  transition:
    color 0.3s ease,
    background-color 0.3s ease;
}

#menu-main > li > a::after {
  content: "";
  position: absolute;
  left: 0.7rem;
  right: 0.7rem;
  bottom: 24px;
  height: 2px;
  border-radius: var(--lb-r-pill);
  background: var(--lb-cream);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

#menu-main > li:hover > a::after,
#menu-main > li.current-menu-item > a::after,
#menu-main > li.current-menu-ancestor > a::after {
  transform: scaleX(1);
}

#menu-main li.current-menu-ancestor > a,
#menu-main li.current-menu-item > a,
#menu-main li:hover > a,
#menu-main li > a:hover {
  color: var(--lb-cream) !important;
}

/* Sous-menus */
#menu-main .sub-menu {
  position: absolute;
  top: var(--lb-nav-h) !important;
  left: 50%;
  transform: translateX(-50%) scaleY(0);
  transform-origin: center top;
  min-width: 250px;
  margin: 0;
  padding: 0.6rem !important;
  list-style: none;
  background: var(--lb-anthracite-soft) !important;
  border: 1px solid var(--lb-cream-10);
  border-top: 2px solid var(--lb-cream) !important;
  border-radius: 0 0 var(--lb-r-md) var(--lb-r-md);
  box-shadow: var(--lb-shadow);
  opacity: 0;
  visibility: hidden;
  transition:
    opacity 0.3s ease,
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

#masthead .menu-item-has-children:hover > .sub-menu {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) scaleY(1);
}

#menu-main .sub-menu li {
  display: block;
  height: auto;
  margin: 0;
}

#menu-main .sub-menu li > a {
  display: block;
  width: 100%;
  padding: 0.6rem 0.9rem;
  border-radius: var(--lb-r-sm);
  color: var(--lb-cream-70) !important;
  white-space: normal;
}

#menu-main .sub-menu li > a:hover,
#menu-main .sub-menu li.current-menu-item > a {
  background: var(--lb-cream-10);
  color: var(--lb-cream) !important;
}

#menu-main .sub-menu li > a::after {
  display: none;
}

/* Actions à droite */
.lb-nav__actions {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  flex: none;
}

.lb-nav__socials {
  display: flex;
  align-items: center;
  gap: 0.4rem;
}

.lb-nav__divider {
  width: 1px;
  height: 26px;
  background: var(--lb-cream-20);
  flex: none;
}

/* Burger : simple glyphe, jamais un bouton (un seul style de bouton sur le site) */
.navbar-burger,
.navbar-close {
  display: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--lb-cream);
  cursor: pointer;
  flex: none;
  transition:
    color 0.3s ease,
    transform 0.3s ease;
}

.navbar-burger:hover,
.navbar-close:hover {
  color: var(--lb-cream-warm);
  transform: scale(1.08);
}

.navbar-burger svg,
.navbar-close svg {
  width: 26px;
  height: 26px;
  fill: currentColor;
}

/* Bascule burger sous 1280px */
@media (max-width: 1279.98px) {
  #menu-main,
  .lb-nav__nav,
  .lb-nav__socials,
  .lb-nav__divider {
    display: none !important;
  }
  .navbar-burger {
    display: inline-flex;
  }
  .navbar-close {
    display: inline-flex;
  }
}

@media (max-width: 640px) {
  .lb-nav__actions .lb-btn {
    display: none;
  }
}

@media (max-width: 420px) {
  .lb-nav__actions .lb-btn-icon:not(:first-of-type) {
    display: none;
  }
}

/* Drawer mobile */
.navbar-menu.lb-drawer {
  position: fixed;
  inset: 0;
  z-index: 300;
  visibility: visible;
  padding: 0;
}

/* Le délai laisse le panneau finir de glisser avant de disparaître. */
.navbar-menu.lb-drawer.offArea {
  visibility: hidden;
  transition: visibility 0s linear 0.5s;
}

.lb-drawer .navbar-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(18, 19, 22, 0.72);
  backdrop-filter: blur(4px);
  opacity: 1;
  transition: opacity 0.45s ease;
}

.lb-drawer.offArea .navbar-backdrop {
  opacity: 0;
}

.lb-drawer__panel {
  position: fixed;
  inset: 0 auto 0 0;
  display: flex;
  flex-direction: column;
  width: min(420px, 88vw);
  padding: 1.6rem clamp(1.25rem, 5vw, 2.25rem) 2rem;
  background: var(--lb-anthracite);
  border-right: 1px solid var(--lb-cream-10);
  overflow-y: auto;
  transform: translateX(0);
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.lb-drawer.offArea .lb-drawer__panel {
  transform: translateX(-102%);
}

.lb-drawer__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--lb-cream-10);
}

.lb-drawer__head img {
  height: 52px;
  width: auto;
  object-fit: contain;
  border-radius: var(--lb-r-sm);
}

.lb-drawer__body {
  flex: 1 1 auto;
  padding-block: 1.75rem;
}

.navbar-menu ul.mobile {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.navbar-menu ul.mobile > li {
  display: block;
  align-items: stretch;
  margin: 0;
  z-index: auto;
}

.navbar-menu ul.mobile li a {
  display: block;
  padding: 0.75rem 1rem;
  border-radius: var(--lb-r-pill);
  font-family: "Quicksand", sans-serif !important;
  font-size: 1.02rem !important;
  font-weight: 600;
  line-height: 1.4;
  color: var(--lb-cream-70) !important;
  text-align: left;
  margin: 0;
  transition:
    background-color 0.3s ease,
    color 0.3s ease;
}

.navbar-menu ul.mobile li a:hover {
  background: var(--lb-cream-10);
  color: var(--lb-cream) !important;
}

.navbar-menu ul.mobile > li.current-menu-ancestor > a,
.navbar-menu ul.mobile > li.current-menu-item > a,
.navbar-menu ul.mobile li .sub-menu li.current-menu-item > a {
  background: var(--lb-cream) !important;
  color: var(--lb-navy) !important;
  padding: 0.75rem 1rem !important;
}

.navbar-menu ul.mobile li .sub-menu {
  position: relative;
  max-height: 0;
  overflow: hidden;
  opacity: 0;
  list-style: none;
  margin: 0;
  padding: 0 !important;
  border: 0;
  background: transparent !important;
  box-shadow: none;
  transition:
    max-height 0.45s ease,
    opacity 0.3s ease;
}

.navbar-menu ul.mobile li.activeMenu .sub-menu {
  max-height: 60vh;
  opacity: 1;
  padding: 0.25rem 0 0.6rem 0.9rem !important;
}

.navbar-menu ul.mobile li .sub-menu li a {
  font-size: 0.94rem !important;
  padding: 0.55rem 1rem;
  color: var(--lb-cream-45) !important;
}

.navbar-menu ul.mobile li.menu-item-has-children > a {
  position: relative;
  padding-right: 2.6rem;
}

.navbar-menu ul.mobile li.menu-item-has-children > a::after {
  content: "";
  position: absolute;
  right: 1.1rem;
  top: 50%;
  width: 9px;
  height: 9px;
  margin-top: -6px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  transition: transform 0.35s ease;
}

.navbar-menu ul.mobile li.menu-item-has-children.activeMenu > a::after {
  transform: rotate(-135deg);
  margin-top: -2px;
}

.lb-drawer__foot {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--lb-cream-10);
}

.lb-drawer__socials {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

/* --------------------------------------------------------------------------
   10. Réseaux sociaux (élément partagé)
   -------------------------------------------------------------------------- */

/* Ce sont des liens-icônes, pas des boutons : ni fond ni contour. */
.socialFooter,
.navSocial,
.lb-social {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 50% !important;
  background: transparent !important;
  color: var(--lb-cream-70) !important;
  box-shadow: none !important;
  transition:
    color 0.3s ease,
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.socialFooter svg,
.navSocial svg,
.lb-social svg {
  width: 19px;
  height: 19px;
  fill: currentColor !important;
  color: currentColor !important;
}

.socialFooter:hover,
.navSocial:hover,
.lb-social:hover {
  background: transparent !important;
  color: var(--lb-cream) !important;
  transform: translateY(-3px);
}

.socialFooter:hover svg,
.navSocial:hover svg,
.lb-social:hover svg {
  fill: currentColor !important;
}

/* --------------------------------------------------------------------------
   11. Hero (home-slider-6) et en-tête de page (page-title-6)

   Principe repris de la couverture du flyer : la photo occupe tout le bloc,
   un aplat la recouvre, et une arche y est *découpée* pour laisser voir
   l'image. La découpe est obtenue par un box-shadow de très grande portée :
   il peint l'aplat tout autour de l'arche, sans masque ni clip-path.
   -------------------------------------------------------------------------- */

.lb-cover {
  position: relative;
  display: grid;
  overflow: clip;
  background: var(--lb-anthracite);
  --lb-surface: var(--lb-anthracite);
  --lb-outline: var(--lb-cream-70);
  --lb-veil: rgba(47, 49, 54, 0.84);
}

/* Photo(s) de fond, plein cadre */
.lb-cover__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-color: var(--lb-anthracite);
  background-size: cover;
  background-position: center;
}

/* Assombrit la photo du côté du texte : le voile seul ne suffirait pas
   à garantir le contraste sur une image claire. */
.lb-cover__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(0, 0, 0, 0.62) 0%,
    rgba(0, 0, 0, 0.32) 38%,
    rgba(0, 0, 0, 0) 62%
  );
  pointer-events: none;
}

.lb-cover--reverse .lb-cover__bg::after {
  background: linear-gradient(
    270deg,
    rgba(0, 0, 0, 0.62) 0%,
    rgba(0, 0, 0, 0.32) 38%,
    rgba(0, 0, 0, 0) 62%
  );
}

@media (max-width: 1023px) {
  .lb-cover__bg::after,
  .lb-cover--reverse .lb-cover__bg::after {
    background: linear-gradient(
      180deg,
      rgba(0, 0, 0, 0.25) 0%,
      rgba(0, 0, 0, 0.6) 100%
    );
  }
}

.lb-cover__bg .carousel,
.lb-cover__bg .flickity-viewport,
.lb-cover__bg .flickity-slider {
  height: 100% !important;
}

.lb-cover__bg .carousel-cell {
  width: 100%;
  height: 100%;
  margin-right: 0;
  border-radius: 0;
  background-color: var(--lb-anthracite);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.lb-cover__inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1.02fr 0.98fr;
  align-items: center;
  width: 100%;
  padding-top: var(--lb-nav-h);
}

.lb-cover__content {
  position: relative;
  z-index: 3;
  padding: clamp(2.5rem, 5vw, 5rem) clamp(1.5rem, 4vw, 4.5rem)
    clamp(2.5rem, 5vw, 5rem) clamp(1.5rem, 5vw, 5.5rem);
}

.lb-cover__title {
  margin: 0;
}

.lb-cover__text {
  margin-top: 1.6rem;
  max-width: 46ch;
}

.lb-cover__socials {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: 2rem;
  margin-left: -0.6rem;
}

/* Colonne visuelle : la fenêtre découpée + son cercle satellite */
.lb-cover__visual {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  height: 100%;
  padding: clamp(2rem, 5vw, 4.5rem) clamp(1.5rem, 4vw, 4rem);
}

.lb-cover__stack {
  position: relative;
  width: min(100%, 27vw + 130px, 440px);
}

/* L'arche : ici ce n'est pas une image posée, c'est un trou dans l'aplat. */
.lb-cover__window {
  position: relative;
  z-index: 1;
  width: 100%;
  aspect-ratio: 3 / 4;
  border-radius: 50% 50% var(--lb-r-md) var(--lb-r-md) / 37.5% 37.5%
    var(--lb-r-md) var(--lb-r-md);
  box-shadow:
    0 0 0 var(--lb-outline-w) var(--lb-outline),
    0 0 0 100vmax var(--lb-veil);
}

.lb-cover__bubble {
  position: absolute;
  z-index: 3;
  width: 36%;
  right: -6%;
  bottom: 6%;
  box-shadow:
    0 0 0 var(--lb-outline-w) var(--lb-cream-70),
    var(--lb-shadow-lg);
}

.lb-cover__scroll {
  position: absolute;
  left: clamp(1.5rem, 5vw, 5.5rem);
  bottom: 2rem;
  z-index: 4;
  display: inline-flex;
  align-items: center;
  gap: 0.7rem;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--lb-cream-45);
  text-decoration: none;
}

.lb-cover__scroll span {
  display: block;
  width: 46px;
  height: 1px;
  background: currentColor;
  transform-origin: left center;
  animation: lb-scroll-line 2.6s ease-in-out infinite;
}

@keyframes lb-scroll-line {
  0%,
  100% {
    transform: scaleX(0.4);
    opacity: 0.5;
  }
  50% {
    transform: scaleX(1);
    opacity: 1;
  }
}

/* Accueil : pleine hauteur */
.lb-hero,
.lb-hero .lb-cover__inner {
  min-height: 100svh;
}

/* Page intérieure : aplat bleu, hauteur réduite */
.lb-pagehead {
  --lb-veil: rgba(61, 92, 122, 0.86);
  --lb-surface: var(--lb-blue);
  background: var(--lb-blue);
}

.lb-pagehead .lb-cover__inner {
  min-height: min(72svh, 640px);
  padding-bottom: clamp(2rem, 4vw, 3.5rem);
}

.lb-pagehead .lb-cover__stack {
  width: min(100%, 22vw + 110px, 340px);
}

/* Header inversé (option ACF) */
.lb-cover--reverse .lb-cover__inner {
  grid-template-columns: 0.98fr 1.02fr;
}

.lb-cover--reverse .lb-cover__content {
  order: 2;
}

.lb-cover--reverse .lb-cover__visual {
  order: 1;
}

@media (max-width: 1023px) {
  .lb-cover__inner,
  .lb-cover--reverse .lb-cover__inner {
    grid-template-columns: 1fr;
    text-align: center;
    padding-top: calc(var(--lb-nav-h) + 1.5rem);
    padding-bottom: 3rem;
  }
  .lb-cover__content,
  .lb-cover--reverse .lb-cover__content {
    order: 2;
    padding-inline: var(--lb-gutter);
  }
  .lb-cover__visual,
  .lb-cover--reverse .lb-cover__visual {
    order: 1;
    padding: 1rem var(--lb-gutter) 2.5rem;
  }
  .lb-cover__text {
    margin-inline: auto;
  }
  .lb-cover .lb-eyebrow,
  .lb-cover .lb-actions,
  .lb-cover__socials {
    justify-content: center;
  }
  .lb-cover__stack,
  .lb-pagehead .lb-cover__stack {
    width: min(100%, 320px);
  }
  .lb-cover__bubble {
    width: 34%;
    right: 0;
    bottom: 5%;
  }
  .lb-cover__scroll {
    display: none;
  }
  .lb-hero,
  .lb-hero .lb-cover__inner,
  .lb-pagehead .lb-cover__inner {
    min-height: 0;
  }
}

/* --------------------------------------------------------------------------
   12. Variante d'en-tête : la forme passe derrière le texte
       (section .lb-cover--panel, pilotée depuis home-slider-6.php pour
       l'accueil et page-title-6.php pour les pages intérieures)

   Ici l'arche n'est plus une découpe dans un aplat : l'aplat disparaît, la
   photo occupe tout le cadre, et l'arche devient un panneau posé derrière le
   texte. Le cercle satellite, privé de la fenêtre, redevient le seul motif
   de la colonne de droite — sur les pages intérieures, qui n'en ont pas,
   cette colonne laisse simplement respirer la photo.
   -------------------------------------------------------------------------- */

/* Plus d'aplat intégral : un simple dégradé suffit à tenir le contraste. */
.lb-cover--panel .lb-cover__bg::after {
  background: linear-gradient(
    90deg,
    rgba(0, 0, 0, 0.55) 0%,
    rgba(0, 0, 0, 0.3) 45%,
    rgba(0, 0, 0, 0.18) 100%
  );
}

.lb-cover--panel.lb-cover--reverse .lb-cover__bg::after {
  background: linear-gradient(
    270deg,
    rgba(0, 0, 0, 0.55) 0%,
    rgba(0, 0, 0, 0.3) 45%,
    rgba(0, 0, 0, 0.18) 100%
  );
}

/* Le panneau : même géométrie que l'ancienne fenêtre, mais plein et calé sur
   la boîte du texte, donc il s'adapte tout seul à la longueur du titre. */
.lb-cover--panel .lb-cover__content {
  margin-block: clamp(1.5rem, 3vw, 3rem);
  margin-inline: var(--lb-gutter) 0;
  padding: clamp(3.5rem, 6vw, 5.5rem) clamp(2rem, 4vw, 3.5rem)
    clamp(2.5rem, 4vw, 3.5rem);
  text-align: center;
}

.lb-cover--panel .lb-cover__content::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--lb-veil);
  border-radius: 50% 50% var(--lb-r-lg) var(--lb-r-lg) / 26% 26% var(--lb-r-lg)
    var(--lb-r-lg);
  box-shadow:
    0 0 0 var(--lb-outline-w) var(--lb-outline),
    var(--lb-shadow-lg);
}

.lb-cover--panel .lb-eyebrow,
.lb-cover--panel .lb-actions,
.lb-cover--panel .lb-cover__socials {
  justify-content: center;
}

.lb-cover--panel .lb-cover__socials {
  margin-left: 0;
}

.lb-cover--panel.lb-cover--reverse .lb-cover__content {
  margin-inline: 0 var(--lb-gutter);
}

.lb-cover--panel .lb-cover__text {
  margin-inline: auto;
}

/* La fenêtre a déménagé : ce qu'il reste à droite, c'est le cercle photo. */
.lb-cover--panel .lb-cover__window {
  display: none;
}

.lb-cover--panel .lb-cover__stack {
  width: min(100%, 24vw + 110px, 380px);
}

.lb-cover--panel .lb-cover__bubble {
  position: static;
  width: 100%;
  aspect-ratio: 1;
}

/* En-tête de page : le contenu est plus court que sur l'accueil, le panneau
   se resserre pour ne pas flotter dans le vide. */
.lb-pagehead.lb-cover--panel .lb-cover__content {
  padding: clamp(3rem, 5vw, 4.5rem) clamp(2rem, 4vw, 3.5rem)
    clamp(2rem, 3.5vw, 3rem);
}

@media (max-width: 1023px) {
  .lb-cover--panel .lb-cover__content,
  .lb-cover--panel.lb-cover--reverse .lb-cover__content {
    margin-inline: var(--lb-gutter);
    margin-block: 0;
    padding: clamp(3rem, 12vw, 4.5rem) clamp(1.5rem, 6vw, 2.5rem)
      clamp(2.5rem, 8vw, 3.5rem);
  }
  .lb-cover--panel .lb-cover__stack {
    width: min(70%, 240px);
  }
}

/* --------------------------------------------------------------------------
   13. Texte + photo (text-photo-6)
   -------------------------------------------------------------------------- */

.lb-textphoto {
  position: relative;
}

.lb-textphoto__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: clamp(2.5rem, 6vw, 6rem);
}

.lb-textphoto--reverse .lb-textphoto__content {
  order: 2;
}

.lb-textphoto--reverse .lb-textphoto__visual {
  order: 1;
}

.lb-textphoto__visual {
  position: relative;
  display: grid;
  place-items: center;
  padding: clamp(1.5rem, 3vw, 2.5rem);
}

.lb-textphoto__arch {
  width: min(100%, 420px);
}

@media (max-width: 1023px) {
  .lb-textphoto__grid {
    grid-template-columns: 1fr;
    gap: clamp(2rem, 8vw, 3rem);
  }
  .lb-textphoto__content,
  .lb-textphoto--reverse .lb-textphoto__content {
    order: 2;
  }
  .lb-textphoto__visual,
  .lb-textphoto--reverse .lb-textphoto__visual {
    order: 1;
  }
  .lb-textphoto__arch {
    width: min(100%, 330px);
  }
}

/* --------------------------------------------------------------------------
   14. Bloc typo (typo-2)
   -------------------------------------------------------------------------- */

.lb-typo__grid {
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: clamp(2rem, 5vw, 5rem);
  align-items: start;
}

.lb-typo__aside .lb-title {
  margin: 0;
}

.lb-typo__body {
  font-size: 1.03em;
}

@media (max-width: 900px) {
  .lb-typo__grid {
    grid-template-columns: 1fr;
    gap: 1.75rem;
  }
}

/* --------------------------------------------------------------------------
   15. Prestations (prestations-listing-4)
   -------------------------------------------------------------------------- */

.lb-presta__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: clamp(2.5rem, 4vw, 3.5rem) clamp(1.75rem, 3vw, 3rem);
}

.lb-presta__card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  text-decoration: none;
  color: inherit;
  padding-top: var(--lb-outline-gap);
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.lb-presta__card:hover {
  transform: translateY(-8px);
}

.lb-presta__media {
  width: min(100%, 300px);
  margin-bottom: calc(var(--lb-outline-gap) + 1.5rem);
}

.lb-presta__icon {
  width: 42px;
  height: 42px;
  object-fit: contain;
  margin-bottom: 0.75rem;
}

.lb-presta__name {
  margin: 0;
  font-size: clamp(1.25rem, 1.05rem + 0.6vw, 1.65rem);
  font-weight: 700;
  color: var(--lb-cream);
  transition: color 0.3s ease;
}

.lb-presta__card:hover .lb-presta__name {
  color: var(--lb-cream-warm);
}

.lb-presta__desc {
  margin-top: 0.8rem;
  max-width: 42ch;
  font-size: 0.95rem;
  color: var(--lb-cream-70);
}

.lb-presta__more {
  margin-top: 1.1rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--lb-cream-45);
  transition:
    color 0.3s ease,
    gap 0.3s ease;
}

.lb-presta__card:hover .lb-presta__more {
  color: var(--lb-cream);
  gap: 0.85rem;
}

.lb-presta__more svg {
  width: 15px;
  height: 15px;
  fill: currentColor;
}

/* --------------------------------------------------------------------------
   16. Galerie (gallery-2)
   -------------------------------------------------------------------------- */

.lb-gallery__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: clamp(2.75rem, 4.5vw, 4.25rem) clamp(2rem, 3.5vw, 3.25rem);
  align-items: center;
}

.lb-gallery__item {
  position: relative;
  width: 100%;
  cursor: pointer;
  border: 0;
  padding: 0;
  background: none;
}

.lb-gallery__item .lb-shape__media {
  aspect-ratio: 1;
}

/* Décalage alterné : la grille respire et les cercles semblent flotter,
   comme les vignettes rondes du flyer. */
.lb-gallery__item:nth-child(even) {
  margin-top: clamp(1rem, 3.5vw, 3.25rem);
}

/* --------------------------------------------------------------------------
   17. CTA (cta-4)
   -------------------------------------------------------------------------- */

.lb-cta {
  position: relative;
  background: var(--lb-blue);
  --lb-surface: var(--lb-blue);
  --lb-outline: var(--lb-navy);
  overflow: clip;
}

.lb-cta__grid {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  align-items: center;
  gap: clamp(2rem, 5vw, 5rem);
}

.lb-cta__visual {
  position: relative;
  display: grid;
  place-items: center;
  padding: clamp(1.5rem, 3vw, 2.5rem);
}

.lb-cta__arch {
  width: min(100%, 380px);
}

.lb-cta__content {
  padding-right: clamp(0rem, 2vw, 2rem);
}

.lb-cta__title {
  margin: 0;
}

.lb-cta__title em {
  display: block;
  font-style: normal;
  color: var(--lb-cream-70);
}

@media (max-width: 1023px) {
  .lb-cta__grid {
    grid-template-columns: 1fr;
    text-align: center;
  }
  .lb-cta__content {
    padding-right: 0;
  }
  .lb-cta .lb-eyebrow,
  .lb-cta .lb-actions {
    justify-content: center;
  }
  .lb-cta__arch {
    width: min(100%, 300px);
  }
}

/* --------------------------------------------------------------------------
   18. Icônes / points forts (icons)
   -------------------------------------------------------------------------- */

.lb-features__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: clamp(1.5rem, 3vw, 2.5rem);
}

.lb-feature {
  display: flex;
  align-items: flex-start;
  gap: 1.15rem;
  padding: clamp(1.5rem, 2.5vw, 2rem);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  border-radius: var(--lb-r-lg);
  background: var(--lb-anthracite-soft);
  transition:
    border-color 0.35s ease,
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.lb-feature:hover {
  border-color: var(--lb-cream-45);
  transform: translateY(-5px);
}

.lb-feature__icon {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  flex: none;
  border-radius: 50%;
  border: var(--lb-outline-w) solid var(--lb-cream-45);
  color: var(--lb-cream);
}

.lb-feature__icon svg {
  width: 26px;
  height: 26px;
  fill: currentColor;
}

.lb-feature__title {
  margin: 0 0 0.35rem;
  font-size: 1.18rem;
  font-weight: 700;
}

.lb-feature__text {
  margin: 0;
  font-size: 0.94rem;
  color: var(--lb-cream-70);
  line-height: 1.6;
}

/* --------------------------------------------------------------------------
   19. Partenaires
   -------------------------------------------------------------------------- */

.lb-partners__grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(1.5rem, 3vw, 2.75rem);
}

.lb-partners__item {
  display: grid;
  place-items: center;
  width: clamp(160px, 20vw, 230px);
  aspect-ratio: 4 / 3;
  padding: 1.25rem;
  border-radius: var(--lb-r-lg);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  background: var(--lb-anthracite-soft);
  transition:
    border-color 0.35s ease,
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.lb-partners__item:hover {
  border-color: var(--lb-cream-45);
  transform: translateY(-5px);
}

.lb-partners__item img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}

/* --------------------------------------------------------------------------
   20. Équipe
   -------------------------------------------------------------------------- */

.lb-team__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: clamp(2.75rem, 4.5vw, 4rem) clamp(2rem, 3vw, 3rem);
  justify-items: center;
}

.lb-team__member {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  max-width: 260px;
  padding-top: var(--lb-outline-gap);
}

.lb-team__photo {
  width: clamp(150px, 16vw, 190px);
  margin-bottom: calc(var(--lb-outline-gap) + 1.25rem);
}

.lb-team__name {
  margin: 0;
  font-size: 1.3rem;
  font-weight: 700;
}

.lb-team__role {
  display: block;
  margin-top: 0.3rem;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--lb-cream-45);
}

/* --------------------------------------------------------------------------
   21. Carte (map-2)
   -------------------------------------------------------------------------- */

.lb-map {
  position: relative;
  background: var(--lb-blue);
  --lb-surface: var(--lb-blue);
  --lb-outline: var(--lb-navy);
}

.lb-map__inner {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  align-items: stretch;
  gap: clamp(2rem, 4vw, 3.5rem);
}

.lb-map__aside {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-block: clamp(1rem, 3vw, 2rem);
}

#map {
  width: 100%;
  min-height: 480px;
  height: 100%;
  border-radius: var(--lb-r-lg);
  border: var(--lb-outline-w) solid var(--lb-navy);
  overflow: hidden;
  z-index: 1;
}

.leaflet-container {
  background: var(--lb-anthracite-soft);
  font-family: "Quicksand", sans-serif;
}

.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
  background: var(--lb-anthracite);
  color: var(--lb-cream);
  border-radius: var(--lb-r-md);
}

.leaflet-control-zoom a {
  background: var(--lb-anthracite) !important;
  color: var(--lb-cream) !important;
  border-color: var(--lb-cream-20) !important;
}

@media (max-width: 1023px) {
  .lb-map__inner {
    grid-template-columns: 1fr;
  }
  #map {
    min-height: 380px;
  }
}

/* --------------------------------------------------------------------------
   22. Formulaire & contact
   -------------------------------------------------------------------------- */

.lb-contact__grid {
  display: grid;
  grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr);
  gap: clamp(2rem, 4vw, 4rem);
  align-items: start;
}

.lb-contact__cards {
  display: grid;
  gap: 1rem;
}

.lb-contact__card {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1.25rem 1.4rem;
  border-radius: var(--lb-r-lg);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  background: var(--lb-anthracite-soft);
  transition:
    border-color 0.35s ease,
    transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.lb-contact__card:hover {
  border-color: var(--lb-cream-45);
  transform: translateY(-4px);
}

.lb-contact__card-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  flex: none;
  border-radius: 50%;
  border: var(--lb-outline-w) solid var(--lb-cream-45);
  color: var(--lb-cream);
}

.lb-contact__card-icon svg {
  width: 21px;
  height: 21px;
  fill: currentColor;
}

.lb-contact__card-label {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--lb-cream-45);
  margin-bottom: 0.15rem;
}

.lb-contact__card-value,
.lb-contact__card-value a {
  color: var(--lb-cream);
  font-weight: 600;
  text-decoration: none;
  line-height: 1.45;
  word-break: break-word;
}

.lb-contact__card-value a:hover {
  color: var(--lb-cream-warm);
}

@media (max-width: 900px) {
  .lb-contact__grid {
    grid-template-columns: 1fr;
  }
}

.lb-contact__panel {
  padding: clamp(1.75rem, 3.5vw, 3rem);
  border-radius: var(--lb-r-lg);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  background: var(--lb-anthracite-soft);
}

.lb-contact__visual {
  width: min(100%, 400px);
  margin-inline: auto;
}

#contactForm {
  display: block;
}

#contactForm > div {
  display: flex;
  flex-wrap: wrap;
  gap: 1.1rem;
}

#contactForm fieldset {
  display: flex;
  flex-direction: column;
  flex: 1 1 220px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

#contactForm fieldset.textarea,
#contactForm fieldset.checkbox,
#contactForm fieldset.rgpd {
  flex: 1 1 100%;
  width: 100%;
}

#contactForm label {
  font-family: "Quicksand", sans-serif !important;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--lb-cream-45) !important;
  margin-bottom: 0.5rem;
}

#contactForm .form-field,
#contactForm input[type="text"],
#contactForm input[type="email"],
#contactForm input[type="tel"],
#contactForm input[type="number"],
#contactForm input[type="date"],
#contactForm select,
#contactForm textarea {
  width: 100%;
  padding: 0.85rem 1.15rem;
  border-radius: var(--lb-r-md);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  background: var(--lb-anthracite);
  color: var(--lb-cream);
  font-family: "Quicksand", sans-serif;
  font-size: 0.98rem;
  font-weight: 500;
  transition:
    border-color 0.3s ease,
    background-color 0.3s ease;
}

#contactForm textarea {
  min-height: 170px;
  resize: vertical;
  border-radius: var(--lb-r-lg);
}

#contactForm .form-field::placeholder {
  color: var(--lb-cream-45);
}

#contactForm .form-field:focus,
#contactForm select:focus,
#contactForm textarea:focus {
  outline: none;
  border-color: var(--lb-cream);
  background: var(--lb-anthracite-deep);
}

#contactForm .form-field.error,
#contactForm .error {
  border-color: #d98b8b;
}

#contactForm input[type="checkbox"],
#contactForm input[type="radio"] {
  appearance: none;
  width: 22px;
  height: 22px;
  flex: none;
  border-radius: 7px;
  border: var(--lb-outline-w) solid var(--lb-cream-45);
  background: transparent;
  cursor: pointer;
  position: relative;
  transition:
    background-color 0.25s ease,
    border-color 0.25s ease;
}

#contactForm input[type="radio"] {
  border-radius: 50%;
}

#contactForm input[type="checkbox"]:checked,
#contactForm input[type="radio"]:checked {
  background: var(--lb-cream);
  border-color: var(--lb-cream);
}

#contactForm input[type="checkbox"]:checked::after {
  content: "";
  position: absolute;
  left: 6px;
  top: 2px;
  width: 5px;
  height: 10px;
  border-right: 2px solid var(--lb-navy);
  border-bottom: 2px solid var(--lb-navy);
  transform: rotate(45deg);
}

#contactForm .submitButton,
input[type="submit"].submitButton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 1.05em 2.4em !important;
  min-height: 54px;
  border: 0 !important;
  border-radius: var(--lb-r-pill) !important;
  background: var(--lb-cream) !important;
  color: var(--lb-navy) !important;
  font-family: "Quicksand", sans-serif !important;
  font-size: 0.95rem !important;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  cursor: pointer;
  transition:
    transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
    background-color 0.35s ease;
}

#contactForm .submitButton:hover,
input[type="submit"].submitButton:hover {
  background: var(--lb-cream-warm) !important;
  color: var(--lb-navy) !important;
  transform: translateY(-3px);
}

/* Toasters
   Le thème les masque avec `.hide { left: 100% }`, ce qui les pousse hors du
   document et crée un débordement horizontal. On repositionne l'ancrage à
   droite et on masque par translation : plus rien ne sort de la fenêtre. */
.toaster,
.toasterSuccess {
  position: fixed;
  left: auto !important;
  right: clamp(1rem, 2.5vw, 3rem) !important;
  bottom: clamp(1rem, 2.5vw, 3rem) !important;
  top: auto;
  z-index: 500;
  width: min(30rem, calc(100vw - 2rem));
  max-width: calc(100vw - 2rem);
  transition:
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.4s ease;
}

.toaster.hide,
.toasterSuccess.hide {
  transform: translateX(calc(100% + clamp(1rem, 2.5vw, 3rem)));
  opacity: 0;
  pointer-events: none;
}

.toaster.show,
.toasterSuccess.show {
  transform: none;
  opacity: 1;
}

.toaster > div,
.toasterSuccess > div {
  width: 100%;
  min-width: 0 !important;
  max-width: none !important;
  padding-top: 1.5rem !important;
  border-radius: var(--lb-r-lg) !important;
  border: var(--lb-outline-w) solid var(--lb-cream-20) !important;
  background: var(--lb-anthracite-soft) !important;
  color: var(--lb-cream) !important;
  box-shadow: var(--lb-shadow-lg) !important;
}

.toaster > div {
  border-left: 4px solid #d98b8b !important;
}

.toasterSuccess > div {
  border-left: 4px solid #8fc7a1 !important;
}

.toaster .toastTitle,
.toasterSuccess .toastTitle {
  font-family: "Playfair Display", serif !important;
  font-size: 1.35rem !important;
  padding-inline: 1.5rem !important;
  color: var(--lb-cream);
}

.toaster .errorListing,
.toasterSuccess > div > div:not(.toastTitle):not(.ml-auto) {
  padding: 0.75rem 1.5rem 1.5rem !important;
  color: var(--lb-cream-70);
  font-size: 0.95rem;
  line-height: 1.6;
}

.toaster .closeToaster {
  color: var(--lb-cream) !important;
  width: 1.5rem;
  height: 1.5rem;
}

.toaster .closeToaster:hover {
  color: var(--lb-cream-warm) !important;
}

/* --------------------------------------------------------------------------
   23. Blog
   -------------------------------------------------------------------------- */

.lb-blog__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(2rem, 3.5vw, 3rem);
}

.lb-blog__card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.lb-blog__card:hover {
  transform: translateY(-7px);
}

.lb-blog__media {
  width: 100%;
  height: clamp(200px, 22vw, 260px);
  border-radius: var(--lb-r-lg) var(--lb-r-lg) var(--lb-r-md) var(--lb-r-md);
  overflow: hidden;
}

.lb-blog__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.lb-blog__body {
  padding: 1.4rem 1.5rem 1.6rem;
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  border-top: 0;
  border-radius: 0 0 var(--lb-r-lg) var(--lb-r-lg);
  background: var(--lb-anthracite-soft);
  flex: 1 1 auto;
  transition: border-color 0.35s ease;
}

.lb-blog__card:hover .lb-blog__body {
  border-color: var(--lb-cream-45);
}

.lb-blog__title {
  margin: 0;
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.3;
}

.lb-blog__date {
  display: block;
  margin-bottom: 0.5rem;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--lb-cream-45);
}

.pagination {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 3rem;
}

.pagination .page-numbers {
  display: grid;
  place-items: center;
  min-width: 44px;
  height: 44px;
  padding-inline: 0.75rem;
  border-radius: var(--lb-r-pill);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  font-family: "Quicksand", sans-serif;
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--lb-cream-70);
  text-decoration: none;
  transition: all 0.3s ease;
}

.pagination .page-numbers:hover,
.pagination .page-numbers.current {
  background: var(--lb-cream);
  border-color: var(--lb-cream);
  color: var(--lb-navy);
}

/* --------------------------------------------------------------------------
   24. Avant / après
   -------------------------------------------------------------------------- */

.lb-befaf__grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(1.5rem, 3vw, 2.5rem);
}

.lb-befaf__item {
  position: relative;
  width: min(100%, 600px);
  height: clamp(320px, 42vw, 520px);
  border-radius: var(--lb-r-lg);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  overflow: hidden;
}

.lb-befaf__item .img {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
}

.lb-befaf__item .foreground-img {
  width: 50%;
}

.lb-befaf__item .slider {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  appearance: none;
  background: transparent;
  outline: none;
  cursor: ew-resize;
  z-index: 3;
}

.lb-befaf__item .slider::-webkit-slider-thumb {
  appearance: none;
  width: 8px;
  height: 100%;
  background: transparent;
  cursor: ew-resize;
}

.lb-befaf__item .slider-button {
  position: absolute;
  left: calc(50% - 24px);
  top: calc(50% - 24px);
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--lb-cream);
  pointer-events: none;
  z-index: 2;
}

.lb-befaf__item .slider-button::before,
.lb-befaf__item .slider-button::after {
  content: "";
  position: absolute;
  top: 18px;
  width: 8px;
  height: 8px;
  border-right: 2px solid var(--lb-navy);
  border-bottom: 2px solid var(--lb-navy);
}

.lb-befaf__item .slider-button::before {
  left: 14px;
  transform: rotate(135deg);
}

.lb-befaf__item .slider-button::after {
  right: 14px;
  transform: rotate(-45deg);
}

.lb-befaf__legend {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 4;
  padding: 0.9rem 1.25rem;
  background: rgba(27, 42, 56, 0.85);
  color: var(--lb-cream);
  font-size: 0.92rem;
  text-align: center;
}

/* --------------------------------------------------------------------------
   25. Footer
   -------------------------------------------------------------------------- */

.v3Footer {
  position: relative;
  background: var(--lb-anthracite-deep) !important;
  color: var(--lb-cream);
  padding: 0 !important;
  text-align: left;
  --lb-surface: var(--lb-anthracite-deep);
  --lb-outline: var(--lb-blue-soft);
  overflow: clip;
}

.lb-footer__top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr);
  gap: clamp(2.5rem, 5vw, 5rem);
  padding-block: clamp(3.5rem, 7vw, 6rem) clamp(2.5rem, 4vw, 3.5rem);
}

.lb-footer__brand img {
  height: clamp(64px, 7vw, 92px);
  width: auto;
  object-fit: contain;
  margin-bottom: 1.5rem;
  border-radius: var(--lb-r-md);
}

.lb-footer__baseline {
  max-width: 40ch;
  color: var(--lb-cream-70);
  margin: 0 0 1.75rem;
}

.lb-footer__socials {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
}

.lb-footer__cols {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: clamp(1.75rem, 3vw, 2.75rem);
}

.lb-footer__col-title {
  margin: 0 0 1.1rem;
  font-family: "Quicksand", sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--lb-cream-45);
}

.lb-footer__info {
  display: grid;
  gap: 1.15rem;
}

.lb-footer__info-item {
  display: flex;
  align-items: flex-start;
  gap: 0.8rem;
}

.lb-footer__info-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  flex: none;
  border-radius: 50%;
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  color: var(--lb-cream);
}

.lb-footer__info-icon svg {
  width: 17px;
  height: 17px;
  fill: currentColor;
}

.lb-footer__info-item .txtCustom,
.lb-footer__info-item .txtCustom a {
  color: var(--lb-cream-70) !important;
  font-size: 0.95rem;
  line-height: 1.55;
  text-decoration: none;
  letter-spacing: normal !important;
}

.lb-footer__info-item .txtCustom a:hover,
.lb-footer__info-item:hover .txtCustom a {
  color: var(--lb-cream) !important;
}

.lb-footer__hours {
  display: grid;
  gap: 0.15rem;
}

.lb-footer__hours span::after {
  content: "" !important;
}

/* Menu du footer */
#footerMenu {
  display: grid !important;
  gap: 0.45rem;
  list-style: none;
  margin: 0;
  padding: 0;
  float: none !important;
  text-align: left;
}

#footerMenu li {
  margin: 0;
  display: block;
}

#footerMenu li a {
  display: inline-block;
  font-family: "Quicksand", sans-serif !important;
  font-size: 0.95rem !important;
  font-weight: 500;
  color: var(--lb-cream-70) !important;
  text-decoration: none;
  text-transform: none !important;
  transition:
    color 0.3s ease,
    transform 0.3s ease;
}

#footerMenu li a:hover,
#footerMenu li.current-menu-item > a,
#footerMenu li.current-menu-ancestor > a {
  color: var(--lb-cream) !important;
  transform: translateX(4px);
}

#footerMenu .sub-menu {
  display: grid;
  gap: 0.3rem;
  margin: 0.4rem 0 0.6rem 0.9rem;
  padding: 0;
  list-style: none;
  position: static !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  max-height: none !important;
  min-width: 0 !important;
}

#footerMenu .sub-menu li a {
  font-size: 0.88rem !important;
  color: var(--lb-cream-45) !important;
}

/* Barre légale : on ne touche pas au SVG ReadyUp */
.lb-footer__legal {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 1.15rem 1.25rem;
  background: var(--lb-navy) !important;
  color: var(--lb-cream-45);
  font-size: 0.83rem;
  text-align: center;
}

.lb-footer__legal a {
  color: var(--lb-cream-70);
  text-decoration: none;
  transition: color 0.3s ease;
}

.lb-footer__legal a:hover {
  color: var(--lb-cream);
}

.lb-footer__legal svg {
  height: 22px;
  width: auto;
}

@media (max-width: 900px) {
  .lb-footer__top {
    grid-template-columns: 1fr;
  }
}

/* --------------------------------------------------------------------------
   26. Modale image (galerie)
   -------------------------------------------------------------------------- */

#modal {
  z-index: 500;
  background: rgba(23, 24, 27, 0.92) !important;
  backdrop-filter: blur(6px);
  padding: clamp(1rem, 4vw, 3rem);
}

#modal.invisible {
  visibility: hidden;
}

#modal-img {
  max-width: min(1000px, 92vw);
  max-height: 86vh;
  width: auto;
  height: auto;
  object-fit: contain !important;
  border-radius: var(--lb-r-lg);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
}

#modal > a {
  top: clamp(1rem, 4vw, 2.5rem) !important;
  right: clamp(1rem, 4vw, 2.5rem) !important;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: var(--lb-outline-w) solid var(--lb-cream-45);
  color: var(--lb-cream) !important;
  font-size: 1.9rem !important;
  line-height: 1;
  text-decoration: none;
  transition:
    background-color 0.3s ease,
    color 0.3s ease;
}

#modal > a:hover {
  background: var(--lb-cream);
  color: var(--lb-navy) !important;
}

/* --------------------------------------------------------------------------
   27. Page Mentions légales & contenus éditoriaux
   -------------------------------------------------------------------------- */

.lb-legal {
  padding-top: calc(var(--lb-nav-h) + clamp(3rem, 6vw, 5.5rem));
}

.lb-legal__head {
  text-align: center;
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.lb-legal__body {
  max-width: 78ch;
  margin-inline: auto;
  padding: clamp(1.75rem, 4vw, 3.25rem);
  border-radius: var(--lb-r-lg);
  border: var(--lb-outline-w) solid var(--lb-cream-20);
  background: var(--lb-anthracite-soft);
  color: var(--lb-cream-70);
}

.lb-legal__body h2 {
  margin: 2.5rem 0 0.9rem;
  font-size: clamp(1.2rem, 1rem + 0.8vw, 1.6rem);
  font-weight: 700;
  line-height: 1.25;
  color: var(--lb-cream);
  text-transform: uppercase;
  letter-spacing: 0.01em;
}

.lb-legal__body h2:first-child {
  margin-top: 0;
}

.lb-legal__body p {
  margin: 0 0 1rem;
}

/* --------------------------------------------------------------------------
   28. Divers / garde-fous
   -------------------------------------------------------------------------- */

/* Le thème impose `body p { margin-bottom: 15px !important }`, indispensable
   pour aérer les contenus WYSIWYG. Plutôt que de la supprimer, on l'annule sur
   toute la structure Lama Bois, puis on la rétablit là où elle sert vraiment :
   le corps de texte éditorial. Les composants non repris (FAQ, avis, villes)
   ne sont pas concernés et gardent le comportement d'origine. */
body .lb-hero p,
body .lb-pagehead p,
body .lb-section p,
body .v3Footer p,
body .lb-header p {
  margin-bottom: 0 !important;
}

/* Dans .lb-rich, l'espacement est porté par `> * + *` : les paragraphes
   restent à zéro pour ne pas cumuler les deux marges. */
body .lb-legal__body p {
  margin-bottom: 1rem !important;
}

body .lb-legal__body > *:last-child {
  margin-bottom: 0 !important;
}

.lb-eyebrow {
  margin-bottom: 1.1rem !important;
}

/* Sur les petites largeurs, les blocs de texte courant passent en justifié :
   les colonnes étroites gagnent en tenue. Les titres et les libellés courts
   gardent leur alignement. */
@media (max-width: 1023px) {
  .lb-rich,
  .lb-typo__body,
  .lb-lead,
  .lb-cover__text,
  .toaster .errorListing,
  .toasterSuccess > div > div:not(.toastTitle):not(.ml-auto) {
    text-align: justify;
    hyphens: auto;
  }

  /* Dans les blocs centrés, la dernière ligne reste centrée. */
  .lb-cover__text,
  .lb-cover .lb-rich {
    text-align-last: center;
  }
}

img {
  max-width: 100%;
  height: auto;
}

a {
  color: inherit;
}

*:focus-visible {
  outline: 2px solid var(--lb-cream);
  outline-offset: 3px;
  border-radius: 4px;
}

.screen-reader-text:focus {
  background-color: var(--lb-cream);
  color: var(--lb-navy);
}

/* Le rythme vertical est porté par le padding des sections :
   le spacer du builder est neutralisé pour éviter les doubles marges. */
.spacer {
  height: 0 !important;
}
