/* ============================================================
   GLOBAL.CSS — Styles partagés pour l'ensemble du portfolio
   Nathan COLIN alias WillyOL — Motion Designer 2D/3D
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Bricolage+Grotesque:opsz,wght@12..96,200;12..96,300;12..96,400;12..96,500;12..96,700&family=DM+Mono:ital,wght@0,300;0,400;1,300&display=swap');

:root {
  --blanc:       #ffffff;
  --noir:        #0a0a0a;
  --gris-clair:  #f0f0f0;
  --gris-moyen:  #888888;
  --accent:      #e8e0d5;

  --font-titre:  'Bebas Neue', sans-serif;
  --font-corps:  'Bricolage Grotesque', sans-serif;
  --font-mono:   'DM Mono', monospace;

  --marge:       clamp(3.5rem, 9.5vw, 10rem);
  --marge-nav:   clamp(1.2rem, 3vw, 2.5rem); /* navbar uniquement — logo et burger près des bords */
  --gutter:      2px;

  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --dur-rapide:  0.3s;
  --dur-normale: 0.6s;
  --dur-lente:   1s;

  --z-nav:       100;
  --z-overlay:   200;
  --z-cursor:    999;
  --z-progress:  1000;

  /* ── Échelle typographique accessible ──────────
     Ces variables centralisent les tailles de corps
     et d'annotations. Modifier ici suffit pour
     ajuster l'ensemble du site.
     ─────────────────────────────────────────────
     Corps de texte (paragraphes, descriptions)    */
  --fs-corps:       clamp(1rem, 1.5vw, 1.15rem);
  /* Annotations mono (labels, catégories, dates)  */
  --fs-mono-sm:     0.75rem;
  /* Très petites légendes (numéros, superscripts) */
  --fs-mono-xs:     0.68rem;
}

/* ─────────────────────────────────────────────
   RESET & BASE
   Curseur natif masqué sur tout — le JS injecte
   également un <style> en tête de <head> pour
   couvrir les cas avant le chargement du CSS.
   ───────────────────────────────────────────── */
*, *::before, *::after {
  margin:      0;
  padding:     0;
  box-sizing:  border-box;
  cursor:      none !important;
}

html {
  font-size:          16px;
  scroll-behavior:    smooth;
  scroll-padding-top: 80px;
  overflow-x:         hidden;
  cursor:             none !important;
  /* Masquer la scrollbar native — tous navigateurs */
  scrollbar-width:    none;        /* Firefox */
  -ms-overflow-style: none;        /* IE / Edge legacy */
}

/* Masquer la scrollbar native — WebKit (Chrome, Safari, Edge) */
html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none;
}

body {
  font-family:            var(--font-corps);
  font-weight:            300;
  letter-spacing:         0.01em;
  -webkit-font-smoothing: antialiased;
  cursor:                 none !important;
  scrollbar-width:        none;
  -ms-overflow-style:     none;
}

a, button, input, select, textarea,
label, summary, video, img,
[role="button"], [data-curseur] {
  cursor: none !important;
}

a {
  text-decoration: none;
  color: inherit;
}

img, video {
  display: block;
  max-width: 100%;
}

/* ─────────────────────────────────────────────
   BARRE DE PROGRESSION AU SCROLL
   ───────────────────────────────────────────── */
#scroll-progress {
  position:        fixed;
  top:             0;
  left:            0;
  width:           100%;
  height:          4px;
  z-index:         var(--z-progress);
  pointer-events:  none;
  transform-origin: left center;
  transform:        scaleX(var(--progress, 0));
  transition:       transform 0.15s ease-out;
  background:       var(--blanc);
}

#scroll-progress.barre-claire { background: var(--blanc); }
#scroll-progress.barre-sombre { background: var(--noir);  }

/* ─────────────────────────────────────────────
   CURSEUR PERSONNALISÉ — Desktop uniquement
   Masqué automatiquement sur écrans tactiles
   ───────────────────────────────────────────── */
#curseur {
  position:       fixed;
  width:          10px;
  height:         10px;
  background:     var(--blanc);
  border-radius:  50%;
  pointer-events: none;
  z-index:        var(--z-cursor);
  transform:      translate(-50%, -50%) scale(1);
  transition:     transform    0.45s var(--ease-out),
                  background   0.15s ease,
                  opacity      0.3s  ease;
}

#curseur.noir  { background: var(--noir);  }
#curseur.blanc { background: var(--blanc); }

#curseur.gros {
  transform: translate(-50%, -50%) scale(2.4);
}

/* Sur mobile/tactile : curseur natif restauré, curseur personnalisé masqué */
@media (hover: none), (pointer: coarse) {
  *, *::before, *::after {
    cursor: auto !important;
  }
  html, body {
    cursor: auto !important;
  }
  a, button, [role="button"], [data-curseur] {
    cursor: pointer !important;
  }
  #curseur {
    display: none !important;
  }
}

/* ─────────────────────────────────────────────
   NAVIGATION GLOBALE
   ───────────────────────────────────────────── */
nav {
  position:        fixed;
  top:             0;
  left:            0;
  right:           0;
  z-index:         calc(var(--z-overlay) + 5);
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  /* Padding latéral indépendant de --marge pour coller davantage aux bords */
  padding:         clamp(1rem, 2.5vw, 1.8rem) var(--marge-nav);
}

nav .nav-logo {
  display:    block;
  overflow:   hidden;
  color:      var(--blanc);
  /* Logo agrandi de 125% sur desktop */
  font-size:  clamp(2.19rem, 3.75vw, 3rem);
  /* Hauteur fixe : laisse les deux layers se superposer */
  height:     1.56em;
  /* Largeur du logo long au repos, icône seule quand compacte */
  width:      4.89em;
  /* Z-index supérieur à l'overlay menu pour rester visible */
  position:   relative;
  z-index:    calc(var(--z-overlay) + 10);
  transition: color 0.4s ease,
              width 0.55s cubic-bezier(0.25, 1, 0.5, 1);
}
nav.nav-claire  .nav-logo { color: var(--noir); }
body.menu-ouvert nav .nav-logo { color: var(--blanc) !important; }

/* Version compacte : on réduit la largeur pour masquer la partie texte */
nav.nav-compacte .nav-logo { width: 1.39em; }

/* Contenant des deux layers — même taille que .nav-logo */
nav .nav-logo-img {
  position:   absolute;
  inset:      0;
  overflow:   hidden;
}

/* ── Layer logo long (logo.svg) — sort vers le haut au scroll ── */
nav .nav-logo-img::before {
  content:          '';
  position:         absolute;
  inset:            0;
  width:            4.89em;
  background-color: currentColor;
  -webkit-mask:     url(../medias/1.assets/logo.svg) left center / auto 100% no-repeat;
  mask:             url(../medias/1.assets/logo.svg) left center / auto 100% no-repeat;
  transform:        translateX(-2px) translateY(0);
  opacity:          1;
  transition:       transform 0.55s cubic-bezier(0.25, 1, 0.5, 1),
                    opacity   0.35s ease;
  will-change:      transform;
}

/* ── Layer icône seule (icon.svg) — entre par le bas au scroll ── */
nav .nav-logo-img::after {
  content:          '';
  position:         absolute;
  inset:            0;
  width:            1.39em;
  background-color: currentColor;
  -webkit-mask:     url(../medias/1.assets/icon.svg) left center / auto 100% no-repeat;
  mask:             url(../medias/1.assets/icon.svg) left center / auto 100% no-repeat;
  transform:        translateX(-2px) translateY(100%);
  opacity:          0;
  transition:       transform 0.55s cubic-bezier(0.25, 1, 0.5, 1),
                    opacity   0.35s ease;
  will-change:      transform;
}

/* État compact : logo long monte et disparaît, icône arrive par le bas */
nav.nav-compacte .nav-logo-img::before {
  transform: translateX(-2px) translateY(-100%);
  opacity:   0;
}
nav.nav-compacte .nav-logo-img::after {
  transform: translateX(-2px) translateY(0);
  opacity:   1;
}

nav .nav-liens {
  display:    flex;
  gap:        clamp(1.5rem, 3vw, 3rem);
  list-style: none;
}

nav .nav-liens a {
  font-family:    var(--font-mono);
  font-size:      0.82rem;
  font-weight:    500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color:          var(--blanc);
  opacity:        0.6;
  /* Le lien est le contexte de positionnement du fantôme absolu */
  position:       relative;
  display:        inline-block;
  vertical-align: middle;
  transition:     opacity 0.3s ease,
                  color   0.4s ease;
}
nav.nav-claire .nav-liens a { color: var(--noir); }

nav .nav-liens a:hover { opacity: 1; }
nav .nav-liens a.actif { opacity: 1; }

/* ── Split-text sur les liens nav ──
   Structure injectée par global.js :
   <span class="nav-texte-principal">…mots…</span>
   <span class="nav-texte-fantome" aria-hidden>…mots…</span>
   Chaque mot = <span class="nav-mot"><span class="nav-mot-inner">word</span></span>
   ──────────────────────────────────────────────── */

/* Principal : dans le flux, dicte la hauteur du lien */
.nav-texte-principal {
  display:     flex;
  align-items: baseline;
  gap:         0.3em;
  white-space: nowrap;
  /* Masque les mots qui sortent par le haut */
  overflow:    hidden;
}

/* Fantôme : superposé en absolu, n'affecte pas la hauteur */
.nav-texte-fantome {
  position:    absolute;
  top:         0;
  left:        0;
  display:     flex;
  align-items: baseline;
  gap:         0.3em;
  white-space: nowrap;
  /* Masque les mots qui entrent par le bas */
  overflow:    hidden;
  /* Largeur calée sur le principal */
  width:       100%;
  height:      100%;
}

/* Chaque mot */
.nav-mot {
  display:        inline-block;
  overflow:       hidden;
  vertical-align: top;
  line-height:    1;
}

.nav-mot-inner {
  display:     inline-block;
  will-change: transform;
  transition:  transform 0.42s var(--ease-out);
}

/* État repos — principal visible, fantôme caché en bas */
.nav-texte-principal .nav-mot-inner { transform: translateY(0%); }
.nav-texte-fantome   .nav-mot-inner { transform: translateY(110%); }

/* Au hover — principal sort par le haut, fantôme entre par le bas */
nav .nav-liens a:hover .nav-texte-principal .nav-mot-inner {
  transform: translateY(-110%);
}
nav .nav-liens a:hover .nav-texte-fantome .nav-mot-inner {
  transform: translateY(0%);
}

nav .nav-droite {
  display:     flex;
  align-items: center;
  gap:         1.75rem;
}

/* Bouton LANGUE — typographie titre (Bebas Neue) */
.btn-langue {
  font-family:    var(--font-titre);
  font-size:      1.1rem;
  letter-spacing: 0.12em;
  color:          var(--blanc);
  background:     none;
  border:         none;
  padding:        0;
  opacity:        0.85;
  position:       relative;
  transition:     opacity var(--dur-rapide) ease,
                  color   0.4s ease;
}

.btn-langue:hover { opacity: 1; }
nav.nav-claire .btn-langue { color: var(--noir); }

/* Split-text hover sur le bouton langue — même mécanique que les liens nav */
.btn-langue:hover .nav-texte-principal .nav-mot-inner { transform: translateY(-110%); }
.btn-langue:hover .nav-texte-fantome   .nav-mot-inner { transform: translateY(0%);    }

/* Burger — label MENU en Bebas Neue */
.burger {
  display:     flex;
  align-items: center;
  gap:         0.65rem;
  background:  none;
  border:      none;
  padding:     4px 0;
}

.burger-label {
  font-family:    var(--font-titre);
  font-size:      1.1rem;
  letter-spacing: 0.14em;
  color:          var(--blanc);
  transition:     opacity 0.25s ease, color 0.4s ease;
  display:        none; /* supprimé — on garde uniquement l'icône */
}
.burger.ouvert  .burger-label { opacity: 0; pointer-events: none; }
nav.nav-claire  .burger-label { color: var(--noir); }

.burger-icone {
  display:        flex;
  flex-direction: column;
  gap:            8px;
}

.burger-icone span {
  display:    block;
  width:      34px;
  height:     2px;
  background: var(--blanc);
  transition: transform    var(--dur-rapide) var(--ease-out),
              opacity      var(--dur-rapide) ease,
              background   0.4s ease;
}
nav.nav-claire .burger-icone span { background: var(--noir); }

/* Quand le menu est ouvert, la croix reste toujours blanche */
nav.nav-claire .burger.ouvert .burger-icone span { background: var(--blanc); }

.burger.ouvert .burger-icone span:nth-child(1) { transform: translateY(5px)  rotate(45deg);  }
.burger.ouvert .burger-icone span:nth-child(2) { transform: translateY(-5px) rotate(-45deg); }

/* ─────────────────────────────────────────────
   MENU PLEIN ÉCRAN (OVERLAY) — Refonte Premium
   Layout : fond noir avec grain, grand centrage vertical
   Col gauche : navigation géante
   Col droite : infos latérales (réseaux, langue, lieu)
   ───────────────────────────────────────────── */
#menu-overlay {
  position:         fixed;
  inset:            0;
  background:       #080808;
  z-index:          var(--z-overlay);
  display:          grid;
  grid-template-columns: 1fr 320px;
  grid-template-rows:    1fr auto;
  padding:          clamp(5rem, 10vh, 8rem) var(--marge) clamp(2.5rem, 5vw, 4rem);
  gap:              0 clamp(3rem, 6vw, 6rem);
  align-items:      stretch;
  opacity:          0;
  pointer-events:   none;
  transition:       opacity 0.55s var(--ease-out);
  overflow:         hidden;
}

/* Grain subtil en pseudo-élément */
#menu-overlay::before {
  content:          '';
  position:         absolute;
  inset:            0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");
  background-size:  256px 256px;
  pointer-events:   none;
  z-index:          0;
  opacity:          0.6;
}


#menu-overlay.visible {
  opacity:        1;
  pointer-events: all;
}

/* ── Bouton fermeture (croix) — superposé exactement sur le burger ──
   Même top et right que le padding de la nav.
   La croix (34×12px zone) doit se superposer aux deux barres du burger.
   On utilise les mêmes valeurs de padding que <nav> et on centre
   verticalement la zone de la croix sur la hauteur du burger. */
.menu-fermer {
  position:        fixed;
  top:             clamp(1rem, 2.5vw, 1.8rem);
  right:           var(--marge-nav);
  background:      none;
  border:          none;
  color:           var(--blanc);
  /* Zone identique à .burger : padding 4px 0, icône 34×12px */
  padding:         4px 0;
  width:           34px;
  display:         flex;
  flex-direction:  column;
  justify-content: center;
  gap:             8px;
  opacity:         1;
  line-height:     0;
  z-index:         calc(var(--z-overlay) + 15);
  transition:      opacity   var(--dur-rapide) ease,
                   transform var(--dur-rapide) var(--ease-out);
}

/* Les deux traits de la croix reprennent exactement les dimensions
   des barres du burger : 34px × 2px */
.menu-fermer svg {
  display: none;
}

.menu-fermer::before,
.menu-fermer::after {
  content:          '';
  display:          block;
  width:            34px;
  height:           2px;
  background:       var(--blanc);
  transform-origin: center;
  transition:       background 0.4s ease;
}

.menu-fermer::before { transform: translateY(5px)  rotate(45deg);  }
.menu-fermer::after  { transform: translateY(-5px) rotate(-45deg); }

.menu-fermer:hover {
  opacity: 0.65;
}

/* ── Navigation — col gauche, rangée principale ── */
#menu-overlay ul {
  grid-column:     1;
  grid-row:        1;
  list-style:      none;
  display:         flex;
  flex-direction:  column;
  justify-content: center;
  align-self:      center;
  position:        relative;
  z-index:         1;
}

#menu-overlay ul li { overflow: visible; }

/* ── Liens principaux — même logique que .menu-reseau-lien
   mais avec la typo titre grande, Bebas Neue.
   Justify-content space-between : titre à gauche, flèche à droite. ── */
#menu-overlay ul li a {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  font-family:     var(--font-titre);
  font-size:       clamp(4rem, 10.5vw, 10.5rem);
  color:           rgba(255,255,255,0.92);
  line-height:     0.95;
  letter-spacing:  -0.02em;
  padding:         0.03em 0;
  transform:       translateY(110%);
  opacity:         0;
  position:        relative;
  transition:      transform    0.65s var(--ease-out),
                   opacity      0.45s ease,
                   color        0.45s var(--ease-out),
                   padding-left 0.5s  var(--ease-out);
}

/* Numéro d'index — masqué, remplacé par la flèche */
#menu-overlay ul li a .menu-index {
  display: none;
}

/* Flèche à droite — même style que .menu-reseau-lien-fleche
   mais proportionnée à la grande typo */
#menu-overlay ul li a .menu-fleche {
  font-family:    var(--font-corps);
  font-size:      clamp(1.2rem, 2.5vw, 2.5rem);
  font-weight:    300;
  opacity:        0.3;
  flex-shrink:    0;
  margin-left:    0.5em;
  transition:     opacity   0.45s var(--ease-out),
                  transform 0.45s var(--ease-out);
}

/* Hover : quand on survole un lien, les autres s'estompent */
#menu-overlay ul:hover li a {
  color: rgba(255,255,255,0.18);
}

#menu-overlay ul:hover li a .menu-fleche {
  opacity: 0.1;
}

#menu-overlay ul li a:hover {
  color:        rgba(255,255,255,0.92) !important;
  padding-left: 0.5rem;
}

#menu-overlay ul li a:hover .menu-fleche {
  opacity:   0.8 !important;
  transform: translate(4px, -4px);
}

/* Supprime l'ancien ::after soulignement */
#menu-overlay ul li a::after { display: none; }

#menu-overlay.visible ul li a      { transform: translateY(0); opacity: 1; }
#menu-overlay ul li:nth-child(1) a { transition-delay: 0.06s; }
#menu-overlay ul li:nth-child(2) a { transition-delay: 0.13s; }
#menu-overlay ul li:nth-child(3) a { transition-delay: 0.20s; }
#menu-overlay ul li:nth-child(4) a { transition-delay: 0.27s; }

/* ── Colonne droite : infos latérales ── */
.menu-reseaux {
  grid-column:    2;
  grid-row:       1;
  align-self:     stretch;
  display:        flex;
  flex-direction: column;
  gap:            0;
  padding-left:   clamp(2rem, 4vw, 4rem);
  opacity:        0;
  transform:      translateY(16px);
  transition:     opacity   0.5s var(--ease-out) 0.35s,
                  transform 0.5s var(--ease-out) 0.35s;
  position:       relative;
  z-index:        1;
}

#menu-overlay.visible .menu-reseaux { opacity: 1; transform: translateY(0); }

/* Label de section */
.menu-reseaux-label {
  font-family:    var(--font-mono);
  font-size:      var(--fs-mono-sm);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color:          rgba(255,255,255,0.18);
  margin-bottom:  1.2rem;
  display:        block;
  padding-top:    0.2rem;
}

/* ── Bouton langue — redesign premium ──
   Inspiré d'un indicateur de langue éditorial :
/* ── Bouton langue — même style que les liens réseau ── */
.menu-reseaux .btn-langue {
  background:     none;
  border:         none;
  padding:        0.6rem 0;
  width:          100%;
  display:        flex;
  align-items:    center;
  justify-content: flex-start;
  font-family:    var(--font-corps);
  font-size:      0.95rem;
  font-weight:    300;
  letter-spacing: 0.04em;
  color:          rgba(255,255,255,0.75);
  transition:     color var(--dur-rapide) ease,
                  padding-left var(--dur-normale) var(--ease-out);
}

.menu-reseaux .btn-langue:hover {
  color:        var(--blanc);
  padding-left: 0.35rem;
}

/* Pas de flèche sur le bouton langue */
.menu-reseaux .btn-langue::after  { display: none; }
.menu-reseaux .btn-langue::before { display: none; }

/* Le split-text n'est pas appliqué ici — texte brut visible */
.menu-reseaux .btn-langue .nav-texte-principal,
.menu-reseaux .btn-langue .nav-texte-fantome {
  display: none !important;
}

/* Bloc réseaux — sans bordures, espacés naturellement */
.menu-reseaux-bloc {
  display:        flex;
  flex-direction: column;
  gap:            0;
  margin-top:     auto;
  padding-top:    0;
}

.menu-reseau-lien {
  display:        flex;
  align-items:    center;
  justify-content: space-between;
  padding:        0.6rem 0;
  color:          rgba(255,255,255,0.75);
  font-family:    var(--font-corps);
  font-size:      0.95rem;
  font-weight:    300;
  letter-spacing: 0.04em;
  transition:     color var(--dur-rapide) ease,
                  padding-left var(--dur-normale) var(--ease-out);
}

.menu-reseau-lien:hover {
  color:        var(--blanc);
  padding-left: 0.35rem;
}

.menu-reseau-lien-fleche {
  font-size:  0.85rem;
  opacity:    0.35;
  transition: opacity var(--dur-rapide) ease,
              transform var(--dur-rapide) var(--ease-out);
}

.menu-reseau-lien:hover .menu-reseau-lien-fleche {
  opacity:   0.7;
  transform: translate(3px, -3px);
}

/* ── Copyright — bas gauche ── */
#menu-overlay .menu-bas {
  grid-column:    1;
  grid-row:       2;
  display:        flex;
  align-items:    center;
  gap:            1.5rem;
  opacity:        0;
  transform:      translateY(8px);
  transition:     opacity 0.4s ease 0.45s, transform 0.4s ease 0.45s;
  position:       relative;
  z-index:        1;
}

#menu-overlay.visible .menu-bas {
  opacity:   1;
  transform: translateY(0);
}

#menu-overlay .menu-bas p {
  font-family:    var(--font-mono);
  font-size:      var(--fs-mono-xs);
  color:          rgba(255,255,255,0.18);
  letter-spacing: 0.1em;
}

#menu-overlay .menu-bas p:last-child { color: rgba(255,255,255,0.12); }

/* Le btn-langue est dans .menu-reseaux — masquer si dans .menu-bas */
#menu-overlay .menu-bas .btn-langue { display: none; }

/* ─────────────────────────────────────────────
   PIED DE PAGE
   ───────────────────────────────────────────── */
footer {
  padding:         clamp(2rem, 5vw, 4rem) var(--marge);
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  flex-wrap:       wrap;
  gap:             1.5rem;
}

footer .footer-copy {
  font-family:    var(--font-mono);
  font-size:      var(--fs-mono-xs);
  letter-spacing: 0.1em;
  opacity:        0.45;
}

footer .footer-reseaux {
  display:    flex;
  gap:        1.5rem;
  list-style: none;
}

footer .footer-reseaux a {
  font-family:    var(--font-mono);
  font-size:      var(--fs-mono-xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  opacity:        0.5;
  transition:     opacity var(--dur-rapide) ease;
}

footer .footer-reseaux a:hover { opacity: 1; }

/* ─────────────────────────────────────────────
   UTILITAIRES
   ───────────────────────────────────────────── */
.separateur {
  width:      100%;
  height:     1px;
  background: currentColor;
  opacity:    0.1;
}

.sup {
  font-family:    var(--font-mono);
  font-size:      0.6rem;
  letter-spacing: 0.1em;
  vertical-align: super;
  opacity:        0.5;
}

/* Animation d'apparition au scroll */
.apparaitre {
  opacity:   0;
  transform: translateY(28px);
  transition: opacity   0.8s var(--ease-out),
              transform 0.8s var(--ease-out);
}

.apparaitre.visible {
  opacity:   1;
  transform: translateY(0);
}

.delai-1 { transition-delay: 0.1s;  }
.delai-2 { transition-delay: 0.2s;  }
.delai-3 { transition-delay: 0.35s; }
.delai-4 { transition-delay: 0.5s;  }

/* Transition de page (overlay désactivé) */
#page-transition { display: none; }

/* ─────────────────────────────────────────────
   MEDIA QUERIES
   ───────────────────────────────────────────── */
@media (max-width: 1024px) {
  nav .nav-liens { gap: clamp(1rem, 2vw, 2rem); }
}

@media (max-width: 768px) {
  :root {
    --marge: clamp(2.8rem, 11vw, 5rem);
  }

  nav .nav-logo     { overflow: visible; }
  nav .nav-logo-img { overflow: visible; }
  nav .nav-logo-img::before        { transform: translateX(-15px) translateY(0); }
  nav .nav-logo-img::after         { transform: translateX(-15px) translateY(100%); }
  nav.nav-compacte .nav-logo-img::before { transform: translateX(-15px) translateY(-100%); }
  nav.nav-compacte .nav-logo-img::after  { transform: translateX(-15px) translateY(0); }

  nav .nav-liens { display: none; }

  /* Menu overlay — colonne unique sur mobile, layout flex pour positionnement absolu */
  #menu-overlay {
    display:        flex;
    flex-direction: column;
    grid-template-columns: unset;
    grid-template-rows:    unset;
    padding-top:    clamp(5rem, 14vh, 8rem);
    padding-bottom: clamp(3rem, 6vh, 5rem);
    padding-left:   clamp(1.5rem, 5vw, 2.5rem);
    padding-right:  clamp(1.5rem, 5vw, 2.5rem);
  }

  #menu-overlay ul {
    grid-column:     unset;
    grid-row:        unset;
    flex:            1;
    display:         flex;
    flex-direction:  column;
    justify-content: flex-start;
    padding-top:     clamp(1rem, 4vh, 2rem);
  }

  #menu-overlay ul li a {
    font-size: clamp(3.2rem, 14vw, 6rem);
  }

  /* Langue + réseaux positionnés à 75% de la hauteur de l'écran */
  .menu-reseaux {
    grid-column:  unset;
    grid-row:     unset;
    position:     absolute;
    top:          75%;
    left:         clamp(1.5rem, 5vw, 2.5rem);
    right:        clamp(1.5rem, 5vw, 2.5rem);
    padding-left: 0;
    flex-direction: column;
    gap:          0;
    margin-top:   0;
    /* Animation : entrée par translateY, centrée sur top:75% */
    transform:    translateY(-50%) translateY(16px);
    opacity:      0;
    transition:   opacity   0.5s var(--ease-out) 0.35s,
                  transform 0.5s var(--ease-out) 0.35s;
  }

  #menu-overlay.visible .menu-reseaux {
    opacity:   1;
    transform: translateY(-50%);
  }

  .menu-reseaux-label { display: none; }

  .menu-reseaux .btn-langue {
    margin-bottom: 0.4rem;
    order: -1;
    padding: 0.4rem 0;
  }

  .menu-reseaux-bloc {
    flex-direction: column;
    flex-wrap:      nowrap;
    gap:            0;
    margin-top:     0;
  }

  .menu-reseau-lien {
    padding: 0.25rem 0;
    border:  none;
  }

  .menu-reseau-lien:hover { padding-left: 0; }

  .menu-reseau-lien-fleche { display: none; }

  /* Copyright — isolé tout en bas, séparé du groupe langue/réseaux */
  #menu-overlay .menu-bas {
    grid-column:  unset;
    grid-row:     unset;
    position:     absolute;
    bottom:       clamp(1.5rem, 3vh, 2.5rem);
    left:         clamp(1.5rem, 5vw, 2.5rem);
    right:        clamp(1.5rem, 5vw, 2.5rem);
    flex-wrap:    wrap;
    gap:          0.4rem;
  }
}

@media (max-width: 480px) {
  nav .nav-droite { gap: 1.25rem; }

  #menu-overlay ul li a {
    font-size: clamp(2.4rem, 12vw, 4rem);
  }
}