/* ============================================================
   MENU DU SITE — UN SEUL COMPOSANT POUR LES 33 PAGES
   ------------------------------------------------------------
   Pourquoi ce fichier existe (29/07/2026)
   ---------------------------------------
   Latifa : « je vois encore le menu différent de l'accueil ».
   La cause n'était pas un réglage : il y avait DEUX menus. Les
   mêmes règles étaient recopiées dans `accueil.css` ET dans
   `zellij-ui.css`, et les deux copies avaient divergé. Celle des
   pages internes avait perdu la neutralisation des styles de
   prod — résultat, sur mobile les entrées du menu sortaient en
   pastilles bordeaux sur 3 colonnes, mot par-dessus mot, et le
   fond sombre avait disparu.

   Désormais : UN fichier, chargé par les deux points d'entrée.
     · les 32 pages du build  → `_includes/base.njk`
     · la nouvelle accueil    → `Experiments/…/index.html`
   Modifier le menu = modifier ici, jamais ailleurs.

   ⚠️ NE JAMAIS recopier une de ces règles dans `accueil.css` ou
   `zellij-ui.css` : c'est exactement comme ça que les deux menus
   se sont séparés la première fois.

   Le contrat de balisage (identique des deux côtés)
   -------------------------------------------------
     <button class="menu-toggle" aria-expanded="false"
             aria-controls="site-menu-panel"> … </button>

     <div class="site-menu-overlay" id="site-menu-panel" inert>
       <div class="site-menu-panel" role="dialog" aria-modal="true"> … </div>
     </div>

   Le comportement (ouvrir / fermer / Échap) est dans
   `/js/site-menu.js`, lui aussi partagé.
   ============================================================ */

/* ------------------------------------------------------------
   1 · LE BOUTON — deux traits et le mot « Menu »
   ------------------------------------------------------------
   `styles.css` (la prod, qu'on ne touche pas) en fait une
   pastille bordeaux pleine. On remet le bouton discret de
   l'accueil : ce fichier est chargé APRÈS, donc il gagne.
   La COULEUR du libellé, elle, reste au ressort de chaque
   en-tête (clair au-dessus du hero, encre une fois défilé).
   ------------------------------------------------------------ */
.menu-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: var(--ink);
  font-family: var(--sans);
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  cursor: pointer;
}

.menu-toggle:hover,
.menu-toggle:focus-visible {
  background: none;
}

.menu-toggle-bars {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.menu-toggle-bars i {
  display: block;
  width: 22px;
  height: 1.5px;
  background: currentColor;
  transition: transform 0.3s var(--ease);
}

.menu-toggle:hover .menu-toggle-bars i:first-child {
  transform: translateY(-1px);
}

/* Le mot reste visible même sur petit écran : sans lui, deux
   traits seuls ne disent pas « menu » à une visiteuse pressée.
   (`styles.css` le masquait sous 480 px.) */
.menu-toggle-label {
  display: inline;
}

/* ------------------------------------------------------------
   2 · L'ÉCRAN DU MENU — fermé par défaut, sans JavaScript
   ------------------------------------------------------------
   Fermé, il est encore dans la page (les liens restent lisibles
   par Google) mais invisible, inatteignable au doigt et retiré
   du clavier par l'attribut `inert` que pose le script.
   L'ouverture se fait au `clip-path` : le voile prune descend
   du haut. C'est le geste de l'accueil, validé en capture.
   ------------------------------------------------------------ */
.site-menu-overlay {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: block;
  padding: clamp(28px, 5vw, 72px) clamp(22px, 7vw, 110px);
  /* Fond vert olive, demande de Latifa le 29/07 : le prune profond etait trop
     sombre et « ne donnait pas envie ». L'olive de la charte est plus lumineux
     tout en gardant le texte clair parfaitement lisible. */
  background: var(--olive);
  color: #f7f1f5;
  border-radius: 0;
  /* Le menu est plus haut que l'écran dès qu'on liste tout le site : il doit
     défiler LUI-MÊME, à toutes les tailles. Sans ça il reste immobile.
     `overscroll-behavior: contain` empêche la page derrière de partir quand
     on arrive en bas de la liste. */
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  clip-path: inset(0 0 100% 0);
  visibility: hidden;
  pointer-events: none;
  transition: clip-path 0.7s var(--ease), visibility 0s 0.7s;
}

.site-menu-overlay.est-ouvert {
  clip-path: inset(0 0 0 0);
  visibility: visible;
  pointer-events: auto;
  transition: clip-path 0.7s var(--ease);
}

/* Pendant que le menu est ouvert, la page derrière ne bouge plus. */
body.menu-open-lock {
  overflow: hidden;
}

.site-menu-panel {
  width: min(1180px, 100%);
  max-height: none;
  margin: 0 auto;
  overflow: visible;
  padding: 0;
  background: transparent;
  color: #f7f1f5;
  border-radius: 0;
  box-shadow: none;
}

/* ------------------------------------------------------------
   3 · L'EN-TÊTE DU PANNEAU — le logo blanc et la croix
   ------------------------------------------------------------ */
.site-menu-head {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  min-height: 74px;
}

.site-menu-logo {
  display: block;
  width: min(290px, 55vw);
  height: auto;
  object-fit: contain;
}

/* Le logo dit déjà « Zellij Studio » : le mot « Menu » ferait doublon. */
.site-menu-title {
  display: none;
}

.site-menu-close {
  flex: none;
  width: 52px;
  height: 52px;
  border: 1px solid rgba(217, 169, 180, 0.45);
  border-radius: 50%;
  background: transparent;
  color: #f7f1f5;
  font-size: 36px;
  line-height: 1;
  cursor: pointer;
  box-shadow: none;
}

/* ------------------------------------------------------------
   4 · LES 4 PORTES ET LEURS SOUS-PAGES
   ------------------------------------------------------------
   Refait le 29/07 : le menu montre l'ARBRE du site au lieu de le
   mettre à plat. Une porte = un numéro doré, un grand titre qui
   mène à la page mère, et dessous ses pages filles en petit.
   Les portes sans fille (Commencer, le Kit) portent une phrase
   courte à la place, pour que la colonne ne fasse pas de trou.

   🚨 `.site-menu-portes` est un `<nav>`, et `styles.css` (la prod,
   qu'on ne touche pas) style la BALISE NUE : `nav { display:flex }`,
   une media-query qui met tout `nav` en grille de 3 colonnes, et
   `nav a { background: bordeaux; border-radius: 999px }`.
   Les remises à zéro ci-dessous ne sont pas décoratives : sans
   elles le menu redevient une grille de pastilles illisibles.
   ------------------------------------------------------------ */
/* 🚨 LA REMISE À ZÉRO QUI TIENT TOUT LE MENU DEBOUT.
   `styles.css` style les balises nues, et il le fait DEUX fois :
     nav a { background: bordeaux; border-radius: 999px; padding: 10px 16px }
     nav a { display: inline-flex; min-height: 42px; justify-content: center }
   La 2e est sournoise : elle ne change pas les couleurs, elle CENTRE le
   texte de chaque lien. Les grands titres du menu partaient vers la droite
   sur les pages internes, et pas sur l'accueil (qui ne charge pas styles.css)
   — soit exactement le « menu différent » que Latifa voyait.
   Une seule règle ici, à 2 sélecteurs, qui bat `nav a` : tout lien du menu
   repart d'une page blanche. Chaque style vient ensuite, explicitement. */
.site-menu-overlay a {
  display: block;
  min-height: 0;
  justify-content: flex-start;
  align-items: initial;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  text-align: left;
  font-weight: 400;
}

.site-menu-portes {
  display: block;               /* annule `nav { display:flex }` */
  grid-template-columns: none;  /* annule la grille à 3 colonnes */
  width: auto;
  gap: 0;
  margin-top: clamp(44px, 7vh, 80px);
}

.site-menu-porte {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  column-gap: 28px;
  padding: 20px 0 24px;
  border-bottom: 1px solid rgba(217, 169, 180, 0.18);
}

.site-menu-porte__num {
  grid-column: 1;
  grid-row: 1;
  padding-top: 12px;
  color: var(--gold);
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.16em;
}

.site-menu-porte__titre {
  grid-column: 2;
  grid-row: 1;
  padding: 0;                 /* annule la pastille */
  border-radius: 0;
  background: transparent;
  color: #f7f1f5;
  text-align: left;
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(38px, 6.6vw, 78px);
  line-height: 1;
  transition: color 0.28s var(--ease), padding-left 0.28s var(--ease);
}

.site-menu-porte__titre:hover,
.site-menu-porte__titre:focus-visible {
  background: transparent;
  color: var(--rose);
  padding-left: 12px;
}

/* Les sous-pages : alignées sous le titre, jamais sous le numéro. */
.site-menu-porte__enfants {
  grid-column: 2;
  grid-row: 2;
  display: flex;
  flex-wrap: wrap;
  column-gap: 26px;
  margin-top: 10px;
}

.site-menu-porte__enfants a {
  /* 10 px en haut et en bas : la ligne fait ~40 px de haut, la taille
     d'un doigt. C'est ce qui rend la liste utilisable au téléphone. */
  padding: 10px 0;
  border-radius: 0;
  background: transparent;
  color: rgba(247, 241, 245, 0.72);
  text-align: left;
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.02em;
  transition: color 0.28s var(--ease);
}

.site-menu-porte__enfants a:hover,
.site-menu-porte__enfants a:focus-visible {
  background: transparent;
  color: var(--rose);
}

/* La phrase des portes qui n'ont pas de fille. */
.site-menu-porte__note {
  grid-column: 2;
  grid-row: 2;
  margin: 12px 0 0;
  color: rgba(247, 241, 245, 0.5);
  font-family: var(--sans);
  font-size: 14px;
  letter-spacing: 0.03em;
}

/* La page où l'on se trouve déjà (posé par `search.js`). */
.site-menu-porte__titre[aria-current="page"],
.site-menu-porte__enfants a[aria-current="page"] {
  color: var(--rose);
}

/* ------------------------------------------------------------
   5 · LE PIED DU PANNEAU — les réseaux
   ------------------------------------------------------------ */
.site-menu-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-top: 48px;
  padding-top: 26px;
  border-top: 1px solid rgba(217, 169, 180, 0.18);
}

.site-menu-social {
  display: flex;
  flex-wrap: wrap;
  gap: 22px;
}

.site-menu-social a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  border-radius: 0;
  background: transparent;
  color: #f7f1f5;
  font-family: var(--sans);
  font-size: 16px;
  font-weight: 500;
}

.site-menu-social a:hover,
.site-menu-social a:focus-visible {
  background: transparent;
  color: var(--rose);
}

.site-menu-social svg {
  flex: none;
  /* L'icône s'aligne sur la hauteur de la lettre, pas sur la ligne. */
  width: 1.15em;
  height: 1.15em;
  opacity: 0.92;
}

/* Le bouton du Kit est déjà dans « Tout le site » : deux fois le
   même appel dans un menu, c'est une hésitation, pas une offre. */
.site-menu-cta {
  display: none;
}

/* ------------------------------------------------------------
   6 · MOBILE — sa fenêtre fait moins de 1000 px, c'est la vraie taille
   ------------------------------------------------------------ */
@media (max-width: 760px) {
  .site-menu-overlay {
    padding: 28px 22px;
  }

  .site-menu-panel {
    max-height: none;
  }

  .site-menu-logo {
    width: min(250px, 64vw);
  }

  .site-menu-close {
    width: 46px;
    height: 46px;
    font-size: 32px;
  }

  .site-menu-portes {
    margin-top: 44px;
  }

  .site-menu-porte {
    grid-template-columns: 46px minmax(0, 1fr);
    column-gap: 16px;
    padding: 16px 0 20px;
  }

  .site-menu-porte__num {
    padding-top: 8px;
    font-size: 13px;
  }

  .site-menu-porte__titre {
    font-size: clamp(34px, 10vw, 52px);
  }

  .site-menu-porte__enfants {
    column-gap: 20px;
  }

  .site-menu-foot {
    flex-direction: row;
    flex-wrap: wrap;
    margin-top: 42px;
  }
}
