@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonte/pop-latin-ext-400.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonte/pop-latin-400.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonte/pop-latin-ext-600.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonte/pop-latin-600.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/fonte/pop-latin-ext-700.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Poppins";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/fonte/pop-latin-700.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --gnn-pillar: #00227e;
  --gnn-zest: #c9a54f;
  --gnn-key-active: #b38f37;
  --gnn-page: #01237f;
  --gnn-raised: #042b93;
  --gnn-copy: #ffffff;
  --gnn-muted: #bebebe;
  --gnn-border: rgba(255, 255, 255, 0.17);
  --gnn-border-strong: rgba(255, 255, 255, 0.34);
  --gnn-blend-a: #e7d8b6;
  --gnn-fade-bottom: #d4c17d;
  --gnn-caution: #96281b;

  --gnn-1: 6px;
  --gnn-2: 14px;
  --gnn-3: 20px;
  --gnn-4: 32px;
  --gnn-5: 48px;
  --gnn-6: 72px;
  --gnn-7: 112px;
  --gnn-8: 160px;

  --gnn-pill: 9999px;
  --gnn-orb: 50%;
  --r-1: 2px;
  --r-2: 4px;
  --r-3: 8px;
  --r-4: 12px;
  --r-5: 20px;
  --r-6: 28px;
  --r-7: 36px;
  --r-8: 44px;

  --gnn-head: "Poppins", "Trebuchet MS", sans-serif;
  --gnn-body: Arial, "Helvetica Neue", Helvetica, sans-serif;

  --gnn-h1: 36px;
  --z-head: 26px;
  --gnn-sub: 20px;
  --gnn-md-2: 17px;
  --gnn-h5: 14px;
  --gnn-h6: 12px;
  --gnn-normal: 14px;
  --gnn-petite: 12px;
  --gnn-micro: 11px;

  --gnn-compact: 1.15;
  --gnn-base: 1.45;
  --gnn-open: 1.6;

  --w-normal: 400;
  --gnn-half: 500;
  --gnn-bold: 700;

  --gnn-snug: -0.01em;
  --e-base: 0;
  --gnn-spread: 0.06em;

  --d-1: 0 1px 1px rgba(0, 6, 34, 0.18);
  --d-2: 0 1px 2px rgba(0, 6, 34, 0.24);
  --d-3: 0 2px 6px rgba(0, 6, 34, 0.3);
  --d-4: 0 6px 18px rgba(0, 6, 34, 0.34);
  --d-5: 0 12px 32px rgba(0, 6, 34, 0.4);
  --d-6: 0 18px 44px rgba(0, 6, 34, 0.44);
  --d-7: 0 26px 60px rgba(0, 6, 34, 0.48);
  --d-8: 0 34px 78px rgba(0, 6, 34, 0.52);

  --gnn-brisk: 105ms;
  --t-base: 200ms;
  --gnn-calm: 309ms;

  --gnn-exit: cubic-bezier(0.3, 0.93, 0.48, 0.95);
  --gnn-in: cubic-bezier(0.52, 0.05, 0.7, 0.07);
  --gnn-smooth: cubic-bezier(0.56, 0.06, 0.58, 0.88);
  --gnn-pop: cubic-bezier(0.44, 1.05, 0.56, 1.2);

  --gnn-max: 1220px;
  --gnn-text: 1220px;
  --gnn-slim: 660px;
  --gnn-pad-lg: 32px;
  --gnn-inset-tablet: 24px;
  --gnn-edge-narrow: 16px;

  --gnn-hair: 1px;
  --gnn-mid: 2px;
  --gnn-heavy: 3px;

  --gnn-tall: 64px;
  --gnn-size-mobile: 56px;

  --gnn-shot: url("/img-x/title-image.webp");
}

/* ── reset / base ─────────────────────────────────────────────────── */
*,
*::before,
*::after { box-sizing: border-box; }

html,
body {
  margin: 0;
  overflow-x: clip;
}

body {
  background: var(--gnn-page);
  color: var(--gnn-copy);
  font-family: var(--gnn-body);
  font-size: var(--gnn-normal);
  font-weight: var(--w-normal);
  line-height: var(--gnn-base);
  -webkit-text-size-adjust: 100%;
}

h1, h2, h3, h4, h5, h6 {
  overflow-wrap: anywhere;
  margin: 0;
}

h1, h2 {
  font-family: var(--gnn-head);
  font-weight: var(--gnn-bold);
  letter-spacing: var(--gnn-snug);
  line-height: var(--gnn-compact);
}

h3, h4 {
  font-family: var(--gnn-body);
  font-weight: var(--gnn-bold);
  letter-spacing: var(--e-base);
  line-height: var(--gnn-base);
}

h1 { font-size: var(--gnn-h1); }
h2 { font-size: var(--z-head); }
h3 { font-size: var(--gnn-sub); }
h4 { font-size: var(--gnn-md-2); }

p { margin: 0; }

ul, ol { margin: 0; }

img { max-width: 100%; }

a {
  color: var(--gnn-zest);
  transition: color var(--gnn-brisk) var(--gnn-exit);
}

a:hover { color: var(--gnn-blend-a); }

:focus-visible {
  outline: var(--gnn-heavy) solid var(--gnn-key-active);
  outline-offset: 2px;
}

.saut-route {
  background: var(--gnn-zest);
  border-radius: var(--r-3);
  color: var(--gnn-page);
  font-weight: var(--gnn-bold);
  left: var(--gnn-3);
  padding: 10px 18px;
  position: absolute;
  z-index: 200;
}

.saut-route:not(:focus) { top: -200px !important; }
.saut-route:focus { top: var(--gnn-3); }

.frame-base,
.classeur-frame,
.dossier-frame,
.lisere-frame,
.marque-frame,
.fiche-frame,
.vestibule-frame,
.bureau-frame,
.feuille-frame,
.linteau-frame,
.module-frame,
.cadre-frame,
.quai-frame,
.borne-frame,
.galerie-frame,
.pilier-frame {
  display: block;
  margin-inline: auto;
  max-width: calc(var(--gnn-max) + 2 * var(--gnn-pad-lg));
  padding-inline: var(--gnn-pad-lg);
  width: 100%;
}

/* encarts d'offre posés dans le flux des sections */
.bureau-go,
.fiche-go,
.linteau-go {
  align-items: center;
  background: var(--gnn-zest);
  border-radius: var(--gnn-pill);
  color: var(--gnn-page);
  display: inline-flex;
  flex-shrink: 0;
  font-family: var(--gnn-head);
  font-size: var(--gnn-h5);
  font-weight: 600;
  justify-content: center;
  letter-spacing: var(--gnn-spread);
  min-height: 48px;
  padding-inline: var(--gnn-4);
  text-decoration: none;
}

/* ── avis-age : plaque 18+ (RG-02, sous l'en-tête) ────────────────── */
.avis-age {
  background: var(--gnn-caution);
  color: var(--gnn-copy);
  padding-block: 9px;
  padding-inline: var(--gnn-pad-lg);
  text-align: center;
}

.avis-copy {
  color: var(--gnn-copy);
  font-size: var(--gnn-petite);
  line-height: var(--gnn-base);
  margin-inline: auto;
  max-width: calc(var(--gnn-max) + 2 * var(--gnn-pad-lg));
}

.avis-route {
  color: var(--gnn-copy);
  text-underline-offset: 3px;
}

.avis-route:hover { color: var(--gnn-blend-a); }

/* ── bureau : avis des joueurs (REV-04) ───────────────────────────── */
.bureau { padding-block: var(--gnn-5); }

.bureau-top {
  font-size: var(--z-head);
  margin-block-end: var(--gnn-4);
}

.bureau-star {
  background: var(--gnn-raised);
  border-inline-start: var(--gnn-heavy) solid var(--gnn-zest);
  border-radius: var(--r-5);
  color: var(--gnn-copy);
  display: block;
  margin-block-end: var(--gnn-4);
  padding: var(--gnn-4);
}

.bureau-quote {
  margin: var(--gnn-3) 0 0;
}

.bureau-lead {
  color: var(--gnn-copy);
  font-size: var(--gnn-md-2);
  font-style: italic;
  line-height: var(--gnn-base);
}

.bureau-person {
  color: var(--gnn-zest);
  display: block;
  font-style: normal;
  font-weight: var(--gnn-bold);
  margin-block-start: var(--gnn-3);
}

.bureau-when {
  color: var(--gnn-muted);
  display: block;
  font-size: var(--gnn-micro);
  margin-block-start: var(--gnn-1);
}

.bureau-roll {
  display: grid;
  gap: var(--gnn-3);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  list-style: none;
  padding: 0;
}

.bureau-plate {
  background: var(--gnn-raised);
  border-radius: var(--r-4);
  color: var(--gnn-copy);
  padding: var(--gnn-3);
}

.bureau-row {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-2);
  justify-content: space-between;
}

.bureau-plate .bureau-person { margin-block-start: 0; }

.bureau-para {
  color: var(--gnn-muted);
  font-size: var(--gnn-petite);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-1);
}

.bureau-score {
  display: inline-flex;
  gap: 3px;
}

.bureau-pip {
  background: var(--gnn-zest);
  display: block;
  height: 13px;
  width: 13px;
  clip-path: polygon(50% 0, 63% 36%, 100% 38%, 71% 62%, 82% 100%, 50% 76%, 18% 100%, 29% 62%, 0 38%, 37% 36%);
}

.bureau-star .bureau-pip {
  height: 28px;
  width: 28px;
}

.bureau-part { background: linear-gradient(90deg, var(--gnn-zest) 50%, var(--gnn-border-strong) 50%); }
.bureau-void { background: var(--gnn-border-strong); }

.bureau-pitch {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-3);
  justify-content: space-between;
  margin-block: var(--gnn-4);
}

.bureau-fine {
  color: var(--gnn-muted);
  flex: 1 1 320px;
  font-size: var(--gnn-micro);
  line-height: var(--gnn-base);
}

/* ── borne : page 404 (ERR-03) ────────────────────────────────────── */
.borne {
  padding-block: var(--gnn-6);
  text-align: center;
}

.borne-caption {
  font-size: var(--z-head);
  margin-inline: auto;
  max-width: var(--gnn-slim);
}

.borne-para {
  color: var(--gnn-muted);
  line-height: var(--gnn-open);
  margin: var(--gnn-3) auto 0;
  max-width: var(--gnn-slim);
}

.borne-go {
  background: var(--gnn-zest);
  border-radius: var(--r-4);
  color: var(--gnn-page);
  display: inline-flex;
  align-items: center;
  font-family: var(--gnn-body);
  font-weight: var(--gnn-bold);
  letter-spacing: var(--gnn-spread);
  margin-block-start: var(--gnn-4);
  min-height: 44px;
  padding-inline: var(--gnn-4);
  text-decoration: none;
  text-transform: uppercase;
}

.borne-go:hover {
  background: var(--gnn-blend-a);
  color: var(--gnn-page);
}

/* ── cadre : formulaire de contact (FORM-03) ──────────────────────── */
.cadre { padding-block: var(--gnn-5); }

.cadre-top {
  font-size: var(--z-head);
  text-align: center;
}

.cadre-lead {
  color: var(--gnn-muted);
  line-height: var(--gnn-open);
  margin: var(--gnn-3) auto 0;
  max-width: var(--gnn-slim);
  text-align: center;
}

.cadre-body {
  display: grid;
  gap: var(--gnn-3);
  margin-block-start: var(--gnn-4);
}

.cadre-line {
  display: grid;
  gap: var(--gnn-1);
}

.cadre-tag {
  color: var(--gnn-copy);
  font-size: var(--gnn-h5);
  font-weight: var(--gnn-bold);
  letter-spacing: var(--gnn-spread);
  text-transform: uppercase;
}

.cadre-input,
.cadre-area {
  background: var(--gnn-raised);
  border: var(--gnn-hair) solid var(--gnn-border-strong);
  border-radius: var(--r-3);
  color: var(--gnn-copy);
  font-family: var(--gnn-body);
  font-size: var(--gnn-normal);
  padding: 12px 14px;
  width: 100%;
}

.cadre-input { min-height: 48px; }

.cadre-area {
  line-height: var(--gnn-open);
  resize: vertical;
}

.cadre-go {
  background: var(--gnn-zest);
  border: 0;
  border-radius: var(--r-4);
  color: var(--gnn-page);
  cursor: pointer;
  font-family: var(--gnn-body);
  font-size: var(--gnn-h5);
  font-weight: var(--gnn-bold);
  letter-spacing: var(--gnn-spread);
  min-height: 52px;
  text-transform: uppercase;
  transition: background var(--t-base) var(--gnn-exit);
  width: 100%;
}

.cadre-go:hover {
  background: var(--gnn-blend-a);
  color: var(--gnn-page);
}

.cadre-done {
  background: var(--gnn-raised);
  border-inline-start: var(--gnn-heavy) solid var(--gnn-zest);
  border-radius: var(--r-3);
  color: var(--gnn-copy);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-3);
  padding: var(--gnn-3);
}

.cadre-done[hidden] { display: none; }

/* ── cahier : bandeau cookies (COOK-09) ───────────────────────────── */
.cahier {
  background: var(--gnn-page);
  border-inline-start: 4px solid var(--gnn-zest);
  border-start-end-radius: var(--r-3);
  border-end-end-radius: var(--r-3);
  box-shadow: var(--d-5);
  color: var(--gnn-copy);
  display: flex;
  flex-direction: column;
  gap: var(--gnn-3);
  inset-block-end: var(--gnn-5);
  inset-inline-end: auto;
  inset-inline-start: 0;
  max-width: min(420px, calc(100vw - 2 * var(--gnn-5)));
  padding: var(--gnn-3);
  position: fixed;
  transition: clip-path var(--gnn-calm) var(--gnn-exit), opacity var(--gnn-calm) var(--gnn-exit);
  z-index: 90;
}

.cahier[hidden] { display: none; }

.cahier-copy {
  color: var(--gnn-copy);
  font-size: var(--gnn-petite);
  line-height: var(--gnn-base);
}

.cahier-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-2);
  justify-content: flex-start;
}

.cahier-allow,
.cahier-no {
  border-radius: var(--r-3);
  cursor: pointer;
  font-family: var(--gnn-body);
  font-size: var(--gnn-petite);
  font-weight: var(--gnn-bold);
  min-height: 40px;
  padding-inline: var(--gnn-3);
  transition: background var(--t-base) var(--gnn-exit), color var(--t-base) var(--gnn-exit);
}

.cahier-allow {
  background: var(--gnn-zest);
  border: 0;
  color: var(--gnn-page);
}

.cahier-allow:hover {
  background: var(--gnn-blend-a);
  color: var(--gnn-page);
}

.cahier-no {
  background: transparent;
  border: var(--gnn-hair) solid var(--gnn-border-strong);
  color: var(--gnn-copy);
}

.cahier-no:hover {
  background: var(--gnn-copy);
  color: var(--gnn-page);
}

.cahier-gone {
  clip-path: inset(0 100% 0 0);
  opacity: 0;
  pointer-events: none;
}

/* ── classeur : en-tête (HEAD-CENTER) ─────────────────────────────── */
.classeur {
  background: var(--gnn-pillar);
  box-shadow: var(--d-3);
  color: var(--gnn-copy);
  position: relative;
  z-index: 50;
}

.classeur-crown { padding-block: var(--gnn-2); }

.classeur-lead {
  align-items: center;
  display: grid;
  gap: var(--gnn-3);
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  padding-inline: var(--gnn-5);
}

.classeur-toggle {
  align-items: center;
  background: transparent;
  border: 0;
  border-radius: var(--r-3);
  color: var(--gnn-copy);
  cursor: pointer;
  display: none;
  height: 44px;
  justify-content: center;
  justify-self: start;
  padding: 0;
  width: 44px;
}

.classeur-pips {
  display: grid;
  gap: 3px;
  grid-template-columns: repeat(2, 9px);
}

.classeur-pips i {
  background: currentColor;
  border-radius: var(--r-1);
  display: block;
  height: 9px;
  width: 9px;
}

.classeur-emblem {
  align-items: center;
  color: var(--gnn-copy);
  display: flex;
  flex-shrink: 0;
  gap: var(--gnn-2);
  grid-column: 2;
  justify-self: center;
  text-decoration: none;
}

.classeur-orb {
  align-items: center;
  background: #ffffff;
  border-radius: var(--gnn-orb);
  display: inline-flex;
  flex-shrink: 0;
  height: 72px;
  justify-content: center;
  overflow: hidden;
  width: 72px;
}

.classeur-image {
  display: block;
  height: 60px;
  width: 60px;
}

.classeur-word {
  color: var(--gnn-copy);
  font-family: var(--gnn-head);
  font-size: var(--gnn-sub);
  font-weight: var(--gnn-bold);
  letter-spacing: var(--gnn-snug);
  white-space: nowrap;
}

.classeur-actions {
  align-items: center;
  display: flex;
  flex-wrap: nowrap;
  gap: var(--gnn-3);
  justify-content: flex-end;
  justify-self: end;
  min-width: 0;
}

.classeur-go {
  align-items: center;
  border-radius: var(--gnn-pill);
  display: inline-flex;
  flex-shrink: 0;
  font-family: var(--gnn-head);
  font-size: var(--gnn-h5);
  font-weight: 600;
  letter-spacing: var(--gnn-spread);
  min-height: 44px;
  padding-inline: var(--gnn-4);
  text-decoration: none;
  white-space: nowrap;
}

.classeur-calm {
  background: transparent;
  border: var(--gnn-hair) solid var(--gnn-border-strong);
  color: var(--gnn-copy);
  transition: background var(--t-base) var(--gnn-exit), color var(--t-base) var(--gnn-exit);
}

.classeur-calm:hover {
  background: var(--gnn-copy);
  color: var(--gnn-pillar);
}

.classeur-bar {
  border-block-start: var(--gnn-hair) solid var(--gnn-border);
  min-height: 64px;
}

.classeur-routes {
  align-items: center;
  display: flex;
  justify-content: center;
  min-height: 64px;
  padding-inline: var(--gnn-5);
}

.classeur-roll {
  align-items: stretch;
  display: flex;
  flex-wrap: nowrap;
  list-style: none;
  min-width: 0;
  padding: 0;
}

.classeur-roll .classeur-slot {
  align-items: stretch;
  display: flex;
  position: relative;
}

.classeur-roll .classeur-slot + .classeur-slot::before {
  background: var(--gnn-border-strong);
  content: "";
  display: block;
  height: 16px;
  margin-block: auto;
  width: 1px;
}

.classeur-route {
  align-items: center;
  color: var(--gnn-copy);
  display: flex;
  font-family: var(--gnn-head);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: var(--gnn-spread);
  min-height: 44px;
  padding-inline: var(--gnn-3);
  text-decoration: none;
  text-transform: uppercase;
  white-space: nowrap;
}

.classeur-route:hover {
  color: var(--gnn-copy);
  text-decoration: underline;
  text-underline-offset: 6px;
}

.classeur-roll .classeur-route[aria-current] {
  border-inline-start: var(--gnn-heavy) solid var(--gnn-zest);
  color: var(--gnn-copy);
}

.classeur-dock {
  border-block-start: var(--gnn-hair) solid var(--gnn-border);
  display: none;
  padding-block: var(--gnn-3);
}

.classeur-dock.is-open { display: block; }

.classeur-stack {
  display: grid;
  gap: var(--gnn-1);
  list-style: none;
  padding: 0;
}

.classeur-stack .classeur-route {
  border-radius: var(--r-3);
  text-transform: none;
  white-space: normal;
}

.classeur-stack .classeur-route[aria-current] {
  border-inline-start: var(--gnn-heavy) solid var(--gnn-zest);
}

.classeur-more {
  align-items: center;
  background: transparent;
  border: var(--gnn-hair) solid var(--gnn-border-strong);
  border-radius: var(--gnn-pill);
  color: var(--gnn-copy);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--gnn-head);
  font-size: 14px;
  font-weight: 600;
  min-height: 44px;
  padding-inline: var(--gnn-3);
}

.classeur-pane {
  background: var(--gnn-pillar);
  border: var(--gnn-hair) solid var(--gnn-border-strong);
  border-radius: var(--r-4);
  box-shadow: var(--d-4);
  display: none;
  inset-block-start: 100%;
  inset-inline-end: 0;
  list-style: none;
  min-width: 200px;
  padding: var(--gnn-1);
  position: absolute;
  z-index: 60;
}

.classeur-pane.is-shown { display: block; }

/* ── dossier : pied de page (FOOT-10) ─────────────────────────────── */
.dossier {
  background: var(--gnn-pillar);
  color: var(--gnn-copy);
  padding-block: var(--gnn-6);
}

.dossier-crest {
  align-items: center;
  border-block-end: var(--gnn-hair) solid var(--gnn-border);
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-4);
  justify-content: space-between;
  padding-block-end: var(--gnn-5);
}

.dossier-emblem {
  align-items: center;
  color: var(--gnn-copy);
  display: flex;
  flex-shrink: 0;
  gap: var(--gnn-2);
  text-decoration: none;
}

.dossier-orb {
  align-items: center;
  background: #ffffff;
  border-radius: var(--gnn-orb);
  display: inline-flex;
  flex-shrink: 0;
  height: 76px;
  justify-content: center;
  overflow: hidden;
  width: 76px;
}

.dossier-image {
  display: block;
  height: 64px;
  width: 64px;
}

.dossier-word {
  font-family: var(--gnn-head);
  font-size: var(--gnn-sub);
  font-weight: var(--gnn-bold);
}

.dossier-creed {
  color: var(--gnn-muted);
  flex: 1 1 420px;
  font-size: var(--gnn-petite);
  line-height: var(--gnn-open);
  text-align: end;
}

.dossier-grid {
  border-block-end: var(--gnn-hair) solid var(--gnn-border);
  display: grid;
  gap: var(--gnn-5);
  grid-template-columns: repeat(3, minmax(0, 1fr));
  padding-block: var(--gnn-5);
}

.dossier-track { min-width: 0; }

.dossier-roll .dossier-slot { min-width: 0; }

.dossier-top {
  color: var(--gnn-zest);
  font-family: var(--gnn-body);
  font-size: var(--gnn-h5);
  font-weight: var(--gnn-bold);
  letter-spacing: var(--gnn-spread);
  text-transform: uppercase;
}

.dossier-roll {
  display: grid;
  gap: var(--gnn-1);
  list-style: none;
  margin-block-start: var(--gnn-3);
  padding: 0;
}

.dossier-route {
  color: var(--gnn-muted);
  display: inline-block;
  font-size: var(--gnn-petite);
  overflow-wrap: anywhere;
  padding-block: 6px;
  text-decoration: none;
}

.dossier-route:hover {
  color: var(--gnn-copy);
  text-decoration: underline;
}

.dossier-warn {
  border-block-end: var(--gnn-hair) solid var(--gnn-border);
  padding-block: var(--gnn-4);
}

.dossier-para {
  color: var(--gnn-muted);
  font-size: var(--gnn-micro);
  line-height: var(--gnn-open);
}

.dossier-base {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-3);
  justify-content: space-between;
  padding-block-start: var(--gnn-4);
}

.dossier-mark {
  color: var(--gnn-muted);
  font-size: var(--gnn-micro);
}

.dossier-up {
  font-size: var(--gnn-petite);
}

/* ── feuille : bloc d'appel (CTA-01) ──────────────────────────────── */
.feuille {
  background: var(--gnn-zest);
  color: var(--gnn-pillar);
  padding-block: var(--gnn-5);
}

.feuille-frame {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-4);
  justify-content: space-between;
}

.feuille-main { flex: 1 1 520px; }

.feuille-caption {
  color: var(--gnn-pillar);
  font-size: var(--z-head);
  letter-spacing: var(--gnn-snug);
  max-width: var(--gnn-slim);
  text-transform: uppercase;
}

.feuille-para {
  color: var(--gnn-pillar);
  line-height: var(--gnn-base);
  margin-block-start: var(--gnn-3);
}

.feuille-fine {
  color: var(--gnn-pillar);
  font-size: var(--gnn-micro);
  line-height: var(--gnn-base);
  margin-block-start: var(--gnn-3);
}

.feuille-go {
  align-items: center;
  border-radius: var(--r-4);
  display: inline-flex;
  flex-shrink: 0;
  justify-content: center;
  min-height: 56px;
  min-width: 220px;
  padding-inline: var(--gnn-4);
  text-align: center;
  text-decoration: none;
}

/* ── fiche : grille de cartes (GRID-13) ───────────────────────────── */
.fiche { padding-block: var(--gnn-5); }

.fiche-top {
  font-size: var(--z-head);
  margin-block-end: var(--gnn-4);
}

.fiche-roll {
  display: grid;
  gap: var(--gnn-5);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.fiche-plate {
  background: var(--gnn-raised);
  border: var(--gnn-hair) solid var(--gnn-border);
  border-radius: var(--r-4);
  color: var(--gnn-copy);
  padding: var(--gnn-4);
  transition: box-shadow var(--t-base) var(--gnn-exit);
}

.fiche-plate:hover { box-shadow: var(--d-4); }

.fiche-image {
  display: block;
  fill: var(--gnn-zest);
  height: 32px;
  width: 32px;
}

.fiche-caption {
  color: var(--gnn-copy);
  font-family: var(--gnn-head);
  font-size: var(--gnn-h5);
  letter-spacing: var(--gnn-spread);
  margin-block-start: var(--gnn-3);
  text-transform: uppercase;
}

.fiche-para {
  color: var(--gnn-muted);
  font-size: var(--gnn-petite);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-2);
}

.fiche-pitch {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-3);
  justify-content: space-between;
  margin-block-start: var(--gnn-5);
}

.fiche-fine {
  color: var(--gnn-muted);
  flex: 1 1 320px;
  font-size: var(--gnn-micro);
  line-height: var(--gnn-base);
}

/* ── galerie : fil d'Ariane (BREAD-06) ────────────────────────────── */
.galerie {
  background: var(--gnn-raised);
  color: var(--gnn-muted);
  padding-block: var(--gnn-3);
}

.galerie-roll {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-1);
  list-style: none;
  padding: 0;
}

.galerie-slot {
  align-items: center;
  color: var(--gnn-copy);
  display: flex;
  font-size: var(--gnn-petite);
  gap: var(--gnn-1);
}

.galerie-slot + .galerie-slot::before {
  color: var(--gnn-muted);
  content: "›";
  display: inline-block;
}

.galerie-route {
  color: var(--gnn-muted);
  text-decoration: none;
}

.galerie-route:hover {
  color: var(--gnn-copy);
  text-decoration: underline;
}

/* ── lisere : premier écran (HERO-04) ─────────────────────────────── */
.lisere {
  background: var(--gnn-page);
  display: flex;
  flex-direction: column;
}

.lisere-track {
  display: block;
  list-style: none;
  padding: 0;
}

.lisere-slide {
  align-items: center;
  background-color: var(--gnn-pillar);
  background-image: linear-gradient(94deg, rgba(0, 12, 46, 0.88) 0%, rgba(0, 12, 46, 0.62) 52%, rgba(0, 12, 46, 0.3) 100%), var(--gnn-shot);
  background-position: center 42%;
  background-repeat: no-repeat;
  background-size: cover;
  display: none;
  min-height: 512px;
}

.lisere-slide:nth-child(2) { background-position: 22% 58%; }
.lisere-slide:nth-child(3) { background-position: 78% 34%; }

.lisere-lit { display: flex; }

.lisere-main { padding-block: var(--gnn-6); }

.lisere-caption {
  color: var(--gnn-copy);
  font-size: clamp(28px, 4.2vw, 46px);
  max-width: 14ch;
}

.lisere-sub {
  color: var(--gnn-copy);
  font-size: var(--gnn-md-2);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-3);
  max-width: var(--gnn-slim);
}

.lisere-over {
  color: var(--gnn-copy);
  display: block;
  font-family: var(--gnn-head);
  font-size: var(--gnn-sub);
  font-weight: 600;
  line-height: var(--gnn-base);
  max-width: var(--gnn-slim);
}

.lisere-pitch {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-3);
  margin-block-start: var(--gnn-4);
}

.lisere-go {
  align-items: center;
  border-radius: var(--gnn-pill);
  display: inline-flex;
  justify-content: center;
  min-height: 52px;
  padding-inline: var(--gnn-4);
  text-decoration: none;
}

.lisere-fine {
  color: var(--gnn-copy);
  font-size: var(--gnn-petite);
}

.lisere-controls {
  align-items: center;
  background: var(--gnn-pillar);
  display: flex;
  gap: var(--gnn-3);
  justify-content: center;
  padding-block: var(--gnn-2);
}

.lisere-step {
  align-items: center;
  background: transparent;
  border: var(--gnn-hair) solid var(--gnn-border-strong);
  border-radius: var(--gnn-orb);
  color: var(--gnn-copy);
  cursor: pointer;
  display: inline-flex;
  font-size: var(--gnn-sub);
  height: 44px;
  justify-content: center;
  transition: background var(--t-base) var(--gnn-exit), color var(--t-base) var(--gnn-exit);
  width: 44px;
}

.lisere-step:hover {
  background: var(--gnn-copy);
  color: var(--gnn-pillar);
}

.lisere-dots {
  align-items: center;
  display: flex;
  gap: var(--gnn-1);
}

.lisere-dot {
  background: var(--gnn-border-strong);
  border: 0;
  border-radius: var(--gnn-orb);
  cursor: pointer;
  height: 11px;
  padding: 0;
  transition: background var(--t-base) var(--gnn-exit);
  width: 11px;
}

.lisere-dot[aria-selected="true"] { background: var(--gnn-key-active); }

/* ── linteau : corps de texte (PROSE-18) ──────────────────────────── */
.linteau { padding-block: var(--gnn-5); }

.linteau-main { max-width: var(--gnn-text); }

.linteau-caption {
  font-size: var(--z-head);
  margin-block-start: 40px;
  text-align: start;
}

.linteau:first-of-type .linteau-caption,
.linteau-main > .linteau-caption:first-child { margin-block-start: 0; }

.linteau-box {
  border: var(--gnn-hair) solid var(--gnn-zest);
  border-radius: var(--r-4);
  display: inline-block;
  padding: 10px 18px;
  width: fit-content;
}

.linteau-para {
  color: var(--gnn-copy);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-3);
}

.linteau-roll,
.linteau-tally {
  color: var(--gnn-copy);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-3);
  padding-inline-start: var(--gnn-3);
}

.linteau-roll { list-style: none; }

.linteau-roll .linteau-slot {
  padding-block: 4px;
  padding-inline-start: var(--gnn-3);
  position: relative;
}

.linteau-roll .linteau-slot::before {
  background: var(--gnn-zest);
  border-radius: var(--gnn-orb);
  content: "";
  height: 7px;
  inset-block-start: 13px;
  inset-inline-start: 0;
  position: absolute;
  width: 7px;
}

.linteau-tally .linteau-slot { padding-block: 4px; }

.linteau-route { color: var(--gnn-zest); }

.linteau-figure {
  margin: var(--gnn-4) 0 0;
}

.linteau-image {
  border-radius: var(--r-5);
  display: block;
  height: auto;
  max-height: 440px;
  object-fit: cover;
  width: 100%;
}

.linteau-pitch {
  align-items: center;
  background: var(--gnn-raised);
  border-radius: var(--r-4);
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-3);
  justify-content: space-between;
  margin-block-start: var(--gnn-4);
  padding: var(--gnn-3);
}

.linteau-fine {
  color: var(--gnn-muted);
  flex: 1 1 320px;
  font-size: var(--gnn-micro);
  line-height: var(--gnn-base);
}

/* ── marque : titre de page (PHEAD-07) ────────────────────────────── */
.marque { padding-block: var(--gnn-5); }

.marque-frame {
  display: grid;
  gap: var(--gnn-5);
  grid-template-columns: 120px minmax(0, 1fr);
}

.marque-index {
  color: var(--gnn-zest);
  font-family: var(--gnn-head);
  font-size: 50px;
  font-weight: var(--gnn-bold);
  letter-spacing: var(--gnn-snug);
  line-height: 1;
}

.marque-main { min-width: 0; }

.marque-caption {
  color: var(--gnn-copy);
  font-size: clamp(26px, 3.2vw, 38px);
}

.marque-sub {
  color: var(--gnn-muted);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-3);
}

.marque + .quai { padding-block-start: var(--gnn-3); }

/* ── module : pages légales (LEGAL-04) ────────────────────────────── */
.module { padding-block: var(--gnn-5); }

.module-plate {
  background: var(--gnn-raised);
  border: var(--gnn-hair) solid var(--gnn-border);
  border-radius: var(--r-5);
  box-shadow: var(--d-3);
  color: var(--gnn-copy);
  padding: var(--gnn-4);
  position: relative;
}

.module-when {
  color: var(--gnn-muted);
  font-size: var(--gnn-micro);
  letter-spacing: var(--gnn-spread);
  text-transform: uppercase;
}

.module-lead {
  color: var(--gnn-copy);
  font-size: var(--gnn-md-2);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-3);
}

.module-part { margin-block-start: var(--gnn-4); }

.module-top {
  color: var(--gnn-zest);
  font-size: var(--gnn-sub);
}

.module-para {
  color: var(--gnn-copy);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-3);
}

.module-roll {
  color: var(--gnn-copy);
  display: grid;
  gap: var(--gnn-2);
  line-height: var(--gnn-open);
  list-style: none;
  margin-block-start: var(--gnn-3);
  padding: 0;
}

.module-roll .module-slot {
  padding-inline-start: var(--gnn-3);
  position: relative;
}

.module-roll .module-slot::before {
  background: var(--gnn-zest);
  content: "";
  height: 7px;
  inset-block-start: 10px;
  inset-inline-start: 0;
  position: absolute;
  width: 7px;
}

.module-note {
  border-inline-start: var(--gnn-heavy) solid var(--gnn-zest);
  color: var(--gnn-muted);
  font-size: var(--gnn-petite);
  line-height: var(--gnn-open);
  margin-block-start: var(--gnn-5);
  padding: var(--gnn-3);
}

.module-route { color: var(--gnn-zest); }

/* ── pilier : signature d'auteur (BYLINE-01) ──────────────────────── */
.pilier { padding-block: var(--gnn-4); }

.pilier-frame {
  align-items: center;
  border-block: var(--gnn-hair) solid var(--gnn-border);
  display: flex;
  gap: var(--gnn-3);
  padding-block: var(--gnn-3);
}

.pilier-headshot {
  border-radius: var(--gnn-orb);
  display: block;
  flex-shrink: 0;
  height: 56px;
  overflow: hidden;
  width: 56px;
}

.pilier-image {
  display: block;
  height: 56px;
  object-fit: cover;
  object-position: center 18%;
  width: 56px;
}

.pilier-main { min-width: 0; }

.pilier-credit {
  color: var(--gnn-muted);
  font-size: var(--gnn-petite);
}

.pilier-person {
  color: var(--gnn-zest);
  font-weight: var(--gnn-bold);
}

.pilier-position {
  color: var(--gnn-muted);
  font-size: var(--gnn-micro);
  font-style: italic;
  margin-block-start: var(--gnn-1);
}

.pilier-aside {
  color: var(--gnn-muted);
  font-size: var(--gnn-micro);
  margin-block-start: var(--gnn-1);
}

.pilier-when { color: var(--gnn-muted); }

/* ── quai : fiche auteur (AUTH-02) ────────────────────────────────── */
.quai { padding-block: var(--gnn-5); }

.quai-frame { text-align: center; }

.quai-headshot {
  background: var(--gnn-page);
  border: var(--gnn-heavy) solid var(--gnn-page);
  border-radius: var(--gnn-orb);
  box-sizing: content-box;
  display: block;
  height: 140px;
  margin-inline: auto;
  object-fit: cover;
  object-position: center 18%;
  width: 140px;
}

.quai-position {
  color: var(--gnn-zest);
  font-size: var(--gnn-petite);
  letter-spacing: var(--gnn-spread);
  margin-block-start: var(--gnn-5);
  text-transform: uppercase;
}

.quai-caption {
  color: var(--gnn-copy);
  font-size: var(--z-head);
  margin-block-start: var(--gnn-1);
}

.quai-para {
  color: var(--gnn-copy);
  line-height: var(--gnn-open);
  margin: var(--gnn-3) auto 0;
  max-width: var(--gnn-slim);
}

.quai-roll {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnn-2);
  justify-content: center;
  list-style: none;
  margin-block-start: var(--gnn-4);
  padding: 0;
}

.quai-roll .quai-slot {
  background: var(--gnn-raised);
  border: var(--gnn-hair) solid var(--gnn-border);
  border-radius: var(--gnn-pill);
  color: var(--gnn-copy);
  font-size: var(--gnn-petite);
  padding: 8px 16px;
}

/* ── vestibule : questions fréquentes (FAQ-09) ────────────────────── */
.vestibule { padding-block: var(--gnn-5); }

.vestibule-top {
  font-size: var(--z-head);
  margin-block-end: var(--gnn-4);
}

.vestibule-roll {
  display: grid;
  gap: var(--gnn-4);
}

.vestibule-slot {
  border-block-end: var(--gnn-hair) solid var(--gnn-border);
  padding-block-end: var(--gnn-3);
}

.vestibule-ask {
  align-items: baseline;
  cursor: pointer;
  display: grid;
  gap: var(--gnn-2);
  grid-template-columns: auto minmax(0, 1fr);
  list-style: none;
}

.vestibule-ask::-webkit-details-marker { display: none; }

.vestibule-mark {
  color: var(--gnn-zest);
  font-family: var(--gnn-head);
  font-size: var(--gnn-h5);
  font-weight: var(--gnn-bold);
}

.vestibule-word {
  color: var(--gnn-copy);
  font-family: var(--gnn-head);
  font-size: var(--gnn-md-2);
  font-style: italic;
  font-weight: var(--gnn-bold);
  margin: 0;
}

.vestibule-reply {
  display: grid;
  gap: var(--gnn-2);
  grid-template-columns: auto minmax(0, 1fr);
  margin-block-start: var(--gnn-2);
}

.vestibule-para {
  color: var(--gnn-muted);
  line-height: var(--gnn-open);
}

/* ── mobile / desktop-first overrides ─────────────────────────────── */
@media (max-width: 1139px) {
  .fiche-roll { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .classeur-lead { padding-inline: var(--gnn-pad-lg); }
  .classeur-routes { padding-inline: var(--gnn-pad-lg); }
  .marque-frame { grid-template-columns: 86px minmax(0, 1fr); gap: var(--gnn-4); }
  .marque-index { font-size: 38px; }
}

@media (max-width: 780px) {
  :root {
    --gnn-h1: 26px;
    --z-head: 22px;
    --gnn-sub: 18px;
    --gnn-md-2: 16px;
    --gnn-h5: 13px;
    --gnn-h6: 11px;
    --gnn-normal: 14px;
    --gnn-petite: 12px;
    --gnn-micro: 10px;
    --gnn-pad-lg: 16px;
  }

  .classeur-bar { display: none; }
  .classeur-toggle { display: inline-flex; }
  .classeur-lead { gap: var(--gnn-2); grid-template-columns: auto minmax(0, 1fr) auto; }
  .classeur-actions { justify-self: end; }
  .classeur-orb { height: var(--gnn-size-mobile); width: var(--gnn-size-mobile); }
  .classeur-image { height: 46px; width: 46px; }
  .classeur-word { display: none; }
  .classeur-go { font-size: var(--gnn-h5); padding-inline: var(--gnn-3); }

  .lisere-slide { min-height: 380px; }
  .lisere-main { padding-block: var(--gnn-5); }
  .lisere-caption { max-width: none; }

  .fiche-roll { grid-template-columns: minmax(0, 1fr); gap: var(--gnn-3); }
  .fiche-plate { padding: var(--gnn-3); }

  .bureau-roll { grid-template-columns: minmax(0, 1fr); }
  .bureau-star { padding: var(--gnn-3); }
  .bureau-star .bureau-pip { height: 20px; width: 20px; }

  .dossier { padding-block: var(--gnn-5); }
  .dossier-grid { grid-template-columns: minmax(0, 1fr); gap: var(--gnn-4); }
  .dossier-creed { flex-basis: 100%; text-align: start; }
  .dossier-crest { gap: var(--gnn-3); padding-block-end: var(--gnn-4); }

  .feuille-go { width: 100%; }
  .feuille-main { flex-basis: 100%; }

  .marque-frame { display: block; }
  .marque-index { display: block; font-size: 32px; margin-block-end: var(--gnn-1); }

  .module-plate { padding: var(--gnn-3); }

  .quai-headshot { height: 116px; width: 116px; }

  .vestibule-roll { gap: var(--gnn-3); }
}

@media (max-width: 720px) {
  .cahier,
  .cahier-copy {
    font-size: 13px !important;
    line-height: 1.35 !important;
  }

  .cahier {
    gap: 8px !important;
    inset-block-end: var(--gnn-2);
    inset-inline: var(--gnn-2);
    max-width: none;
    padding: 12px 14px !important;
  }

  .cahier-allow,
  .cahier-no {
    flex: 1 1 auto;
    font-size: 12px !important;
    min-height: 36px !important;
    padding: 8px 14px !important;
  }
}

@media (max-width: 540px) {
  .classeur-lead { gap: var(--gnn-1); }
  .classeur-orb { height: 44px; width: 44px; }
  .classeur-image { height: 36px; width: 36px; }
  .classeur-go { font-size: var(--gnn-petite); letter-spacing: 0.02em; padding-inline: var(--gnn-2); }
  .lisere-pitch { gap: var(--gnn-2); }
  .lisere-go { width: 100%; }
  .pilier-frame { flex-wrap: wrap; }
  .dossier-base { gap: var(--gnn-2); }
  .linteau-image { max-height: 260px; }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation: none !important;
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 1ms !important;
  }
}
.oriel-lead{display:inline-flex;align-items:center;justify-content:center;padding:0 var(--gnn-4);min-height:48px;border-radius:var(--gnn-pill);font-size:var(--gnn-h5);font-weight:600;letter-spacing:var(--gnn-spread)}
.oriel-lead{
  background:#C026D3;color:#FFFFFF;text-decoration:none;
  transition:background 0.28s ease,border-color 0.28s ease;}
.oriel-lead.oriel-lead{color:#FFFFFF;text-decoration:none;}
.oriel-lead:hover{background:#A21CAF;color:#FFFFFF;animation:none}
.oriel-lead.oriel-lead:hover{color:#FFFFFF;text-decoration:none}
.oriel-lead:hover::after{animation:none}
.oriel-lead:active{background:#86198F;color:#FFFFFF}
.oriel-lead:focus-visible{outline:3px solid #00227E;outline-offset:3px}
.oriel-lead{animation:oriel-sway 1.38s linear infinite}
@keyframes oriel-sway{0%{transform:scale(1);animation-timing-function:cubic-bezier(.25,.8,.35,1)}20.290%{transform:scale(1.055);animation-timing-function:cubic-bezier(.45,.05,.55,.95)}63.768%,100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.oriel-lead,.oriel-lead::after{animation:none!important;transition:none!important}}
.feuille .feuille-go { min-height: 56px; min-width: 220px; padding-inline: var(--gnn-4); }
.lisere .lisere-go { min-height: 52px; }
.classeur .classeur-go { min-height: 44px; }

@media (max-width: 808px) {
  .classeur-bar,
  .classeur-roll { display: none !important; }
  .classeur-toggle { display: flex !important; }
}
