/* ==========================================================================
   Neurodesign · couche expérience
   Chargée uniquement sur les pages contenant au moins un hook nd-*.
   Le contenu reste géré par Divi ; ce fichier ne fait que donner
   profondeur, matière et mouvement aux modules qui portent une classe nd-*.
   ========================================================================== */

/* Divi pose box-sizing:border-box sur tout. Le thème le pose aussi, pour que
   ce qu'on mesure en local soit ce qui sera rendu en ligne : le banc d'essai
   n'a pas Divi, et une différence de modèle de boîte s'y voit trop tard. */
.nd-shell *,
.nd-shell *::before,
.nd-shell *::after{box-sizing:border-box}

:root{
  --nd-blue:#0247FF;
  --nd-lilas:#8A7CFF;
  --nd-ink:#0B0C14;
  --nd-muted:#5E6379;
  --nd-paper:#FCFCFE;
  --nd-lav:#F1F2FA;
  --nd-line:#E4E6F2;

  /* Profondeur : une seule échelle, réutilisée par toutes les scènes.
     Le moteur JS lit ces valeurs pour calculer la vitesse de chaque plan. */
  --nd-depth-1:0.12;  /* fond lointain      */
  --nd-depth-2:0.34;  /* décor              */
  --nd-depth-3:0.60;  /* sujet principal    */
  --nd-depth-4:1.00;  /* interface, typo    */
  --nd-depth-5:1.55;  /* premier plan       */

  --nd-ease:cubic-bezier(.2,.8,.2,1);

  /* Marge de composition, partagée par l'en-tête et la Home. */
  --nd-gutter:8.5vw;
}

/* --------------------------------------------------------------------------
   1. Scène : un conteneur de profondeur. Posé sur une Section Divi.
   -------------------------------------------------------------------------- */
.nd-scene{
  position:relative;
  overflow:hidden;
  perspective:1200px;
  transform-style:preserve-3d;
}
.nd-scene--viewport{min-height:100svh;display:flex;align-items:center}
.nd-scene--tall{min-height:120svh}

/* Divi imbrique Section > Row > Column ; on neutralise leur positionnement
   pour que les plans se repèrent sur la scène et non sur la colonne. */
.nd-scene .nd-stage,
.nd-scene .nd-stage > .et_pb_column{position:static}
.nd-stage{transform-style:preserve-3d}

/* Ambiance : décor pur, donc CSS. Aucun module Divi gaspillé pour ça. */
.nd-scene--glow::before,
.nd-scene--glow::after{
  content:"";position:absolute;border-radius:50%;
  filter:blur(70px);pointer-events:none;z-index:0;
}
.nd-scene--glow::before{
  width:44vw;height:44vw;left:-10vw;top:-14vw;
  background:radial-gradient(circle,rgba(138,124,255,.20),transparent 65%);
}
.nd-scene--glow::after{
  width:36vw;height:36vw;right:-8vw;bottom:-12vw;
  background:radial-gradient(circle,rgba(2,71,255,.10),transparent 65%);
}

/* --------------------------------------------------------------------------
   2. Plans : posés sur n'importe quel module Divi (Image, Texte, Bouton).
   nd-plane + nd-depth-N suffit à placer un module dans l'espace.
   -------------------------------------------------------------------------- */
.nd-plane{
  position:absolute !important;
  margin:0 !important;
  will-change:transform;
  transform-style:preserve-3d;
}
.nd-plane img{width:100%;height:auto;display:block}

.nd-depth-1{z-index:1}
.nd-depth-2{z-index:2}
.nd-depth-3{z-index:3}
.nd-depth-4{z-index:4}
.nd-depth-5{z-index:5}

/* Le plan d'interface reste dans le flux : la typo n'est jamais
   positionnée en absolu au hasard, elle garde sa colonne Divi. */
.nd-plane.nd-flow{position:relative !important}

/* Ancrages, pour placer un plan sans écrire de CSS sur mesure. */
.nd-at-tl{left:6%;top:8%}
.nd-at-tr{right:4%;top:10%}
.nd-at-bl{left:8%;bottom:6%}
.nd-at-br{right:6%;bottom:-4%}
.nd-at-c {left:50%;top:50%;transform:translate(-50%,-50%)}

/* Tailles fluides, plafonnées : jamais d'image démesurée sur grand écran. */
.nd-size-xs{width:min(11vw,150px)}
.nd-size-s {width:min(16vw,220px)}
.nd-size-m {width:min(32vw,420px)}
.nd-size-l {width:min(52vw,760px)}

/* Matière verre : le foreground doit sembler proche de l'œil. */
.nd-glass{filter:blur(.6px) drop-shadow(0 40px 60px rgba(11,12,20,.18))}

/* Fil conducteur bleu, injecté par le moteur dans les scènes nd-thread. */
.nd-thread-line{
  position:absolute;left:-10%;top:58%;width:120%;height:3px;z-index:3;
  background:linear-gradient(90deg,var(--nd-blue),var(--nd-lilas));
  transform:rotate(-7deg);pointer-events:none;
}

/* --------------------------------------------------------------------------
   3. Toile Three.js : injectée dans une scène portant nd-three.
   -------------------------------------------------------------------------- */
.nd-canvas{
  position:absolute;inset:0;z-index:2;
  pointer-events:none;opacity:0;
  transition:opacity .9s var(--nd-ease);
}
.nd-canvas.is-ready{opacity:1}
/* Quand la 3D temps réel prend le relais, l'image de repli s'efface en douceur. */
.nd-three-active .nd-three-fallback{opacity:0;transition:opacity .6s var(--nd-ease)}

/* --------------------------------------------------------------------------
   4. Typographie de scène
   -------------------------------------------------------------------------- */
.nd-eyebrow{
  color:var(--nd-blue);font-weight:700;font-size:13.5px;
  letter-spacing:.16em;text-transform:uppercase;
}
.nd-display{
  font-weight:800;font-size:clamp(42px,5.8vw,88px);
  line-height:1.02;letter-spacing:-.02em;color:var(--nd-ink);
}
.nd-lead{color:var(--nd-muted);font-size:clamp(18px,1.5vw,21px);line-height:1.62;max-width:34em}
.nd-btn{
  display:inline-block;border-radius:999px;padding:15px 28px;
  background:var(--nd-blue);color:#fff !important;font-weight:700;
  text-decoration:none;transition:transform .3s var(--nd-ease);
}
.nd-btn:hover{transform:scale(1.04)}

/* --------------------------------------------------------------------------
   5. Apparitions. La coquille pose is-in quand l'élément entre à l'écran ;
      tout le reste est une transition CSS. Sans JavaScript, rien n'est
      caché : l'état d'entrée n'existe que sous .nd-js.
   -------------------------------------------------------------------------- */
.nd-js .nd-reveal{
  opacity:0;transform:translate3d(0,24px,0);
  transition:opacity .95s var(--nd-ease), transform .95s var(--nd-ease);
}
.nd-js .nd-reveal.is-in{opacity:1;transform:none}

.nd-js .nd-reveal-words > *{
  opacity:0;transform:translate3d(0,24px,0);
  transition:opacity .9s var(--nd-ease), transform .9s var(--nd-ease);
}
.nd-js .nd-reveal-words.is-in > *{opacity:1;transform:none}
/* Le décalage fait la phrase : les mots arrivent, ils n'apparaissent pas
   tous d'un bloc. Huit suffisent, au-delà l'attente se voit. */
.nd-js .nd-reveal-words > *:nth-child(1){transition-delay:0s}
.nd-js .nd-reveal-words > *:nth-child(2){transition-delay:.07s}
.nd-js .nd-reveal-words > *:nth-child(3){transition-delay:.14s}
.nd-js .nd-reveal-words > *:nth-child(4){transition-delay:.21s}
.nd-js .nd-reveal-words > *:nth-child(5){transition-delay:.28s}
.nd-js .nd-reveal-words > *:nth-child(6){transition-delay:.35s}
.nd-js .nd-reveal-words > *:nth-child(7){transition-delay:.42s}
.nd-js .nd-reveal-words > *:nth-child(n+8){transition-delay:.49s}


/* --------------------------------------------------------------------------
   10. Vocabulaire éditorial partagé
   Sommaires, listes, champ de recherche, pastilles, titres de bande. La Home
   s'en sert, mais le pied de page, les territoires, les articles et la
   recherche aussi, et eux ne chargent pas la feuille de la Home.
   -------------------------------------------------------------------------- */
.nd-band{padding:clamp(90px,12vh,170px) var(--nd-gutter);position:relative}
.nd-h2{font-weight:800;font-size:clamp(30px,4.1vw,66px);letter-spacing:-.028em;line-height:1.03;margin:16px 0 28px}
.nd-h2--center{text-align:center;max-width:16ch;margin-inline:auto}
.nd-display--xl{font-size:clamp(56px,11vw,170px);line-height:.9;letter-spacing:-.04em}
.nd-lead--center{margin-inline:auto;text-align:center}
.nd-center{text-align:center}
.nd-eyebrow--center{text-align:center}

/* --- Index et listes : la grammaire des sommaires de revue --------------- */
.nd-index,.nd-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--nd-line)}
.nd-index__row,.nd-list__row{border-bottom:1px solid var(--nd-line)}
.nd-index__row a,.nd-list__row a{
  display:flex;align-items:baseline;gap:24px;padding:26px 0;text-decoration:none;color:inherit;
  transition:padding-left .5s var(--nd-ease);
}
.nd-index__row{display:grid;grid-template-columns:64px 1fr;align-items:center}
/* Dans la bibliothèque, une ligne est une page : elle a la place de se
   faire lire, et c'est cette hauteur qui donne au panneau de quoi suivre. */
.nd-library__grid .nd-index__row{min-height:min(23vh,230px)}
/* Dans la bibliothèque, le titre prend sa ligne : la description et les
   mots-clés se rangent dessous, comme la légende d'une entrée de sommaire. */
.nd-library__grid .nd-index__row a{
  display:grid;grid-template-columns:1fr auto;align-items:baseline;
  column-gap:24px;row-gap:12px;padding:30px 0;
}
.nd-library__grid .nd-index__t{grid-column:1 / -1;font-size:clamp(26px,3vw,48px)}
.nd-library__grid .nd-index__d{grid-column:1}
.nd-library__grid .nd-index__k{grid-column:2;margin-left:0}
/* Le territoire lu se détache, les autres reculent : la même hiérarchie
   que le rail du film, transposée dans un sommaire. */
.nd-index__row{--nd-dim:.42}
.nd-js .nd-library__grid .nd-index__row{opacity:var(--nd-dim);transition:opacity .5s var(--nd-ease)}
.nd-js .nd-library__grid .nd-index__row.is-live{opacity:1}
.nd-index__n,.nd-list__n{
  font:500 13px/1 ui-monospace,monospace;color:var(--nd-blue);letter-spacing:.08em;
}
.nd-index__t{font-weight:800;font-size:clamp(22px,2.6vw,42px);letter-spacing:-.025em}
.nd-index__d{color:var(--nd-muted);font-size:16px}
.nd-index__k{
  margin-left:auto;text-align:right;font-size:13px;color:var(--nd-muted);
  opacity:.7;transition:opacity .4s var(--nd-ease),color .4s var(--nd-ease);
}
.nd-index__row:hover a,.nd-list__row:hover a{padding-left:18px}
.nd-index__row:hover .nd-index__k{opacity:1;color:var(--nd-blue)}
.nd-index__row a:focus-visible,.nd-list__row a:focus-visible{
  outline:2px solid var(--nd-blue);outline-offset:4px;border-radius:4px;
}
.nd-list__row{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:24px;padding:22px 0}
.nd-list__row a{padding:0;font-weight:600;font-size:clamp(17px,1.5vw,24px)}
.nd-list__soon{font-weight:600;font-size:clamp(17px,1.5vw,24px);color:var(--nd-ink)}
.nd-list__row:has(.nd-list__soon){opacity:.62}
.nd-list__m{color:var(--nd-muted);font-size:14px;white-space:nowrap}

.nd-link{
  font-weight:700;color:var(--nd-ink);text-decoration:none;
  border-bottom:1.5px solid var(--nd-blue);padding-bottom:2px;
}


.nd-search{
  display:flex;gap:10px;max-width:620px;margin:30px auto 0;
  border-bottom:1.5px solid var(--nd-ink);padding-bottom:12px;
}
.nd-search__input{
  flex:1;border:0;background:transparent;font:inherit;font-size:clamp(17px,2vw,24px);
  color:var(--nd-ink);padding:6px 0;
}
.nd-search__input::placeholder{color:var(--nd-muted)}
.nd-search__input:focus{outline:none}
.nd-search:focus-within{border-color:var(--nd-blue)}
.nd-search__go{
  border:0;background:transparent;cursor:pointer;font-size:22px;color:var(--nd-blue);
  padding:0 6px;line-height:1;
}
.nd-filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:34px 0 0}
.nd-chip{
  display:inline-block;border-radius:999px;padding:9px 17px;background:var(--nd-lav);
  color:var(--nd-ink);text-decoration:none;font-size:14px;font-weight:600;
  transition:background-color .35s var(--nd-ease),color .35s var(--nd-ease);
}
.nd-chip:hover{background:var(--nd-blue);color:#fff}
.nd-chip:focus-visible{outline:2px solid var(--nd-blue);outline-offset:3px}


/* --------------------------------------------------------------------------
   6. Paliers. On retire de la technique, jamais de la composition :
      les plans, la profondeur et le premier plan restent à toutes les tailles.
   -------------------------------------------------------------------------- */
@media (max-width:980px){
  .nd-scene{perspective:900px}
  .nd-size-l{width:78vw}
  .nd-size-m{width:46vw}
  .nd-size-s{width:26vw}
  .nd-size-xs{width:16vw}
  .nd-lead{font-size:16px}
}
@media (max-width:640px){
  .nd-scene--viewport{min-height:88svh}
  .nd-size-l{width:86vw}
  .nd-size-s{width:30vw}
}

/* --------------------------------------------------------------------------
   7. Sans mouvement : tout est visible, lisible, cliquable.
      Le moteur n'ira même pas chercher GSAP.
   -------------------------------------------------------------------------- */
.nd-static .nd-reveal,
.nd-static .nd-reveal-words > *,
.nd-static .nd-plane{opacity:1 !important;transform:none !important;transition:none !important}
.nd-static .nd-at-c{transform:translate(-50%,-50%) !important}
.nd-static .nd-canvas{display:none}

@media (prefers-reduced-motion:reduce){
  .nd-btn{transition:none}
  .nd-canvas{transition:none}
}

/* --------------------------------------------------------------------------
   8. En-tête
   Une seule variable, --nd-h (0 au chargement, 1 une fois condensé), est
   posée par la coquille. Tout le reste en découle : hauteur, taille du logo,
   retrait, voile. Aucune bascule d'un état à l'autre.

   Hors de la Home, la coquille pose directement 1 : un logo pleine barre
   n'a de sens qu'au-dessus d'une ouverture.
   -------------------------------------------------------------------------- */
.nd-skip{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--nd-ink);color:#fff;padding:12px 20px;border-radius:0 0 8px 0;
  font-weight:700;text-decoration:none;
}
.nd-skip:focus{left:0}

.nd-nav{
  --nd-h:0;
  position:fixed;top:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;gap:32px;
  height:calc(188px - var(--nd-h) * 108px);
  padding:0 calc(var(--nd-gutter) - var(--nd-h) * 20px);
  background:rgba(252,252,254,calc(var(--nd-h) * 0.78));
  backdrop-filter:blur(calc(var(--nd-h) * 18px)) saturate(calc(1 + var(--nd-h) * 0.6));
  -webkit-backdrop-filter:blur(calc(var(--nd-h) * 18px)) saturate(calc(1 + var(--nd-h) * 0.6));
  box-shadow:0 1px 0 rgba(11,12,20,calc(var(--nd-h) * .07));
  transform:translateY(0);
  transition:transform .55s var(--nd-ease);
  will-change:height,transform;
}
.nd-nav.is-away{transform:translateY(-102%)}

.nd-nav__logo{display:flex;align-items:center;text-decoration:none;line-height:0}
.nd-nav__mark{
  display:block;width:auto;flex:none;
  height:calc(124px - var(--nd-h) * 82px);
  transition:opacity .35s var(--nd-ease);
}
/* Le cube occupe 85,5 % de la hauteur du logo empilé : en gardant ce rapport,
   il ne change pas de taille au moment de l'échange, seul le mot change de
   place. */
.nd-nav.is-mark .nd-nav__mark{height:calc((124px - var(--nd-h) * 82px) * 0.855)}
.nd-nav__word{
  font-weight:800;font-size:18.5px;letter-spacing:-.01em;color:var(--nd-ink);
  white-space:nowrap;overflow:hidden;
  max-width:0;opacity:0;margin-left:0;
  transition:max-width .5s var(--nd-ease), opacity .35s var(--nd-ease), margin-left .5s var(--nd-ease);
}
.nd-nav__word i{font-style:normal;color:var(--nd-blue)}
.nd-nav.is-mark .nd-nav__word{max-width:14ch;opacity:1;margin-left:11px}

.nd-nav__links{display:flex;align-items:center;gap:clamp(30px,3.2vw,52px)}
.nd-nav__links a,
.nd-nav__trigger{
  position:relative;text-decoration:none;font-size:16px;font-weight:600;
  letter-spacing:-.005em;
  font-family:inherit;color:var(--nd-muted);padding:10px 0;white-space:nowrap;
  background:none;border:0;cursor:pointer;
  transition:color .35s var(--nd-ease);
}
.nd-nav__links a::after,
.nd-nav__trigger::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;
  background:var(--nd-blue);transform:scaleX(0);transform-origin:right;
  transition:transform .45s var(--nd-ease);
}
.nd-nav__links a:hover,
.nd-nav__trigger:hover,
.nd-nav__trigger[aria-expanded="true"]{color:var(--nd-ink)}
.nd-nav__links a:hover::after,
.nd-nav__trigger:hover::after,
.nd-nav__trigger[aria-expanded="true"]::after{transform:scaleX(1);transform-origin:left}
.nd-nav__links a:focus-visible,
.nd-nav__trigger:focus-visible{outline:2px solid var(--nd-blue);outline-offset:6px;border-radius:3px}

/* Le menu des territoires : un sommaire, pas une liste de liens. */
.nd-nav__has-menu{position:relative}
.nd-nav__menu{
  position:absolute;top:calc(100% + 14px);left:50%;transform:translateX(-50%) translateY(-6px);
  width:min(480px,88vw);padding:16px;border-radius:20px;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(20px) saturate(1.6);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);
  box-shadow:0 30px 70px -40px rgba(11,12,20,.5), 0 0 0 1px rgba(11,12,20,.05);
  opacity:0;pointer-events:none;
  transition:opacity .3s var(--nd-ease), transform .3s var(--nd-ease);
}
.nd-nav__menu.is-open{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
.nd-nav__menu[hidden]{display:none}
.nd-nav__menu ul{list-style:none;margin:0;padding:0}
.nd-nav__menu a{
  display:block;padding:14px 16px;border-radius:12px;text-decoration:none;
  transition:background-color .25s var(--nd-ease);
}
.nd-nav__menu a::after{display:none}
.nd-nav__menu a:hover{background:var(--nd-lav)}
.nd-nav__menu-t{display:block;font-weight:800;font-size:19px;letter-spacing:-.015em;color:var(--nd-ink)}
.nd-nav__menu-d{display:block;font-size:13.5px;color:var(--nd-muted);margin-top:3px}

/* Le bouton du tiroir : deux traits, et une croix quand il est ouvert. */
.nd-burger{
  display:none;width:44px;height:44px;padding:0;border:0;background:none;
  cursor:pointer;position:relative;
}
.nd-burger i{
  position:absolute;left:11px;width:22px;height:1.5px;background:var(--nd-ink);
  transition:transform .35s var(--nd-ease), opacity .25s var(--nd-ease);
}
.nd-burger i:nth-child(1){top:18px}
.nd-burger i:nth-child(2){top:25px}
.nd-burger[aria-expanded="true"] i:nth-child(1){transform:translateY(3.5px) rotate(45deg)}
.nd-burger[aria-expanded="true"] i:nth-child(2){transform:translateY(-3.5px) rotate(-45deg)}
.nd-burger:focus-visible{outline:2px solid var(--nd-blue);outline-offset:2px;border-radius:8px}

/* Le tiroir : la carte du site à la verticale, plein cadre. */
.nd-drawer{
  position:fixed;inset:0;z-index:55;
  background:var(--nd-paper);
  padding:calc(104px + 4vh) var(--nd-gutter) 6vh;
  display:flex;flex-direction:column;justify-content:space-between;
  overflow-y:auto;
  opacity:0;transition:opacity .35s var(--nd-ease);
}
.nd-drawer.is-open{opacity:1}
/* [hidden] pose display:none, mais la règle ci-dessus pose display:flex avec
   la même spécificité et gagne parce qu'elle vient après. Sans cette ligne, le
   tiroir reste un calque transparent en position fixe sur tout l'écran, et il
   avale chaque touche du doigt. */
.nd-drawer[hidden]{display:none}
.nd-drawer__list{list-style:none;margin:0;padding:0}
.nd-drawer__list a{
  display:flex;align-items:baseline;gap:18px;
  padding:16px 0;border-bottom:1px solid var(--nd-line);
  text-decoration:none;color:var(--nd-ink);
}
.nd-drawer__n{font:500 12px/1 ui-monospace,monospace;color:var(--nd-blue);letter-spacing:.12em}
.nd-drawer__t{font-weight:800;font-size:clamp(26px,8vw,38px);letter-spacing:-.025em}
.nd-drawer__foot{display:flex;flex-direction:column;gap:22px;margin-top:32px}
body.nd-bloque{overflow:hidden}

/* Sans JS, la barre est simplement là, dans son état lisible. */
.nd-static .nd-nav{--nd-h:1;transform:none !important}
.nd-nav.is-ready{animation:nd-nav-in 1s var(--nd-ease) both}
@keyframes nd-nav-in{from{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:none}}
.nd-nav.is-ready.is-away{animation:none}

@media (max-width:980px){
  .nd-nav{height:calc(120px - var(--nd-h) * 58px);padding:0 20px}
  .nd-nav__mark{height:calc(70px - var(--nd-h) * 38px)}
  .nd-nav.is-mark .nd-nav__mark{height:calc((70px - var(--nd-h) * 38px) * 0.855)}
  .nd-nav__word{font-size:16px}
  .nd-nav__links{display:none}
  .nd-burger{display:block}
}
@media (min-width:981px){
  .nd-drawer{display:none}
}

/* Divi réserve en haut du conteneur la hauteur de son propre en-tête fixe.
   Cet en-tête n'existe plus : la réservation ne compense plus rien, elle
   décale tout le site de quatre-vingts pixels. Le !important est nécessaire
   parce que Divi pose cette valeur en style en ligne. */
.nd-shell #page-container{padding-top:0 !important}

/* --------------------------------------------------------------------------
   9. Le pied de page
   On n'y arrive pas par un rectangle posé après la dernière section : le
   fond descend du papier de la page à l'encre sur une bande entière. C'est
   la conclusion de la lecture, pas un annuaire de liens.
   -------------------------------------------------------------------------- */
.nd-foot{position:relative;background:var(--nd-ink);color:#fff}
.nd-foot__seuil{
  height:clamp(120px,18vh,240px);
  background:linear-gradient(180deg,var(--nd-lav) 0%,#7E86B8 42%,var(--nd-ink) 100%);
}
.nd-foot__inner{padding:clamp(50px,8vh,90px) var(--nd-gutter) clamp(34px,5vh,54px)}

/* La phrase du hero revient une dernière fois, en creux. */
.nd-foot__claim{
  margin:0 0 clamp(52px,8vh,96px);
  font-weight:800;font-size:clamp(34px,6.4vw,96px);line-height:1.02;
  letter-spacing:-.035em;color:transparent;
  -webkit-text-stroke:1.4px rgba(255,255,255,.42);
}

.nd-foot__grid{
  display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);
  gap:clamp(40px,6vw,110px);align-items:start;
}
.nd-foot__logo{display:flex;align-items:center;gap:12px;text-decoration:none;color:#fff;
  font-weight:800;font-size:19px;letter-spacing:-.01em}
.nd-foot__logo img{height:34px;width:auto;display:block}
.nd-foot__logo i{font-style:normal;color:var(--nd-lilas)}
.nd-foot__mot{
  margin:22px 0 30px;max-width:44ch;
  color:rgba(255,255,255,.62);font-size:15.5px;line-height:1.7;
}

.nd-foot__label{
  margin:0 0 18px;font:500 11px/1 ui-monospace,monospace;
  letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.42);
}
.nd-foot__terr ol{list-style:none;margin:0;padding:0;border-top:1px solid rgba(255,255,255,.14)}
.nd-foot__terr a{
  display:flex;align-items:baseline;gap:18px;
  padding:15px 0;border-bottom:1px solid rgba(255,255,255,.14);
  text-decoration:none;color:#fff;
  transition:padding-left .45s var(--nd-ease),color .35s var(--nd-ease);
}
.nd-foot__terr a:hover{padding-left:14px;color:var(--nd-lilas)}
.nd-foot__terr a:focus-visible{outline:2px solid var(--nd-lilas);outline-offset:4px;border-radius:4px}
.nd-foot__n{font:500 11px/1 ui-monospace,monospace;color:var(--nd-lilas);letter-spacing:.12em}
.nd-foot__t{font-weight:700;font-size:clamp(19px,2vw,26px);letter-spacing:-.02em}
.nd-foot__c{margin-left:auto;font-size:12px;color:rgba(255,255,255,.38)}

/* Le champ de recherche, en négatif. Il perd aussi le centrage du modèle de
   base : dans une colonne alignée à gauche, un champ centré est un accident. */
.nd-search--foot,
.nd-search--drawer,
.nd-search--page{max-width:none;width:100%;margin-inline:0}
.nd-search--foot,
.nd-search--drawer{border-bottom-color:rgba(255,255,255,.3)}
.nd-search--foot .nd-search__input{color:#fff}
.nd-search--foot .nd-search__input::placeholder{color:rgba(255,255,255,.42)}
.nd-search--foot .nd-search__go{color:var(--nd-lilas)}
.nd-search--foot:focus-within{border-bottom-color:var(--nd-lilas)}
.nd-search--drawer{border-bottom-color:var(--nd-ink)}

.nd-foot__base{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;
  margin-top:clamp(46px,7vh,84px);padding-top:22px;
  border-top:1px solid rgba(255,255,255,.14);
  font-size:13px;color:rgba(255,255,255,.5);
}
.nd-foot__base p{margin:0}
.nd-foot__legal{display:flex;flex-wrap:wrap;gap:20px}
.nd-foot__base a{color:rgba(255,255,255,.72);text-decoration:none;transition:color .3s var(--nd-ease)}
.nd-foot__base a:hover{color:#fff}

@media (max-width:980px){
  .nd-foot__grid{grid-template-columns:1fr;gap:44px}
  .nd-foot__claim{margin-bottom:44px;-webkit-text-stroke-width:1px}
  .nd-foot__base{flex-direction:column;gap:12px}
}
