/* ==================================================================
   MENU ALEXANDRA HILVERT
   Ordinateur : file de liens, points ocre, Contact en terre.
   Mobile : bouton à trois ronds + panneau fendu (rail + liste).
================================================================== */

/* Ne jamais laisser .ah-anim masquer <html> (écran blanc mobile). */
html.ah-anim {
  opacity: 1 !important;
  transform: none !important;
}

/* Accueil : le header Theme Builder ne doit pas s’afficher à l’arrivée.
   Homepage le désactive déjà (et-tb-header-disabled). Home, sans ce
   réglage Divi, laisserait la barre TOTEM au-dessus du hero. */
html:not(.et-fb) body:is(.ah-accueil, .page-id-3478, .page-homepage, .page-home, .page-id-4379) .et-l--header,
html:not(.et-fb) body:is(.ah-accueil, .page-id-3478, .page-homepage, .page-home, .page-id-4379) #main-header,
html:not(.et-fb) body:is(.ah-accueil, .page-id-3478, .page-homepage, .page-home, .page-id-4379) #top-header {
  display: none !important;
}

.et_pb_menu .et-menu {
  display: flex !important;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
}
/* Pas de flex sur le li : ça cassait le sous-menu Divi
   (Réalisations → Particuliers / Professionnelles). */
.et_pb_menu .et-menu > li {
  position: relative;
  display: block;
}
/* Point dans la gouttière entre deux onglets, à hauteur du texte.
   top: 0.5lh le collait en haut (lh = interligne, pas la hauteur du li).
   Sur le a, left: 0 le collait à la première lettre au lieu du milieu. */
.et_pb_menu .et-menu > li + li > a::before {
  content: none !important;
}
.et_pb_menu .et-menu > li + li::before {
  content: "" !important;
  position: absolute;
  left: 0;
  top: 50%;
  width: 5px;
  height: 5px;
  margin: 0;
  border-radius: 50%;
  background: var(--ah-terre, #b07030);
  transform: translate(-50%, -50%);
  pointer-events: none;
}
.et_pb_menu .et-menu > li > a {
  color: var(--ah-espresso, #2d1d12) !important;
  font-weight: 600;
}
.et_pb_menu .et-menu > li > a:hover,
.et_pb_menu .et-menu > .current-menu-item > a,
.et_pb_menu .et-menu > .current-menu-ancestor > a,
.et_pb_menu .et-menu > li > a[href*="/contact"] {
  color: var(--ah-terre, #b07030) !important;
}

.et_pb_section--with-menu,
.et_pb_menu,
.et_pb_menu .et_pb_row,
.et_pb_menu .et-menu {
  overflow: visible !important;
}

/* ---------- Perles HAUT + BAS de la barre blanche ----------
   Accueil : visibles dès que la barre traverse le hero
   (pas seulement .et_pb_sticky). Header TB : toujours. */
:root {
  --ah-perle-masque: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64.23 42.72' preserveAspectRatio='none'%3E%3Ccircle cx='32.115' cy='21.36' r='21.36' fill='%23000'/%3E%3Ccircle cx='0' cy='21.36' r='10.56' fill='%23000'/%3E%3Ccircle cx='64.23' cy='21.36' r='10.56' fill='%23000'/%3E%3C/svg%3E");
  --ah-menu-separateur: url("../img/separateur-logo-blanc.svg");
  /* Même tracé, teinte ocre : servie quand la frise tombe sur une
     section au fond blanc, où le blanc ne se verrait pas. */
  --ah-menu-separateur-ocre: url("../img/separateur-logo-ocre-isotype.svg");
  --ah-filet-hauteur: 4px;
}
.et_pb_section_0_tb_header,
.et_pb_section:has(.menu-exceptionnel):not(.ah-histoire),
.et_pb_section.et_pb_sticky_module:has(.menu-exceptionnel),
.et_pb_section[class*="et_pb_sticky"]:has(.menu-exceptionnel) {
  /* 300 × 16 : proportions du SVG conservées.
     Mobile ≈ pleine largeur ; desktop = motif centré comme la capture. */
  --menu-sep-h: clamp(34px, 4.6vw, 56px);
  --menu-sep-couleur: transparent;
  --menu-sep-masque: none;
  overflow: visible !important;
  position: relative;
  isolation: isolate;
}
html body #page-container .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire),
html body #page-container .et_pb_section--with-menu:has(.menu-exceptionnel),
html body .ah-carousel-section.et_pb_section ~ .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire),
html body .ah-carousel-section.et_pb_section ~ .et_pb_sticky_module:has(.menu-exceptionnel),
html body .et_pb_section_0_tb_header {
  z-index: 30 !important;
}
@media (min-width: 981px) {
  html body #page-container .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire),
  html body #page-container .et_pb_section.et_pb_sticky_module:has(.menu-exceptionnel),
  html body #page-container .et_pb_section.et_pb_sticky:has(.menu-exceptionnel),
  html body #page-container .et_pb_section[class*="et_pb_sticky"]:has(.menu-exceptionnel) {
    max-height: none !important;
    height: auto !important;
    min-height: 0 !important;
    padding-top: 54px !important;
    padding-bottom: 54px !important;
    overflow: visible !important;
  }
  html body #page-container .et_pb_section:has(.menu-exceptionnel) > .et_pb_row,
  html body #page-container .et_pb_section:has(.menu-exceptionnel) .et_pb_column,
  html body #page-container .et_pb_section:has(.menu-exceptionnel) .et_pb_menu {
    overflow: visible !important;
  }
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) .et_builder_inner_content,
  html body .et_builder_inner_content.has_et_pb_sticky {
    overflow: visible !important;
  }
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section.et_pb_section_1:has(.menu-exceptionnel),
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section.et_pb_section--with-menu:has(.menu-exceptionnel) {
    padding-top: 16px !important;
    padding-bottom: 16px !important;
    min-height: 0 !important;
    max-height: none !important;
    height: auto !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    background-color: #ffffff !important;
    z-index: 50 !important;
  }
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section.et_pb_section_1.et_pb_sticky:has(.menu-exceptionnel) {
    top: 0 !important;
    box-shadow: 0 -22px 0 0 #ffffff, 0 -80px 0 0 #ffffff !important;
  }
  html body.admin-bar:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section.et_pb_section_1.et_pb_sticky:has(.menu-exceptionnel) {
    top: 32px !important;
  }
  /* Siège du logo DÈS le flux — pas seulement au sticky.
     Sinon Divi mesure un placeholder de ~32 px, puis au collage
     le menu passe à ~118 px : Histoire saute / le menu « s'envole ». */
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section_1 .et-menu,
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section--with-menu .et-menu,
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section.et_pb_sticky:has(.menu-exceptionnel) .et-menu,
  html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section_1.et_pb_sticky .et-menu {
    padding-top: 56px !important;
    padding-bottom: 0 !important;
  }
}

/* Histoire : même blanc que le menu (plus de crème #f7f0ea sous les perles). */
html body #page-container .et_pb_section.ah-histoire,
html body .et_pb_section.ah-histoire {
  background-color: #ffffff !important;
  background-image: none !important;
}

/* Rangée menu : ne jamais écraser le clearfix (sinon hauteur 0
   → placeholder sticky trop bas → le menu s'envole sur Histoire). */
html body #page-container .et_pb_section--with-menu > .et_pb_row::after,
html body #page-container .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire) > .et_pb_row::after {
  content: "" !important;
  display: block !important;
  clear: both !important;
  visibility: hidden !important;
  line-height: 0 !important;
  height: 0 !important;
  width: 0 !important;
}
html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section_1 > .et_pb_row,
html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section--with-menu > .et_pb_row {
  height: auto !important;
}
html body:is(.page-id-3478, .page-homepage, .page-home, .page-id-4379) #page-container .et_pb_section_1 > .et_pb_row > .et_pb_column {
  float: none !important;
  width: 100% !important;
}
html body #page-container .et_pb_section:has(.menu-exceptionnel) .et_pb_menu::before,
html body #page-container .et_pb_section:has(.menu-exceptionnel) .et_pb_menu::after,
html body .et_pb_section_0_tb_header .et_pb_menu::before,
html body .et_pb_section_0_tb_header .et_pb_menu::after {
  content: none !important;
  background: none !important;
  -webkit-mask-image: none !important;
          mask-image: none !important;
  height: 0 !important;
  opacity: 0 !important;
}
html body .et_pb_section_0_tb_header::before,
html body .et_pb_section_0_tb_header::after,
html body #page-container .et_pb_section:has(.menu-exceptionnel)::before,
html body #page-container .et_pb_section:has(.menu-exceptionnel)::after,
html body #page-container .et_pb_section.et_pb_sticky_module:has(.menu-exceptionnel)::before,
html body #page-container .et_pb_section.et_pb_sticky_module:has(.menu-exceptionnel)::after,
html body #page-container .et_pb_section[class*="et_pb_sticky"]:has(.menu-exceptionnel)::before,
html body #page-container .et_pb_section[class*="et_pb_sticky"]:has(.menu-exceptionnel)::after {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  width: auto !important;
  height: var(--menu-sep-h) !important;
  transform: none !important;
  background-color: transparent !important;
  background-image: var(--ah-menu-separateur) !important;
  background-repeat: no-repeat !important;
  background-position: center center !important;
  background-size: auto 100% !important;
  -webkit-mask-image: none !important;
          mask-image: none !important;
  pointer-events: none !important;
  z-index: 1 !important;
  opacity: 1 !important;
}
html body .et_pb_section_0_tb_header::before,
html body #page-container .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire)::before,
html body #page-container .et_pb_section.et_pb_sticky_module:has(.menu-exceptionnel)::before,
html body #page-container .et_pb_section[class*="et_pb_sticky"]:has(.menu-exceptionnel)::before {
  height: var(--menu-sep-h, 22px) !important;
  top: calc(var(--menu-sep-h, 22px) / -2) !important;
  bottom: auto !important;
  margin: 0 !important;
  z-index: 1 !important;
  opacity: 1 !important;
  -webkit-mask-size: calc(var(--menu-sep-h, 22px) * 1.5035) 100% !important;
          mask-size: calc(var(--menu-sep-h, 22px) * 1.5035) 100% !important;
}
.ah-menu-sep {
  --h: var(--menu-sep-h, 22px);
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  top: calc(var(--h) / -2) !important;
  height: var(--h) !important;
  background-color: transparent !important;
  background-image: var(--ah-menu-separateur) !important;
  background-repeat: no-repeat !important;
  background-position: center center !important;
  background-size: auto 100% !important;
  -webkit-mask-image: none !important;
          mask-image: none !important;
  pointer-events: none !important;
  z-index: 1 !important;
}
html body .et_pb_section_0_tb_header::after,
html body #page-container .et_pb_section:has(.menu-exceptionnel)::after,
html body #page-container .et_pb_section.et_pb_sticky_module:has(.menu-exceptionnel)::after,
html body #page-container .et_pb_section[class*="et_pb_sticky"]:has(.menu-exceptionnel)::after {
  top: auto !important;
  bottom: calc(var(--menu-sep-h) / -2) !important;
  margin: 0 !important;
}
.et_pb_section_0_tb_header .et_pb_menu,
html body #page-container .et_pb_section:has(.menu-exceptionnel) .et_pb_menu {
  position: relative;
  z-index: 6;
}

/* ---------- Séparateur du menu : UNE seule source ----------
   Divi duplique la section au passage sticky. Le clone sert uniquement
   de placeholder : ses pseudo-éléments créaient un deuxième séparateur
   exactement au moment où Histoire passe sous le menu.

   Les sélecteurs volontairement très spécifiques gagnent aussi sur les
   anciennes règles encore présentes dans le CSS général de Divi. */
html body #page-container#page-container
  .et_pb_section.et_pb_sticky_placeholder:has(.menu-exceptionnel)::before,
html body #page-container#page-container
  .et_pb_section.et_pb_sticky_placeholder:has(.menu-exceptionnel)::after {
  content: none !important;
  display: none !important;
  height: 0 !important;
  background: none !important;
  -webkit-mask: none !important;
          mask: none !important;
}

/* L'ancien élément injecté en JavaScript n'est plus utilisé. */
html body #page-container#page-container .ah-menu-sep {
  display: none !important;
}

html body #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not(.et_pb_sticky_placeholder)::before,
html body #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not(.et_pb_sticky_placeholder)::after,
html body .et_pb_section_0_tb_header:not(.et_pb_sticky_placeholder)::before,
html body .et_pb_section_0_tb_header:not(.et_pb_sticky_placeholder)::after {
  content: "" !important;
  display: block !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  width: auto !important;
  height: var(--menu-sep-h, 20px) !important;
  margin: 0 !important;
  background-color: transparent !important;
  background-image: var(--ah-menu-separateur) !important;
  background-repeat: no-repeat !important;
  background-position: center center !important;
  background-size: auto 100% !important;
  -webkit-mask: none !important;
          mask: none !important;
  pointer-events: none !important;
  opacity: 1 !important;
  z-index: 1 !important;
}
html body #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not(.et_pb_sticky_placeholder)::before,
html body .et_pb_section_0_tb_header:not(.et_pb_sticky_placeholder)::before {
  top: calc(var(--menu-sep-h, 20px) / -2) !important;
  bottom: auto !important;
  /* Blanc relié au menu, vagues tournées vers le hero. */
  transform: none !important;
}
html body #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not(.et_pb_sticky_placeholder)::after,
html body .et_pb_section_0_tb_header:not(.et_pb_sticky_placeholder)::after {
  top: auto !important;
  bottom: calc(var(--menu-sep-h, 20px) / -2) !important;
  /* Orientation miroir : vagues tournées vers la section suivante. */
  transform: scaleY(-1) !important;
}

/* ---------- Pages intérieures : la frise sous le header Theme Builder.
   Sans overflow visible sur le header et son conteneur, les deux
   pseudo-éléments sont rognés et la frise ne sort jamais. ---------- */
html body .et-l--header,
html body .et-l--header > .et_builder_inner_content,
html body .et_pb_section_0_tb_header,
html body .et_pb_section_0_tb_header > .et_pb_row,
html body .et_pb_section_0_tb_header .et_pb_column,
html body .et_pb_section_0_tb_header .et_pb_menu,
html body .et_pb_section_0_tb_header .et_pb_menu_inner_container {
  overflow: visible !important;
}

.et_pb_section_0_tb_header .et_pb_menu__logo-wrap,
html body #page-container .et_pb_section:has(.menu-exceptionnel) .et_pb_menu__logo-wrap {
  position: relative;
  z-index: 7;
  overflow: visible !important;
}
@media (min-width: 981px) {
  .et_pb_section--with-menu {
    z-index: 30;
  }
}
.et_pb_menu .et-menu > li > .sub-menu {
  z-index: 100010 !important;
  top: 100%;
  left: 0;
}
.et_pb_menu .et-menu > li:hover > .sub-menu,
.et_pb_menu .et-menu > li:focus-within > .sub-menu {
  visibility: visible !important;
  opacity: 1 !important;
}

/* ---------- Mobile : barre blanche = même siège que l'ordinateur
   (logo chocolat + frise dessous). Les liens Divi restent cachés :
   le bouton .ah-menu-mobile ouvre le panneau. ---------- */
@media (max-width: 980px) {
  html body.ah-accueil {
    --ah-menu-barre-h: calc(78px + env(safe-area-inset-top, 0px));
  }
  html body.ah-accueil.ah-menu-pret #page-container
    .et-l--body .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not([class*="tb_header"]),
  html body.ah-accueil.ah-menu-pret #page-container
    .et_pb_section.et_pb_section_1:has(.menu-exceptionnel),
  html body.ah-accueil.ah-hero-pinne .ah-hero-ph ~ .et_pb_section.et_pb_sticky_module:has(.menu-exceptionnel) {
    box-sizing: border-box !important;
    display: block !important;
    height: var(--ah-menu-barre-h, 78px) !important;
    max-height: var(--ah-menu-barre-h, 78px) !important;
    min-height: var(--ah-menu-barre-h, 78px) !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background-color: #ffffff !important;
    background-image: none !important;
    overflow: visible !important;
    pointer-events: none;
    position: sticky !important;
    top: 0 !important;
    z-index: 80 !important;
  }
  html body.ah-accueil.ah-menu-colle #page-container
    .et-l--body .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not([class*="tb_header"]) {
    box-shadow: 0 -28px 0 0 #ffffff !important;
  }
  html body.ah-accueil.ah-menu-pret #page-container
    .et-l--body .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not([class*="tb_header"])
    > .et_pb_row {
    display: none !important;
  }
  body.ah-menu-pret:not(.ah-accueil) .et_pb_section--with-menu:not(.ah-hero):not(:has(.ah-sep)),
  body.ah-menu-pret:not(.ah-accueil) .et_pb_section:has(.et_pb_menu):not(.ah-hero):not(:has(.ah-sep)) {
    height: 0 !important;
    max-height: 0 !important;
    min-height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    overflow: hidden !important;
    pointer-events: none;
  }
  body.ah-menu-pret .et_pb_menu .mobile_nav,
  body.ah-menu-pret .et_pb_menu .et_mobile_nav_menu,
  body.ah-menu-pret .et_pb_menu .et_pb_menu__menu,
  body.ah-menu-pret .et_pb_menu__logo,
  body.ah-menu-pret .et_pb_menu .logo_container {
    display: none !important;
  }
}

.ah-menu-mobile {
  display: none;
}
@media (max-width: 980px) {
  .ah-menu-mobile {
    display: block;
    position: fixed;
    top: calc(10px + env(safe-area-inset-top, 0px));
    right: 12px;
    left: auto;
    z-index: 1000000;
    pointer-events: none;
  }
  .ah-menu-mobile__ouvrir {
    box-sizing: border-box;
    width: 44px;
    height: 44px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    -webkit-appearance: none;
    appearance: none;
    background: var(--ah-terre, #b07030);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    cursor: pointer;
    pointer-events: auto;
  }
  .ah-menu-mobile__ouvrir span {
    display: block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #fff;
  }
  body.ah-menu-ouvert .ah-menu-mobile {
    visibility: hidden;
  }
}

.ah-menu-panneau {
  display: none;
}
@media (max-width: 980px) {
  .ah-menu-panneau {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 1000001;
    padding: calc(10px + env(safe-area-inset-top, 0px)) 12px 12px;
    background: rgba(45, 29, 18, 0.28);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .35s ease, visibility .35s ease;
  }
  .ah-menu-panneau.est-ouvert {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
  .ah-menu-panneau__cadre {
    display: flex;
    height: 100%;
    border-radius: 28px;
    overflow: hidden;
    background: var(--ah-fond-clair, #f7f2ec);
    transform: translateY(12px);
    transition: transform .4s cubic-bezier(.16,.84,.44,1);
  }
  .ah-menu-panneau.est-ouvert .ah-menu-panneau__cadre {
    transform: none;
  }
  .ah-menu-panneau__rail {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    width: 72px;
    flex: none;
    padding: 22px 0 16px;
    background: #522202;
    color: #fff;
  }
  .ah-menu-panneau__sigle {
    /* Le sigle est haut (71 x 128) : 30 px de large suffisent dans la bande. */
    width: 30px;
    color: #fff;
  }
  .ah-menu-panneau__sigle svg {
    display: block;
    width: 100%;
    height: auto;
    fill: currentColor;
  }
  /* « alexandra hilvert » debout dans la bande. La boîte garde les
     dimensions d'après rotation (22 x 190) : sans ça le mot couché
     déborderait le rail et casserait le space-between. */
  .ah-menu-panneau__mot {
    position: relative;
    flex: 0 0 auto;
    width: 22px;
    height: min(190px, 34vh);
    color: #fff;
  }
  .ah-menu-panneau__mot svg {
    position: absolute;
    top: 50%;
    left: 50%;
    display: block;
    width: min(190px, 34vh);
    max-width: none;   /* sinon la règle globale img/svg { max-width:100% }
                          l'écrase à la largeur du rail (22 px) */
    height: auto;
    transform: translate(-50%, -50%) rotate(-90deg);
    fill: currentColor;
  }
  .ah-menu-panneau__fermer {
    box-sizing: border-box;
    width: 44px;
    height: 44px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    -webkit-appearance: none;
    appearance: none;
    background: var(--ah-terre, #b07030);
    color: #522202;
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
  }
  .ah-menu-panneau__corps {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 20px 22px 18px;
    overflow: auto;
  }
  .ah-menu-panneau__liste {
    list-style: none;
    margin: 0;
    padding: 0;
  }
  .ah-menu-panneau__liste > li > a {
    display: block;
    padding: 11px 0;
    color: var(--ah-espresso, #2d1d12) !important;
    font-family: MuseoModerno, sans-serif;
    font-size: 17px;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none !important;
    /* Filet le plus fin que l'écran sache tracer : sur les écrans
       retina du mobile, .5px donne un vrai cheveu. */
    border-bottom: .5px solid rgba(45, 29, 18, 0.16);
  }
  .ah-menu-panneau__liste .current-menu-item > a,
  .ah-menu-panneau__liste > li > a[href*="/contact"] {
    color: var(--ah-terre, #b07030) !important;
  }
  .ah-menu-panneau__liste > li:last-child > a {
    border-bottom: 0;
  }
  .ah-menu-panneau__liste > li.menu-item-has-children > a {
    position: relative;
    padding-right: 28px;
  }
  .ah-menu-panneau__liste > li.menu-item-has-children > a::after {
    content: "";
    position: absolute;
    right: 4px;
    top: 50%;
    width: 7px;
    height: 7px;
    margin-top: -6px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
  }
  .ah-menu-panneau__liste > li.menu-item-has-children.est-ouvert > a::after {
    margin-top: -2px;
    transform: rotate(-135deg);
  }
  .ah-menu-panneau__sous {
    display: none;
    list-style: none;
    margin: 0 0 8px;
    padding: 0 0 8px 4px;
  }
  .ah-menu-panneau__liste > li.est-ouvert > .ah-menu-panneau__sous {
    display: block;
  }
  .ah-menu-panneau__sous a {
    display: block;
    padding: 6px 0;
    color: var(--ah-espresso, #2d1d12) !important;
    font-family: MuseoModerno, sans-serif;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.3;
    text-decoration: none !important;
    border: 0;
  }
  .ah-menu-panneau__vague {
    margin: 16px 0 12px;
    height: 7px;
    background-color: var(--ah-terre, #b07030);
    -webkit-mask-image: var(--ah-perle-masque);
            mask-image: var(--ah-perle-masque);
    -webkit-mask-repeat: repeat-x;
            mask-repeat: repeat-x;
    -webkit-mask-size: calc(7px * 1.5035) 100%;
            mask-size: calc(7px * 1.5035) 100%;
    -webkit-mask-position: center center;
            mask-position: center center;
  }
  .ah-menu-panneau__coord {
    margin: 0;
    color: var(--ah-espresso, #2d1d12);
    font-family: MuseoModerno, sans-serif;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.55;
  }
  .ah-menu-panneau__coord a {
    color: inherit !important;
    text-decoration: none !important;
  }
  body.ah-menu-ouvert {
    overflow: hidden;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ah-menu-panneau,
  .ah-menu-panneau__cadre {
    transition: none !important;
  }
}

/* ---------- Filets du site : même perle, ancienne épaisseur ---------- */
.ah-recits__filet,
.ah-recits__trait,
.ah-ouv__filet,
.ah-expertise-parcours__filet,
.ah-agence__filet,
.ah-agence__signature-filet,
.ah-pil__filet,
.ah-hist .ah-hist-texte:first-child::after,
.ah-projets .et_pb_text::after,
.ah-ag-citation.et_pb_text::after,
.ah-ag-cles.et_pb_text::before,
.ah-histoire .motsclés li::after,
.ah-agence .projetreussimotsclés li::after,
.ah-expertises .ah-exp-ligne::after,
.ah-pag-guide__ligne::after {
  height: var(--ah-filet-hauteur, 4px) !important;
  -webkit-mask-image: var(--ah-perle-masque) !important;
          mask-image: var(--ah-perle-masque) !important;
  -webkit-mask-repeat: repeat-x !important;
          mask-repeat: repeat-x !important;
  -webkit-mask-size: calc(var(--ah-filet-hauteur, 4px) * 1.5035) 100% !important;
          mask-size: calc(var(--ah-filet-hauteur, 4px) * 1.5035) 100% !important;
  -webkit-mask-position: center center !important;
          mask-position: center center !important;
}
.ah-btn__filet i {
  -webkit-mask-image: var(--ah-perle-masque) !important;
          mask-image: var(--ah-perle-masque) !important;
  -webkit-mask-size: calc(10px * 1.5035) 100% !important;
          mask-size: calc(10px * 1.5035) 100% !important;
}
.ah-grille--rectiligne .entry-title::before {
  -webkit-mask-image: var(--ah-perle-masque) !important;
          mask-image: var(--ah-perle-masque) !important;
  -webkit-mask-size: calc(7px * 1.5035) 100% !important;
          mask-size: calc(7px * 1.5035) 100% !important;
}
.ah-grille--large .entry-title::after {
  -webkit-mask-image: var(--ah-perle-masque) !important;
          mask-image: var(--ah-perle-masque) !important;
  -webkit-mask-size: calc(8px * 1.5035) 100% !important;
          mask-size: calc(8px * 1.5035) 100% !important;
}

/* ================================================================
   SÉPARATEUR VECTORIEL — image réelle, sans cassure
================================================================ */
.separateur {
  display: block;
  width: 100%;
  height: auto;
}

html body #page-container#page-container .ah-menu-separateur {
  position: absolute !important;
  left: 0 !important;
  width: 100% !important;
  max-width: none !important;
  /* Rapport natif de la capture : 29 / 1024.
     La hauteur suit exactement la largeur de l'écran. */
  height: 2.83203125vw !important;
  background-color: transparent !important;
  background-image: var(--ah-menu-separateur) !important;
  background-repeat: no-repeat !important;
  background-position: center center !important;
  background-size: 100% 100% !important;
  margin: 0 !important;
  pointer-events: none !important;
  user-select: none !important;
  z-index: 1 !important;
}
html body #page-container#page-container .ah-menu-separateur--haut {
  top: auto !important;
  bottom: calc(100% - 1px) !important;
  transform: none !important;
}
html body #page-container#page-container .ah-menu-separateur--bas {
  top: calc(100% - 1px) !important;
  bottom: auto !important;
  /* Inversion verticale uniquement : la courbe reste dans le même
     ordre de gauche à droite que sur la capture. */
  transform: scaleY(-1) !important;
}

/* Le clone sticky reste seulement un espace de mise en page. */
html body #page-container#page-container
  .et_pb_sticky_placeholder .ah-menu-separateur {
  display: none !important;
}

/* Neutralise définitivement les anciennes vagues créées par masque,
   pseudo-éléments ou ancienne injection. */
html body #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire)::before,
html body #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire)::after,
html body .et_pb_section_0_tb_header::before,
html body .et_pb_section_0_tb_header::after,
html body #page-container#page-container .ah-menu-sep {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  background: none !important;
  -webkit-mask: none !important;
          mask: none !important;
}

/* v36 — Le contour organique appartient maintenant au hero.
   Cette sécurité retire aussi un ancien ruban resté dans le DOM après
   une prévisualisation Divi ou un cache navigateur. */
html body #page-container#page-container .ah-menu-separateur {
  display: none !important;
  content: none !important;
  width: 0 !important;
  height: 0 !important;
  background: none !important;
}

/* Motif logo blanc SOUS le menu fixé, à cheval sur la jonction.
   Une seule frise ici — le haut du menu est le clone --transition. */
html body #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not(.et_pb_sticky_placeholder)::before,
html body .et_pb_section_0_tb_header:not(.et_pb_sticky_placeholder)::before {
  content: none !important;
  display: none !important;
  background: none !important;
  -webkit-mask: none !important;
          mask: none !important;
}
html body.ah-accueil {
  --ah-sep-logo-h: clamp(34px, 4.6vw, 56px);
  --menu-sep-h: clamp(34px, 4.6vw, 56px) !important;
}
html body.ah-accueil #page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not([class*="tb_header"]),
html body.ah-accueil #page-container .et_pb_section_1 {
  --ah-sep-logo-h: clamp(34px, 4.6vw, 56px) !important;
  --menu-sep-h: clamp(34px, 4.6vw, 56px) !important;
}
@media (max-width: 767px) {
  html body.ah-accueil,
  html body.ah-accueil #page-container
    .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not([class*="tb_header"]),
  html body.ah-accueil #page-container .et_pb_section_1 {
    --ah-sep-logo-h: clamp(26px, 8vw, 40px) !important;
    --menu-sep-h: clamp(26px, 8vw, 40px) !important;
  }
}

.et-l--header .organic-divider,
html body .et_pb_section_0_tb_header::after,
html body .et_pb_section_0_tb_header::before {
  display: none !important;
  content: none !important;
}

html body.ah-accueil #page-container#page-container
  .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not(.et_pb_sticky_placeholder):not([class*="tb_header"]).ah-sep-visible::after {
  content: "" !important;
  display: block !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  top: 100% !important;
  bottom: auto !important;
  width: auto !important;
  height: var(--ah-sep-logo-h, clamp(34px, 4.6vw, 56px)) !important;
  background-color: transparent !important;
  /* --ah-sep-img est posé par menu-v24.js : la teinte ocre quand la
     frise tombe sur une section au fond blanc, le blanc sinon. */
  background-image: var(--ah-sep-img, var(--ah-menu-separateur)) !important;
  background-repeat: repeat-x !important;
  background-position: center center !important;
  background-size: auto 100% !important;
  -webkit-mask-image: none !important;
          mask-image: none !important;
  -webkit-mask: none !important;
          mask: none !important;
  transform: translateY(-50%) !important;
  /* Seul le bout du motif dépasse sous la barre : la moitié haute, qui
     tomberait sur le blanc du menu, est coupée. */
  -webkit-clip-path: inset(50% 0 0 0) !important;
          clip-path: inset(50% 0 0 0) !important;
  pointer-events: none !important;
  opacity: 1 !important;
  z-index: 2 !important;
}
@media (max-width: 980px) {
  html body.ah-accueil #page-container#page-container
    .et_pb_section:has(.menu-exceptionnel):not(.ah-histoire):not(.et_pb_sticky_placeholder):not([class*="tb_header"]).ah-sep-visible::after {
    height: var(--ah-sep-logo-h, clamp(26px, 8vw, 40px)) !important;
  }
}

/* Pages intérieures (header Theme Builder) : pas de frise.
   L'accueil seul la garde, sous le menu de la page. Une règle plus
   haut peignait encore l'ancien séparateur (un seul motif, retourné)
   sur .et_pb_section_0_tb_header : elle était plus spécifique que
   les extinctions. Celle-ci gagne. */
html body:not(.ah-accueil) .et_pb_section_0_tb_header::before,
html body:not(.ah-accueil) .et_pb_section_0_tb_header::after,
html body:not(.ah-accueil) .et_pb_section_0_tb_header:not(.et_pb_sticky_placeholder)::before,
html body:not(.ah-accueil) .et_pb_section_0_tb_header:not(.et_pb_sticky_placeholder)::after,
html body:not(.ah-accueil) .et_pb_section_0_tb_header.ah-sep-visible::before,
html body:not(.ah-accueil) .et_pb_section_0_tb_header.ah-sep-visible::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  background: none !important;
  -webkit-mask: none !important;
          mask: none !important;
  clip-path: none !important;
}

/* Accueil officiel (page d'accueil WordPress, aujourd'hui la page 7
   à la racine). L'image Divi separateur-header-2.png n'est pas la
   frise des pages /home/ et /homepage/. */
body.home .et_pb_image:has(img[src*="separateur-header"]),
body.page-id-7 .et_pb_image:has(img[src*="separateur-header"]) {
  display: none !important;
}
