/*
Theme Name: Variateur de vitesse — 2026 v2
Theme URI: https://variateur-de-vitesse.com
Author: Seobooster LTD
Description: Thème code pur pour variateur-de-vitesse.com — capture de devis B2B (installation,
  remplacement, dépannage de variateurs de vitesse, Grand Lyon). Mode clair uniquement, geste
  signature « spectre de fréquence » (barres verticales à angles droits, indigo sur bleu nuit et blanc).
Version: 1.0.0
Text Domain: vdv-2026-v2
*/

/* ============================================================================
   0. POLICES — self-hosted uniquement (P-086). Chivo Mono absente du dossier
      fonts : repli assumé sur ui-monospace, jamais de Google Fonts.
   ========================================================================= */
@font-face { font-family: 'Chivo'; src: url('assets/fonts/chivo-700.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Manrope'; src: url('assets/fonts/manrope-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Manrope'; src: url('assets/fonts/manrope-500.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'Manrope'; src: url('assets/fonts/manrope-600.woff2') format('woff2'); font-weight: 600; font-style: normal; font-display: swap; }

/* ============================================================================
   1. TOKENS — mode CLAIR uniquement (DA V2 §0/§10). Aucun prefers-color-scheme.
   ========================================================================= */
:root{
	--blanc:#FFFFFF;
	--tole:#EDF0F7;
	--nuit:#0C1B3A;
	--accent:#2F4FE0;
	--accent-survol:#233CB0;
	--accent-pale:#DCE3FD;
	--ardoise:#4B5675;
	--defaut:#C7362B;
	--filet:#D5DBEA;
	--bg:var(--blanc);
	--encre:var(--nuit);

	--police-titre:'Chivo', Arial, sans-serif;
	--police-corps:'Manrope', Arial, sans-serif;
	--police-mono:'Chivo Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;

	--conteneur:1200px;
	--gouttiere:24px;
	--gouttiere-mobile:16px;
	--rayon:0;
	--ombre-filet:0 1px 0 var(--filet);
	--rythme:96px;
	--rythme-mobile:64px;
}

/* ============================================================================
   2. RESET / BASE
   ========================================================================= */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}*,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important;}}
body{margin:0;background:var(--bg);color:var(--encre);font-family:var(--police-corps);font-weight:400;font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden;}
img{max-width:100%;height:auto;display:block;}
svg{display:block;}
a{color:var(--accent);text-decoration-thickness:2px;text-underline-offset:3px;}
a:hover{color:var(--accent-survol);}
button{font-family:inherit;}
ul,ol{margin:0;padding:0;}
h1,h2,h3,h4{font-family:var(--police-titre);font-weight:700;color:var(--nuit);line-height:1.08;letter-spacing:-0.01em;margin:0 0 .5em;hyphens:none;-webkit-hyphens:none;}
h1{font-size:56px;}
h2{font-size:36px;}
h3{font-size:22px;}
p{margin:0 0 1.1em;}
.skip-link{position:absolute;left:-999px;top:0;background:var(--nuit);color:#fff;padding:12px 20px;z-index:200;}
.skip-link:focus{left:16px;top:16px;}

.conteneur{max-width:var(--conteneur);margin:0 auto;padding:0 var(--gouttiere);}
@media (max-width:600px){.conteneur{padding:0 var(--gouttiere-mobile);}}

.bande{padding:var(--rythme) 0;}
.bande--tole{background:var(--tole);}
.bande--nuit{background:var(--nuit);color:#fff;}
.bande--nuit h2,.bande--nuit h3{color:#fff;}
.bande--accent{background:var(--accent);color:#fff;}
.bande--accent h2,.bande--accent h3{color:#fff;}
@media (max-width:768px){.bande{padding:var(--rythme-mobile) 0;}h1{font-size:34px;}h2{font-size:26px;}h3{font-size:19px;}}

.surtitre{display:inline-flex;align-items:center;gap:8px;font-family:var(--police-corps);font-weight:600;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 12px;}
.bande--nuit .surtitre,.bande--accent .surtitre{color:#fff;}

/* ============================================================================
   3. LE SPECTRE DE FRÉQUENCE — geste signature, 4 tailles (DA §7.1)
   ========================================================================= */
.micro-spectre{display:inline-flex;align-items:flex-end;gap:2px;height:12px;flex:none;}
.micro-spectre span{display:block;width:3px;background:currentColor;}
.micro-spectre span:nth-child(1){height:40%;}
.micro-spectre span:nth-child(2){height:70%;}
.micro-spectre span:nth-child(3){height:100%;}
.micro-spectre span:nth-child(4){height:60%;}

.separateur-spectre{display:flex;align-items:flex-end;gap:3px;height:40px;width:100%;}
.separateur-spectre span{flex:1 1 0;background:var(--accent-pale);}
.separateur-spectre span:nth-child(3n+1){background:var(--accent-pale);}
.separateur-spectre span:nth-child(3n+2){background:color-mix(in srgb, var(--accent-pale) 50%, var(--accent));}
.separateur-spectre span:nth-child(3n){background:var(--accent);}
.separateur-spectre--blanc span{background:rgba(255,255,255,.28);}
.separateur-spectre--blanc span:nth-child(3n){background:rgba(255,255,255,.6);}
.separateur-spectre[data-anim] span{transform:scaleY(0);transform-origin:bottom;transition:transform .5s ease;}
.separateur-spectre.en-vue span{transform:scaleY(1);}

/* ============================================================================
   4. BOUTONS
   ========================================================================= */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:56px;padding:0 28px;font-family:var(--police-corps);font-weight:600;font-size:15px;border:2px solid transparent;border-radius:var(--rayon);cursor:pointer;text-decoration:none;transition:background-color .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap;min-width:44px;}
.btn--accent{background:var(--accent);color:#fff;}
.btn--accent:hover{background:var(--accent-survol);color:#fff;}
.btn--contour{background:transparent;color:var(--nuit);border-color:var(--nuit);}
.btn--contour:hover{background:var(--nuit);color:#fff;}
.btn--blanc{background:#fff;color:var(--accent);}
.btn--blanc:hover{background:var(--accent-pale);}
.btn--pleine-largeur{width:100%;}
.btn--petit{height:44px;padding:0 20px;font-size:14px;}

/* ============================================================================
   5. EN-TÊTE — bornier à deux étages (DA §6)
   ========================================================================= */
.entete{position:sticky;top:0;z-index:100;background:#fff;}
.entete-etage1{background:#fff;border-bottom:1px solid var(--filet);}
.entete-etage1-barre{display:flex;justify-content:flex-end;align-items:center;height:44px;gap:20px;}
.entete-utilitaire{display:flex;align-items:center;gap:20px;list-style:none;}
.entete-utilitaire-item{font-family:var(--police-corps);font-weight:500;font-size:13px;color:var(--ardoise);text-decoration:none;}
a.entete-utilitaire-item:hover{color:var(--accent);}

.entete-etage2{background:var(--nuit);}
.entete-etage2-barre{display:flex;align-items:center;gap:32px;height:64px;position:relative;}

.logo-lien{display:block;flex:none;text-decoration:none;}
.logo-bloc{display:flex;align-items:center;gap:10px;height:108px;margin-top:-22px;background:#fff;padding:8px 16px 14px;position:relative;}
.logo-bloc::after{content:'';position:absolute;left:0;right:0;bottom:-6px;height:6px;background:repeating-linear-gradient(90deg,var(--accent) 0 12px,var(--accent-pale) 12px 24px,var(--nuit) 24px 28px);}
.logo-symbole{flex:none;}
.logo-texte{font-family:var(--police-titre);font-weight:700;font-size:19px;color:var(--nuit);white-space:nowrap;}
.entete.est-reduit .logo-bloc{height:56px;margin-top:0;padding-top:8px;}

.nav-principale{flex:1 1 auto;}
.nav-liste{display:flex;align-items:center;gap:28px;list-style:none;margin:0;padding:0;flex-wrap:nowrap;}
.nav-liste li{position:relative;}
.nav-liste a{display:inline-block;padding:4px 0;font-family:var(--police-corps);font-weight:600;font-size:15px;color:#fff;text-decoration:none;border-bottom:4px solid transparent;}
.nav-liste a:hover{color:var(--accent-pale);}
.nav-liste li.current-menu-item a,.nav-liste li.current_page_item a{border-bottom-color:var(--accent);}

.entete-actions{display:flex;align-items:center;gap:14px;flex:none;}
.entete-actions .btn{height:48px;padding:0 22px;}
.btn-menu-mobile{display:none;background:transparent;border:none;color:#fff;padding:8px;min-width:44px;min-height:44px;cursor:pointer;}

.panneau-mobile{position:fixed;inset:0;background:#fff;z-index:150;transform:translateX(100%);transition:transform .25s ease;overflow-y:auto;}
.panneau-mobile.est-ouvert{transform:translateX(0);}
.panneau-mobile-corps{padding:96px 20px 40px;display:flex;flex-direction:column;gap:28px;}
.panneau-mobile-liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;}
.panneau-mobile-liste a{display:block;padding:14px 4px;font-family:var(--police-titre);font-weight:700;font-size:20px;color:var(--nuit);text-decoration:none;border-bottom:1px solid var(--filet);}
.panneau-mobile-secteur{font-family:var(--police-corps);font-weight:600;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:16px 0 6px;}
.panneau-mobile-communes-liste{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-wrap:wrap;gap:8px;}
.panneau-mobile-communes-liste a{display:inline-block;padding:10px 14px;background:var(--tole);color:var(--nuit);text-decoration:none;font-size:14px;font-weight:500;min-height:44px;display:inline-flex;align-items:center;}

.barre-mobile-basse{display:none;}

@media (max-width:1080px){
	.nav-principale{display:none;}
	.entete-utilitaire{flex-wrap:wrap;justify-content:flex-end;row-gap:2px;}
	.btn-menu-mobile{display:inline-flex;align-items:center;justify-content:center;}
	.entete-actions .btn{display:none;}
}
@media (max-width:600px){
	.entete-etage1-barre{height:auto;padding:8px 0;}
	.entete-utilitaire-item:not(:first-child){display:none;}
	.logo-bloc{height:64px;margin-top:0;clip-path:none;padding:6px 10px;}
	.logo-texte{font-size:16px;}
	.entete-etage2-barre{height:56px;}
	main{padding-bottom:64px;}
	.barre-mobile-basse{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:120;background:#fff;border-top:1px solid var(--filet);height:60px;padding-bottom:env(safe-area-inset-bottom);}
	.barre-mobile-basse-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ardoise);text-decoration:none;font-size:10.5px;font-weight:600;min-height:44px;}
	.barre-mobile-basse-item.est-actif{color:var(--accent);}
	.barre-mobile-basse-item--accent{color:var(--accent);}
}

/* ============================================================================
   6. PIED DE PAGE
   ========================================================================= */
.pied{background:var(--nuit);color:#DCE3FD;padding-top:72px;}
.pied h4{color:#fff;font-family:var(--police-corps);font-weight:600;font-size:13px;letter-spacing:.05em;text-transform:uppercase;margin:0 0 16px;}
.pied-grille{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.4fr;gap:32px;align-items:start;padding-bottom:48px;}
.pied-marque{display:flex;flex-direction:column;gap:14px;}
.pied-baseline{color:#AEB9DC;font-size:14px;max-width:32ch;margin:0;}
.pied ul{list-style:none;display:flex;flex-direction:column;gap:10px;}
.pied a{color:#DCE3FD;text-decoration:none;font-size:14.5px;}
.pied a:hover{color:#fff;text-decoration:underline;}
.pied-secteur-nom{font-size:12px;font-weight:600;color:var(--accent-pale);text-transform:uppercase;letter-spacing:.05em;margin:12px 0 6px;}
.pied-secteur-nom:first-of-type{margin-top:0;}
.pied-secteur-liste{margin:0 0 4px;}
.pied-spectre{margin:8px 0 0;}
.pied-bas{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;border-top:1px solid rgba(255,255,255,.12);margin-top:24px;font-size:13px;color:#AEB9DC;flex-wrap:wrap;}
.pied-bas a{color:#AEB9DC;text-decoration:underline;}
@media (max-width:1000px){.pied-grille{grid-template-columns:1fr 1fr;}.pied-colonne--communes{grid-column:1 / -1;}}
@media (max-width:600px){.pied-grille{grid-template-columns:1fr;gap:28px;}}

/* ============================================================================
   7. FORMULAIRE MULTI-ÉTAPES
   ========================================================================= */
.form-devis-conteneur{background:#fff;border:2px solid var(--nuit);padding:28px;position:relative;}
.champ-piege{position:absolute;left:-9999px;top:-9999px;}
.form-devis-progression{height:4px;background:var(--tole);margin-bottom:8px;}
.form-devis-progression span{display:block;height:100%;background:var(--accent);width:10%;transition:width .3s ease;}
.form-devis-etape-compteur{font-family:var(--police-mono);font-size:12px;color:var(--ardoise);margin:0 0 20px;}
.form-devis-question{font-size:20px;margin-bottom:14px;}
.form-devis-aide{color:var(--ardoise);font-size:13.5px;margin:-8px 0 14px;}
.form-devis-etape{min-height:0;}

.choix-cartes{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.choix-cartes--compact{grid-template-columns:1fr 1fr;}
.choix-carte{display:flex;align-items:center;min-height:52px;padding:12px 16px;background:var(--tole);border:2px solid transparent;text-align:left;font-family:var(--police-corps);font-weight:600;font-size:14.5px;color:var(--nuit);cursor:pointer;transition:border-color .12s ease,background-color .12s ease;}
.choix-carte:hover{border-color:var(--accent-pale);}
.choix-carte.est-choisi{border-color:var(--accent);background:var(--accent-pale);}
.choix-carte--petit{font-size:13px;min-height:46px;}
.choix-carte--mono{font-family:var(--police-mono);font-weight:500;justify-content:center;text-align:center;}
.choix-cartes--mono{grid-template-columns:1fr 1fr 1fr;}
@media (max-width:600px){.choix-cartes--mono{grid-template-columns:1fr 1fr;}}

.form-devis-passer{display:inline-block;margin-top:14px;font-size:13.5px;color:var(--ardoise);text-decoration:underline;min-height:44px;line-height:44px;}
.form-devis-actions{display:flex;gap:12px;margin-top:18px;}
.form-devis-actions .btn{flex:1;}

.champ{margin-bottom:16px;}
.champ label{display:block;font-family:var(--police-corps);font-weight:600;font-size:13.5px;color:var(--nuit);margin-bottom:6px;}
.champ input[type="text"],.champ input[type="email"],.champ input[type="tel"],.champ select,.champ textarea{width:100%;height:52px;padding:0 16px;border:1.5px solid var(--filet);border-radius:var(--rayon);background:#fff;color:var(--nuit);font-family:var(--police-corps);font-size:15px;}
.champ textarea{height:auto;padding:14px 16px;resize:vertical;}
.champ select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--nuit) 50%),linear-gradient(135deg,var(--nuit) 50%,transparent 50%);background-position:calc(100% - 22px) 22px,calc(100% - 16px) 22px;background-size:6px 6px;background-repeat:no-repeat;}
.champ input:focus,.champ select:focus,.champ textarea:focus{outline:3px solid var(--accent-pale);outline-offset:1px;border-color:var(--accent);}
.champ-inline{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media (max-width:480px){.champ-inline{grid-template-columns:1fr;}}
.champ-requis{color:var(--defaut);}
.champ-consentement{display:flex;align-items:flex-start;gap:10px;font-size:13px;color:var(--ardoise);margin-bottom:18px;line-height:1.5;}
.champ-consentement input{margin-top:3px;flex:none;width:18px;height:18px;}
.form-devis-erreur{background:#FBE8E6;border:1.5px solid var(--defaut);color:#7A1F17;padding:12px 14px;font-size:13.5px;margin-bottom:14px;}

.form-devis-confirmation{text-align:center;padding:20px 4px 4px;}
.form-devis-confirmation h3{margin-top:14px;}
.form-devis-confirmation-spectre{height:26px;}

/* ============================================================================
   8. SÉLECTEUR 3 ÉTAPES (accueil, DA §7.7)
   ========================================================================= */
.selecteur{background:#fff;border:2px solid var(--nuit);padding:32px;}
.selecteur-pastilles{display:flex;gap:8px;margin-bottom:24px;list-style:none;}
.selecteur-pastille{flex:1;height:4px;background:var(--filet);}
.selecteur-pastille.est-active,.selecteur-pastille.est-faite{background:var(--accent);}
.selecteur-grille{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;}
.selecteur-grille--app{grid-template-columns:repeat(5,minmax(0,1fr));}
.selecteur-tuile-picto{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;aspect-ratio:1/1;border:2px solid var(--filet);background:#fff;cursor:pointer;padding:12px 8px;color:var(--nuit);text-align:center;}
.selecteur-tuile-picto .picto{color:var(--accent);}
.selecteur-tuile-picto span{font-family:var(--police-corps);font-weight:600;font-size:12.5px;line-height:1.25;}
.selecteur-tuile-picto:hover{border-color:var(--accent-pale);}
.selecteur-tuile-picto.est-choisi{border-color:var(--accent);background:var(--accent-pale);}
@media (max-width:768px){.selecteur-grille--app{grid-template-columns:repeat(2,minmax(0,1fr));}.selecteur-tuile-picto{aspect-ratio:auto;flex-direction:row;justify-content:flex-start;padding:14px;}}
.selecteur-tuile-mono{aspect-ratio:auto;padding:18px 12px;background:var(--tole);display:flex;align-items:center;justify-content:center;font-family:var(--police-mono);font-weight:500;font-size:14px;color:var(--nuit);border:2px solid transparent;cursor:pointer;min-height:56px;}
.selecteur-tuile-mono.est-choisi{border-color:var(--accent);background:var(--accent-pale);}
.selecteur-grille--mono{grid-template-columns:1fr 1fr 1fr 1fr;}
@media (max-width:768px){.selecteur-grille{grid-template-columns:1fr 1fr;}.selecteur-grille--mono{grid-template-columns:1fr 1fr;}}
.selecteur-jauge{display:none;}
@media (min-width:1080px){.selecteur-jauge{display:block;width:70px;flex:none;}}
.selecteur-corps{display:flex;gap:32px;align-items:flex-start;}
.selecteur-outil{flex:1 1 auto;min-width:0;}

/* ============================================================================
   9. CRÉDIT PHOTO — DA §9
   ========================================================================= */
.credit-photo{position:absolute;right:8px;bottom:8px;background:rgba(12,27,58,.55);color:#fff;font-size:10.5px;font-family:var(--police-corps);padding:3px 7px;line-height:1.2;z-index:2;}

/* ============================================================================
   10. HÉROS ACCUEIL (procédé n°2)
   ========================================================================= */
.hero-accueil{background:#fff;overflow:hidden;}
.hero-accueil-grille{display:grid;grid-template-columns:7fr 5fr;align-items:stretch;gap:0;min-height:560px;}
.hero-accueil-texte{display:flex;flex-direction:column;justify-content:center;padding:64px var(--gouttiere) 64px 0;gap:18px;max-width:640px;}
.hero-accueil-chapo{font-size:18px;color:var(--ardoise);max-width:52ch;}
.hero-accueil-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px;}
.hero-accueil-pastilles{display:flex;gap:28px;flex-wrap:wrap;margin-top:18px;padding-top:22px;border-top:1px solid var(--filet);}
.pastille-chiffre{max-width:230px;}
.pastille-chiffre-valeur{display:block;font-family:var(--police-mono);font-weight:500;font-size:26px;color:var(--accent);line-height:1;margin-bottom:6px;}
.pastille-chiffre-source{display:block;font-size:12px;color:var(--ardoise);line-height:1.4;}

.hero-accueil-visuel{position:relative;background:var(--nuit);min-height:360px;isolation:isolate;}
.hero-accueil-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.92;}
.hero-accueil-escalier{position:absolute;left:0;top:0;bottom:0;width:26px;display:flex;flex-direction:column;justify-content:flex-end;gap:0;z-index:2;transform:translateX(-50%);}
.hero-accueil-escalier span{display:block;width:100%;background:#fff;}
.hero-accueil-motgeant{position:absolute;left:24px;bottom:24px;z-index:3;font-family:var(--police-titre);font-weight:700;font-size:52px;line-height:1;margin:0;}
.mot-geant-nuit{color:#0C1B3A;-webkit-text-stroke:1px #fff;}
.mot-geant-accent{color:var(--accent-pale);}
@media (max-width:1080px){
	.hero-accueil-grille{grid-template-columns:1fr;min-height:0;}
	.hero-accueil-texte{padding:40px var(--gouttiere);max-width:none;}
	.hero-accueil-visuel{min-height:260px;}
}
@media (max-width:600px){
	.hero-accueil-visuel{min-height:220px;}
	.hero-accueil-motgeant{font-size:32px;left:16px;bottom:16px;}
	.hero-accueil-pastilles{gap:20px;}
}

/* ============================================================================
   11. LAMELLES (procédé n°3)
   ========================================================================= */
.lamelles{display:flex;gap:6px;height:260px;margin:28px 0 44px;}
.lamelle{position:relative;flex:1 1 0;overflow:hidden;transition:flex-grow .25s ease;background:var(--tole);}
.lamelle-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.lamelle-label{position:absolute;left:0;right:0;bottom:0;padding:10px 8px;background:linear-gradient(0deg,rgba(12,27,58,.82),transparent);color:#fff;font-size:12px;font-weight:600;text-align:center;}
.lamelle:hover,.lamelle:focus-within{flex-grow:1.6;}
.lamelle:hover .lamelle-photo{filter:saturate(1.1);}
@media (max-width:768px){.lamelles{height:200px;}.lamelle-label{font-size:10.5px;padding:6px 4px;}}
@media (max-width:480px){.lamelles{gap:3px;height:170px;}}

/* ============================================================================
   12. APPLICATIONS / CARTES / APLAT-SPECTRE / LIGNE MONO (procédés n°4-5)
   ========================================================================= */
.grille-applications{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;}
.carte-application-visuel{position:relative;aspect-ratio:4/3;overflow:hidden;margin-bottom:14px;background:var(--tole);}
.carte-application-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.aplat-spectre{position:absolute;right:0;bottom:0;display:flex;align-items:flex-end;gap:3px;padding:10px;z-index:2;}
.aplat-spectre span{width:6px;background:var(--accent);}
.aplat-spectre span:nth-child(1){height:18%;}
.aplat-spectre span:nth-child(2){height:28%;}
.aplat-spectre span:nth-child(3){height:42%;}
.aplat-spectre span:nth-child(4){height:32%;}
.aplat-spectre span:nth-child(5){height:24%;}
.carte-application h3{font-size:19px;margin-bottom:6px;}
.ligne-mono{font-family:var(--police-mono);font-weight:500;font-size:12.5px;color:var(--ardoise);letter-spacing:.02em;margin:0;}
@media (max-width:1000px){.grille-applications{grid-template-columns:1fr 1fr;}}
@media (max-width:480px){.grille-applications{grid-template-columns:1fr;}}

/* ============================================================================
   13. SCHÉMA CHAÎNE (bande nuit)
   ========================================================================= */
.schema-chaine{margin:32px 0 0;}
.schema-chaine svg{width:100%;height:auto;}
.schema-titre{font-family:var(--police-mono);font-size:13px;fill:#fff;}
.schema-chaine figcaption{color:#AEB9DC;font-size:13.5px;max-width:70ch;margin-top:18px;}
/* En mobile (≤600px), le SVG large devenait illisible à l'échelle (texte ≈5px) : on bascule
   sur une liste verticale en HTML normal, taille de police fixe (constat 26/09 B-ACC-12/B-MO-06). */
.schema-chaine-mobile{display:none;}
@media (max-width:600px){
	.schema-chaine{display:none;}
	.schema-chaine-mobile{display:flex;flex-direction:column;align-items:center;margin:24px 0 0;}
	.schema-etape-mobile{width:100%;max-width:280px;padding:14px 18px;border:1.5px solid rgba(255,255,255,.35);color:#fff;text-align:center;font-family:var(--police-mono);font-weight:500;font-size:15px;}
	.schema-etape-mobile.schema-etape-accent{border-color:var(--accent-pale);color:var(--accent-pale);}
	.schema-fleche-mobile{color:rgba(255,255,255,.6);font-size:18px;padding:4px 0;}
}
.lien-souligne{display:inline-block;margin-top:20px;font-weight:600;text-decoration:underline;text-decoration-thickness:2px;}
.lien-souligne--clair{color:var(--accent-pale);}
.lien-souligne--clair:hover{color:#fff;}
/* Jamais coupé à droite en mobile : width:100%/height:auto + viewBox suffisent, le texte SVG suit l'échelle — aucun scroll horizontal forcé, aucune largeur minimale. */

/* ============================================================================
   14. CHIFFRES CLÉS
   ========================================================================= */
.grille-chiffres{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--filet);margin-top:28px;}
.tuile-chiffre{background:#fff;padding:32px 20px;text-align:center;}
.tuile-chiffre-valeur{display:block;font-family:var(--police-titre);font-weight:700;font-size:56px;color:var(--accent);line-height:1;margin-bottom:10px;}
.tuile-chiffre-valeur--formule{font-family:var(--police-mono);font-size:34px;}
.tuile-chiffre-label{display:block;font-size:13.5px;color:var(--ardoise);max-width:22ch;margin:0 auto;}
@media (max-width:900px){.grille-chiffres{grid-template-columns:1fr 1fr;}}
@media (max-width:480px){.tuile-chiffre-valeur{font-size:42px;}}

/* ============================================================================
   15. GUIDES
   ========================================================================= */
.grille-guides{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;margin-top:28px;}
.carte-guide--grande{grid-row:span 2;}
.carte-guide-lien{display:block;color:inherit;text-decoration:none;}
.carte-guide-visuel{position:relative;aspect-ratio:16/10;overflow:hidden;margin-bottom:14px;background:var(--tole);}
.carte-guide-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.carte-guide h3{font-size:20px;margin-bottom:6px;}
.carte-guide p:not(.ligne-mono){color:var(--ardoise);font-size:14.5px;margin-top:8px;}
@media (max-width:900px){.grille-guides{grid-template-columns:1fr;}.carte-guide--grande{grid-row:auto;}}
.grille-guides--3{grid-template-columns:repeat(3,minmax(0,1fr));}
@media (max-width:700px){.grille-guides--3{grid-template-columns:1fr;}}

/* ============================================================================
   16. ZONE COUVERTE / CARTE
   ========================================================================= */
.grille-zone{display:grid;grid-template-columns:7fr 5fr;gap:40px;align-items:start;}
/* Carte Leaflet — hauteur réservée à l'avance (aucun CLS au chargement du script). */
.carte-leaflet{width:100%;height:400px;background:var(--tole);border:1.5px solid var(--filet);position:relative;z-index:0;}
.carte-leaflet-repli{list-style:none;display:flex;flex-wrap:wrap;gap:8px;padding:20px;margin:0;}
.carte-leaflet-repli a{display:inline-block;padding:10px 14px;background:#fff;border:1px solid var(--filet);color:var(--nuit);text-decoration:none;font-size:13.5px;font-weight:500;}
.pin-leaflet{background:transparent !important;border:none !important;}
.pin-leaflet-inner{position:relative;height:100%;width:100%;}
.pin-leaflet-barre{display:block;width:6px;height:100%;background:var(--accent);margin:0 auto;}
.pin-leaflet--actif .pin-leaflet-barre{width:9px;background:var(--accent-survol);}
.pin-leaflet-label{position:absolute;left:50%;top:-20px;transform:translateX(-50%);white-space:nowrap;background:#fff;border:1px solid var(--filet);padding:2px 6px;font-family:var(--police-corps);font-weight:600;font-size:11px;color:var(--nuit);pointer-events:none;}
.pin-leaflet--actif .pin-leaflet-label{color:var(--accent-survol);border-color:var(--accent-survol);}
@media (max-width:600px){.carte-leaflet{height:320px;}.pin-leaflet-label{font-size:10px;}}
.zone-departs{display:grid;grid-template-columns:1fr 1fr;gap:24px 20px;}
.zone-departs-titre{font-family:var(--police-corps);font-weight:600;font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0 0 10px;}
.zone-departs-liste{list-style:none;}
.zone-departs-liste li{border-bottom:1px solid var(--filet);}
.zone-departs-liste a{display:flex;justify-content:space-between;align-items:center;padding:10px 2px;color:var(--nuit);text-decoration:none;font-weight:500;font-size:14.5px;}
.zone-departs-liste a:hover{color:var(--accent);}
.zone-departs-liste a span{color:var(--accent);}
@media (max-width:1000px){.grille-zone{grid-template-columns:1fr;}}
@media (max-width:480px){.zone-departs{grid-template-columns:1fr;}}

/* ============================================================================
   17. FAQ (accordéon natif details/summary)
   ========================================================================= */
.faq-grille{display:grid;grid-template-columns:1.6fr 1fr;gap:40px;align-items:start;margin-top:24px;}
.faq-aside{position:sticky;top:96px;}
.faq-aside-photo{width:100%;aspect-ratio:4/5;object-fit:cover;margin-bottom:0;}
.faq-aside-carte{background:#fff;border:1.5px solid var(--filet);padding:22px;display:flex;flex-direction:column;gap:12px;}
.faq-aside-carte h3{font-size:17px;margin:0;}
.faq-aside-carte p{color:var(--ardoise);font-size:14px;margin:0;}
@media (max-width:900px){.faq-grille{grid-template-columns:1fr;}.faq-aside{position:static;max-width:360px;}}
.faq-liste{margin-top:0;max-width:none;}
.faq-item{border-bottom:1px solid var(--filet);}
.faq-item summary{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 4px;cursor:pointer;font-family:var(--police-corps);font-weight:600;font-size:16px;color:var(--nuit);list-style:none;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-plus{flex:none;font-family:var(--police-mono);font-size:20px;color:var(--accent);transition:transform .15s ease;}
.faq-item[open] .faq-plus{transform:rotate(45deg);}
.faq-reponse{padding:0 4px 20px;color:var(--ardoise);max-width:70ch;}

/* ============================================================================
   18. CTA FINAL
   ========================================================================= */
.cta-final{text-align:center;}
.cta-final-grille{display:flex;justify-content:center;}
.cta-final-texte{max-width:640px;display:flex;flex-direction:column;align-items:center;gap:18px;}
.cta-final-spectre{margin-bottom:4px;}
.cta-final h2{color:#fff;font-size:38px;}
.cta-final-reassurance{color:rgba(255,255,255,.85);font-size:14px;margin:0;}
@media (max-width:600px){.cta-final h2{font-size:28px;}}

/* ============================================================================
   19. ARTICLE
   ========================================================================= */
.article-tete{background:#fff;padding:48px 0 32px;}
.article-tete-grille{display:grid;grid-template-columns:7fr 5fr;gap:40px;align-items:center;}
.article-tete-texte h1{font-size:44px;}
.article-chapo{font-size:18px;color:var(--ardoise);}
.auteur-inline{display:flex;align-items:center;gap:10px;margin-top:18px;font-size:13.5px;color:var(--ardoise);}
.auteur-inline-photo{width:36px;height:36px;border-radius:50%;object-fit:cover;flex:none;}
.auteur-inline a{color:var(--nuit);font-weight:600;text-decoration:none;}
.auteur-inline a:hover{color:var(--accent);}

.article-tete-visuel{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--tole);}
.article-tete-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.article-tete-escalier{position:absolute;left:0;top:0;bottom:0;width:18px;display:flex;flex-direction:column;justify-content:flex-end;transform:translateX(-50%);z-index:2;}
.article-tete-escalier span{display:block;width:100%;background:#fff;}
@media (max-width:1000px){
	.article-tete-grille{grid-template-columns:1fr;gap:24px;}
	.article-tete{padding:28px 0 20px;}
	.article-tete-texte h1{font-size:30px;}
	.article-tete-visuel{aspect-ratio:16/10;order:-1;}
}

.plaque{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0;border:2px solid var(--nuit);margin:28px 0 40px;}
.plaque-ligne{padding:16px 20px;border-left:1px solid var(--filet);}
.plaque-ligne:first-child{border-left:none;}
.plaque-ligne dt{font-family:var(--police-corps);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ardoise);margin:0 0 4px;}
.plaque-ligne dd{margin:0;font-family:var(--police-mono);font-weight:500;font-size:14.5px;color:var(--nuit);}
@media (max-width:700px){.plaque{grid-template-columns:1fr 1fr;}.plaque-ligne:nth-child(2n+1){border-left:none;}}

.article-mise-en-page{display:grid;grid-template-columns:1fr 340px;gap:56px;align-items:start;padding:8px 0 48px;}
.article-corps{max-width:720px;font-size:17px;line-height:1.72;}
.article-corps h2{display:flex;align-items:center;gap:10px;margin-top:1.6em;font-size:30px;}
.article-corps h3{margin-top:1.3em;}
.article-corps p{margin:0 0 1.3em;}
.article-corps figure{margin:28px 0;}
.article-corps figure img{width:100%;aspect-ratio:16/9;object-fit:cover;}
.article-corps figcaption{color:var(--ardoise);font-size:13px;margin-top:8px;}
.article-corps a{font-weight:600;text-decoration-thickness:2.5px;}
.article-corps ul,.article-corps ol{padding-left:1.3em;margin:0 0 1.3em;}
.article-corps li{margin-bottom:.5em;}

/* « À retenir » — encadré teinté, filet accent, picto (R-0880). */
blockquote.vdv-note{position:relative;margin:28px 0;padding:20px 22px 20px 56px;background:var(--accent-pale);border-left:4px solid var(--accent);color:var(--nuit);}
blockquote.vdv-note::before{content:'';position:absolute;left:20px;top:22px;width:20px;height:20px;background:var(--accent);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);}
blockquote.vdv-note p{margin:0;font-weight:500;}
blockquote.vdv-note strong.vdv-note-label{color:var(--accent-survol);font-weight:700;}

/* Sources — liste numérotée soignée, jamais une URL brute ni un lien (R-0880). */
.vdv-source{counter-reset:vdvsource;list-style:none;margin:28px 0;padding:22px;border:1.5px solid var(--filet);}
.vdv-source li{counter-increment:vdvsource;position:relative;padding:8px 0 8px 34px;font-size:13.5px;color:var(--ardoise);border-top:1px solid var(--filet);}
.vdv-source li:first-child{border-top:none;}
.vdv-source li::before{content:counter(vdvsource);position:absolute;left:0;top:8px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--nuit);color:#fff;font-family:var(--police-mono);font-size:11px;}

.article-aside{position:sticky;top:96px;display:flex;flex-direction:column;gap:24px;align-self:start;}
.sommaire{border:1.5px solid var(--filet);padding:20px;}
.sommaire-titre{font-family:var(--police-corps);font-weight:600;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--ardoise);margin:0 0 12px;}
.sommaire ol{list-style:none;counter-reset:sommaire;display:flex;flex-direction:column;gap:2px;}
.sommaire li{counter-increment:sommaire;}
.sommaire a{display:block;padding:8px 8px 8px 0;border-left:3px solid transparent;padding-left:10px;font-size:14px;color:var(--ardoise);text-decoration:none;}
.sommaire a::before{content:counter(sommaire) '. ';color:var(--ardoise);font-family:var(--police-mono);}
.sommaire a:hover{color:var(--nuit);}
.sommaire a.est-actif{border-left-color:var(--accent);color:var(--nuit);font-weight:600;}
.aside-carte-devis{background:var(--tole);padding:14px;}
.aside-carte-devis-photo{width:100%;aspect-ratio:16/10;object-fit:cover;margin-bottom:14px;}
.aside-carte-devis h3{font-size:17px;margin-bottom:12px;}
.aside-carte-devis .form-devis-conteneur{border-width:1.5px;padding:14px;}
/* Largeur utile mesurée ≥280px (grille 340px − paddings) : ne jamais redescendre sous ce seuil. */
@media (max-width:1080px){.article-mise-en-page{grid-template-columns:1fr;}.article-aside{position:static;}.article-aside .sommaire{display:none;}}

/* Sommaire mobile (dans la tête, juste après le chapô) — masqué en desktop où le sommaire vit dans la sidebar. */
.sommaire-mobile{display:none;}
@media (max-width:1080px){
	.sommaire-mobile{display:block;border:1.5px solid var(--filet);margin-top:16px;}
	.sommaire-mobile summary{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;cursor:pointer;font-weight:600;font-size:14px;color:var(--nuit);list-style:none;}
	.sommaire-mobile summary::-webkit-details-marker{display:none;}
	.sommaire-mobile[open] .faq-plus{transform:rotate(45deg);}
	.sommaire-mobile ol{list-style:none;counter-reset:sommairem;padding:0 16px 14px;margin:0;display:flex;flex-direction:column;gap:6px;}
	.sommaire-mobile li{counter-increment:sommairem;font-size:14px;}
	.sommaire-mobile a{color:var(--ardoise);text-decoration:none;}
	.sommaire-mobile a::before{content:counter(sommairem) '. ';font-family:var(--police-mono);color:var(--accent);}
}

.bloc-auteur{display:flex;gap:18px;align-items:flex-start;padding:28px;background:var(--tole);margin:40px 0;}
.bloc-auteur img{width:80px;height:80px;border-radius:50%;object-fit:cover;flex:none;}
.bloc-auteur-nom{font-family:var(--police-titre);font-weight:700;font-size:17px;margin:0 0 2px;}
.bloc-auteur-nom a{color:var(--nuit);text-decoration:none;}
.bloc-auteur-fonction{font-size:13px;color:var(--accent);font-weight:600;margin:0 0 8px;}
.bloc-auteur-bio{color:var(--ardoise);font-size:14.5px;margin:0;max-width:60ch;}
.bloc-auteur--page{background:transparent;padding:0;margin:20px 0 0;}
.bloc-auteur--page img{width:96px;height:96px;}
.bloc-auteur-nom-h1{font-size:30px;margin:0 0 2px;}

.articles-lies{padding:8px 0 48px;}

/* ============================================================================
   20. INFOGRAPHIES DU SOCLE (.sbs_*) + TABLEAUX
   ========================================================================= */
.sbs_tableau{overflow-x:auto;margin:28px 0;border:1.5px solid var(--filet);}
.sbs_tableau table{width:100%;border-collapse:collapse;min-width:480px;font-size:14.5px;}
.sbs_tableau thead,.sbs_tableau th{background:var(--nuit);color:#fff;font-family:var(--police-corps);font-weight:600;font-size:12.5px;letter-spacing:.03em;text-align:left;padding:12px 14px;}
.sbs_tableau td{padding:12px 14px;border-top:1px solid var(--filet);font-family:var(--police-mono);font-size:13.5px;}
.sbs_tableau td:first-child,.sbs_tableau th:first-child{position:sticky;left:0;background:#fff;font-family:var(--police-corps);}
.sbs_tableau thead th:first-child{background:var(--nuit);}

.sbs_source{display:block;margin-top:10px;color:var(--ardoise);font-size:12px;}
.sbs_lieu,.sbs_tarifs,.sbs_frise,.sbs_jauges{display:block;border:1.5px solid var(--filet);padding:22px;margin:28px 0;background:#fff;}
.sbs_lieu_nom,.sbs_tarifs_titre,.sbs_frise_titre,.sbs_jauges_titre{display:block;font-family:var(--police-titre);font-weight:700;font-size:16px;margin-bottom:14px;}
.sbs_lieu_adresse,.sbs_lieu_acces{display:block;font-size:13.5px;color:var(--ardoise);margin-top:4px;}
.sbs_lieu_carte{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:13.5px;font-weight:600;}
.sbs_icone_repere{fill:var(--accent);}

.sbs_tarif{display:grid;grid-template-columns:1fr 2fr;align-items:center;gap:14px;padding:8px 0;border-top:1px solid var(--filet);}
.sbs_tarif:first-of-type{border-top:none;}
.sbs_tarif_libelle{font-size:14px;color:var(--nuit);}
.sbs_tarif_barre{width:100%;height:22px;accent-color:var(--accent);}
.sbs_tarifs_notes{display:block;margin-top:14px;color:var(--ardoise);font-size:12.5px;}

/* Libellé + titre sur la 1re ligne (flex baseline), description forcée en pleine largeur sur la ligne suivante
   (flex-basis:100%) — jamais de description écrasée dans une colonne étroite. */
.sbs_etape{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:14px;row-gap:6px;padding:14px 0;border-top:1px solid var(--filet);}
.sbs_etape:first-of-type{border-top:none;}
.sbs_etape_date{font-family:var(--police-mono);font-size:13px;color:var(--accent);flex:none;}
.sbs_etape_titre{font-weight:600;flex:none;}
.sbs_etape_desc{flex-basis:100%;width:100%;color:var(--ardoise);font-size:13.5px;}

.sbs_jauges{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:20px;}
.sbs_jauges_titre{grid-column:1/-1;}
.sbs_jauge{text-align:center;}
.sbs_jauge_valeur{display:block;font-family:var(--police-titre);font-weight:700;font-size:32px;color:var(--accent);}
.sbs_jauge_unite{display:block;font-size:12px;color:var(--ardoise);}
.sbs_jauge_libelle{display:block;font-size:12.5px;color:var(--ardoise);margin-bottom:4px;}

/* ============================================================================
   21. RUBRIQUE / ARCHIVES
   ========================================================================= */
.fil-ariane{display:flex;gap:8px;font-size:13px;color:var(--ardoise);margin-bottom:18px;}
.fil-ariane a{color:var(--ardoise);text-decoration:none;}
.fil-ariane a:hover{color:var(--accent);}
.rubrique-tete{background:#fff;padding:48px 0 28px;}
.rubrique-tete h1{font-size:48px;}
.rubrique-chapo{color:var(--ardoise);font-size:16px;max-width:70ch;margin-top:8px;}
.onglets-rubriques{display:flex;gap:2px;margin-top:28px;flex-wrap:wrap;}
.onglet-rubrique{padding:12px 18px;background:#fff;border:1px solid var(--filet);border-bottom:2px solid transparent;font-weight:600;font-size:14px;color:var(--ardoise);text-decoration:none;}
.onglet-rubrique:hover{color:var(--nuit);}
.onglet-rubrique.est-actif{border-bottom-color:var(--accent);color:var(--nuit);}

.grille-rubrique{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:8px 0 32px;}
.grille-rubrique--sans-outil{padding-top:32px;}
.carte-rubrique{min-width:0;}
.carte-rubrique .carte-guide-lien{position:relative;padding-bottom:36px;}
.carte-guide-surtitre{display:flex;align-items:center;gap:8px;font-family:var(--police-corps);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;}
.carte-guide-fleche{position:absolute;left:0;bottom:0;font-size:18px;color:var(--accent);}
.tuile-outil{display:block;background:var(--nuit);color:#fff;padding:26px;position:relative;text-decoration:none;min-height:220px;}
.tuile-outil h3{color:#fff;font-size:19px;margin:14px 0 8px;}
.tuile-outil p{color:#AEB9DC;font-size:13.5px;margin:0;}
.tuile-outil-fleche{position:absolute;right:22px;bottom:22px;font-size:22px;color:var(--accent-pale);}
.tuile-outil-spectre{height:22px;}
.rubrique-vide{grid-column:1/-1;color:var(--ardoise);padding:40px 0;text-align:center;}
.recherche-vide{grid-column:1/-1;text-align:center;padding:40px 0;display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--ardoise);}
@media (max-width:1000px){.grille-rubrique{grid-template-columns:1fr 1fr;}}
@media (max-width:600px){.grille-rubrique{grid-template-columns:1fr;}.rubrique-tete h1{font-size:30px;}}

.pagination,.nav-links{display:flex;gap:6px;justify-content:center;padding:20px 0 60px;flex-wrap:wrap;}
.pagination .page-numbers,.nav-links .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 10px;border:1px solid var(--filet);color:var(--nuit);text-decoration:none;font-weight:600;font-size:14px;}
.pagination .page-numbers.current,.nav-links .page-numbers.current{background:var(--nuit);color:#fff;border-color:var(--nuit);}
.pagination .page-numbers:hover,.nav-links .page-numbers:hover{border-color:var(--accent);color:var(--accent);}

/* ============================================================================
   26. PLAN DU SITE
   ========================================================================= */
.plan-grille{display:grid;grid-template-columns:1fr 1fr 1fr;gap:40px;padding:8px 0 56px;align-items:start;}
.plan-bloc--large{grid-column:1/-1;}
.plan-bloc h2{font-size:19px;margin-bottom:14px;}
.plan-liste{list-style:none;display:flex;flex-direction:column;gap:8px;}
.plan-liste a{color:var(--nuit);text-decoration:none;font-size:14.5px;}
.plan-liste a:hover{color:var(--accent);}
.plan-compte{color:var(--ardoise);font-size:12.5px;font-family:var(--police-mono);}
.plan-secteurs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;}
@media (max-width:1000px){.plan-grille{grid-template-columns:1fr 1fr;}.plan-secteurs{grid-template-columns:1fr 1fr;}}
@media (max-width:600px){.plan-grille{grid-template-columns:1fr;}.plan-secteurs{grid-template-columns:1fr;}}

/* ============================================================================
   22. PAGES ANNEXES
   ========================================================================= */
.page-annexe-bandeau{position:relative;height:280px;background:var(--nuit);overflow:hidden;}
.page-annexe-bandeau-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5;}
.page-annexe-bandeau-texte{position:relative;z-index:2;height:100%;display:flex;align-items:flex-end;padding-bottom:32px;}
.page-annexe-bandeau-texte h1{color:#fff;font-size:38px;margin:0;}
.page-annexe-corps{max-width:760px;padding:48px 0 60px;}
.page-annexe-corps .article-corps{max-width:none;}
.page-annexe-cta{margin-top:48px;padding:32px;background:var(--tole);text-align:center;}
.page-annexe-cta h2{font-size:24px;margin:14px 0 18px;}
@media (max-width:600px){.page-annexe-bandeau{height:200px;}.page-annexe-bandeau-texte h1{font-size:26px;}}
/* Politique de confidentialité : zéro image (B-LEG-05) — bandeau sobre sans photo. */
.page-annexe-bandeau--sobre{height:auto;background:#fff;padding:48px 0 8px;}
.page-annexe-bandeau--sobre .page-annexe-bandeau-texte{position:static;padding:0;}
.page-annexe-bandeau--sobre .page-annexe-bandeau-texte h1{color:var(--nuit);}

/* ============================================================================
   23. CONTACT
   ========================================================================= */
.page-contact-tete{padding:48px 0 8px;}
.page-contact-grille{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start;padding:24px 0 56px;}
.page-contact-visuel{position:relative;}
.page-contact-photo{width:100%;aspect-ratio:4/5;object-fit:cover;margin-bottom:20px;}
.page-contact-aide{background:var(--tole);padding:22px;}
.page-contact-aide h3{font-size:16px;margin-bottom:12px;}
.page-contact-aide ul{list-style:none;display:flex;flex-direction:column;gap:8px;}
.page-contact-aide li{position:relative;padding-left:16px;font-size:14px;color:var(--ardoise);}
.page-contact-aide li::before{content:'';position:absolute;left:0;top:7px;width:6px;height:6px;background:var(--accent);}
@media (max-width:900px){.page-contact-grille{grid-template-columns:1fr;}.page-contact-visuel{order:-1;}}

/* ============================================================================
   24. 404
   ========================================================================= */
.page-404{padding:100px 0;}
.page-404-grille{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;}
.mot-geant-404{font-family:var(--police-titre);font-weight:700;font-size:120px;line-height:1;margin:0 0 18px;}
.page-404-texte p:not(.mot-geant-404){color:var(--ardoise);font-size:17px;max-width:44ch;margin-bottom:24px;}
.page-404-actions{display:flex;gap:14px;margin-bottom:32px;flex-wrap:wrap;}
.page-404-visuel{aspect-ratio:4/3;overflow:hidden;background:var(--tole);position:relative;}
.page-404-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
@media (max-width:900px){.page-404{padding:56px 0;}.page-404-grille{grid-template-columns:1fr;}.mot-geant-404{font-size:72px;}}

/* ============================================================================
   25. PAGE VILLE
   ========================================================================= */
/* Héros 2 colonnes : texte+plaque à gauche, formulaire à droite — tient à l'écran 1440×900 (pt.3-4 /peaufiner 26/09). */
.page-ville-tete{background:#fff;padding:40px 0 32px;}
.page-ville-tete-grille{display:grid;grid-template-columns:1fr 440px;gap:36px;align-items:start;}
.page-ville-tete-texte h1{font-size:34px;}
.page-ville-tete-texte .article-chapo{font-size:15.5px;margin:10px 0 0;}
.page-ville-tete-texte .plaque{margin:20px 0 0;}
.page-ville-tete-texte .plaque-ligne{padding:12px 16px;}
.page-ville-tete-formulaire .form-devis-conteneur{padding:20px;}
.page-ville-tete-formulaire .form-devis-question{font-size:17px;margin-bottom:10px;}
.page-ville-tete-formulaire .choix-carte{min-height:44px;padding:9px 14px;font-size:13.5px;}
@media (max-width:1100px){.page-ville-tete-grille{grid-template-columns:1fr;}.page-ville-tete-formulaire{max-width:520px;}}
@media (max-width:600px){.page-ville-tete{padding:28px 0 20px;}.page-ville-tete-texte h1{font-size:26px;}}

/* Guides utiles + FAQ contextualisée (pt.12) */
.page-ville-guides{display:grid;grid-template-columns:1.3fr 1fr;gap:40px;padding:8px 0 8px;align-items:start;}
.page-ville-faq .faq-liste{margin-top:24px;}
@media (max-width:900px){.page-ville-guides{grid-template-columns:1fr;}}

/* Contenu hérité (texte prose) : les <ul> deviennent des rangées à coche, jamais des puces brutes — uniquement sur la page ville. */
.page-ville-corps ul{list-style:none;padding:0;margin:22px 0;display:flex;flex-direction:column;gap:10px;}
.page-ville-corps li{display:flex;align-items:flex-start;gap:12px;background:var(--tole);padding:14px 16px;font-size:15px;margin:0;}
.page-ville-corps li::before{content:'✓';flex:none;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:11px;font-weight:700;margin-top:2px;}
.page-ville-corps{padding:8px 0 40px;}
.page-ville-mini-carte{padding:8px 0 48px;}
.page-ville-applications{padding:8px 0 48px;grid-template-columns:repeat(3,minmax(0,1fr));}
.page-ville-voisines{padding:8px 0 56px;max-width:520px;}
@media (max-width:900px){
	.page-ville-applications{grid-template-columns:1fr;}
}

/* === Passe /peaufiner 26/09 : schémas et photos de corps d'article, étiquettes de carte === */
.vdv-schema{margin:2.5rem 0;padding:1.75rem 1.5rem 1.25rem;background:var(--tole);border-left:4px solid var(--accent);}
.vdv-schema svg{display:block;width:100%;max-width:420px;height:auto;margin:0 auto;}
.vdv-schema figcaption,.vdv-photo-corps figcaption{margin-top:.9rem;font-size:.85rem;line-height:1.45;color:var(--ardoise);}
.vdv-schema figcaption{text-align:left;max-width:560px;margin-left:auto;margin-right:auto;}
.vdv-photo-corps{margin:2.25rem 0;}
.vdv-photo-corps img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;box-shadow:0 18px 40px -24px rgba(12,27,58,.45);}
.vdv-photo-corps figcaption{font-size:.75rem;text-align:right;}
@media (max-width:600px){.vdv-schema{padding:1.25rem .75rem 1rem;margin:2rem -0.25rem;}}
.pin-leaflet-label{opacity:0;transition:opacity .15s ease;}
.pin-leaflet:hover .pin-leaflet-label,.pin-leaflet:focus .pin-leaflet-label,.pin-leaflet:focus-within .pin-leaflet-label,.pin-leaflet--actif .pin-leaflet-label{opacity:1;z-index:2;}
.pin-leaflet:hover{z-index:1000 !important;}
@media (prefers-reduced-motion:reduce){.pin-leaflet-label{transition:none;}}

/* grille rubrique : jamais de carte orpheline (R-0552) */
@media (min-width:1001px){.grille-rubrique--outil-haut .tuile-outil{grid-row:span 2;}.grille-rubrique--outil-large .tuile-outil{grid-column:1/-1;min-height:0;display:flex;align-items:center;gap:24px;}}
/* crédit photo toujours dans le cadre de sa photo (mobile compris) */
*:has(> .credit-photo){position:relative;}
@media (max-width:760px){.selecteur-grille--app > :last-child:nth-child(odd){grid-column:1/-1;}}
