/* Design system « Nice : escapades en famille — Guide Famille 2026/2027 » — préfixe nf-
   Origine de chaque jeton : RAPPORT.md (section Jetons). Aucune couleur ni taille hors jetons. */

/* Lexend : la police du PDF. Ses fichiers embarqués sont des sous-ensembles aux glyphes vides
   (lettres absentes à l'écran) : on charge la même famille chez Google Fonts. */
@import url('https://fonts.googleapis.com/css2?family=Lexend:wght@300;400;600;700;800&display=swap');


:root {
  /* Couleurs — valeurs exactes du PDF (source/analyse.json) et du rendu PDF de la brochure */
  --nf-bleu: #335b76;          /* bandeaux de chapitre, titres de fiche, themeColor Mongo */
  --nf-nuit: #172b49;          /* texte des cellules et titres de groupe (rendu PDF du 13/10) */
  --nf-ocean: #1d5b7b;         /* titres de couverture, texte bleu des pages, aplat du dos */
  --nf-jaune: #eeca49;         /* aplat jaune : bandeaux, vague de couverture */
  --nf-soleil: #fbcb3a;        /* titres jaunes sur bleu (sommaire, dos) */
  --nf-jaune-vif: #fac947;     /* bande jaune de la page « 7 communes » */
  --nf-orange: #ba6a23;        /* titres verticaux des bandeaux, encadrés « Bon à savoir » */
  --nf-beige: #fbf0e4;         /* encadré Bébés bienvenus, « Bon à savoir » */
  --nf-teal: #5ba098;          /* bandeau des publicités French Riviera Pass et my Adventure */
  --nf-noir: #000000;          /* texte courant des pages éditoriales */
  --nf-blanc: #ffffff;
  --nf-gris: #f6f6f6;          /* fond neutre des publicités (ajout web) */
  --nf-voile: rgba(23, 43, 73, 0.55);   /* voile nuit sous le texte posé sur photo */
  --nf-voile-fort: rgba(23, 43, 73, 0.82); /* fond des crédits photo */

  /* Police : Lexend (celle du PDF), Google Fonts */
  --nf-police: 'Lexend', system-ui, sans-serif;

  /* Échelle de texte (9 tailles, 12 px minimum) */
  --nf-t-xs: 12px;
  --nf-t-s: 14px;
  --nf-t-m: 16px;
  --nf-t-l: 18px;
  --nf-t-xl: 21px;
  --nf-t-2xl: 26px;
  --nf-t-3xl: clamp(28px, 3.4vw, 40px);
  --nf-t-4xl: clamp(30px, 3.6vw, 52px);
  --nf-t-5xl: clamp(36px, 5vw, 72px);

  /* Espaces */
  --nf-e-1: 4px; --nf-e-2: 8px; --nf-e-3: 12px; --nf-e-4: 16px; --nf-e-5: 24px; --nf-e-6: 32px; --nf-e-7: 48px; --nf-e-8: 72px;
  --nf-largeur: 1200px;
  --nf-barre: 60px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nf-barre) + var(--nf-e-2)); }
body {
  margin: 0; font-family: var(--nf-police); font-weight: 300; font-size: var(--nf-t-m); line-height: 1.5;
  color: var(--nf-nuit); background: var(--nf-blanc);
}
img { display: block; max-width: 100%; }
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
a { color: inherit; }
sup { line-height: 0; }
strong { font-weight: 700; }
.nf-dedans { width: 100%; max-width: var(--nf-largeur); margin: 0 auto; padding: 0 var(--nf-e-5); }
.nf-lecteur { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ------------------------------------------------------------ barre du haut (modèle art-shopping) */
.nf-outils {
  position: sticky; top: 0; z-index: 20; height: var(--nf-barre); padding: 0 var(--nf-e-4);
  display: flex; align-items: center; justify-content: flex-end; gap: var(--nf-e-2);
  background: var(--nf-blanc); box-shadow: 0 1px 0 var(--nf-jaune);
}
.nf-outils__sommaire {
  margin-right: auto; display: inline-flex; align-items: center; min-height: 44px; padding: 0 var(--nf-e-2);
  font-weight: 700; font-size: var(--nf-t-s); letter-spacing: .04em; color: var(--nf-bleu); text-decoration: none;
}
.nf-outils__sommaire:hover, .nf-outils__sommaire:focus-visible { color: var(--nf-orange); }
.nf-pdf {
  display: inline-flex; align-items: center; gap: var(--nf-e-2); min-height: 44px; padding: 0 var(--nf-e-4);
  border-radius: 999px; background: var(--nf-bleu); color: var(--nf-blanc); text-decoration: none;
  font-weight: 700; font-size: var(--nf-t-s);
}
.nf-pdf:hover, .nf-pdf:focus-visible { background: var(--nf-nuit); }
.nf-pdf svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
@media (max-width: 599px) { .nf-pdf span { display: none; } }
.nf-langues { display: flex; border: 2px solid var(--nf-bleu); border-radius: 999px; overflow: hidden; }
.nf-langues a {
  display: inline-block; min-width: 44px; padding: var(--nf-e-2) var(--nf-e-3); text-align: center; text-decoration: none;
  font-weight: 700; font-size: var(--nf-t-s); color: var(--nf-bleu);
}
.nf-langues a[aria-current] { background: var(--nf-bleu); color: var(--nf-blanc); }

/* ------------------------------------------------------------ couverture (page 1) */
.nf-couv {
  position: relative; height: calc(100svh - var(--nf-barre)); min-height: 520px; max-height: 1000px;
  display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; background: var(--nf-jaune);
}
.nf-couv__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; }
.nf-couv__cadre { position: absolute; inset: var(--nf-e-5); bottom: 0; border: 2px solid var(--nf-jaune); border-bottom: 0; pointer-events: none; }
.nf-couv__bas { position: relative; }
.nf-couv__vague { width: 100%; height: clamp(40px, 7vw, 110px); object-fit: fill; object-position: bottom; margin-bottom: -2px; }
.nf-couv__bloc {
  background: var(--nf-jaune); padding: 0 var(--nf-e-5) var(--nf-e-5);
  display: grid; grid-template-columns: 1fr auto; align-items: end; gap: var(--nf-e-4);
}
.nf-couv__bloc > div { max-width: var(--nf-largeur); }
.nf-couv h1 { font-weight: 800; font-size: var(--nf-t-5xl); line-height: 1.08; letter-spacing: .02em; color: var(--nf-ocean); }
.nf-couv h1 span { display: block; }
.nf-couv__edition {
  display: inline-block; margin-top: var(--nf-e-4); padding: 2px var(--nf-e-5); border: 2px solid var(--nf-blanc); border-radius: 999px;
  font-weight: 800; font-size: var(--nf-t-l); letter-spacing: .08em; color: var(--nf-blanc); white-space: nowrap;
}
@media (max-width: 499px) { .nf-couv__edition { font-size: var(--nf-t-s); padding: 2px var(--nf-e-4); } }
.nf-couv__logo { width: clamp(110px, 12vw, 170px); }
@media (min-width: 1000px) {
  .nf-couv__bloc { padding-left: max(var(--nf-e-7), calc((100% - var(--nf-largeur)) / 2 + var(--nf-e-5)));
                   padding-right: max(var(--nf-e-7), calc((100% - var(--nf-largeur)) / 2 + var(--nf-e-5))); }
}

/* ------------------------------------------------------------ bandeau jaune vertical (pages 2, 5, 6, 8, 10, 11, 13, 15, 16) */
/* Le dessin du PDF (bande étroite puis courbe et soleil) ; le titre est écrit à la verticale
   dans la partie étroite (52 % de la largeur du dessin). */
.nf-bande { position: absolute; left: 0; top: 0; bottom: 0; z-index: 1; }
.nf-bande > img { height: 100%; width: auto; max-width: none; }
.nf-bande__titre {
  position: absolute; left: 0; top: 0; width: 52%; height: 62%; display: flex; align-items: center; justify-content: center;
}
.nf-bande__titre > * {
  writing-mode: vertical-rl; transform: rotate(180deg); white-space: nowrap;
  font-weight: 800; letter-spacing: .06em; color: var(--nf-orange); line-height: 1;
}

/* ------------------------------------------------------------ ouverture de chapitre */
.nf-ouv { position: relative; height: min(88svh, 820px); min-height: 460px; overflow: hidden; background: var(--nf-jaune); }
.nf-ouv .nf-bande__titre h2 { font-size: calc(min(88svh, 820px) * .045); }
.nf-ouv__photo { position: absolute; top: 0; right: 0; bottom: 0; left: calc(min(88svh, 820px) * .196 * .5); }
.nf-ouv__photo img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 699px) {
  .nf-ouv { height: 72svh; }
  .nf-ouv .nf-bande__titre h2 { font-size: max(19px, calc(72svh * .041)); }
  .nf-ouv__photo { left: calc(72svh * .196 * .5); }
}

/* ------------------------------------------------------------ photo pleine page (pages 7, 9, 12) */
.nf-photo { height: min(80svh, 760px); min-height: 380px; overflow: hidden; }
.nf-photo img { width: 100%; height: 100%; object-fit: cover; }

/* ------------------------------------------------------------ Famille Plus (page 2) */
.nf-fp { position: relative; padding-left: 0; }
.nf-fp .nf-bande { width: 200px; }
.nf-fp .nf-bande__titre { height: 45%; }
.nf-fp .nf-bande__titre h2 { font-size: var(--nf-t-3xl); }
.nf-fp__contenu { margin-left: 104px; }
.nf-fp__tete { position: relative; }
.nf-fp__tete > img { width: 100%; height: clamp(220px, 30vw, 380px); object-fit: cover; object-position: 50% 40%; }
.nf-fp__logo {
  position: relative; z-index: 2; width: clamp(170px, 18vw, 230px); aspect-ratio: 1; margin: calc(clamp(170px, 18vw, 230px) * -.5) auto 0;
  border-radius: 50%; background: var(--nf-blanc); display: grid; place-items: center; padding: 14%;
}
.nf-fp__corps { max-width: 820px; margin: 0 auto; padding: var(--nf-e-5) var(--nf-e-5) var(--nf-e-7); font-size: var(--nf-t-l); color: var(--nf-noir); }
.nf-fp__corps > * + * { margin-top: var(--nf-e-5); }
.nf-fp__corps strong, .nf-fp__bleu { color: var(--nf-ocean); }
.nf-fp__bleu { font-weight: 700; }
.nf-fp__liste li { display: flex; gap: var(--nf-e-2); }
.nf-fp__liste span:first-child { flex: none; min-width: 2.2em; font-weight: 700; color: var(--nf-ocean); }
.nf-fp__bebes {
  display: grid; grid-template-columns: 96px 1fr; gap: var(--nf-e-5); align-items: center;
}
.nf-fp__bebes img { width: 96px; }
.nf-fp__bebes div { background: var(--nf-beige); padding: var(--nf-e-4) var(--nf-e-5); color: var(--nf-orange); }
.nf-fp__bebes strong { color: var(--nf-orange); }
.nf-fp__remarques { color: var(--nf-ocean); }
.nf-fp__remarques a { font-weight: 600; }
@media (max-width: 699px) {
  .nf-fp .nf-bande { width: 120px; }
  .nf-fp__contenu { margin-left: 62px; }
  .nf-fp__corps { padding: var(--nf-e-4) var(--nf-e-4) var(--nf-e-6); font-size: var(--nf-t-m); }
  .nf-fp__bebes { grid-template-columns: 1fr; }
  .nf-fp__bebes img { width: 84px; }
}

/* ------------------------------------------------------------ légende (section « legend » Mongo) */
.nf-legende { padding: var(--nf-e-8) 0; }
.nf-legende__grille { display: grid; grid-template-columns: 1fr 1fr; gap: var(--nf-e-6); align-items: center; }
.nf-legende__photo { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; }
.nf-legende h2 { font-weight: 700; font-size: var(--nf-t-2xl); color: var(--nf-nuit); padding-bottom: var(--nf-e-2); border-bottom: 2px solid var(--nf-nuit); }
.nf-legende ul { display: grid; grid-template-columns: 1fr 1fr; gap: var(--nf-e-4) var(--nf-e-5); margin-top: var(--nf-e-5); }
.nf-legende li { display: flex; align-items: center; gap: var(--nf-e-3); font-size: var(--nf-t-m); }
.nf-legende li img { width: 34px; height: 30px; object-fit: contain; flex: none; }
@media (max-width: 799px) {
  .nf-legende { padding: var(--nf-e-6) 0; }
  .nf-legende__grille { grid-template-columns: 1fr; }
  .nf-legende ul { grid-template-columns: 1fr; }
}

/* ------------------------------------------------------------ sommaire (page 3) */
.nf-som { position: relative; overflow: hidden; color: var(--nf-blanc); }
.nf-som__fond { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 100%; }
.nf-som::after { content: ''; position: absolute; inset: 0 0 auto 0; height: 75%; background: linear-gradient(var(--nf-voile), transparent); }
.nf-som .nf-dedans { position: relative; z-index: 1; padding-top: var(--nf-e-8); padding-bottom: clamp(260px, 32vw, 460px); }
.nf-som h2 { font-weight: 700; font-size: var(--nf-t-4xl); letter-spacing: .04em; color: var(--nf-soleil); margin-bottom: var(--nf-e-5); }
.nf-som__colonnes { columns: 2; column-gap: var(--nf-e-7); }
.nf-som__chap { break-inside: avoid; margin-bottom: var(--nf-e-5); }
.nf-som__chap > a { display: inline-block; font-weight: 700; font-size: var(--nf-t-xl); text-decoration: none; padding: 2px 0; }
.nf-som li a { display: inline-block; padding: 3px 0; text-decoration: none; font-weight: 600; font-size: var(--nf-t-m); }
.nf-som li { padding-left: 1.3em; position: relative; }
.nf-som li::before { content: '–'; position: absolute; left: 0; top: 3px; }
.nf-som li li a { font-weight: 300; font-style: italic; }
.nf-som a:hover, .nf-som a:focus-visible { color: var(--nf-soleil); }
@media (max-width: 799px) { .nf-som__colonnes { columns: 1; } .nf-som .nf-dedans { padding-top: var(--nf-e-6); } }

/* ------------------------------------------------------------ publicités (pages 4 et 14) : à part, sur fond neutre */
.nf-pub-zone { background: var(--nf-gris); padding: var(--nf-e-7) var(--nf-e-4); }
.nf-pub { position: relative; max-width: 980px; margin: 0 auto; overflow: hidden; color: var(--nf-blanc); }
.nf-pub__visuel { position: relative; min-height: 560px; }
.nf-pub__fond { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.nf-pub__bas {
  position: relative; background: var(--nf-teal); display: grid; grid-template-columns: auto 1fr auto; gap: var(--nf-e-5);
  align-items: center; padding: var(--nf-e-5) var(--nf-e-6);
}
.nf-pub__qr { width: 104px; }
.nf-pub__credit { position: absolute; right: var(--nf-e-2); bottom: var(--nf-e-2); z-index: 1; font-size: var(--nf-t-xs); writing-mode: vertical-rl; transform: rotate(180deg); }
/* French Riviera Pass */
.nf-frp .nf-pub__fond { object-position: 78% 30%; }
.nf-frp__texte { position: relative; z-index: 1; padding: var(--nf-e-6); max-width: 440px; }
.nf-frp__logo { width: 210px; }
.nf-frp__slogan { margin-top: var(--nf-e-7); font-weight: 800; font-size: var(--nf-t-4xl); line-height: 1.12; letter-spacing: .02em; }
.nf-frp__slogan span { display: block; }
.nf-frp__slogan .nf-frp__jaune { color: var(--nf-soleil); }
.nf-frp__anglais { margin-top: var(--nf-e-4); font-weight: 600; font-style: italic; font-size: var(--nf-t-l); line-height: 1.3; }
.nf-frp__anglais span { display: block; }
.nf-frp__cartes { position: relative; width: 200px; margin-top: calc(var(--nf-e-8) * -1.6); margin-bottom: calc(var(--nf-e-5) * -1); align-self: end; }
.nf-frp__prix { position: absolute; inset: 0; }
.nf-frp__prix span {
  position: absolute; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%;
  font-weight: 700; font-size: var(--nf-t-s); color: var(--nf-blanc); background: var(--nf-ocean);
}
.nf-frp__prix span:nth-child(1) { left: 10%; top: 0; }
.nf-frp__prix span:nth-child(2) { left: 46%; top: 0; background: var(--nf-teal); }
.nf-frp__prix span:nth-child(3) { left: 74%; top: 10%; background: var(--nf-soleil); color: var(--nf-nuit); }
.nf-frp .nf-pub__bas { grid-template-columns: 200px auto 1fr; }
.nf-pub__acces { font-weight: 700; font-size: var(--nf-t-xl); line-height: 1.25; }
.nf-pub__acces + p { font-size: var(--nf-t-s); margin-top: var(--nf-e-1); }
.nf-pub__site { display: inline-block; margin-top: var(--nf-e-2); font-weight: 700; font-size: var(--nf-t-l); color: var(--nf-ocean); text-decoration: none; }
.nf-pub__site:hover { text-decoration: underline; }
/* my Adventure */
.nf-mya .nf-pub__fond { object-position: 50% 55%; }
.nf-mya .nf-pub__visuel { display: flex; flex-direction: column; justify-content: space-between; padding: var(--nf-e-6) var(--nf-e-6) var(--nf-e-7); min-height: 620px; }
.nf-mya__logo { position: relative; width: min(470px, 90%); margin: 0 auto; }
.nf-mya__question { position: relative; text-align: center; font-weight: 700; font-size: var(--nf-t-3xl); line-height: 1.2; color: var(--nf-soleil); text-shadow: 0 1px 12px var(--nf-voile); }
.nf-mya__lignes p:first-child { font-weight: 700; color: var(--nf-soleil); font-size: var(--nf-t-l); }
.nf-mya__lignes p { font-size: var(--nf-t-l); line-height: 1.35; }
.nf-mya__office { display: grid; justify-items: center; gap: var(--nf-e-2); }
.nf-mya__office img { width: 150px; }
.nf-pilule {
  display: inline-block; padding: 2px var(--nf-e-4); border: 2px solid currentColor; border-radius: 999px;
  font-weight: 700; font-size: var(--nf-t-s); letter-spacing: .04em; text-decoration: none;
}
@media (max-width: 799px) {
  .nf-pub-zone { padding: var(--nf-e-6) 0; }
  .nf-pub__bas, .nf-frp .nf-pub__bas { grid-template-columns: auto 1fr; padding: var(--nf-e-5); }
  .nf-frp .nf-pub__fond { object-position: 82% 20%; opacity: 1; }
  .nf-frp .nf-pub__visuel { min-height: 640px; }
  .nf-frp__texte { padding: var(--nf-e-5); max-width: 62%; }
  .nf-frp__logo { width: 150px; }
  .nf-frp__slogan { margin-top: var(--nf-e-6); }
  .nf-frp__cartes { grid-column: 1 / -1; width: 170px; margin: calc(var(--nf-e-8) * -1.8) 0 0; }
  .nf-pub__qr { width: 88px; }
  .nf-mya__office { grid-column: 1 / -1; justify-items: start; grid-auto-flow: column; align-items: center; justify-content: start; }
  .nf-mya__office img { width: 110px; }
  .nf-mya .nf-pub__visuel { min-height: 560px; padding: var(--nf-e-5) var(--nf-e-4) var(--nf-e-6); }
}

/* ------------------------------------------------------------ section d'activités : bandeau, groupes, cellules */
.nf-chap { padding-bottom: var(--nf-e-7); }
.nf-chap__tete { display: grid; grid-template-columns: auto 1fr; gap: var(--nf-e-5); align-items: center; padding-top: var(--nf-e-6); }
.nf-chap__tete img { width: 92px; }
.nf-chap__tete h2 {
  background: var(--nf-bleu); color: var(--nf-blanc); text-align: center; padding: var(--nf-e-4) var(--nf-e-5);
  font-weight: 600; font-size: var(--nf-t-xl); letter-spacing: .03em;
}
.nf-groupe { margin-top: var(--nf-e-6); }
.nf-groupe__tete { position: relative; display: grid; place-items: center; min-height: 160px; overflow: hidden; }
.nf-groupe__tete img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.nf-groupe__tete--photo { aspect-ratio: 2.45; }
.nf-groupe__tete h3 {
  position: relative; background: var(--nf-blanc); color: var(--nf-nuit); padding: var(--nf-e-4) var(--nf-e-5); margin: var(--nf-e-4);
  font-weight: 700; font-size: var(--nf-t-2xl); text-align: center; line-height: 1.2; max-width: 90%;
}
.nf-groupe__tete:not(.nf-groupe__tete--photo) { min-height: 0; }
.nf-groupe__tete:not(.nf-groupe__tete--photo) h3 { margin: 0; padding: 0; justify-self: start; text-align: left; }
.nf-grille { display: grid; grid-template-columns: 1fr 1fr; gap: var(--nf-e-6) var(--nf-e-6); margin-top: var(--nf-e-6); }
.nf-grille > .nf-plein { grid-column: 1 / -1; }
@media (max-width: 1099px) { .nf-grille { grid-template-columns: 1fr; } }

/* Cellule d'activité (une seule, cellule.js) — style du rendu PDF : photos à gauche, texte à droite */
.nf-cellule { display: grid; grid-template-columns: minmax(0, 40%) minmax(0, 1fr); gap: var(--nf-e-5); align-items: start; }
.nf-cellule__photos { display: grid; gap: var(--nf-e-2); }
.nf-cellule__photos figure { position: relative; }
.nf-cellule__photos img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: var(--nf-beige); }
.nf-cellule__photos figcaption {
  position: absolute; left: 0; bottom: 0; max-width: 100%; padding: 2px var(--nf-e-2);
  font-size: var(--nf-t-xs); line-height: 1.3; color: var(--nf-blanc); background: var(--nf-voile);
}
.nf-cellule__titre { font-weight: 600; font-size: var(--nf-t-xl); line-height: 1.25; color: var(--nf-bleu); }
.nf-cellule__etoiles { white-space: nowrap; letter-spacing: .05em; font-size: var(--nf-t-m); vertical-align: 2px; }
.nf-cellule__corps > * + * { margin-top: var(--nf-e-2); }
.nf-cellule__desc { white-space: pre-line; }
.nf-cellule__info { display: grid; grid-template-columns: 18px 1fr; gap: var(--nf-e-2); align-items: start; white-space: pre-line; }
.nf-cellule__info svg { width: 18px; height: 18px; margin-top: 3px; stroke: var(--nf-nuit); }
.nf-cellule__info--gras { font-weight: 700; }
.nf-cellule__info a { text-decoration: none; overflow-wrap: anywhere; display: inline-block; min-height: 24px; }
.nf-cellule__info a:hover, .nf-cellule__info a:focus-visible { text-decoration: underline; color: var(--nf-bleu); }
.nf-cellule__pictos { display: flex; flex-wrap: wrap; gap: var(--nf-e-3); align-items: center; padding-top: var(--nf-e-2); }
.nf-cellule__pictos img { height: 26px; width: auto; max-width: 64px; object-fit: contain; }
@media (min-width: 700px) and (max-width: 1099px) { .nf-cellule { grid-template-columns: minmax(0, 36%) minmax(0, 1fr); } }
@media (max-width: 699px) {
  .nf-cellule { grid-template-columns: 1fr; gap: var(--nf-e-3); }
  .nf-cellule__photos { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); }
}

/* Encarts de la brochure : image, ou texte recomposé (« Bon à savoir ») */
.nf-encart img { width: 100%; height: auto; }
.nf-encart--texte { color: var(--nf-noir); }
.nf-encart--texte > * + * { margin-top: var(--nf-e-5); }
.nf-encart--texte h4 { font-weight: 600; font-size: var(--nf-t-xl); color: var(--nf-ocean); }
.nf-encart--texte .nf-bon { background: var(--nf-beige); padding: var(--nf-e-3) var(--nf-e-4); margin-top: var(--nf-e-3); }
.nf-encart--texte .nf-bon h5 { margin: 0; font-weight: 600; font-size: var(--nf-t-m); color: var(--nf-orange); }
.nf-encart--texte a { color: var(--nf-ocean); font-weight: 600; overflow-wrap: anywhere; }
.nf-encart--texte p + p { margin-top: var(--nf-e-1); }
.nf-encart--seul { background: var(--nf-beige); padding: var(--nf-e-5); }
.nf-encart--seul h4 { color: var(--nf-orange); font-size: var(--nf-t-m); }
.nf-encart__pied { display: inline-block; font-weight: 600; font-size: var(--nf-t-l); color: var(--nf-ocean); text-decoration: none; }

/* ------------------------------------------------------------ 7 communes labellisées (page 17) */
.nf-com { position: relative; overflow: hidden; color: var(--nf-blanc); min-height: min(92svh, 860px); display: flex; flex-direction: column; justify-content: space-between; }
.nf-com__fond { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%; }
.nf-com::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 60%; background: linear-gradient(var(--nf-voile), transparent); z-index: 0; }
.nf-com__cadre { position: absolute; inset: var(--nf-e-5); border: 2px solid var(--nf-jaune); pointer-events: none; z-index: 1; }
.nf-com__haut { position: relative; z-index: 1; padding-top: var(--nf-e-8); }
.nf-com__lieu { display: flex; align-items: center; gap: var(--nf-e-2); font-weight: 700; font-size: var(--nf-t-xl); letter-spacing: .04em; color: var(--nf-soleil); }
.nf-com__lieu img { width: 16px; }
.nf-com h2 { margin-top: var(--nf-e-3); font-weight: 800; font-size: var(--nf-t-4xl); line-height: 1.15; letter-spacing: .02em; }
.nf-com h2 span { display: block; }
.nf-com__boite {
  display: inline-grid; grid-template-columns: auto 1fr; gap: var(--nf-e-4); align-items: center; margin-top: var(--nf-e-5);
  background: var(--nf-beige); color: var(--nf-ocean); padding: var(--nf-e-3) var(--nf-e-5) var(--nf-e-3) var(--nf-e-3);
}
.nf-com__boite img { width: 92px; }
.nf-com__boite h3 { font-weight: 700; font-size: var(--nf-t-m); color: var(--nf-orange); }
.nf-com__boite p { font-weight: 600; font-size: var(--nf-t-s); line-height: 1.45; }
.nf-com__credit { position: absolute; right: var(--nf-e-6); bottom: 40%; z-index: 1; font-size: var(--nf-t-xs); writing-mode: vertical-rl; transform: rotate(180deg); }
.nf-com__bas { position: relative; z-index: 2; }
.nf-com__vague { width: 100%; height: clamp(40px, 7vw, 110px); object-fit: fill; margin-bottom: -2px; }
.nf-com__bande { background: var(--nf-jaune); color: var(--nf-nuit); }
.nf-com__bande .nf-dedans { display: grid; grid-template-columns: auto 1fr auto; gap: var(--nf-e-5); align-items: center; padding-top: var(--nf-e-3); padding-bottom: var(--nf-e-5); }
.nf-com__logo { width: 140px; margin-top: -120px; }
.nf-com__liens { display: grid; justify-items: end; gap: var(--nf-e-2); }
.nf-com__reseaux { display: flex; align-items: center; gap: var(--nf-e-2); font-weight: 600; font-size: var(--nf-t-s); }
.nf-com__reseaux img { height: 16px; width: auto; }
.nf-com__qr { width: 92px; }
@media (max-width: 699px) {
  .nf-com__haut { padding-top: var(--nf-e-7); }
  .nf-com__boite { grid-template-columns: 1fr; }
  .nf-com__boite img { width: 76px; }
  .nf-com__bande .nf-dedans { grid-template-columns: 1fr auto; }
  .nf-com__logo { width: 110px; margin-top: 0; grid-column: 1 / -1; }
  .nf-com__liens { justify-items: start; }
  .nf-com__credit { right: var(--nf-e-5); }
}

/* ------------------------------------------------------------ dos : Office de Tourisme (page 18) */
.nf-dos { background: var(--nf-ocean); color: var(--nf-blanc); }
.nf-dos__photo { position: relative; }

.nf-dos__vague { position: absolute; left: 0; right: 0; bottom: -1px; width: 100%; height: clamp(36px, 6vw, 90px); object-fit: fill; }
.nf-dos__credit-photo { position: absolute; right: var(--nf-e-2); top: var(--nf-e-5); font-size: var(--nf-t-xs); writing-mode: vertical-rl; transform: rotate(180deg); }
.nf-dos .nf-dedans { padding-top: var(--nf-e-5); padding-bottom: var(--nf-e-6); }
.nf-dos h2 { font-weight: 700; font-size: var(--nf-t-3xl); line-height: 1.2; letter-spacing: .02em; }
.nf-dos h2 span { display: block; }
.nf-dos__coord { margin-top: var(--nf-e-4); display: flex; flex-wrap: wrap; gap: var(--nf-e-2) var(--nf-e-4); align-items: center; font-size: var(--nf-t-m); }
.nf-dos__coord a { text-decoration: none; display: inline-block; min-height: 24px; }
.nf-dos__coord .nf-sep { color: var(--nf-soleil); }
.nf-dos__colonnes { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--nf-e-6); margin-top: var(--nf-e-6); }
.nf-dos h3 { font-weight: 700; font-size: var(--nf-t-xl); line-height: 1.2; color: var(--nf-soleil); }
.nf-dos h3 span { display: block; }
.nf-dos__jaune { color: var(--nf-soleil); font-weight: 600; }
.nf-dos__periode { margin-top: var(--nf-e-4); }
.nf-dos__periode h4 { font-weight: 700; font-size: var(--nf-t-m); }
.nf-dos__qr { width: 110px; margin-top: var(--nf-e-4); }
.nf-dos__reseaux li { display: flex; align-items: center; gap: var(--nf-e-2); margin-top: var(--nf-e-2); }
.nf-dos__reseaux img { width: 16px; }
.nf-dos__logos { display: flex; gap: var(--nf-e-6); align-items: center; margin-top: var(--nf-e-7); }
.nf-dos__logos img:first-child { width: 170px; }
.nf-dos__logos img:last-child { width: 100px; }
.nf-dos__credits { margin-top: var(--nf-e-5); font-size: var(--nf-t-xs); }
@media (max-width: 799px) { .nf-dos__colonnes { grid-template-columns: 1fr; } }
.nf-cellule__suite summary { cursor: pointer; font-weight: 600; color: var(--nf-bleu); min-height: 24px; }
.nf-cellule__suite[open] summary { display: none; }
.nf-cellule__suite[open] { margin-top: 0; }
.nf-cellule__desc + .nf-cellule__suite[open] { display: block; }
.nf-cellule__corps div:has(> .nf-cellule__suite[open]) > .nf-cellule__desc { display: none; }
.nf-groupe__tete { grid-template-columns: minmax(0, 1fr); }
.nf-groupe__tete h3 { min-width: 0; overflow-wrap: anywhere; justify-self: center; }

/* Publicités : à leurs proportions d'origine (page A5), centrées sur le fond neutre */
.nf-pub { max-width: 640px; }
.nf-pub__visuel { min-height: 0; }
.nf-frp .nf-pub__visuel { aspect-ratio: 420 / 490; }
.nf-mya .nf-pub__visuel { aspect-ratio: 420 / 465; min-height: 0; }
.nf-frp .nf-pub__fond, .nf-mya .nf-pub__fond { object-position: 50% 0; }
.nf-frp__texte { padding: 7% 0 0 8%; max-width: 58%; }
.nf-frp__logo { width: 52%; }
.nf-frp__slogan { margin-top: 26%; font-size: var(--nf-t-3xl); }
.nf-frp__anglais { font-size: var(--nf-t-m); }
.nf-frp .nf-pub__bas { grid-template-columns: 34% auto 1fr; gap: var(--nf-e-4); padding: var(--nf-e-4) var(--nf-e-5) var(--nf-e-4) var(--nf-e-3); }
.nf-frp__cartes { width: 100%; margin: -40% 0 -4%; }
.nf-pub__qr { width: 88px; }
.nf-pub__acces { font-size: var(--nf-t-l); }
.nf-mya .nf-pub__visuel { padding: 5% 5% 6%; }
.nf-mya__logo { width: 76%; }
.nf-mya__question { font-size: var(--nf-t-2xl); }
.nf-mya .nf-pub__bas { grid-template-columns: auto 1fr auto; }
.nf-mya__office img { width: 120px; }
@media (max-width: 799px) {
  .nf-pub-zone { padding: var(--nf-e-6) 0; }
  .nf-frp .nf-pub__visuel, .nf-mya .nf-pub__visuel { min-height: 0; }
  .nf-frp__texte { padding: 7% 0 0 6%; max-width: 62%; }
  .nf-frp__logo { width: 52%; }
  .nf-frp__slogan { margin-top: 22%; }
  .nf-frp .nf-pub__bas { grid-template-columns: 30% auto 1fr; }
  .nf-frp__cartes { grid-column: auto; width: 100%; margin: -46% 0 -4%; }
  .nf-frp__prix span { width: 34px; height: 34px; font-size: var(--nf-t-xs); }
  .nf-pub__qr { width: 70px; }
  .nf-pub__acces { font-size: var(--nf-t-m); }
  .nf-mya .nf-pub__bas { grid-template-columns: auto 1fr; }
  .nf-mya__question { font-size: var(--nf-t-xl); }
}
.nf-fp__logo img { width: 100%; height: auto; }
.nf-som__fond { object-position: 50% 0; }
.nf-frp .nf-pub__bas { grid-template-columns: 34% auto minmax(0, 1fr); }
.nf-pub__bas > div { min-width: 0; overflow-wrap: anywhere; }
.nf-mya .nf-pub__bas { grid-template-columns: auto minmax(0, 1fr) auto; }
.nf-mya .nf-pilule { font-size: var(--nf-t-xs); padding: 2px var(--nf-e-3); }
.nf-mya__lignes p { font-size: var(--nf-t-m); }
.nf-mya__lignes p:first-child { font-size: var(--nf-t-m); }
@media (max-width: 799px) {
  .nf-frp .nf-pub__bas { grid-template-columns: 30% auto minmax(0, 1fr); padding: var(--nf-e-3); gap: var(--nf-e-3); }
  .nf-pub__acces { font-size: var(--nf-t-s); }
  .nf-pub__acces + p { font-size: var(--nf-t-xs); }
  .nf-pub__site { font-size: var(--nf-t-xs); }
  .nf-mya .nf-pub__bas { grid-template-columns: auto minmax(0, 1fr); }
}
/* Famille Plus : bandeau de largeur fixe (voir editorial.js) */
.nf-fp { --bande: 200px; }
.nf-fp__bande {
  position: absolute; left: 0; top: 0; bottom: 0; width: var(--bande);
  background-repeat: no-repeat, no-repeat; background-position: left bottom, left top; background-size: 100% auto, 100% 100%;
}
.nf-fp__bande .nf-bande__titre { height: min(60%, 520px); }
.nf-fp__bande h2 { font-size: var(--nf-t-3xl); }
.nf-fp__contenu { margin-left: calc(var(--bande) * .52); }
.nf-fp__corps { padding-left: calc(var(--bande) * .5 + var(--nf-e-5)); }
@media (max-width: 1099px) { .nf-fp__corps { padding-left: calc(var(--bande) * .5 + var(--nf-e-4)); } }
@media (max-width: 699px) {
  .nf-fp { --bande: 92px; }
  .nf-fp__bande h2 { font-size: var(--nf-t-2xl); }
  .nf-fp__corps { padding-left: calc(var(--bande) * .5 + var(--nf-e-3)); padding-right: var(--nf-e-4); }
}
.nf-fp__logo { display: flex; align-items: center; justify-content: center; width: clamp(170px, 18vw, 230px); height: clamp(170px, 18vw, 230px); }
.nf-fp__logo img { width: 100%; min-width: 0; }
.nf-fp__logo { padding: 0; }
.nf-fp__logo img { width: 72%; }

/* Corrections après la première vérification */
.nf-couv__vague, .nf-com__vague { height: auto; object-fit: initial; }
.nf-dos__vague { height: auto; object-fit: initial; }
.nf-groupe__tete { min-height: 0; }
.nf-groupe__tete--photo { aspect-ratio: 2.45; }
@media (max-width: 699px) { .nf-groupe__tete--photo { aspect-ratio: 1.6; } .nf-groupe__tete h3 { font-size: var(--nf-t-xl); } }
.nf-som__fond { position: absolute; inset: 0; }
.nf-pub__visuel { background-color: var(--nf-orange); }
.nf-mya .nf-pub__visuel { background-color: var(--nf-teal); }
.nf-com { background-color: var(--nf-ocean); }
.nf-com::before { display: none; }
.nf-dos__photo { height: clamp(300px, 42vw, 560px); }
.nf-fp__corps { max-width: 1060px; }
.nf-fp__col > * + * { margin-top: var(--nf-e-5); }
@media (min-width: 1100px) {
  .nf-fp__corps { display: grid; grid-template-columns: 1fr 1fr; gap: var(--nf-e-7); align-items: start; }
  .nf-fp__corps > * + * { margin-top: 0; }
}
.nf-encart--blocs { display: grid; grid-template-columns: 1fr 1fr; gap: var(--nf-e-5) var(--nf-e-7); }
.nf-encart--blocs > * + * { margin-top: 0; }
.nf-encart--blocs > .nf-encart__pied { grid-column: 1 / -1; }
.nf-encart--seul { max-width: 820px; }
@media (max-width: 899px) { .nf-encart--blocs { grid-template-columns: 1fr; } }
.nf-dos__credits { max-width: 820px; }
.nf-dos__signe { width: 16px; text-align: center; font-weight: 700; }
.nf-cellule__photos figcaption { background: var(--nf-voile-fort); }
.nf-grille { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 1099px) { .nf-grille { grid-template-columns: minmax(0, 1fr); } }
.nf-cellule__corps { min-width: 0; overflow-wrap: anywhere; }
.nf-fp__remarques a, .nf-encart--texte a { display: inline-block; min-height: 24px; }
.nf-encart--seul { max-width: 760px; }
.nf-dos__credits { max-width: 680px; }
@media (min-width: 1100px) { .nf-fp__col + .nf-fp__col { padding-top: var(--nf-e-2); } }
.nf-som::after { display: none; }
.nf-com__haut { padding-left: calc(var(--nf-e-5) + var(--nf-e-5)); padding-right: calc(var(--nf-e-5) + var(--nf-e-5)); }
@media (max-width: 699px) { .nf-com h2 { font-size: var(--nf-t-2xl); } }
.nf-dos__credits { max-width: 560px; }
.nf-groupe__texte { background: var(--nf-beige); color: var(--nf-noir); padding: var(--nf-e-4) var(--nf-e-5); font-size: var(--nf-t-l); }
@media (max-width: 699px) { .nf-groupe__texte { font-size: var(--nf-t-m); } }
/* Titre vertical : trois tailles selon la longueur (editorial.js), toujours entier dans le bandeau */
.nf-ouv .nf-bande__titre h2.nf-bande--court { font-size: var(--nf-t-3xl); }
.nf-ouv .nf-bande__titre h2.nf-bande--moyen { font-size: var(--nf-t-2xl); }
.nf-ouv .nf-bande__titre h2.nf-bande--long { font-size: var(--nf-t-xl); }
@media (max-width: 699px) {
  .nf-ouv .nf-bande__titre h2.nf-bande--court { font-size: var(--nf-t-2xl); }
  .nf-ouv .nf-bande__titre h2.nf-bande--moyen { font-size: var(--nf-t-xl); }
  .nf-ouv .nf-bande__titre h2.nf-bande--long { font-size: var(--nf-t-l); }
}

/* Corrections après la revue indépendante (tour 1) */
.nf-couv__photo { object-position: 50% 45%; }
.nf-couv__cadre { border-color: var(--nf-soleil); }
.nf-fp__corps { max-width: none; margin: 0; padding-right: var(--nf-e-6); }
@media (min-width: 1100px) {
  .nf-fp__corps { padding-left: calc(var(--bande) * .5 + var(--nf-e-6)); grid-template-columns: 1fr 1fr; max-width: 1180px; }
  .nf-fp__bebes { grid-column: 1 / -1; grid-template-columns: 110px 1fr; gap: var(--nf-e-4); }
  .nf-fp__bebes img { width: 110px; }
}
.nf-fp__remarques a { font-weight: 300; }
.nf-fp__bebes div { font-size: var(--nf-t-m); }
@media (min-width: 700px) { .nf-fp__bebes div { font-size: var(--nf-t-l); } }
.nf-som .nf-dedans { padding-bottom: clamp(220px, 24vw, 340px); }
@media (max-width: 799px) { .nf-som .nf-dedans { padding-bottom: var(--nf-e-7); } }
.nf-pilule, .nf-pub__site { white-space: nowrap; }
.nf-pub__site { font-size: var(--nf-t-m); }
@media (max-width: 799px) { .nf-pub__site { font-size: var(--nf-t-xs); } .nf-pilule { font-size: var(--nf-t-xs); padding: 2px var(--nf-e-2); } }
.nf-cellule__pictos img { height: 30px; max-width: 72px; }
@media (max-width: 699px) { .nf-chap__tete h2 { font-size: var(--nf-t-m); padding: var(--nf-e-3); } .nf-chap__tete img { width: 64px; } }
.nf-photo { height: min(80svh, 760px); }
@media (max-width: 699px) { .nf-photo { height: 60svh; min-height: 300px; } }
.nf-cellule__info a { overflow-wrap: normal; word-break: normal; }
.nf-encart--blocs { display: block; columns: 2; column-gap: var(--nf-e-7); }
.nf-encart--blocs > * { break-inside: avoid; margin-bottom: var(--nf-e-5); }
.nf-encart--blocs > .nf-encart__pied { column-span: all; }
@media (max-width: 899px) { .nf-encart--blocs { columns: 1; } }
/* Fiche seule en fin de grille : toute la largeur */
@media (min-width: 1100px) {
  .nf-cellule--large { grid-column: 1 / -1; grid-template-columns: minmax(0, 46%) minmax(0, 1fr); }
  .nf-cellule--large .nf-cellule__photos { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); }
  .nf-cellule--large .nf-cellule__corps { max-width: 620px; }
}
/* 7 communes, téléphone */
@media (max-width: 699px) {
  .nf-com h2 { font-size: var(--nf-t-xl); }
  .nf-com__haut { padding-left: var(--nf-e-6); padding-right: var(--nf-e-6); padding-top: var(--nf-e-6); }
  .nf-com__boite { grid-template-columns: 56px 1fr; gap: var(--nf-e-3); padding: var(--nf-e-2) var(--nf-e-3); }
  .nf-com__boite img { width: 56px; }
  .nf-com { min-height: 0; }
  .nf-com__photo-espace { height: 260px; }
  .nf-com__credit { writing-mode: horizontal-tb; transform: none; bottom: auto; top: calc(100% + 4px); }
  .nf-com__qr { width: 84px; flex: none; }
  .nf-com__bande .nf-dedans { grid-template-columns: minmax(0, 1fr) 84px; }
  .nf-dos__coord { flex-direction: column; align-items: flex-start; }
  .nf-dos__coord .nf-sep { display: none; }
}
@media (max-width: 699px) {
  .nf-com { background-position: 45% 75% !important; }
  .nf-com__haut { padding-bottom: 300px; }
  .nf-com__logo { position: absolute; left: var(--nf-e-6); top: -150px; width: 96px; margin: 0; }
  .nf-com__credit { top: auto; bottom: 230px; right: var(--nf-e-6); font-size: var(--nf-t-xs); }
}
@media (max-width: 699px) { .nf-com__credit { writing-mode: vertical-rl; transform: rotate(180deg); top: auto; bottom: 200px; right: 6px; } }
.nf-pub__site { display: inline-block; min-height: 24px; }
.nf-groupe__texte { padding-left: max(var(--nf-e-5), calc((100% - 780px) / 2)); padding-right: max(var(--nf-e-5), calc((100% - 780px) / 2)); }

/* Revue tour 2 */
/* Couverture : la photo occupe la zone au-dessus du bloc jaune, la vague déborde dessus */
.nf-couv { display: flex; flex-direction: column; justify-content: flex-start; }
.nf-couv__zone { position: relative; flex: 1; min-height: 0; }
.nf-couv__photo { object-position: 50% 58%; }
.nf-couv__cadre { bottom: 0; }
.nf-couv__bas { margin-top: -17.7vw; z-index: 1; }
/* Titres verticaux : glyphes couchés (l'apostrophe reste une apostrophe) */
.nf-bande__titre > * { text-orientation: sideways; }
/* Ouvertures : bandeau plus large (le dessin est recadré par le haut, la courbe et le soleil restent en bas) ;
   le titre peut passer sur deux colonnes dans la partie étroite */
.nf-ouv { --bw: max(calc(var(--h) * .196), clamp(150px, 13vw, 210px)); }
.nf-ouv .nf-bande { width: var(--bw); }
.nf-ouv .nf-bande > img { width: 100%; height: 100%; object-fit: cover; object-position: left bottom; }
.nf-ouv .nf-bande__titre { height: calc(var(--h) - 2.04 * var(--bw) - var(--nf-e-4)); top: var(--nf-e-4); }
.nf-ouv .nf-bande__titre h2,
.nf-ouv .nf-bande__titre h2.nf-bande--court, .nf-ouv .nf-bande__titre h2.nf-bande--moyen, .nf-ouv .nf-bande__titre h2.nf-bande--long {
  font-size: var(--nf-t-2xl); white-space: normal; max-height: 100%; line-height: 1.15; text-align: center;
}
.nf-ouv__photo { left: calc(var(--bw) * .5); }
@media (max-width: 699px) {
  .nf-ouv .nf-bande__titre h2,
  .nf-ouv .nf-bande__titre h2.nf-bande--court, .nf-ouv .nf-bande__titre h2.nf-bande--moyen, .nf-ouv .nf-bande__titre h2.nf-bande--long { font-size: var(--nf-t-xl); }
}
/* Photos intercalaires plus basses */
.nf-photo { height: min(70svh, 640px); }
/* Famille Plus : numéros des engagements en texte simple, comme le PDF */
.nf-fp__liste span:first-child { font-weight: 300; color: var(--nf-noir); }
/* Sommaire, téléphone : photo de mer sous un voile plus dense */
@media (max-width: 799px) {
  .nf-som { background-color: var(--nf-ocean); }
}
/* Publicité FRP, téléphone : le texte du bandeau passe sous les cartes et le QR */
@media (max-width: 799px) {
  .nf-frp .nf-pub__bas { grid-template-columns: 34% auto; }
  .nf-frp .nf-pub__bas > div:last-child { grid-column: 1 / -1; }
  .nf-frp__cartes { margin: -40% 0 -2%; }
  .nf-pub__site { font-size: var(--nf-t-s); }
}
.nf-ouv { --h: min(88svh, 820px); }
@media (max-width: 699px) { .nf-ouv { --h: 72svh; } }
.nf-groupe__texte { max-width: 820px; margin: 0 auto; padding: var(--nf-e-4) var(--nf-e-5); }
.nf-cellule__photos img { height: auto; aspect-ratio: 4 / 3; }
