/*!b:8c88b6c65bab*/
/* =========================================================================
   lutte-nuisibles-pro.fr — feuille de thème
   Famille V5-pupitre (pack étalon), habillage réservé le 2026-09-11 :
   police Parkinsans (rôle « grotesque géométrique », contraste 300/800),
   teinte d'accent 275, préfixes lnp- / tdb- / lri-.
   Matériau du métier : blanc de laboratoire, gris-bleu de poste de suivi,
   violet des lampes UV.
   Tokens nommés par RÔLE, jamais par couleur.
   ========================================================================= */

/* Police auto-hébergée — aucun appel Google Fonts (règle d'habillage). */
@font-face{
  font-family:'Parkinsans';font-style:normal;font-weight:300 800;font-display:swap;
  src:url('/fonts/parkinsans-300-800-latin.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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Parkinsans';font-style:normal;font-weight:300 800;font-display:swap;
  src:url('/fonts/parkinsans-300-800-latin-ext.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;
}

:root{
  /* --- Encres --- */
  --ink:        oklch(25% 0.030 270);
  --ink-soft:   oklch(45% 0.026 270);
  /* Assombri par rapport au gris secondaire habituel de la famille : mesuré au rendu,
     l'ancienne valeur tombait à 3,88:1 sur le papier, sous le seuil de lisibilité. */
  --ink-mute:   oklch(49% 0.024 268);

  /* --- Papiers : jamais blanc pur, 3 niveaux pour l'alternance stricte --- */
  --paper:      oklch(97.5% 0.006 265);
  --surface:    oklch(94% 0.012 265);
  --card:       oklch(99.3% 0.003 265);

  /* --- Filets --- */
  --line:       oklch(88% 0.012 265);
  --line-firm:  oklch(77% 0.018 268);
  --field-line: oklch(50% 0.035 270);

  /* --- UN accent : violet de lampe UV. Contraste blanc/accent 5,11:1. --- */
  --accent:     oklch(55% 0.180 275);
  --accent-ink: oklch(99% 0.003 275);
  --accent-deep:oklch(44% 0.155 275);
  --accent-wash:oklch(94.5% 0.030 278);
  --positive:   oklch(54.5% 0.100 165);
  --warn:       oklch(58% 0.130 60);

  /* --- Géométrie : cartes nettes, rayon quasi nul, AUCUNE ombre portée --- */
  --r:    3px;
  --r-lg: 4px;

  /* --- Carte réelle (gen_map_svg) --- */
  --map-land:var(--surface); --map-line:var(--line-firm);
  --map-com:var(--surface);  --map-com-line:var(--paper);
  --map-in:var(--accent-wash); --map-page:var(--accent);
  --map-dot:var(--ink-soft); --map-dot-page:var(--accent);
  --map-label:var(--ink); --map-muted:var(--ink-mute);

  --hdr:   66px;
  --hdr-m: 58px;

  --font: "Parkinsans", ui-sans-serif, system-ui, "Helvetica Neue", Arial, sans-serif;
  --sec-y: clamp(52px, 5.6vw, 98px);
}

/* ===================== Base ============================================= */
*,*::before,*::after{box-sizing:border-box}
/* scroll-padding-top : le navigateur amène le HAUT de la cible d'une ancre en haut de la
   fenêtre, donc DERRIÈRE l'en-tête fixe. Sans cette ligne, cliquer une entrée du sommaire
   d'un article fait atterrir sous l'en-tête, titre mangé. La valeur suit la hauteur réelle
   de l'en-tête, elle n'est pas un nombre écrit à la main. */
html{overflow-x:clip;-webkit-text-size-adjust:100%;scroll-behavior:smooth;
  scroll-padding-top:calc(var(--hdr) + 12px)}
@media (max-width:980px){html{scroll-padding-top:calc(var(--hdr-m) + 12px)}}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--font);font-weight:400;font-size:17px;line-height:1.62;
  font-variant-numeric:tabular-nums;
  -webkit-font-smoothing:antialiased;text-wrap:pretty;overflow-x:clip;
  /* La césure automatique reste à la main du rédacteur : un mot coupé par le
     navigateur au milieu d'un terme technique se lit mal et se cite mal. */
  hyphens:manual;-webkit-hyphens:manual;
}
input[type=range],input[type=checkbox],input[type=radio],progress{accent-color:var(--accent)}
img{max-width:100%;display:block}
a{color:var(--accent-deep);text-decoration:none}
a:hover{color:var(--ink)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
hr{border:0;border-top:1px solid var(--line);margin:0}

/* Lien d'évitement — classe NON préfixée : la passe anti-empreinte en varie le texte. */
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--ink);
  color:var(--paper);padding:12px 18px;border-radius:var(--r);font-weight:700}
.skip-link:focus{left:12px;top:12px}

/* ===================== Trames de fond =================================== */
.lnp-bg-paper{background:var(--paper)}
.lnp-bg-surface{background:var(--surface)}
.lnp-bg-ink{background:var(--ink);color:var(--paper)}
.lnp-panel-ink{background:var(--ink);color:var(--paper)}
.lnp-bg-ink .lnp-lead,.lnp-bg-ink .lnp-muted,.lnp-bg-ink .lnp-body,
.lnp-panel-ink .lnp-muted,.lnp-panel-ink .lnp-body{color:oklch(84% 0.016 268)}
.lnp-bg-ink hr,.lnp-panel-ink hr{border-top-color:oklch(36% 0.026 270)}
/* Sur aplat sombre, les textes secondaires et les étiquettes de formulaire DOIVENT
   s'éclaircir : gardés à leur valeur claire, ils tombaient à 1,84:1 sur la carte sombre
   du bloc de conversion, c'est-à-dire illisibles au moment exact de la saisie. */
.lnp-bg-ink .lnp-label,.lnp-panel-ink .lnp-label,
.lnp-bg-ink .lnp-reassure,.lnp-panel-ink .lnp-reassure,
.lnp-bg-ink .lnp-consent,.lnp-panel-ink .lnp-consent{color:oklch(88% 0.014 268)}
.lnp-bg-ink .lnp-privacy,.lnp-panel-ink .lnp-privacy{color:oklch(80% 0.016 268)}
.lnp-bg-ink .lnp-checks li,.lnp-panel-ink .lnp-checks li{color:oklch(88% 0.014 268)}
.lnp-rule-top{border-top:1px solid var(--line)}

/* ===================== Largeurs / rythme ================================ */
.lnp-wrap{width:100%;max-width:1180px;margin:0 auto;padding:0 26px}
.lnp-wrap-m{width:100%;max-width:1000px;margin:0 auto;padding:0 26px}
.lnp-wrap-s{width:100%;max-width:880px;margin:0 auto;padding:0 26px}
.lnp-sec{padding:var(--sec-y) 0}
.lnp-sec-tight{padding:calc(var(--sec-y) * .56) 0}
.lnp-stack-s > * + *{margin-top:9px}
.lnp-stack   > * + *{margin-top:17px}
.lnp-stack-l > * + *{margin-top:29px}

/* ===================== Typographie ====================================== */
.lnp-h1,.lnp-h2,.lnp-h3,.lnp-h4{margin:0;overflow-wrap:break-word;text-wrap:balance}
/* H1 dimensionné POUR le mode de capture A : le formulaire est sous le titre et son
   bouton d'envoi doit rester au premier écran en 390 px. Le form gagne l'arbitrage. */
.lnp-h1{font-size:clamp(28px,5.2vw,47px);font-weight:300;line-height:1.06;letter-spacing:-.028em}
.lnp-h2{font-size:clamp(25px,3vw,38px);font-weight:300;line-height:1.1;letter-spacing:-.024em}
.lnp-h3{font-size:clamp(19px,1.45vw,23px);font-weight:800;line-height:1.24;letter-spacing:-.01em}
.lnp-h4{font-size:16.5px;font-weight:800;letter-spacing:-.004em}
.lnp-h1 strong,.lnp-h2 strong{font-weight:800;letter-spacing:-.032em}
.lnp-lead{font-size:clamp(16.5px,1.2vw,19px);color:var(--ink-soft);line-height:1.55;margin:0}
.lnp-body{margin:0;color:var(--ink-soft)}
.lnp-muted{color:var(--ink-mute);font-size:13.5px;margin:0}
.lnp-small{font-size:14px;margin:0}
.lnp-accent{color:var(--accent-deep)}

/* Surtitre : petites capitales espacées + filet (signature typo de la famille) */
.lnp-kicker{
  display:flex;align-items:center;gap:13px;
  font-size:11.5px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;
  color:var(--accent-deep);margin:0 0 16px;
}
.lnp-kicker::after{content:"";flex:1 1 auto;height:1px;background:var(--line-firm);min-width:22px}
.lnp-kicker-plain::after{display:none}
.lnp-bg-ink .lnp-kicker,.lnp-panel-ink .lnp-kicker{color:oklch(82% 0.090 280)}
.lnp-bg-ink .lnp-kicker::after,.lnp-panel-ink .lnp-kicker::after{background:oklch(42% 0.022 270)}

.lnp-label{display:block;font-size:11px;font-weight:800;letter-spacing:.15em;
  text-transform:uppercase;color:var(--ink-soft);margin:0 0 6px}

.lnp-fig{font-size:clamp(36px,4vw,56px);font-weight:300;letter-spacing:-.035em;line-height:.95;display:block}
.lnp-fig-xl{font-size:clamp(50px,7vw,98px);font-weight:300;letter-spacing:-.045em;line-height:.9;display:block}
.lnp-fig-s{font-size:clamp(27px,2.4vw,35px);font-weight:300;letter-spacing:-.028em;line-height:1;display:block}
.lnp-fig-u{font-size:13.5px;font-weight:800;letter-spacing:.02em;color:var(--ink-soft)}
.lnp-bg-ink .lnp-fig-u,.lnp-panel-ink .lnp-fig-u{color:oklch(82% 0.016 268)}

/* ===================== Grilles (JAMAIS en inline) ======================= */
.lnp-g2,.lnp-g3,.lnp-g4,.lnp-g-side,.lnp-g-edito,.lnp-g-contact,.lnp-g-art{display:grid;gap:25px}
.lnp-g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.lnp-g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.lnp-g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.lnp-g-side{grid-template-columns:1.15fr .85fr;gap:42px;align-items:center}
.lnp-g-edito{grid-template-columns:1fr 292px;gap:52px;align-items:start}
.lnp-g-contact{grid-template-columns:1fr 1fr;gap:42px;align-items:start}
.lnp-g-art{grid-template-columns:238px minmax(0,1fr);gap:48px;align-items:start}
.lnp-gap-s{gap:15px}

/* Items courts : au moins 2 par ligne en 390 */
.lnp-items{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.lnp-items-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.lnp-items-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.lnp-items-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.lnp-items-1{grid-template-columns:minmax(0,1fr)}
.lnp-items > *{background:var(--card);padding:21px 19px}
.lnp-bg-ink .lnp-items,.lnp-panel-ink .lnp-items{background:oklch(36% 0.026 270);border-color:oklch(36% 0.026 270)}
.lnp-bg-ink .lnp-items > *,.lnp-panel-ink .lnp-items > *{background:var(--ink)}
.lnp-chips{display:flex;flex-wrap:wrap;gap:9px}

/* ===================== Cartes — bordure 1 px, AUCUNE ombre ============== */
.lnp-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:25px}
.lnp-card-flat{background:transparent;border:1px solid var(--line);border-radius:var(--r);padding:25px}
.lnp-card-accent{border-top:3px solid var(--accent)}
.lnp-card-pad-0{padding:0}
.lnp-bg-ink .lnp-card,.lnp-panel-ink .lnp-card{background:oklch(30% 0.028 270);border-color:oklch(40% 0.028 270)}

/* ===================== Boutons ========================================== */
.lnp-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  min-height:52px;padding:0 25px;border-radius:var(--r);border:1px solid transparent;
  font-size:14.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  cursor:pointer;text-align:center;
  transition:background .16s ease,color .16s ease,letter-spacing .16s ease,border-color .16s ease;
}
.lnp-btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.lnp-btn-primary:hover{background:var(--ink);border-color:var(--ink);color:var(--paper);letter-spacing:.085em}
.lnp-btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-firm)}
.lnp-btn-ghost:hover{background:var(--ink);border-color:var(--ink);color:var(--paper);letter-spacing:.085em}
.lnp-btn-sm{min-height:44px;padding:0 17px;font-size:12.5px}
.lnp-btn-full{width:100%}
.lnp-btn-row{display:flex;gap:12px;flex-wrap:wrap}
/* Sur aplat sombre le plein s'INVERSE pour garder sa forme. */
.lnp-bg-ink .lnp-btn-primary,.lnp-panel-ink .lnp-btn-primary{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.lnp-bg-ink .lnp-btn-primary:hover,.lnp-panel-ink .lnp-btn-primary:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.lnp-bg-ink .lnp-btn-ghost,.lnp-panel-ink .lnp-btn-ghost{color:var(--paper);border-color:oklch(58% 0.022 270)}
.lnp-bg-ink .lnp-btn-ghost:hover,.lnp-panel-ink .lnp-btn-ghost:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}

.lnp-link-arrow{font-weight:800;font-size:14.5px;display:inline-flex;align-items:center;gap:8px;color:var(--accent-deep)}
.lnp-link-arrow:hover{color:var(--ink);gap:12px;transition:gap .15s ease}
.lnp-bg-ink .lnp-link-arrow{color:oklch(86% 0.070 280)}
.lnp-bg-ink .lnp-link-arrow:hover{color:#fff}

/* ===================== Formulaires ====================================== */
.lnp-field{width:100%;min-height:52px;padding:12px 14px;font-size:16px;
  background:var(--card);border:1px solid var(--field-line);border-radius:var(--r);color:var(--ink)}
.lnp-field::placeholder{color:var(--ink-mute)}
.lnp-field:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash);outline:none}
/* Hauteur calée sur le texte d'aide : mesuré au rendu, une boîte de 94 px coupait la
   consigne de 8 px, en plein mot. C'est cette consigne qui fait la qualité du lead. */
textarea.lnp-field{min-height:124px;resize:vertical}
select.lnp-field{appearance:none;
  background-image:linear-gradient(45deg,transparent 49%,var(--ink-soft) 50%),linear-gradient(-45deg,transparent 49%,var(--ink-soft) 50%);
  background-size:7px 7px,7px 7px;background-position:calc(100% - 21px) 23px,calc(100% - 14px) 23px;
  background-repeat:no-repeat;padding-right:42px}
.lnp-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.lnp-form-grid .lnp-col-2{grid-column:span 2}
.lnp-reassure{font-size:13.5px;color:var(--ink-soft);margin:0}
.lnp-privacy{font-size:12.5px;color:var(--ink-mute);margin:0}
.lnp-consent{display:flex;gap:11px;align-items:flex-start;font-size:13.5px;color:var(--ink-soft)}
.lnp-consent input{margin-top:4px;flex:0 0 auto;width:17px;height:17px}
/* Piège à robots : hors flux, hors lecteur d'écran, jamais display:none. */
.lnp-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* ===================== Hero — mode A « form-stacked-below » =============
   Archétype de hero RÉSERVÉ à ce site : le formulaire est SOUS le titre,
   en une seule colonne bornée, jamais en vis-à-vis. C'est ce qui garantit
   le bouton d'envoi au premier écran en 390 px sans barre fixe à éviter. */
.lnp-hero{padding-top:calc(var(--hdr) + 30px);padding-bottom:var(--sec-y)}
.lnp-hero-in{max-width:760px}
/* Rembourrage resserré : mesuré au rendu, le bouton d'envoi passait 20 px sous le pli
   utile en 1366×768. Le formulaire gagne tout arbitrage de hauteur dans ce hero. */
.lnp-hero-form{background:var(--card);border:1px solid var(--line);
  border-top:3px solid var(--accent);border-radius:var(--r);padding:15px 22px 18px}
.lnp-hero-aside{margin-top:34px}

/* ===================== Cadres d'image ===================================
   Un cadre a TOUJOURS une hauteur résolue (aspect-ratio), pour qu'une image
   différée ne fasse pas sauter la mise en page pendant le chargement.
   Famille V5 : bordure 1 px, rayon quasi nul, aucune ombre portée. */
.lnp-ph{position:relative;overflow:hidden;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r)}
.lnp-ph > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lnp-r169{aspect-ratio:16/9}
.lnp-r43{aspect-ratio:4/3}
.lnp-r11{aspect-ratio:1/1}
.lnp-ph-legende{font-size:12.5px;color:var(--ink-mute);margin:9px 0 0}
.lnp-ph-lead{margin-bottom:36px}

/* ===================== Bande de preuve ================================== */
.lnp-proof{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.lnp-proof > div{background:var(--paper);padding:21px 19px}
.lnp-proof-l{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);margin:0}

/* ===================== Liste à coches =================================== */
.lnp-checks{list-style:none;margin:0;padding:0}
.lnp-checks li{position:relative;padding:6px 0 6px 25px;font-size:15.5px;color:var(--ink-soft)}
.lnp-checks li::before{content:"";position:absolute;left:2px;top:14px;width:10px;height:6px;
  border-left:2px solid var(--positive);border-bottom:2px solid var(--positive);transform:rotate(-45deg)}
.lnp-bg-ink .lnp-checks li{color:oklch(84% 0.016 268)}

/* ===================== RUPTURE 1 — comparatif des méthodes, pleine laize
   Préfixe lri- : l'échelle de lecture des méthodes, du mécanique au chimique.
   C'est l'angle du site rendu en composition : l'ordre est visible avant
   d'être lu. ======================================================== */
.lri-echelle{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line)}
.lri-rang{background:var(--card);padding:26px 22px;display:flex;flex-direction:column;gap:11px;position:relative}
.lri-rang::before{content:"";position:absolute;left:0;top:0;height:4px;width:100%;background:var(--accent);opacity:var(--o,1)}
.lri-rang:nth-child(1){--o:1}
.lri-rang:nth-child(2){--o:.72}
.lri-rang:nth-child(3){--o:.44}
.lri-rang:nth-child(4){--o:.18}
.lri-ordre{font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-mute)}
.lri-titre{font-size:19px;font-weight:800;letter-spacing:-.01em;margin:0}
.lri-quoi{font-size:14.5px;color:var(--ink-soft);margin:0}
.lri-dernier{background:var(--surface)}
.lri-dernier .lri-titre{color:var(--accent-deep)}

/* Schéma de flux diagnostic → plan → suivi (RUPTURE 3 : en bande sombre) */
/* AUCUN ordinal, ni en dur dans le HTML ni par compteur CSS : la règle du parc
   (grand numéral décoratif interdit) vise les deux, et une section se nomme par son
   titre. L'ordre de la séquence est porté par la lecture et par le filet vertical
   qui sépare les étapes, pas par un chiffre. */
.lri-flux{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;align-items:stretch}
.lri-etape{border-left:1px solid oklch(40% 0.028 270);padding:0 26px}
.lri-etape:first-child{border-left:0;padding-left:0}
/* Filet d'accent court en tête d'étape : il marque la progression sans la chiffrer. */
.lri-etape::before{content:"";display:block;width:38px;height:3px;
  background:oklch(82% 0.090 280);margin-bottom:20px}

/* ===================== MODULE SIGNATURE — « le relevé des postes »
   Préfixe tdb- : tableau de bord dessiné en CSS, jamais une image.
   Plan simplifié, postes numérotés, état à chaque visite, tendance.
   Données marquées « exemple » — aucun compteur figé en dur ailleurs. ==== */
.tdb-board{border:1px solid var(--line);border-radius:var(--r);background:var(--card);overflow:hidden}
.tdb-tete{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:baseline;justify-content:space-between;
  padding:17px 20px;border-bottom:1px solid var(--line);background:var(--surface)}
.tdb-tete p{margin:0}
.tdb-ex{display:inline-flex;align-items:center;padding:4px 9px;border:1px solid var(--line-firm);
  border-radius:var(--r);font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-mute);background:var(--paper)}
.tdb-grille{width:100%;border-collapse:collapse}
.tdb-grille th,.tdb-grille td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line);font-size:14.5px}
/* Aucun « nowrap » sur ces libellés : sans garde de largeur, un intitulé long déborde
   à 320 px. Le tableau se replie en cartes sous 640 px, le texte doit pouvoir passer
   à la ligne avant ça. */
.tdb-grille thead th{font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-soft);background:var(--paper)}
.tdb-grille tbody tr:last-child th,.tdb-grille tbody tr:last-child td{border-bottom:0}
.tdb-poste{font-weight:800}
.tdb-plan{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;
  border:1px solid var(--line-firm);border-radius:50%;font-size:12px;font-weight:800;
  color:var(--ink-soft);margin-right:10px;flex:0 0 auto}
.tdb-etat{display:inline-flex;align-items:center;gap:7px;font-weight:700}
/* Marqueur d'état CARRÉ, pas une pastille ronde : une série de ronds colorés répétés est
   un tic de fabrication banni du parc. Ici le marqueur porte un état réel (intact,
   consommé, capture), et la forme carrée le distingue d'une décoration. */
.tdb-etat::before{content:"";width:9px;height:9px;border-radius:2px;background:var(--ink-mute);flex:0 0 auto}
.tdb-intact::before{background:var(--positive)}
.tdb-consomme::before{background:var(--warn)}
.tdb-capture::before{background:var(--accent)}
.tdb-tendance{font-weight:800;color:var(--ink-soft)}
.tdb-legende{display:flex;flex-wrap:wrap;gap:10px 22px;padding:15px 20px;border-top:1px solid var(--line);
  background:var(--surface)}
.tdb-legende span{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-soft)}
.tdb-note{font-size:13px;color:var(--ink-mute);margin:13px 0 0}

/* ===================== Tableau comparatif générique ===================== */
.lnp-tbl{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line)}
.lnp-tbl th,.lnp-tbl td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--line);font-size:14.5px;vertical-align:top}
.lnp-tbl thead th{font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;
  color:var(--ink-soft);background:var(--surface)}
.lnp-tbl tbody th{font-weight:800;color:var(--ink);width:32%}
.lnp-tbl tr:last-child th,.lnp-tbl tr:last-child td{border-bottom:0}
.lnp-tbl-note{font-size:13px;color:var(--ink-mute);margin:12px 0 0}

/* ===================== En-tête ========================================== */
.lnp-hdr{position:fixed;inset:0 0 auto 0;z-index:60;background:var(--paper);
  border-bottom:1px solid transparent;transition:background-color .2s ease,border-color .2s ease}
.lnp-hdr-accent{height:3px;background:var(--accent)}
.lnp-hdr-in{height:calc(var(--hdr) - 3px);display:flex;align-items:center;gap:24px}
/* Sans min-width:0, un enfant de flex conserve sa largeur minimale intrinsèque et pousse
   le bouton d'appel hors de l'écran entre 1024 et 1240 px, où il devient inatteignable. */
.lnp-hdr-in > *{min-width:0}
@media (min-width:981px) and (max-width:1240px){
  .lnp-hdr-in{gap:8px}
  .lnp-logo{font-size:17px}
  .lnp-logo-sub{display:none}
  .lnp-nav{gap:0}
  .lnp-nav-groupes{gap:0}
  .lnp-nav-a{padding:7px 4px;font-size:12px;gap:4px}
  .lnp-nav-cta{margin-left:2px;padding:0 8px;font-size:10.5px;letter-spacing:.01em;min-height:44px;
    white-space:nowrap;flex:0 0 auto}
  .lnp-mega{width:min(420px,calc(100vw - 32px));padding:18px}
  .lnp-wrap{padding:0 18px}
}
.lnp-hdr.lnp-is-solid{background:var(--surface);border-bottom-color:var(--line)}
.lnp-logo{display:flex;align-items:baseline;gap:3px;font-size:21px;font-weight:800;letter-spacing:-.03em;color:var(--ink)}
.lnp-logo em{font-style:normal;color:var(--accent-deep)}
/* UNE SEULE navigation, le MÊME élément à toutes les largeurs : barre horizontale
   au-dessus de 960 px, volet coulissant en dessous. Deux <nav> distincts rendraient
   la navigation incomptable à l'une ou l'autre largeur (leçon mesurée du parc :
   l'attribut d'audit ne peut vivre que sur un élément, et c'est l'autre qui était
   visible). */
.lnp-nav{display:flex;align-items:center;gap:3px;margin-left:auto}
.lnp-nav-groupes{display:flex;align-items:center;gap:3px}
.lnp-nav-tete{display:none}
.lnp-nav-cta{margin-left:12px}
.lnp-nav-i{position:relative}
.lnp-nav-a{display:inline-flex;align-items:center;gap:7px;padding:10px 12px;border-radius:var(--r);
  font-size:15.5px;font-weight:700;color:var(--ink);background:transparent;border:0;cursor:pointer}
.lnp-nav-a:hover{background:var(--surface)}
.lnp-caret{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg) translateY(-2px)}
details.lnp-nav-i > summary{list-style:none}
details.lnp-nav-i > summary::-webkit-details-marker{display:none}
details.lnp-nav-i[open] > summary .lnp-caret{transform:rotate(-135deg) translateY(0)}
.lnp-mega{position:absolute;top:calc(100% + 9px);left:0;width:min(560px,calc(100vw - 40px));
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;z-index:70}
.lnp-mega-g{font-size:10.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink-mute);margin:0 0 11px;padding-bottom:8px;border-bottom:1px solid var(--line)}
.lnp-mega-l{display:block;padding:10px 0;border-bottom:1px solid var(--line)}
.lnp-mega-l:last-child{border-bottom:0}
.lnp-mega-l b{display:block;font-size:15px;font-weight:800;color:var(--ink)}
.lnp-mega-l span{display:block;font-size:13px;color:var(--ink-mute)}
.lnp-mega-l:hover b{color:var(--accent-deep)}
.lnp-burger{display:none;margin-left:auto;width:46px;height:46px;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--line-firm);border-radius:var(--r);cursor:pointer}
.lnp-burger i{display:block;width:20px;height:2px;background:var(--ink);position:relative}
.lnp-burger i::before,.lnp-burger i::after{content:"";position:absolute;left:0;width:20px;height:2px;background:var(--ink)}
.lnp-burger i::before{top:-6px}.lnp-burger i::after{top:6px}

/* Voile et verrouillage de défilement du volet. Le volet EST l'élément <nav>
   (voir la requête média 960 px) : il n'y a aucun second conteneur à maintenir
   en cohérence avec lui. */
.lnp-scrim{position:fixed;inset:0;z-index:85;background:oklch(22% 0.030 270 / .5);opacity:0;
  pointer-events:none;transition:opacity .22s ease}
body:has(.lnp-nav.lnp-is-open) .lnp-scrim{opacity:1;pointer-events:auto}
html.lnp-scroll-locked{overflow:hidden}
html.lnp-scroll-locked body{position:fixed;left:0;right:0;width:100%}
.lnp-x{width:44px;height:44px;background:transparent;border:1px solid var(--line-firm);
  border-radius:var(--r);cursor:pointer;font-size:20px;line-height:1;flex:0 0 auto}
.lnp-mnav-g{font-size:10.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-mute);margin:0}

/* ===================== FAQ ============================================== */
.lnp-faq{border-top:1px solid var(--line-firm)}
.lnp-faq details{border-bottom:1px solid var(--line)}
.lnp-faq summary{cursor:pointer;list-style:none;padding:19px 40px 19px 0;position:relative;
  font-size:17px;font-weight:800;color:var(--ink)}
.lnp-faq summary::-webkit-details-marker{display:none}
.lnp-faq summary::after{content:"";position:absolute;right:6px;top:26px;width:9px;height:9px;
  border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);
  transform:rotate(45deg);transition:transform .18s ease}
.lnp-faq details[open] summary::after{transform:rotate(-135deg)}
.lnp-faq-a{padding:0 40px 21px 0;color:var(--ink-soft);margin:0}

/* ===================== Fil d'Ariane, méta, prose ======================== */
.lnp-bread{display:flex;flex-wrap:wrap;gap:8px;font-size:13px;color:var(--ink-mute);padding:0;margin:0;list-style:none}
.lnp-bread a{color:var(--ink-soft)}
.lnp-bread li + li::before{content:"›";margin-right:8px;color:var(--line-firm)}
.lnp-tag{display:inline-flex;align-items:center;padding:6px 11px;border:1px solid var(--line-firm);
  border-radius:var(--r);font-size:11px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;
  color:var(--ink-soft);max-width:100%;white-space:normal;overflow-wrap:break-word}
.lnp-maj{font-size:13px;color:var(--ink-mute);margin:0}
.lnp-prose{max-width:70ch}
.lnp-prose p{color:var(--ink-soft);margin:0 0 17px}
.lnp-prose h2{font-size:clamp(22px,2.2vw,29px);font-weight:800;letter-spacing:-.022em;margin:36px 0 13px;color:var(--ink)}
.lnp-prose h3{font-size:19px;font-weight:800;margin:26px 0 10px;color:var(--ink)}
.lnp-prose ul{margin:0 0 17px;padding-left:20px;color:var(--ink-soft)}
.lnp-prose li{margin:0 0 7px}
.lnp-prose blockquote{margin:0 0 17px;padding:15px 19px;background:var(--surface);
  border-left:3px solid var(--accent);border-radius:0 var(--r) var(--r) 0}
.lnp-prose blockquote p:last-child{margin:0}
.lnp-toc{position:sticky;top:calc(var(--hdr) + 20px);border-left:2px solid var(--accent);padding-left:17px}
.lnp-toc a{display:block;padding:6px 0;font-size:14px;color:var(--ink-soft);font-weight:700}
.lnp-toc a:hover{color:var(--accent-deep)}

/* Vignettes d'index éditorial */
.lnp-vign{display:block;border:1px solid var(--line);border-radius:var(--r);background:var(--card);
  padding:23px;transition:border-color .18s ease}
.lnp-vign:hover{border-color:var(--line-firm)}
.lnp-vign h3{color:var(--ink)}
.lnp-vign:hover h3{color:var(--accent-deep)}

/* ===================== Carte ============================================ */
.lnp-map{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px}
.lnp-map svg{display:block;width:100%;height:auto}
.lnp-map-att{font-size:12px;color:var(--ink-mute);margin:10px 0 0}

/* ===================== Pied de page ===================================== */
.lnp-ft-cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:32px}
.lnp-ft-h{font-size:10.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-mute);margin:0 0 13px}
.lnp-ft-l{display:block;padding:6px 0;font-size:14.5px;color:var(--ink-soft);font-weight:400}
.lnp-ft-l:hover{color:var(--accent-deep)}
.lnp-ft-legal{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center;justify-content:space-between;
  padding:19px 0;border-top:1px solid var(--line);font-size:13px;color:var(--ink-mute)}
.lnp-ft-accent{height:3px;background:var(--accent)}
/* Bloc de sources : une ligne grise UNIQUE, site-wide, juste au-dessus du copyright.
   Jamais un encadré, jamais répété par page. */
.lnp-foot-sources{border-top:1px solid var(--line);padding:17px 0 0;font-size:12.5px;
  color:var(--ink-mute);line-height:1.6}
.lnp-foot-sources a{color:var(--ink-soft);text-decoration:underline;text-underline-offset:2px}
.lnp-foot-sources a:hover{color:var(--accent-deep)}

/* ===================== Responsive ======================================= */
@media (max-width:1080px){
  .lnp-g4,.lnp-items-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lnp-g-edito{grid-template-columns:1fr 252px;gap:34px}
  .lri-echelle{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/* Seuil de bascule aligné sur celui du socle du parc (980 px). À 960 px, on ouvrait une
   bande de vingt pixels où ni le bouton Menu ni la navigation déployée n'étaient présents. */
@media (max-width:980px){
  /* Le MÊME <nav> devient le volet coulissant, ouvert par le burger. */
  .lnp-nav{position:fixed;inset:0 0 0 auto;width:min(468px,100vw);z-index:90;margin-left:0;
    background:var(--paper);border-left:1px solid var(--line);transform:translateX(101%);
    transition:transform .28s ease;overflow-y:auto;padding:22px;display:block}
  /* Un volet fermé doit être RETIRÉ de l'arbre visible, pas seulement déplacé hors cadre :
     hors de l'écran mais « visible », il reste atteignable au clavier et compte comme
     ouvert au chargement. */
  .lnp-nav{visibility:hidden}
  .lnp-nav.lnp-is-open{transform:translateX(0);visibility:visible}
  .lnp-nav-tete{display:flex;align-items:center;justify-content:space-between;gap:14px;
    padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:6px}
  .lnp-nav-groupes{display:block}
  .lnp-nav-a{display:flex;width:100%;justify-content:space-between;align-items:center;
    padding:14px 0;border-bottom:1px solid var(--line);border-radius:0;font-size:18px}
  .lnp-nav-a:hover{background:transparent;color:var(--accent-deep)}
  .lnp-mega{position:static;width:auto;border:0;border-radius:0;padding:2px 0 12px;background:transparent}
  .lnp-nav-cta{margin:20px 0 0;width:100%}
  .lnp-burger{display:flex}
  .lnp-hdr{background:var(--surface);border-bottom-color:var(--line)}
  .lnp-hdr-in{height:calc(var(--hdr-m) - 3px)}
  .lnp-hdr .lnp-btn{display:none}
  .lnp-g-side,.lnp-g-contact,.lnp-g-edito,.lnp-g-art,.lnp-g3{grid-template-columns:minmax(0,1fr)}
  .lnp-hero{padding-top:calc(var(--hdr-m) + 16px)}
  .lri-flux{grid-template-columns:minmax(0,1fr)}
  .lri-etape{border-left:0;border-top:1px solid oklch(40% 0.028 270);padding:22px 0 0}
  .lri-etape:first-child{border-top:0;padding-top:0}
  .lnp-ft-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}
  .lnp-toc{position:static;top:auto}
}
@media (max-width:720px){
  .lnp-g2{grid-template-columns:minmax(0,1fr)}
  .lnp-items-3,.lnp-items-4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lnp-proof{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lri-echelle{grid-template-columns:minmax(0,1fr)}
  /* Le formulaire garde 2 colonnes en 390 : c'est ce qui maintient le bouton
     d'envoi au premier écran en mode de capture A. Champs à 16 px minimum. */
  .lnp-form-grid{gap:11px}
  .lnp-hide-m{display:none!important}
  .lnp-hero{padding-bottom:36px}
  .lnp-hero .lnp-lead{font-size:16px}
  .lnp-hero-form{padding:17px 18px 19px}
  .lnp-hero-in.lnp-stack > * + *{margin-top:11px}
  .lnp-hero-form.lnp-stack > * + *{margin-top:10px}
  .lnp-hero-form .lnp-kicker{margin-bottom:5px}
  .lnp-hero-form .lnp-form-grid .lnp-col-2{grid-column:span 1}
  .lnp-hero-form .lnp-form-grid .lnp-col-keep{grid-column:span 2}
  /* Mode de capture A en 390 px : le TITRE reste en tête, le formulaire monte juste
     dessous, et le chapeau descend SOUS le formulaire. C'est ce qui met le bouton
     d'envoi au premier écran sans rien retirer de la page. */
  .lnp-hero-in{display:flex;flex-direction:column}
  .lnp-hero-in > .lnp-kicker{order:1}
  .lnp-hero-in > .lnp-h1{order:2}
  .lnp-hero-in > .lnp-hero-form{order:3}
  .lnp-hero-in > .lnp-lead{order:4}
  .lnp-hero-in > .lnp-maj{order:5}
  .lnp-hero-in > .lnp-lead{margin-top:22px}
  .lnp-field{min-height:46px}
  .lnp-label{margin-bottom:5px;font-size:10.5px}
  .lnp-hero-aside{margin-top:26px}
}
@media (max-width:640px){
  /* Tableaux denses → cartes empilées, étiquette par cellule. Jamais de scroll-x. */
  .lnp-tbl,.lnp-tbl thead,.lnp-tbl tbody,.lnp-tbl tr,.lnp-tbl th,.lnp-tbl td,
  .tdb-grille,.tdb-grille thead,.tdb-grille tbody,.tdb-grille tr,.tdb-grille th,.tdb-grille td{display:block;width:auto}
  .lnp-tbl,.tdb-grille{border:0;background:transparent}
  .lnp-tbl thead,.tdb-grille thead{display:none}
  .lnp-tbl tbody tr,.tdb-grille tbody tr{background:var(--card);border:1px solid var(--line);
    border-radius:var(--r);margin:0 14px 13px;padding:6px 15px 11px}
  .lnp-tbl tbody th,.tdb-grille tbody th{width:auto;padding:13px 0 8px;border-bottom:1px solid var(--line);font-size:16.5px}
  .lnp-tbl tbody td,.tdb-grille tbody td{padding:10px 0;border-bottom:1px dashed var(--line)}
  .lnp-tbl tbody td::before,.tdb-grille tbody td::before{content:attr(data-l);display:block;font-size:10px;
    font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:4px}
  .lnp-tbl tbody tr td:last-child,.tdb-grille tbody tr td:last-child{border-bottom:0}
  .tdb-grille tbody tr{margin-top:13px}
  .lnp-wrap,.lnp-wrap-m,.lnp-wrap-s{padding:0 19px}
  .lnp-card,.lnp-card-flat{padding:21px}
  .lnp-items > *{padding:17px 15px}
  .lnp-btn{width:100%}
  .lnp-btn-row .lnp-btn{width:auto}
}
@media (max-width:430px){
  .lnp-btn-row{display:grid;gap:10px}
  .lnp-btn-row .lnp-btn{width:100%}
  .lnp-ft-cols{grid-template-columns:minmax(0,1fr)}
  .lnp-tag{font-size:10px;letter-spacing:.08em;padding:5px 9px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;scroll-behavior:auto}
}
@media print{
  .lnp-hdr,.lnp-nav,.lnp-scrim,.skip-link{display:none!important}
}
