/* ==========================================================================
   Header Menu - front render (starter kit, générique)
   Desktop (>= lg / 992px) : nav inline horizontale + dropdowns au survol.
   Mobile  (<  lg)         : hamburger + drawer latéral autonome (accordéon).
   Couleurs : héritées de la charte via les variables Bootstrap du thème
   (--bs-primary indigo, --bs-body-color encre, --bs-border-color sable).
   ========================================================================== */

.headermenu {
  --hm-accent:      var(--bs-primary, #4f46e5);
  --hm-accent-dark: var(--brand-indigo-dark, #4338ca);
  --hm-accent-soft: var(--brand-indigo-soft, #eef2ff);
  --hm-text:        var(--bs-body-color, #211c16);
  --hm-surface:     #ffffff;
  --hm-border:      var(--bs-border-color, #e7e1d6);
  --hm-radius:      12px;
  --hm-radius-sm:   8px;
  --hm-shadow:      0 .5rem 1.5rem rgba(33, 28, 22, .10);
  --hm-ease:        cubic-bezier(.2, .7, .2, 1);

  display: flex;
  align-items: center;
  font-family: inherit;
}

/* Éléments mobiles masqués en desktop */
.headermenu__toggle,
.headermenu__close,
.headermenu__drawer-head,
.headermenu__backdrop { display: none; }

/* ---------- Liste inline (desktop) -------------------------------------- */
.headermenu__nav { display: block; }

.headermenu__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: 28px;
}

.headermenu__item { position: relative; }

.headermenu__link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 0;
  color: var(--hm-text);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1;
  text-decoration: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  white-space: nowrap;
  transition: color .15s var(--hm-ease);
}

.headermenu__link:hover,
.headermenu__link:focus-visible {
  color: var(--hm-accent);
  text-decoration: none;
  outline: none;
}

.headermenu__caret { transition: transform .2s var(--hm-ease); opacity: .7; }

.headermenu__item--has-children:hover > .headermenu__link .headermenu__caret,
.headermenu__item--has-children:focus-within > .headermenu__link .headermenu__caret,
.headermenu__item--has-children.is-open > .headermenu__link .headermenu__caret {
  transform: rotate(180deg);
}

/* ---------- Dropdown (desktop) ------------------------------------------ */
.headermenu__submenu {
  list-style: none;
  margin: 0;
  padding: 8px;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 220px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  background: var(--hm-surface);
  border: 1px solid var(--hm-border);
  border-radius: var(--hm-radius);
  box-shadow: var(--hm-shadow);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity .18s var(--hm-ease), transform .18s var(--hm-ease), visibility 0s linear .18s;
  z-index: 1000;
}

.headermenu__item--has-children:hover > .headermenu__submenu,
.headermenu__item--has-children:focus-within > .headermenu__submenu,
.headermenu__item--has-children.is-open > .headermenu__submenu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0s;
}

/* Pont invisible pour ne pas fermer le dropdown en traversant l'espace */
.headermenu__item--has-children::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 100%;
  height: 8px;
}

.headermenu__sublink {
  display: block;
  padding: 9px 12px;
  border-radius: var(--hm-radius-sm);
  color: var(--hm-text);
  font-size: 13.5px;
  font-weight: 500;
  line-height: 1.3;
  text-decoration: none;
  word-break: break-word;
  transition: background-color .15s var(--hm-ease), color .15s var(--hm-ease);
}

.headermenu__sublink:hover,
.headermenu__sublink:focus-visible {
  background: var(--hm-accent-soft);
  color: var(--hm-accent-dark);
  text-decoration: none;
  outline: none;
}

/* ==========================================================================
   Mobile / tablette (< 992px) - drawer latéral autonome
   ========================================================================== */
@media (max-width: 991.98px) {
  /* Bouton hamburger */
  .headermenu__toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--hm-text);
    cursor: pointer;
  }
  .headermenu__toggle .material-icons { font-size: 28px; }

  /* Voile */
  .headermenu__backdrop {
    display: block;
    position: fixed;
    inset: 0;
    background: rgba(33, 28, 22, .45);
    opacity: 0;
    pointer-events: none;
    transition: opacity .25s var(--hm-ease);
    z-index: 1040;
  }
  .headermenu.is-open .headermenu__backdrop { opacity: 1; pointer-events: auto; }

  /* Panneau plein écran - entrée : fondu + léger glissé vers le bas */
  .headermenu__nav {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    height: 100dvh;
    width: 100%;
    background: var(--hm-surface);
    box-shadow: none;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-18px);
    transition: opacity .28s ease, transform .34s var(--hm-ease), visibility 0s linear .34s;
    z-index: 1050;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
  }
  .headermenu.is-open .headermenu__nav {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    transition: opacity .28s ease, transform .34s var(--hm-ease);
  }

  /* Apparition décalée des items (stagger) */
  .headermenu__list > .headermenu__item {
    opacity: 0;
    transform: translateY(10px);
  }
  .headermenu.is-open .headermenu__list > .headermenu__item {
    opacity: 1;
    transform: translateY(0);
    transition: opacity .4s ease, transform .4s var(--hm-ease);
  }
  .headermenu.is-open .headermenu__list > .headermenu__item:nth-child(1) { transition-delay: .12s; }
  .headermenu.is-open .headermenu__list > .headermenu__item:nth-child(2) { transition-delay: .18s; }
  .headermenu.is-open .headermenu__list > .headermenu__item:nth-child(3) { transition-delay: .24s; }
  .headermenu.is-open .headermenu__list > .headermenu__item:nth-child(4) { transition-delay: .30s; }
  .headermenu.is-open .headermenu__list > .headermenu__item:nth-child(5) { transition-delay: .36s; }
  .headermenu.is-open .headermenu__list > .headermenu__item:nth-child(6) { transition-delay: .42s; }
  .headermenu.is-open .headermenu__list > .headermenu__item:nth-child(n+7) { transition-delay: .46s; }

  .headermenu__drawer-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 18px;
    border-bottom: 1px solid var(--hm-border);
  }
  .headermenu__drawer-title {
    font-size: 19px;
    font-weight: 700;
    color: var(--hm-text);
  }
  .headermenu__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--hm-text);
    cursor: pointer;
  }
  .headermenu__close .material-icons { font-size: 24px; }

  .headermenu__list {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 8px 0;
  }

  .headermenu__item { border-bottom: 1px solid var(--hm-border); }
  .headermenu__item:last-child { border-bottom: 0; }

  .headermenu__link {
    padding: 16px 18px;
    justify-content: space-between;
    width: 100%;
    font-size: 18px;
  }

  .headermenu__caret { opacity: .9; }

  .headermenu__submenu {
    position: static;
    min-width: 0;
    padding: 0 0 8px;
    gap: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: none;
    display: none;
  }

  .headermenu__item--has-children.is-open > .headermenu__submenu { display: flex; }

  .headermenu__sublink {
    padding: 12px 18px 12px 34px;
    font-size: 16px;
    border-radius: 0;
  }

  .headermenu__item--has-children::after { display: none; }
}

/* Accessibilité : pas d'animation si l'utilisateur la refuse */
@media (prefers-reduced-motion: reduce) {
  .headermenu__nav,
  .headermenu__list > .headermenu__item {
    transition: none !important;
    transform: none !important;
  }
  .headermenu.is-open .headermenu__list > .headermenu__item { transition-delay: 0s !important; }
}

/* Blocage du scroll de page quand le drawer est ouvert */
body.headermenu-no-scroll { overflow: hidden; }
