/*
Theme Name: Pavillon
Theme URI: https://permis-bateau.org
Author: Permis Bateau
Description: Thème code-pur pour permis-bateau.org — le pavillon P est hissé, on part. Pavillons du code international, feux de route, numéros de coque, coupe d'étrave. Écrit de zéro pour ce site (DIRECTION-ARTISTIQUE.md, 28/09/2026).
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: pavillon
*/

/* =========================================================================
   0. TOKENS — mode CLAIR uniquement (P-030 du parc). Aucune media
   prefers-color-scheme dark : décision de direction artistique du site.
   ========================================================================= */
:root{
	--voile:#FBFBF8;
	--rade:#E4EDF6;
	--nuit:#0B1E33;
	--pavillon:#0B45C2;
	--jaune-q:#FFC20E;
	--coque:#566479;
	--tribord:#0A7A45;
	--babord:#C81E2E;
	--blanc:#FFFFFF;

	--police-titre:"Alumni Sans", "Arial Narrow", sans-serif;
	--police-corps:"Source Sans 3", "Segoe UI", sans-serif;

	--conteneur:1240px;
	--gouttiere:24px;
	--rayon:0; /* rayon 0 partout : décision DA, la coupe d'étrave remplace l'arrondi */
	--etrave:4deg;
	--ombre-dure:6px 6px 0 rgba(11,30,51,.22);
	--ombre-carte:0 10px 24px rgba(11,30,51,.12);
}
@media (max-width:640px){
	:root{ --gouttiere:16px; }
}

/* =========================================================================
   1. RESET SOBRE
   ========================================================================= */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
	margin:0;
	background:var(--voile);
	color:var(--nuit);
	font-family:var(--police-corps);
	font-size:18px;
	line-height:1.65;
	overflow-x:hidden;
}
img,svg{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; }
ul[class],ol[class]{ list-style:none; margin:0; padding:0; }
/* Point 5 (constat homepage) : un [hidden] doit rester caché quoi qu'une
   règle de classe dise plus loin dans la feuille — ceinture et bretelles. */
[hidden]{ display:none !important; }
h1,h2,h3,h4{ font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; letter-spacing:-0.01em; line-height:0.95; margin:0 0 .5em; color:var(--nuit); }
p{ margin:0 0 1.1em; }
:focus-visible{ outline:3px solid var(--pavillon); outline-offset:2px; }

.pv-conteneur{ max-width:var(--conteneur); margin-inline:auto; padding-inline:var(--gouttiere); }
.pv-visually-hidden{ position:absolute !important; width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap; }
.pv-sr-skip{ position:absolute; left:-999px; top:0; background:var(--nuit); color:#fff; padding:.6em 1em; z-index:200; }
.pv-sr-skip:focus{ left:var(--gouttiere); top:var(--gouttiere); }

/* =========================================================================
   2. COUPE D'ÉTRAVE — procédé signature n°5
   ========================================================================= */
.pv-etrave-bas{ clip-path:polygon(0 0,100% 0,100% calc(100% - 2.4vw),0 100%); }
.pv-etrave-haut{ clip-path:polygon(0 2.4vw,100% 0,100% 100%,0 100%); }
.pv-carte-image{ clip-path:polygon(0 0,calc(100% - 18px) 0,100% 18px,100% 100%,0 100%); }

/* =========================================================================
   3. BOUTONS — parallélogramme penché vers l'avant
   ========================================================================= */
.pv-bouton{
	display:inline-flex; align-items:center; justify-content:center; gap:.5em;
	font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase;
	font-size:1rem; letter-spacing:-0.005em;
	padding:.85em 1.6em .75em 1.9em;
	background:var(--jaune-q); color:var(--nuit);
	clip-path:polygon(10px 0,100% 0,calc(100% - 10px) 100%,0 100%);
	border:none; cursor:pointer; min-height:44px;
	transition:transform .15s ease, background .15s ease;
}
.pv-bouton:hover,.pv-bouton:focus-visible{ transform:translateX(2px); background:#FFCF3D; }
.pv-bouton--fonce{ background:var(--nuit); color:#fff; }
.pv-bouton--fonce:hover{ background:#132a48; }
.pv-bouton--contour{ background:transparent; color:var(--voile); border:2px solid var(--voile); padding:.75em 1.5em .65em 1.8em; }
.pv-bouton--attente{ background:var(--rade); color:var(--coque); cursor:not-allowed; }
.pv-bouton--attente em{ font-style:italic; font-weight:400; font-size:.8em; }
.pv-bouton--petit{ padding:.55em 1.1em .5em 1.3em; font-size:.85rem; }

/* =========================================================================
   4. BULLETIN — barre haute défilante (procédé signature n°7)
   ========================================================================= */
.pv-bulletin{
	background:var(--nuit); color:var(--voile);
	font-family:var(--police-corps); font-size:.82rem; font-weight:600; text-transform:uppercase; letter-spacing:.04em;
	display:flex; align-items:center; gap:1rem;
	padding-block:.5em;
}
.pv-bulletin_porte-voix{ flex:0 0 auto; margin-left:var(--gouttiere); color:var(--jaune-q); }
.pv-bulletin_piste{ flex:1 1 auto; overflow:hidden; }
.pv-bulletin_defile{ display:flex; gap:3rem; white-space:nowrap; animation:pv-defile 32s linear infinite; }
.pv-bulletin_piste:hover .pv-bulletin_defile{ animation-play-state:paused; }
.pv-bulletin_compteur{ flex:0 0 auto; margin-right:var(--gouttiere); color:var(--jaune-q); font-variant-numeric:tabular-nums; }
@keyframes pv-defile{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }
@media (prefers-reduced-motion:reduce){
	.pv-bulletin_defile{ animation:none; flex-wrap:wrap; }
}

/* =========================================================================
   5. HEADER
   ========================================================================= */
.pv-entete{ position:sticky; top:0; z-index:100; background:var(--voile); border-bottom:1px solid var(--rade); }
.pv-entete_barre{ display:flex; align-items:center; gap:1.5rem; padding-block:.9em; }
.pv-marque{ display:flex; align-items:center; gap:.55em; flex:0 0 auto; }
.pv-marque_symbole{ width:34px; height:23px; flex:0 0 auto; }
.pv-marque_texte{ font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; font-size:1.35rem; letter-spacing:-.01em; white-space:nowrap; }
.pv-marque_domaine{ font-family:var(--police-corps); font-style:normal; font-weight:600; color:var(--coque); font-size:.62em; text-transform:none; margin-left:.15em; }

.pv-nav{ display:flex; align-items:center; gap:1.2rem; flex:1 1 auto; }
.pv-nav_liste{ display:flex; flex-wrap:nowrap; align-items:center; gap:1rem; }
/* Point 1 (D3, 28/09) — .98rem (15,68px) lisait trop petit sur capture (police
   condensée italique capitales) : porté à 1.1rem (~17,6px, proche des 19px
   DA), gaps resserrés pour ne pas redéborder à 1440 (≤6 entrées déjà, marge
   suffisante dans le conteneur 1240px). */
.pv-nav_lien{
	font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem;
	letter-spacing:-.005em; white-space:nowrap; padding:.3em 0; border-bottom:2px solid transparent;
}
.pv-nav_lien:hover,.pv-nav_lien.is-actif{ border-color:var(--jaune-q); }
.pv-nav_panneau-bouton{
	font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem;
	background:none; border:none; color:var(--nuit); display:flex; align-items:center; gap:.3em; cursor:pointer; padding:.3em 0;
}
.pv-nav_panneau-bouton svg{ transition:transform .18s ease; }
.pv-nav_panneau-bouton[aria-expanded="true"] svg{ transform:rotate(180deg); }
.pv-nav_panneau{
	position:absolute; left:0; right:0; top:100%; background:var(--voile); border-bottom:1px solid var(--rade);
	box-shadow:var(--ombre-carte); padding:1.4rem var(--gouttiere) 1.8rem; display:none;
}
.pv-nav_panneau.is-ouvert{ display:block; }
.pv-nav_panneau-grille{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1rem; max-width:var(--conteneur); margin-inline:auto; }
.pv-nav_panneau-carte{ display:flex; flex-direction:column; gap:.5em; }
.pv-nav_panneau-carte img,.pv-nav_panneau-carte .pv-carte-image{ aspect-ratio:3/2; object-fit:cover; }
.pv-nav_panneau-carte span{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:.92rem; }
/* Point 1 — panneau « Le permis » : liste compacte pavillon + libellé (pas de
   photo à trouver pour 8 pages qui n'en ont pas toutes une dédiée). */
.pv-nav_panneau-grille--liste{ grid-template-columns:repeat(4,minmax(0,1fr)); gap:.4rem 1rem; }
.pv-nav_panneau-lien{ display:flex; align-items:center; gap:.7em; padding:.6em .3em; min-height:44px; }
.pv-nav_panneau-lien svg{ flex:0 0 auto; }
.pv-nav_panneau-lien span{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:.92rem; }
.pv-nav_panneau-lien:hover,.pv-nav_panneau-lien:focus-visible{ color:var(--pavillon); }
.pv-nav-mobile_groupe{ font-family:var(--police-corps); font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--jaune-q); padding:1em .2em .3em; }

.pv-entete_recherche{ flex:0 0 auto; }
.pv-recherche-icone{ background:none; border:1px solid var(--coque); width:40px; height:40px; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.pv-entete_cta{ flex:0 0 auto; }

.pv-burger{ display:none; background:none; border:2px solid var(--nuit); width:44px; height:44px; align-items:center; justify-content:center; cursor:pointer; }

@media (max-width:960px){
	.pv-nav_liste,.pv-entete_recherche{ display:none; }
	.pv-burger{ display:flex; }
	.pv-entete_barre{ flex-wrap:wrap; }
}
@media (max-width:640px){
	.pv-marque_texte{ font-size:1.05rem; }
	.pv-entete_cta{ display:none; }
}

.pv-nav-mobile{ display:none; background:var(--nuit); color:var(--voile); padding:1rem var(--gouttiere) 1.6rem; }
.pv-nav-mobile.is-ouvert{ display:block; }
.pv-nav-mobile_liste{ display:flex; flex-direction:column; gap:.2rem; }
.pv-nav-mobile_liste a,.pv-nav-mobile_liste span{
	display:flex; align-items:center; gap:.6em; padding:.9em .2em; border-bottom:1px solid rgba(251,251,248,.12);
	font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem; min-height:44px;
}
.pv-nav-mobile_cta{ margin-top:1rem; }

/* =========================================================================
   6. BANDES — rythme de page
   ========================================================================= */
.pv-bande{ padding-block:clamp(3rem,6vw,5.5rem); }
.pv-bande--voile{ background:var(--voile); }
.pv-bande--rade{ background:var(--rade); }
.pv-bande--pavillon{ background:var(--pavillon); color:#fff; }
.pv-bande--pavillon h2,.pv-bande--pavillon h3{ color:#fff; }
.pv-bande--nuit{ background:var(--nuit); color:var(--voile); }
.pv-bande--nuit h2,.pv-bande--nuit h3{ color:var(--voile); }
.pv-bande--jaune{ background:var(--jaune-q); color:var(--nuit); }
.pv-bande_titre{ font-size:clamp(2rem,4vw,3.4rem); max-width:16ch; margin-bottom:1.2rem; text-wrap:balance; }
.pv-bande_intro{ font-size:1.15rem; max-width:62ch; margin-bottom:2.2rem; }
/* Point 3 (D3, 28/09) — une bande courte (une seule rangée, ex. le grand
   pavois) avec le même padding vertical qu'une bande pleine laissait un
   grand blanc avant la section suivante (homepage-CONSTAT). */
.pv-bande--compact{ padding-block:clamp(1.6rem,3vw,2.4rem); }

/* =========================================================================
   7. HÉROS
   ========================================================================= */
.pv-heros{ position:relative; min-height:min(88vh,780px); display:flex; align-items:flex-end; background:var(--nuit); overflow:hidden; }
.pv-heros_fond{ position:absolute; inset:0; z-index:0; }
.pv-heros_fond img{ width:100%; height:100%; object-fit:cover; }
.pv-heros_voile{ position:absolute; inset:0; background:linear-gradient(0deg,rgba(11,30,51,.92) 5%,rgba(11,30,51,.55) 55%,rgba(11,30,51,.15) 100%); z-index:1; }
.pv-heros_corps{ position:relative; z-index:2; color:var(--voile); width:100%; padding-block:3.5rem 4rem; }
.pv-heros_h1{ color:#fff; font-size:clamp(2.6rem,6.4vw,6.2rem); max-width:15ch; margin-bottom:.5rem; text-wrap:balance; }
.pv-heros_promesse{ font-family:var(--police-corps); font-size:1.2rem; max-width:48ch; margin-bottom:1.8rem; color:var(--rade); }

.pv-recherche-hero{ background:rgba(11,30,51,.55); border:1px solid rgba(251,251,248,.35); padding:1.4rem; max-width:640px; display:flex; flex-direction:column; gap:1rem; }
.pv-recherche-hero_ligne{ display:flex; gap:.6rem; flex-wrap:wrap; }
/* V1 (page-ville-CONSTAT) — champ sans bordure ni fond distinct = invisible
   sur une carte déjà --voile (seul le libellé se voyait). Un champ se DESSINE
   toujours (bordure, fond, focus, R-0519), y compris hors du hero sombre. */
.pv-recherche-hero_champ{
	flex:1 1 220px; width:100%; background:var(--voile); border:1px solid var(--coque); padding:.9em 1em; font-family:var(--police-corps); font-size:1rem; line-height:1.3; min-height:44px; color:var(--nuit); text-align:left;
}
.pv-recherche-hero_champ:focus-visible{ border-color:var(--pavillon); }
.pv-recherche-hero_champ[readonly]{ background:var(--rade); color:var(--coque); }
.pv-recherche-hero_puces{ display:flex; flex-wrap:wrap; gap:.5rem; }
.pv-puce-pavillon{
	display:inline-flex; align-items:center; gap:.4em; background:rgba(251,251,248,.12); border:1px solid rgba(251,251,248,.35);
	color:var(--voile); padding:.4em .8em; font-family:var(--police-corps); font-weight:600; font-size:.86rem; min-height:36px; cursor:pointer;
}
.pv-puce-pavillon svg{ width:20px; height:14px; }
.pv-puce-pavillon.is-actif,.pv-puce-pavillon:hover{ background:var(--jaune-q); color:var(--nuit); border-color:var(--jaune-q); }

.pv-preuves-coque{ display:flex; flex-wrap:wrap; gap:2.4rem; margin-top:2.2rem; }

/* =========================================================================
   8. NUMÉROS DE COQUE — procédé signature n°4
   ========================================================================= */
.pv-coque{ display:flex; flex-direction:column; }
.pv-coque_chiffre{
	font-family:var(--police-titre); font-style:italic; font-weight:700; font-size:clamp(2.6rem,5vw,4.2rem);
	color:var(--pavillon); line-height:.9; font-variant-numeric:tabular-nums; position:relative;
	padding-bottom:.35em; border-bottom:6px solid var(--jaune-q); display:inline-flex; align-items:baseline; gap:.15em;
}
.pv-coque_chiffre span.pv-coque_unite{ font-size:.48em; font-weight:700; font-style:italic; }
.pv-coque_chiffre::after{ content:""; position:absolute; right:-20px; bottom:-6px; width:20px; height:6px; background:var(--jaune-q); }
.pv-coque_label{ margin-top:.6em; font-family:var(--police-corps); font-size:.92rem; font-weight:600; color:var(--coque); max-width:20ch; }
.pv-bande--pavillon .pv-coque_chiffre,.pv-bande--nuit .pv-coque_chiffre{ color:#fff; }
.pv-bande--pavillon .pv-coque_label,.pv-bande--nuit .pv-coque_label{ color:var(--rade); }
/* Point 4 (constat homepage #6/#7) : sur la photo assombrie du héros, le bleu
   --pavillon tombe à 2,12:1 et le gris --coque à 2,80:1 — mesuré, sous l'AA.
   Le héros n'est ni .pv-bande--pavillon ni .pv-bande--nuit : il lui faut sa
   propre règle. Blanc/rade sur le voile de nuit à 55-92 % = même famille de
   contraste que nuit/voile (16,2:1), largement au-dessus du seuil. */
.pv-heros .pv-coque_chiffre,.pv-ville-heros .pv-coque_chiffre{ color:#fff; }
.pv-heros .pv-coque_label,.pv-ville-heros .pv-coque_label{ color:var(--rade); }

/* =========================================================================
   9. CARTES — permis, rubriques, articles, villes
   ========================================================================= */
/* R-0377 : minmax(0,1fr) sur les colonnes + min-width:0 sur les enfants —
   sans ça, une carte au contenu large (mot long, tableau) force la grille à
   déborder au lieu de rétrécir avec elle. */
.pv-grille{ display:grid; gap:var(--gouttiere); min-width:0; }
.pv-grille--2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.pv-grille--3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.pv-grille--4{ grid-template-columns:repeat(4,minmax(0,1fr)); }
.pv-grille--une{ grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr); }
.pv-grille--une .pv-carte:first-child{ grid-row:1/3; }
@media (max-width:960px){ .pv-grille--3,.pv-grille--4{ grid-template-columns:repeat(2,minmax(0,1fr)); } .pv-grille--une{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px){ .pv-grille--2,.pv-grille--3,.pv-grille--4,.pv-grille--une{ grid-template-columns:minmax(0,1fr); } .pv-grille--une .pv-carte:first-child{ grid-row:auto; } }

.pv-carte{ position:relative; min-width:0; background:var(--blanc); box-shadow:var(--ombre-carte); display:flex; flex-direction:column; }
.pv-carte_media{ position:relative; aspect-ratio:3/2; overflow:hidden; background:var(--rade); }
.pv-carte_media img,.pv-carte-image{ width:100%; height:100%; object-fit:cover; }
.pv-carte-image--absente{ display:flex; align-items:center; justify-content:center; background:var(--rade); }
.pv-carte_pastille{ position:absolute; top:.7rem; left:.7rem; width:44px; height:30px; filter:drop-shadow(0 2px 3px rgba(11,30,51,.35)); }
.pv-carte_corps{ padding:1.1rem 1.2rem 1.3rem; display:flex; flex-direction:column; gap:.5rem; flex:1; }
.pv-carte_eyebrow{ font-family:var(--police-corps); font-size:.76rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--coque); }
.pv-carte_titre{ font-size:1.3rem; margin:0; }
.pv-carte_titre a::after{ content:""; position:absolute; inset:0; }
.pv-carte_extrait{ font-size:.95rem; color:var(--coque); margin:0; }
.pv-carte_meta{ margin-top:auto; padding-top:.6rem; font-size:.8rem; color:var(--coque); display:flex; gap:.8rem; }

/* Cartes-permis avec critères en pictos */
.pv-carte-permis .pv-carte_criteres{ display:flex; flex-wrap:wrap; gap:.5rem 1rem; margin-top:.4rem; }
.pv-carte-permis .pv-critere{ display:flex; align-items:center; gap:.35em; font-size:.82rem; color:var(--coque); }
.pv-carte-permis .pv-critere svg{ width:16px; height:16px; flex:0 0 auto; color:var(--pavillon); }

/* =========================================================================
   10. GRAND PAVOIS — procédé signature n°2 (usage : 1 fois par page max)
   ========================================================================= */
.pv-pavois{ position:relative; padding-block:2rem; }
.pv-pavois_drisse{ position:relative; display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; }
.pv-pavois_drisse::before{
	content:""; position:absolute; left:0; right:0; top:32px; height:2px; background:var(--nuit); transform:rotate(-1.2deg); z-index:0;
}
.pv-etape{ position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; gap:.7rem; flex:1; text-align:center; transition:transform .3s ease; }
.pv-etape.est-visible{ transform:translateY(-8px); filter:drop-shadow(0 6px 10px rgba(11,30,51,.25)); }
.pv-etape_pavillon{ width:46px; height:31px; }
.pv-etape_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; font-size:1rem; margin:0; }
.pv-etape_desc{ font-size:.82rem; color:var(--coque); max-width:16ch; margin:0; }
.pv-etape_duree{ font-size:.74rem; font-weight:700; color:var(--pavillon); text-transform:uppercase; }
@media (max-width:640px){
	.pv-pavois_drisse{ flex-direction:column; align-items:flex-start; gap:1.4rem; padding-left:1.2rem; }
	.pv-pavois_drisse::before{ left:16px; top:0; bottom:0; width:2px; height:auto; right:auto; transform:none; }
	.pv-etape{ flex-direction:row; text-align:left; }
}

/* =========================================================================
   11. FEUX DE ROUTE — procédé signature n°3
   ========================================================================= */
.pv-feu{ display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:50%; border:2px solid var(--nuit); flex:0 0 auto; }
.pv-feu--vert{ background:var(--tribord); }
.pv-feu--rouge{ background:var(--babord); }
.pv-feu--eteint{ background:var(--rade); }
.pv-reponse-etat{ display:flex; align-items:center; gap:.5em; font-weight:700; }
.pv-reponse-etat--vert{ color:var(--tribord); }
.pv-reponse-etat--rouge{ color:var(--babord); }

/* =========================================================================
   12. ESTIMATEUR — bande pavillon
   ========================================================================= */
.pv-estimateur{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:2.5rem; align-items:start; }
.pv-estimateur_texte{ min-width:0; color:#fff; }
.pv-estimateur_outil{ min-width:0; background:var(--voile); color:var(--nuit); padding:1.6rem; }
.pv-estimateur_etapes{ display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.2rem; }
.pv-estimateur_champ-label{ display:block; font-weight:600; font-size:.9rem; margin-bottom:.4rem; }
.pv-estimateur_champ-ville{ background:var(--rade); margin-bottom:1rem; }
.pv-estimateur_resultat{ margin-top:1.4rem; padding-top:1.2rem; border-top:1px solid var(--rade); }
.pv-decomposition{ display:flex; height:16px; width:100%; overflow:hidden; margin:.8rem 0; }
.pv-decomposition_segment{ height:100%; }
.pv-decomposition_segment--etat{ background:var(--nuit); }
.pv-decomposition_segment--formation{ background:var(--pavillon); }
.pv-decomposition_segment--reste{ background:repeating-linear-gradient(45deg,var(--jaune-q),var(--jaune-q) 6px,#f2ae00 6px,#f2ae00 12px); }
.pv-estimateur_source{ font-size:.78rem; color:var(--coque); }
.pv-bouton--fonce-actif{ background:var(--pavillon) !important; color:#fff !important; }
@media (max-width:800px){ .pv-estimateur{ grid-template-columns:1fr; } }

/* =========================================================================
   13. FAQ — accordéon natif details/summary
   ========================================================================= */
/* Point 6 (constat homepage #8) : la FAQ seule (820 px) laissait 600 px de
   vide à droite sur une page de 1440. Sur les pages où elle n'est PAS la
   seule section de son écran (l'accueil), on lui donne une colonne voisine
   utile (repère de confiance) au lieu d'élargir l'accordéon lui-même — un
   accordéon trop large redevient illisible (ligne de plus de 75 signes). */
.pv-faq-grille{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,340px); gap:2.5rem; align-items:start; }
.pv-faq-visuel{ background:var(--rade); padding:2rem 1.6rem; display:flex; flex-direction:column; align-items:flex-start; gap:1rem; min-width:0; }
.pv-faq-visuel_pavillon{ width:56px; height:38px; }
.pv-faq-visuel_titre{ font-size:1.5rem; margin:0; }
.pv-faq-visuel_texte{ color:var(--coque); font-size:.95rem; margin:0; }
@media (max-width:900px){ .pv-faq-grille{ grid-template-columns:1fr; } }
.pv-faq{ max-width:820px; margin-inline:auto; display:flex; flex-direction:column; gap:.7rem; }
.pv-faq-grille .pv-faq{ max-width:none; margin-inline:0; }
.pv-faq_item{ background:var(--blanc); border:1px solid var(--rade); }
.pv-faq_item summary{
	font-family:var(--police-titre); font-style:italic; font-weight:700; font-size:1.2rem; text-transform:none;
	padding:1rem 1.2rem; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:1rem; list-style:none; min-height:44px;
}
.pv-faq_item summary::-webkit-details-marker{ display:none; }
.pv-faq_chevron{ flex:0 0 auto; transition:transform .2s ease; }
.pv-faq_item[open] .pv-faq_chevron{ transform:rotate(45deg); }
.pv-faq_item_corps{ padding:0 1.2rem 1.2rem; color:var(--coque); }

/* =========================================================================
   14. ARTICLE
   ========================================================================= */
.pv-article-heros{ background:var(--nuit); }
.pv-fil{ font-size:.8rem; color:var(--rade); display:flex; gap:.4rem; flex-wrap:wrap; padding-bottom:1rem; }
.pv-fil a{ text-decoration:underline; }
.pv-article-titre{ color:#fff; font-size:clamp(2rem,4.6vw,3.4rem); max-width:20ch; margin-bottom:.8rem; text-wrap:balance; }
.pv-article-chapo{ font-family:var(--police-corps); color:var(--rade); font-size:1.15rem; max-width:64ch; margin-bottom:1.6rem; }
.pv-article-meta{ display:flex; align-items:center; gap:1rem; color:var(--rade); font-size:.85rem; flex-wrap:wrap; }
/* Point 13 (D2) — héros compact en 2 colonnes : texte à gauche, image à
   droite, pour que le premier paragraphe du corps arrive tout de suite après
   (article-CONSTAT ROUGE 7, R-0509). */
.pv-article-heros_grille{ display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,380px); gap:2.2rem; align-items:center; padding-block:2rem; }
.pv-article-heros_texte{ min-width:0; }
.pv-article-heros_image{ position:relative; max-height:320px; overflow:hidden; align-self:stretch; }
.pv-article-heros_image img{ width:100%; height:100%; max-height:320px; object-fit:cover; }
.pv-article-image_pastille{ position:absolute; top:1rem; left:1rem; width:56px; height:38px; }
@media (max-width:900px){
	.pv-article-heros_grille{ grid-template-columns:1fr; padding-block:1.4rem; gap:1.1rem; }
	.pv-article-heros_image{ max-height:200px; }
	.pv-article-heros_image img{ max-height:200px; }
}

.pv-article-mise-en-page{ display:grid; grid-template-columns:minmax(0,720px) minmax(280px,340px); gap:3rem; max-width:var(--conteneur); margin-inline:auto; padding-block:2rem 3rem; align-items:start; }
.pv-article-colonne{ min-width:0; }
.pv-article-corps{ font-size:1.05rem; }
.pv-article-corps h2{ font-size:1.9rem; margin-top:2.2em; scroll-margin-top:100px; text-transform:none; }
.pv-article-corps h3{ font-size:1.35rem; margin-top:1.6em; text-transform:none; }
.pv-article-corps p{ margin-bottom:1.3em; }
.pv-article-corps a{ color:var(--pavillon); text-decoration:underline; text-decoration-thickness:2px; text-underline-offset:3px; }
.pv-article-corps strong{ font-weight:700; }
.pv-article-corps img{ margin-block:2rem; clip-path:polygon(0 0,calc(100% - 18px) 0,100% 18px,100% 100%,0 100%); }
.pv-article-corps blockquote{ border-left:4px solid var(--jaune-q); padding:.6rem 0 .6rem 1.2rem; font-style:italic; color:var(--coque); margin:2rem 0; }

/* Aucune liste à puces navigateur : tout passe par des cartes/infographies. */
.pv-article-corps ul:not([class]),.pv-article-corps ol:not([class]){ padding-left:1.3em; }
.pv-article-corps ul:not([class]) li{ list-style:disc; margin-bottom:.5em; }

/* Encadrés À savoir / Piège d'examen */
.pv-encart{ padding:1.1rem 1.3rem; margin:2rem 0; background:var(--rade); border-left:6px solid var(--tribord); }
.pv-encart--piege{ border-left-color:var(--babord); background:#FBECEC; }
.pv-encart_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1rem; margin-bottom:.4em; }

/* Encadrés émis dans le corps (aside.pv-encadre) — pavillon de signal en
   marque : jaune « À retenir », bleu « Le saviez-vous ? », feu bâbord rouge
   « Attention » (le rouge reste réservé au sens danger, comme .pv-feu--rouge
   et .pv-form-erreur ailleurs dans ce fichier). Respiration R-0539 : marge
   verticale 2.4rem toujours ≥ celle des images voisines (margin-block:2rem),
   les marges se cumulent au plus grand des deux, jamais collé. */
.pv-encadre{
	position:relative; min-width:0;
	background:var(--voile); border:1px solid var(--rade); border-left:6px solid var(--coque);
	padding:1.3rem 1.5rem 1.4rem 1.7rem; margin:2.4rem 0;
}
.pv-encadre_titre{
	display:flex; align-items:center; gap:.55em;
	font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase;
	font-size:1rem; letter-spacing:-.005em; margin:0 0 .5em; color:var(--nuit);
}
/* Fanion en pennant — même procédé clip-path que la coupe d'étrave (§2). */
.pv-encadre_titre::before{
	content:""; flex:0 0 auto; width:22px; height:15px;
	clip-path:polygon(0 0,100% 0,78% 50%,100% 100%,0 100%);
	background:var(--coque);
}
.pv-encadre p{ font-size:.95rem; color:var(--coque); }
.pv-encadre p:last-child{ margin-bottom:0; }

.pv-encadre--retenir{ border-left-color:var(--jaune-q); background:rgba(255,194,14,.1); }
.pv-encadre--retenir .pv-encadre_titre::before{ background:var(--jaune-q); }

.pv-encadre--astuce{ border-left-color:var(--pavillon); background:rgba(11,69,194,.06); }
.pv-encadre--astuce .pv-encadre_titre{ color:var(--pavillon); }
.pv-encadre--astuce .pv-encadre_titre::before{ background:var(--pavillon); }

.pv-encadre--attention{ border-left-color:var(--babord); background:#FBECEC; }
.pv-encadre--attention .pv-encadre_titre{ color:var(--babord); }
.pv-encadre--attention .pv-encadre_titre::before{ background:var(--babord); }

.pv-sommaire{ background:var(--rade); padding:1.2rem; margin-bottom:2rem; }
.pv-sommaire_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1rem; margin-bottom:.6em; }
.pv-sommaire-liste{ display:flex; flex-direction:column; gap:.35em; }
.pv-sommaire-liste a{ font-size:.92rem; color:var(--pavillon); text-decoration:underline; }

/* Colonne latérale : sticky, sans défilement interne, pub en dernier.
   Point 15 (D2) — le sommaire vit ICI (mêmes largeurs/espacements que les
   autres modules, R-0547) ; le module ville est un encart COURT (1 champ),
   jamais le formulaire complet (R-0595 esprit). */
.pv-aside{ position:sticky; top:96px; min-width:0; display:flex; flex-direction:column; gap:1.4rem; }
.pv-aside .pv-sommaire{ margin-bottom:0; }
.pv-aside_module{ background:var(--blanc); border:1px solid var(--rade); padding:1.2rem; }
.pv-aside_module--pub{ order:99; text-align:center; }
.pv-aside_module_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.05rem; margin-bottom:.6em; }
.pv-aside_note{ font-size:.88rem; color:var(--coque); margin-bottom:.8rem; }
.pv-aside_recherche{ display:flex; gap:.5rem; flex-wrap:wrap; }
.pv-aside_recherche_champ{ flex:1 1 120px; min-width:0; border:1px solid var(--coque); padding:.6em .8em; font-family:var(--police-corps); font-size:.9rem; min-height:44px; background:var(--voile); color:var(--nuit); }
.pv-aside_recherche_champ:focus-visible{ border-color:var(--pavillon); }

/* Bloc auteur — un seul, jamais dupliqué */
.pv-auteur{ display:flex; gap:1.2rem; align-items:flex-start; padding:1.6rem; margin-top:3rem; background:var(--rade); }
.pv-portrait{ border-radius:50%; width:72px; height:72px; object-fit:cover; flex:0 0 auto; border:2px solid var(--nuit); }
.pv-auteur_corps{ display:flex; flex-direction:column; gap:.3rem; }
.pv-auteur_nom{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.15rem; }
.pv-auteur_role{ font-size:.85rem; font-weight:600; color:var(--pavillon); text-transform:uppercase; letter-spacing:.03em; }
.pv-auteur_bio{ font-size:.9rem; color:var(--coque); margin:.3rem 0; max-width:60ch; }
.pv-auteur_verifie{ font-size:.78rem; color:var(--coque); }
.pv-auteur_lien{ font-size:.85rem; font-weight:700; color:var(--pavillon); text-decoration:underline; align-self:flex-start; }

/* Sources — cadre soigné, numéroté, jamais un lien cliquable (AR-004/AR-032/AR-040) */
.sbs_source{ display:block; font-size:.8rem; color:var(--coque); margin-top:.6rem; }
.pv-sources{ display:block; min-width:0; margin-top:2.6rem; padding-top:1.3rem; border-top:1px solid var(--rade); }
.pv-sources h2{ font-size:.95rem; text-transform:uppercase; font-style:normal; font-weight:700; color:var(--coque); margin-bottom:.8rem; }
/* R-0880 : numéros alignés quel que soit le nombre de chiffres (1 comme 12) —
   compteur CSS dans un repère de largeur fixe plutôt que `list-style:decimal`,
   dont le marqueur navigateur décale le texte dès la 2ᵉ colonne de chiffres.
   Spécificité : le reset global `ol[class]{list-style:none}` (0,1,1) restait
   déjà neutralisé côté marqueur natif, on repart de zéro proprement ici. */
ol.pv-sources_liste{ list-style:none; counter-reset:pv-source; padding-left:0; margin:0; display:flex; flex-direction:column; gap:.55rem; }
.pv-sources_liste li{
	position:relative; min-width:0; padding-left:2.1em; font-size:.82rem; line-height:1.55; color:var(--coque);
	/* dates/nombres jamais coupés en plein milieu au retour à la ligne */
	hyphens:none; overflow-wrap:normal;
}
.pv-sources_liste li::before{
	counter-increment:pv-source; content:counter(pv-source) ".";
	position:absolute; left:0; top:0; width:1.6em; text-align:right;
	font-weight:700; color:var(--pavillon); font-variant-numeric:tabular-nums;
}

/* Emplacement publicitaire (réservé, jamais sur accueil/catégorie — MK-002) */
.pv-pub-espace{ min-height:250px; display:flex; align-items:center; justify-content:center; background:var(--rade); color:var(--coque); font-size:.8rem; }

/* Ligne d'en-tête pilier : pastille + titre côte à côte */
.pv-pilier-heros-ligne{ display:flex; align-items:center; gap:1.4rem; }
.pv-pilier-pastille{ position:static; width:64px; height:43px; flex:0 0 auto; }

/* Articles liés */
.pv-lies{ margin-top:3rem; }
.pv-lies_titre{ font-size:1.6rem; margin-bottom:1.2rem; }

/* Encart CTA bateau-école dans le corps */
.pv-encart-cta{ display:flex; align-items:center; gap:1.4rem; background:var(--nuit); color:var(--voile); padding:1.6rem; margin:2.5rem 0; flex-wrap:wrap; }
.pv-encart-cta_texte{ flex:1 1 240px; }
.pv-encart-cta_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.3rem; color:#fff; margin-bottom:.3em; }
.pv-encart-cta_desc{ font-size:.92rem; color:var(--rade); margin:0; }

/* =========================================================================
   15. TABLEAUX (socle-mobile fournit .sbs_tableau, on l'habille)
   ========================================================================= */
.sbs_tableau{ overflow-x:auto; margin:2rem 0; -webkit-overflow-scrolling:touch; }
.sbs_tableau table{ width:100%; border-collapse:collapse; min-width:480px; }
.sbs_tableau caption{ text-align:left; font-family:var(--police-titre); font-style:italic; font-weight:700; margin-bottom:.5em; }
.sbs_tableau th,.sbs_tableau td{ padding:.7em .9em; border-bottom:1px solid var(--rade); text-align:left; font-size:.92rem; white-space:nowrap; }
.sbs_tableau thead th{ background:var(--nuit); color:#fff; font-family:var(--police-titre); font-style:italic; text-transform:uppercase; font-weight:700; }
.sbs_tableau tbody tr:nth-child(even){ background:var(--rade); }

/* =========================================================================
   16. INFOGRAPHIES DU SOCLE — habillage visuel (aucune couleur dans le socle)
   ========================================================================= */
sbs-lieu,.sbs_lieu{ display:block; background:var(--rade); padding:1.2rem; margin:2rem 0; }
.sbs_lieu_nom{ display:block; font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.15rem; }
.sbs_lieu_adresse{ display:block; font-style:normal; color:var(--coque); font-size:.9rem; margin:.3em 0; }
.sbs_lieu_acces{ display:block; color:var(--coque); font-size:.85rem; }
.sbs_lieu_carte{ display:inline-flex; align-items:center; gap:.4em; margin-top:.6em; color:var(--pavillon); font-weight:700; font-size:.85rem; }
.pv-icone-repere,.sbs_icone_repere{ width:18px; height:18px; fill:currentColor; }

sbs-tarifs,.sbs_tarifs{ display:block; min-width:0; background:var(--blanc); border:1px solid var(--rade); padding:1.3rem 1.4rem; margin:2.4rem 0; }
.sbs_tarifs_titre{ display:block; font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem; margin-bottom:.9em; }
sbs-tarif,.sbs_tarif{ display:flex; align-items:center; gap:1rem; min-width:0; margin-bottom:.8em; }
.sbs_tarif_libelle{ flex:0 0 38%; min-width:0; font-size:.88rem; font-weight:600; color:var(--coque); }
.sbs_tarif_barre{ flex:1 1 auto; min-width:0; width:100%; height:18px; accent-color:var(--pavillon); }
.sbs_tarifs_notes{ display:block; margin-top:.7em; font-size:.8rem; color:var(--coque); }

/* Frise pavoisée : ligne verticale + fanion clip-path par étape — même
   procédé signature que la coupe d'étrave (§2) et le grand pavois (§10).
   Décalages TOUJOURS positifs (padding-left du conteneur, jamais de left
   négatif au-delà de l'écran) : le gabarit d'article n'a pas de padding
   horizontal propre sur mobile, un offset négatif s'y ferait rogner. */
sbs-frise,.sbs_frise{ position:relative; display:block; min-width:0; margin:2.4rem 0; padding-left:2rem; }
.sbs_frise::before{
	content:""; position:absolute; left:7px; top:.35em; bottom:.35em; width:2px; background:var(--pavillon);
}
.sbs_frise_titre{ display:block; font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem; margin-bottom:.9em; }
sbs-etape,.sbs_etape{ position:relative; display:block; min-width:0; margin-bottom:1.3em; }
sbs-etape::before,.sbs_etape::before{
	content:""; position:absolute; left:-1px; top:.28em; width:16px; height:11px;
	background:var(--jaune-q); clip-path:polygon(0 0,100% 0,78% 50%,100% 100%,0 100%);
}
.sbs_etape_date{ display:block; font-weight:700; color:var(--pavillon); font-size:.85rem; font-variant-numeric:tabular-nums; }
.sbs_etape_titre{ display:block; font-family:var(--police-titre); font-style:italic; font-weight:700; margin:.15em 0; }
.sbs_etape_desc{ display:block; color:var(--coque); font-size:.88rem; }

/* Jauges = numéros de coque (§8) : chiffre condensé italique, soulignement
   jaune, compteur animé par app.js (data-sbs-anim, respecte déjà
   prefers-reduced-motion — rien à ajouter côté JS). */
sbs-jauges,.sbs_jauges{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:1.6rem; margin:2.4rem 0; min-width:0; }
.sbs_jauges_titre{ grid-column:1/-1; font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem; }
sbs-jauge,.sbs_jauge{ display:flex; flex-direction:column; min-width:0; }
.sbs_jauge_valeur{
	font-family:var(--police-titre); font-style:italic; font-weight:700; font-size:clamp(1.9rem,5vw,2.6rem);
	color:var(--pavillon); line-height:.95; font-variant-numeric:tabular-nums;
	display:inline-flex; align-items:baseline; gap:.12em; width:fit-content; max-width:100%;
	border-bottom:6px solid var(--jaune-q); padding-bottom:.18em;
}
.sbs_jauge_unite{ font-size:.7em; font-weight:700; font-style:italic; color:var(--pavillon); }
.sbs_jauge_libelle{ font-size:.82rem; font-weight:600; color:var(--coque); order:-1; margin-bottom:.3em; }

/* =========================================================================
   16 bis. PAGE VILLE — le héros vend, le formulaire est visible sans défiler
   ========================================================================= */
.pv-ville-heros{ position:relative; background:var(--nuit); overflow:hidden; }
.pv-ville-heros_fond{ position:absolute; inset:0; z-index:0; }
.pv-ville-heros_fond img{ width:100%; height:100%; object-fit:cover; }
.pv-ville-heros_voile{ position:absolute; inset:0; background:linear-gradient(100deg,rgba(11,30,51,.94) 38%,rgba(11,30,51,.55) 100%); z-index:1; }
/* V2/V3 (page-ville-CONSTAT) — 3 zones nommées plutôt que 2 colonnes brutes :
   « intro » (titre/chapô/pastille) et « extra » (chiffres + Comment ça marche)
   à gauche, « form » à droite en pleine hauteur sur desktop. Sur mobile, la
   grille redevient une colonne et l'ORDRE change (intro → form → extra) pour
   que le formulaire reste dans le premier écran (390 px) sans faire
   disparaître les chiffres ni le réassurance, juste repoussés après. */
.pv-ville-heros_grille{
	position:relative; z-index:2; display:grid;
	grid-template-columns:minmax(0,1.1fr) minmax(0,420px);
	grid-template-areas:"intro form";
	gap:2.2rem 2.5rem; align-items:start; padding-block:3rem;
}
/* Point 5 (D3, 28/09) — intro + chiffres + « Comment ça marche » ne forment
   plus 2 lignes de grille distinctes : le formulaire les enjambait et forçait
   la 1re ligne à s'étirer au-delà du texte réel (vide sous le chapô,
   page-ville-CONSTAT). Regroupés en UNE zone (colonne, display:flex),
   alignée en haut avec le formulaire. En 390 px la colonne se déboîte
   (display:contents) pour laisser le formulaire reprendre sa place ENTRE
   les deux (R-0133, media query ci-dessous). */
.pv-ville-heros_colonne{ grid-area:intro; min-width:0; display:flex; flex-direction:column; gap:2rem; }
.pv-ville-heros_texte{ min-width:0; }
.pv-ville-form-carte{ grid-area:form; }
.pv-ville-heros_extra{ min-width:0; }
.pv-ville-heros_h1{ color:#fff; font-size:clamp(2.2rem,5vw,4rem); max-width:14ch; margin-bottom:.6rem; text-wrap:balance; }
.pv-ville-heros_promesse{ color:var(--rade); font-size:1.1rem; max-width:44ch; margin-bottom:0; }
.pv-ville-preuves{ display:flex; flex-wrap:wrap; gap:1.6rem; }
.pv-ville-pastille-type{ display:inline-flex; align-items:center; gap:.4em; background:var(--jaune-q); color:var(--nuit); font-weight:700; font-size:.78rem; text-transform:uppercase; padding:.4em .8em; margin-bottom:1rem; }

.pv-ville-comment{ margin-top:2rem; padding-top:1.6rem; border-top:1px solid rgba(251,251,248,.25); }
.pv-ville-comment_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.05rem; color:#fff; margin-bottom:.9rem; }
.pv-ville-etapes{ display:flex; flex-direction:column; gap:.7rem; margin-bottom:1.2rem; }
.pv-ville-etapes li{ display:flex; align-items:flex-start; gap:.7em; color:var(--rade); font-size:.92rem; }
.pv-ville-etape_num{ flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; background:var(--jaune-q); color:var(--nuit); font-family:var(--police-titre); font-style:italic; font-weight:700; font-size:.85rem; }
.pv-ville-reassurance{ display:flex; align-items:center; gap:.5em; color:#fff; font-weight:600; font-size:.9rem; margin:0; }

@media (max-width:900px){
	.pv-ville-heros_grille{
		grid-template-columns:minmax(0,1fr);
		grid-template-areas:"intro" "form" "extra";
		gap:1.6rem; padding-block:2rem;
	}
	.pv-ville-heros_colonne{ display:contents; }
	.pv-ville-heros_texte{ grid-area:intro; }
	.pv-ville-heros_extra{ grid-area:extra; }
}

.pv-ville-form-carte{ background:var(--voile); color:var(--nuit); padding:1.6rem; box-shadow:var(--ombre-carte); min-width:0; }
.pv-ville-form-titre{ font-size:1.4rem; margin-bottom:.3rem; }
.pv-ville-form-sous{ font-size:.86rem; color:var(--coque); margin-bottom:1.2rem; }
.pv-form-groupe{ display:flex; flex-direction:column; gap:.9rem; margin-bottom:1rem; }
/* Point 4 (D3, 28/09) — les <label> du formulaire ville n'avaient aucune mise
   en page : rendus en ligne par défaut (libellé à gauche, champ à sa largeur
   naturelle, différente d'un champ à l'autre). Libellé AU-DESSUS, champ étiré
   à la pleine largeur du groupe. */
.pv-form-etape label{ display:flex; flex-direction:column; align-items:stretch; gap:.35em; font-weight:600; font-size:.9rem; color:var(--nuit); }
.pv-form-choix{ display:flex; flex-wrap:wrap; gap:.5rem; }
.pv-form-choix label{ display:inline-flex; align-items:center; gap:.4em; border:1px solid var(--coque); padding:.5em .9em; font-size:.85rem; cursor:pointer; min-height:40px; }
.pv-form-choix input{ accent-color:var(--pavillon); }

/* Point 9 — choix en cartes (R-0519), radio natif conservé mais masqué
   visuellement (jamais display:none, sinon perdu du clavier). Sélecteurs
   scopés `.pv-form-choix--cartes label.pv-choix-carte` : plus spécifiques
   que `.pv-form-choix label` (règle générique juste au-dessus), sinon
   celle-ci regagne sur le simple `.pv-choix-carte`. */
.pv-form-choix--cartes{ display:grid; grid-template-columns:repeat(auto-fit,minmax(108px,1fr)); gap:.6rem; }
.pv-form-choix--cartes label.pv-choix-carte{ position:relative; display:flex; min-height:44px; border:none; padding:0; cursor:pointer; }
.pv-choix-carte input{ position:absolute; inset:0; opacity:0; margin:0; cursor:pointer; width:100%; height:100%; }
.pv-choix-carte_corps{
	display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.35em; width:100%;
	border:2px solid var(--rade); background:var(--voile); padding:.7em .5em; font-size:.85rem; font-weight:600; text-align:center;
}
.pv-choix-carte_corps svg{ flex:0 0 auto; }
.pv-choix-carte input:checked + .pv-choix-carte_corps{ border-color:var(--pavillon); background:var(--rade); }
.pv-choix-carte input:focus-visible + .pv-choix-carte_corps{ outline:3px solid var(--pavillon); outline-offset:2px; }

/* Mobile : formulaire en 2 étapes courtes (page-ville-CONSTAT #6). Par défaut
   (sans JS, ou desktop) tout reste visible d'un bloc — l'étape 2 ne se cache
   QUE quand le JS a explicitement marqué le formulaire .is-stepped. */
.pv-form-suivant{ display:none; width:100%; margin-top:1rem; }
#pv-form-demande.is-stepped .pv-form-suivant{ display:inline-flex; }
#pv-form-demande.is-stepped [data-etape="2"]{ display:none; }
#pv-form-demande.is-stepped.is-etape-2 [data-etape="2"]{ display:block; }
#pv-form-demande.is-stepped.is-etape-2 [data-etape="1"] .pv-form-suivant{ display:none; }
.pv-form-consentement{ display:flex; align-items:flex-start; gap:.6em; font-size:.8rem; color:var(--coque); }
.pv-form-consentement input{ margin-top:.2em; accent-color:var(--pavillon); flex:0 0 auto; width:20px; height:20px; }
.pv-form-rgpd{ font-size:.76rem; color:var(--coque); margin-top:.8rem; }
.pv-form-rgpd a{ color:var(--pavillon); text-decoration:underline; }
.pv-form-erreur{ color:var(--babord); font-size:.8rem; margin-top:.3em; }

/* LOT D4, point 1 — « Ville » et « Période souhaitée » rendaient en boîtes
   hautes (page-ville-CONSTAT 28/09 23h, 1440 px) : le champ texte/select
   simple n'est ni une carte de choix ni un bouton, il garde une hauteur de
   champ normale, texte aligné à gauche. Sélecteur ID + type : imbattable en
   spécificité sur toute règle générique de carte/bouton du formulaire.
   ui-ux-pro-max invoqué pour : hauteur des champs de formulaire (page ville). */
#pv-form-demande .pv-form-etape input.pv-recherche-hero_champ,
#pv-form-demande .pv-form-etape select.pv-recherche-hero_champ{
	display:block; height:auto; min-height:44px; line-height:1.3;
	flex:0 0 auto; /* le champ vit dans un label en colonne : la base 220px de la barre de recherche s'appliquait à la HAUTEUR */
	padding:.65em 1em; text-align:left; text-align-last:left;
}

.pv-ville-ecoles{ display:grid; gap:var(--gouttiere); grid-template-columns:repeat(3,minmax(0,1fr)); }
@media (max-width:960px){ .pv-ville-ecoles{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:640px){ .pv-ville-ecoles{ grid-template-columns:minmax(0,1fr); } }
.pv-ecole-permis{ display:flex; gap:.35rem; flex-wrap:wrap; margin-top:.4rem; }
.pv-ecole-permis svg{ width:26px; height:18px; }

/* Carte de France cliquable (hub villes) */
.pv-carte-france{ width:100%; height:auto; max-height:560px; }
.pv-carte-france_epingle{ cursor:pointer; }
.pv-carte-france_drapeau{ transition:transform .15s ease; transform-box:fill-box; transform-origin:center; }
.pv-carte-france_epingle:hover .pv-carte-france_drapeau,.pv-carte-france_epingle:focus .pv-carte-france_drapeau{ transform:scale(1.5); }
.pv-carte-france_etiquette{ font-family:var(--police-corps); font-size:13px; font-weight:700; fill:var(--nuit); paint-order:stroke; stroke:var(--voile); stroke-width:3px; opacity:0; pointer-events:none; transition:opacity .15s ease; }
.pv-carte-france_epingle:hover .pv-carte-france_etiquette,.pv-carte-france_epingle:focus .pv-carte-france_etiquette{ opacity:1; }
.pv-carte-france_epingle:focus{ outline:none; }
.pv-carte-france_epingle:focus .pv-carte-france_drapeau{ outline:3px solid var(--jaune-q); outline-offset:2px; }

.pv-hub-titre{ margin-bottom:.6rem; }
.pv-hub-chapo{ margin-bottom:0; }
.pv-villes-recherche{ max-width:420px; margin-bottom:2rem; }
.pv-villes-groupe{ margin-top:2.5rem; }
.pv-villes-groupe_titre{ font-size:1.6rem; margin-bottom:1.2rem; }

/* =========================================================================
   17. RUBRIQUE / ARCHIVE
   ========================================================================= */
.pv-rubrique-heros{ background:var(--nuit); color:#fff; padding-block:3rem; }
.pv-rubrique-titre{ color:#fff; font-size:clamp(2.2rem,5vw,3.8rem); }
.pv-rubrique-desc{ color:var(--rade); max-width:60ch; margin-top:.6rem; }
.pv-rubrique-corps{ padding-block:3rem; }

/* Point 16 (D2) — vedette + liste compacte, jamais la grille répétée telle
   quelle sur toutes les positions (CA-023). */
.pv-carte--vedette{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:0; margin-bottom:2.4rem; }
.pv-carte--vedette .pv-carte_media{ aspect-ratio:auto; min-height:280px; }
.pv-carte--vedette .pv-carte_corps{ padding:1.6rem 1.8rem; justify-content:center; }
.pv-carte_titre--vedette{ font-size:clamp(1.6rem,2.6vw,2.2rem); }
.pv-carte--vedette .pv-carte_extrait{ font-size:1rem; }
@media (max-width:760px){
	.pv-carte--vedette{ grid-template-columns:1fr; }
	.pv-carte--vedette .pv-carte_media{ min-height:0; }
}

.pv-rubrique-liste{ display:flex; flex-direction:column; gap:1.1rem; }
.pv-rubrique-ligne{ position:relative; min-width:0; display:grid; grid-template-columns:120px minmax(0,1fr); gap:1.1rem; align-items:center; background:var(--blanc); box-shadow:var(--ombre-carte); }
.pv-rubrique-ligne_media{ position:relative; min-width:0; aspect-ratio:3/2; overflow:hidden; background:var(--rade); }
.pv-rubrique-ligne_media img,.pv-rubrique-ligne_media .pv-carte-image{ width:100%; height:100%; object-fit:cover; }
.pv-rubrique-ligne_corps{ min-width:0; padding-block:.8rem; padding-right:1rem; display:flex; flex-direction:column; gap:.3rem; }
.pv-rubrique-ligne_titre{ font-size:1.05rem; margin:0; }
.pv-rubrique-ligne_titre a::after{ content:""; position:absolute; inset:0; }
@media (max-width:520px){ .pv-rubrique-ligne{ grid-template-columns:88px minmax(0,1fr); } }

.pv-pagination{ display:flex; gap:.5rem; justify-content:center; margin-top:2.5rem; flex-wrap:wrap; }
.pv-pagination a,.pv-pagination span{ display:inline-flex; align-items:center; justify-content:center; min-width:40px; min-height:40px; border:1px solid var(--rade); font-weight:700; }
.pv-pagination .current{ background:var(--nuit); color:#fff; }

/* =========================================================================
   18. AUTEUR
   ========================================================================= */
.pv-auteur-heros{ background:var(--pavillon); color:#fff; padding-block:3.5rem; display:flex; gap:2rem; align-items:center; flex-wrap:wrap; }
.pv-auteur-heros .pv-portrait{ width:120px; height:120px; border-color:#fff; }
.pv-auteur-heros_nom{ color:#fff; font-size:clamp(2rem,4vw,3.2rem); margin-bottom:.2rem; }
.pv-auteur-heros_role{ font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--jaune-q); }
.pv-auteur-heros_bio{ max-width:60ch; margin-top:.8rem; color:var(--rade); }
.pv-auteur-heros_depuis{ font-size:.8rem; color:var(--rade); margin-top:.5rem; }

/* =========================================================================
   19. PAGES ANNEXES / FORMULAIRE (socle)
   ========================================================================= */
.pv-page-heros{ background:var(--nuit); color:#fff; padding-block:3rem; }
.pv-page-titre{ color:#fff; }
.pv-page-corps{ max-width:760px; margin-inline:auto; padding-block:3rem; }
.pv-page-corps h2{ font-size:1.8rem; text-transform:none; margin-top:1.8em; }

.pv-form{ display:flex; flex-direction:column; gap:1.1rem; max-width:560px; }
.pv-form label{ display:flex; flex-direction:column; gap:.35em; font-weight:600; font-size:.92rem; }
.pv-form input,.pv-form textarea,.pv-form select{
	border:1px solid var(--coque); padding:.8em 1em; font-family:var(--police-corps); font-size:1rem; min-height:44px; background:var(--voile);
}
.pv-form textarea{ min-height:140px; }
.pv-form_piege{ position:absolute; left:-9999px; }

/* =========================================================================
   20. FOOTER
   ========================================================================= */
.pv-pied{ background:var(--nuit); color:var(--rade); padding-top:3.2rem; }
.pv-pied_grille{ display:grid; grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr)); gap:2.5rem; padding-bottom:2.5rem; align-items:start; }
.pv-pied_grille > *{ min-width:0; }
.pv-nav_panneau-grille > *{ min-width:0; }
.pv-pied_marque .pv-marque_texte{ color:#fff; }
.pv-pied_marque .pv-marque_domaine{ color:var(--rade); }
.pv-pied_baseline{ margin-top:.9rem; font-size:.88rem; max-width:32ch; color:var(--rade); }
.pv-pied_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:.95rem; color:#fff; margin-bottom:.8rem; }
.pv-pied_liste{ display:flex; flex-direction:column; gap:.55rem; }
.pv-pied_liste a{ font-size:.9rem; color:var(--rade); }
.pv-pied_liste a:hover{ color:var(--jaune-q); }
.pv-pied_bas{ border-top:1px solid rgba(251,251,248,.14); padding-block:1.2rem; display:flex; justify-content:space-between; flex-wrap:wrap; gap:.8rem; font-size:.78rem; color:var(--coque); }
@media (max-width:900px){ .pv-pied_grille{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .pv-pied_grille{ grid-template-columns:1fr; } }

/* =========================================================================
   21. 404 / RECHERCHE
   ========================================================================= */
.pv-404{ min-height:60vh; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:1.4rem; padding-block:4rem; }
.pv-404_pavillon{ width:120px; height:80px; }

/* =========================================================================
   22. UTILITAIRES RESPONSIVE
   ========================================================================= */
@media (max-width:640px){
	body{ font-size:16.5px; }
	.pv-article-mise-en-page{ grid-template-columns:1fr; }
	.pv-aside{ position:static; }
	.pv-grille--4,.pv-grille--3{ grid-template-columns:1fr; }
	.pv-heros{ min-height:auto; padding-top:2rem; }
	.pv-recherche-hero{ max-width:none; }
	.pv-pied_bas{ flex-direction:column; }
}

/* =========================================================================
   23. À PROPOS — cartes auteurs (LOT D4, point 4). Même famille visuelle que
   le bloc auteur d'article (§14) mais en grille, une carte par auteur publié.
   ========================================================================= */
.pv-apropos-auteurs{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:var(--gouttiere); min-width:0; }
.pv-auteur-carte{ display:flex; gap:1.1rem; align-items:flex-start; min-width:0; background:var(--blanc); box-shadow:var(--ombre-carte); padding:1.4rem; }
.pv-auteur-carte .pv-portrait{ flex:0 0 auto; width:80px; height:80px; }
.pv-auteur-carte_corps{ display:flex; flex-direction:column; gap:.3rem; min-width:0; }
.pv-auteur-carte_nom{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem; margin:0; }
.pv-auteur-carte_role{ font-size:.8rem; font-weight:600; color:var(--pavillon); text-transform:uppercase; letter-spacing:.03em; margin:0; }
.pv-auteur-carte_bio{ font-size:.88rem; color:var(--coque); margin:.3rem 0 0; }
.pv-auteur-carte .pv-auteur_lien{ margin-top:.5rem; }

/* Bandeau de réassurance — deux repères, feu vert = confiance (§11), jamais
   d'autre couleur pour ce sens (procédé signature n°3). */
.pv-apropos-reassurance{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2.4rem; }
.pv-apropos-reassurance_item{ display:flex; gap:.9rem; align-items:flex-start; min-width:0; }
.pv-apropos-reassurance_item .pv-feu{ margin-top:.2rem; flex:0 0 auto; }
.pv-apropos-reassurance_titre{ font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:1.1rem; color:#fff; margin:0 0 .3em; }
.pv-apropos-reassurance_texte{ font-size:.92rem; color:var(--rade); margin:0 0 .8em; }
@media (max-width:760px){ .pv-apropos-reassurance{ grid-template-columns:1fr; } }

/* =========================================================================
   24. CONTACT — colonne droite utile (LOT D4, point 5 ; R-0837). Jamais
   d'e-mail affiché dans cette colonne (R-0258) : deux chemins + un délai.
   ========================================================================= */
.pv-contact-intro{ margin-bottom:1.4rem; }
.pv-contact-grille{ display:grid; grid-template-columns:minmax(0,1fr) minmax(260px,320px); gap:2.4rem; align-items:start; }
.pv-contact-form-colonne{ min-width:0; }
.pv-contact-mail-repli{ margin-top:1.2rem; font-size:.9rem; }
.pv-contact-mail-repli a{ color:var(--pavillon); text-decoration:underline; }
.pv-contact-aide{ min-width:0; display:flex; flex-direction:column; gap:1rem; }
.pv-contact-aide_bloc{ background:var(--rade); padding:1.2rem 1.3rem; min-width:0; }
.pv-contact-aide_bloc--delai{ background:transparent; border:1px solid var(--rade); padding:1rem 1.3rem; }
.pv-contact-aide_titre{ display:flex; align-items:center; gap:.5em; font-family:var(--police-titre); font-style:italic; font-weight:700; text-transform:uppercase; font-size:.98rem; margin:0 0 .5em; }
.pv-contact-aide_texte{ font-size:.86rem; color:var(--coque); margin:0 0 .8em; }
.pv-contact-aide_bloc--delai .pv-contact-aide_texte{ margin-bottom:0; }
@media (max-width:760px){ .pv-contact-grille{ grid-template-columns:1fr; } }

/* Champs dans un label en colonne (tous formulaires) : jamais de base flex héritée de la barre horizontale. */
.pv-form-etape label > input, .pv-form-etape label > select, .pv-form-etape label > textarea{ flex:0 0 auto; }

/* =========================================================================
   20. RETOURS ROXANE — 30/09/2026 (ui-ux-pro-max invoqué ; préfixe pvx-)
   ========================================================================= */

/* ---- R1/R2 Accueil : héros en deux colonnes, frais d'État lisibles ---- */
.pvx-heros{ align-items:center; }
.pvx-heros_voile{ background:linear-gradient(90deg,rgba(11,30,51,.93) 0%,rgba(11,30,51,.78) 48%,rgba(11,30,51,.35) 100%),linear-gradient(0deg,rgba(11,30,51,.55),rgba(11,30,51,0) 40%); }
.pvx-heros_grille{ display:grid; grid-template-columns:minmax(0,1.25fr) minmax(300px,.8fr); gap:clamp(2rem,4vw,4.5rem); align-items:center; padding-block:4rem calc(4rem + 2.4vw); }
.pvx-heros_gauche{ min-width:0; }
.pvx-heros_h1{ font-size:clamp(2.6rem,5.2vw,5.2rem); max-width:13ch; }
.pvx-heros .pv-recherche-hero{ max-width:none; background:rgba(11,30,51,.6); backdrop-filter:blur(4px); }
.pvx-tarif{ position:relative; min-width:0; background:var(--voile); color:var(--nuit); padding:1.8rem 1.8rem 1.5rem; box-shadow:10px 10px 0 var(--jaune-q),0 24px 48px rgba(0,0,0,.35); }
.pvx-tarif::before{ content:""; position:absolute; left:0; top:0; right:0; height:6px; background:var(--pavillon); }
.pvx-tarif_sur{ display:flex; align-items:center; gap:.6rem; margin:0 0 1rem; font-size:.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--pavillon); }
.pvx-tarif_sur svg{ flex:0 0 auto; }
.pvx-tarif_total{ display:flex; align-items:flex-end; gap:1rem; margin:0 0 1.2rem; }
.pvx-tarif_chiffre{ font-family:var(--police-titre); font-style:italic; font-weight:900; font-size:5.2rem; line-height:.8; color:var(--nuit); letter-spacing:-.02em; }
.pvx-tarif_chiffre small{ font-size:.45em; margin-left:.08em; }
.pvx-tarif_legende{ font-size:.92rem; line-height:1.35; color:var(--coque); padding-bottom:.2rem; max-width:18ch; }
.pvx-tarif_lignes{ display:flex; flex-direction:column; border-top:2px solid var(--nuit); }
.pvx-tarif_lignes li{ display:flex; justify-content:space-between; align-items:baseline; gap:1rem; padding:.6rem 0; border-bottom:1px solid var(--rade); font-size:.95rem; }
.pvx-tarif_lignes strong{ font-family:var(--police-titre); font-style:italic; font-size:1.35rem; font-weight:800; white-space:nowrap; }
.pvx-tarif_qcm{ margin:1rem 0 .4rem; padding:.7rem .9rem; background:var(--rade); font-size:.92rem; }
.pvx-tarif_qcm strong{ font-family:var(--police-titre); font-style:italic; font-size:1.25rem; color:var(--pavillon); }
.pvx-tarif_lien{ display:inline-block; margin-top:.4rem; font-weight:700; color:var(--pavillon); text-decoration:underline; text-underline-offset:3px; }
.pvx-tarif_source{ margin:.6rem 0 0; font-size:.76rem; color:var(--coque); }
@media (max-width:960px){
	.pvx-heros_grille{ grid-template-columns:minmax(0,1fr); padding-block:2.5rem calc(3rem + 2.4vw); }
	.pvx-heros_h1{ max-width:none; }
	.pvx-tarif{ box-shadow:6px 6px 0 var(--jaune-q); }
}
@media (max-width:480px){ .pvx-tarif{ padding:1.4rem 1.2rem 1.2rem; } .pvx-tarif_chiffre{ font-size:4.2rem; } }

/* ---- R3/R4/R5 Estimateur refait : texte et outil de même poids ---- */
.pvx-estim_grille{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(2rem,4vw,4rem); align-items:center; }
.pvx-estim_texte{ min-width:0; color:#fff; display:flex; flex-direction:column; }
.pvx-estim_texte .pv-bande_intro{ color:var(--rade); }
.pvx-estim_points{ display:flex; flex-direction:column; gap:1rem; margin-top:1.4rem !important; }
.pvx-estim_points li{ display:flex; gap:1rem; align-items:flex-start; padding:1.1rem 1.2rem; background:rgba(255,255,255,.08); border-left:4px solid var(--jaune-q); }
.pvx-estim_points div{ display:flex; flex-direction:column; gap:.2rem; }
.pvx-estim_points strong{ font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; font-size:1.25rem; color:#fff; line-height:1.05; }
.pvx-estim_ico{ flex:0 0 auto; width:36px; padding-top:.15rem; }
.pvx-estim_points div > span{ font-size:.95rem; color:var(--rade); line-height:1.5; }
.pvx-estim_num{ flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center; width:2.2rem; height:2.2rem; background:var(--jaune-q); color:var(--nuit); font-family:var(--police-titre); font-style:italic; font-weight:900; font-size:1.3rem; clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%); }
.pvx-estim_outil{ min-width:0; background:var(--voile); color:var(--nuit); padding:1.8rem; box-shadow:10px 10px 0 var(--nuit); display:flex; flex-direction:column; }
.pvx-estim_etape{ display:flex; align-items:center; gap:.7rem; margin:0 0 .9rem; font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; font-size:1.2rem; }
.pvx-estim_etape span{ display:inline-flex; align-items:center; justify-content:center; width:1.8rem; height:1.8rem; background:var(--pavillon); color:#fff; font-size:1rem; }
.pvx-estim_choix{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.6rem; margin-bottom:1.2rem; }
.pvx-estim_permis{ display:flex; flex-direction:column; align-items:center; gap:.45rem; padding:.8rem .4rem .7rem; min-height:44px; background:var(--blanc); border:2px solid var(--rade); color:var(--nuit); font-weight:700; font-size:.9rem; cursor:pointer; transition:border-color .15s ease, background .15s ease; }
.pvx-estim_permis:hover{ border-color:var(--pavillon); }
.pvx-estim_permis.est-choisi{ border-color:var(--pavillon); background:rgba(11,69,194,.08); box-shadow:inset 0 -4px 0 var(--pavillon); }
.pvx-estim_resultat{ display:grid; grid-template-columns:auto minmax(0,1fr); gap:.4rem 1.4rem; align-items:center; padding:1.1rem 1.2rem; margin-bottom:1.4rem; background:var(--rade); }
.pvx-estim_total{ grid-row:1/3; display:flex; flex-direction:column; margin:0; }
.pvx-estim_chiffre{ font-family:var(--police-titre); font-style:italic; font-weight:900; font-size:4rem; line-height:.85; color:var(--nuit); }
.pvx-estim_chiffre small{ font-size:.45em; margin-left:.06em; }
.pvx-estim_total-label{ font-size:.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--pavillon); margin-top:.3rem; }
.pvx-estim_detail{ display:flex; flex-direction:column; gap:.2rem; }
.pvx-estim_detail li{ display:flex; justify-content:space-between; gap:.8rem; font-size:.9rem; border-bottom:1px dashed rgba(11,30,51,.2); padding-bottom:.2rem; }
.pvx-estim_detail strong{ white-space:nowrap; }
.pvx-estim_note{ grid-column:2; margin:0; font-size:.85rem; color:var(--nuit); font-weight:600; }
.pvx-estim_ligne{ display:flex; gap:.6rem; flex-wrap:wrap; }
.pvx-estim_ville{ flex:1 1 200px; min-width:0; min-height:48px; padding:.7em 1em; border:2px solid var(--nuit); background:var(--blanc); font-family:var(--police-corps); font-size:1rem; color:var(--nuit); }
.pvx-estim_ville:focus-visible{ border-color:var(--pavillon); }
.pvx-estim_source{ margin:0; padding-top:1rem; font-size:.76rem; color:var(--coque); }
@media (max-width:900px){ .pvx-estim_grille{ grid-template-columns:minmax(0,1fr); } }
@media (max-width:520px){
	.pvx-estim_choix{ grid-template-columns:repeat(2,minmax(0,1fr)); }
	.pvx-estim_resultat{ grid-template-columns:minmax(0,1fr); }
	.pvx-estim_total{ grid-row:auto; }
	.pvx-estim_note{ grid-column:auto; }
	.pvx-estim_outil{ padding:1.3rem 1.1rem; box-shadow:6px 6px 0 var(--nuit); }
}

/* ---- R6 À la une : l'article principal remplit toute sa hauteur ---- */
.pvx-une-principal{ min-height:440px; overflow:hidden; background:var(--nuit); }
.pvx-une-principal .pv-carte_media{ position:absolute; inset:0; aspect-ratio:auto; }
.pvx-une-principal .pv-carte_media img,.pvx-une-principal .pv-carte-image{ clip-path:none; }
.pvx-une-principal .pv-carte_media::after{ content:""; position:absolute; inset:0; background:linear-gradient(0deg,rgba(11,30,51,.95) 0%,rgba(11,30,51,.55) 38%,rgba(11,30,51,0) 70%); }
.pvx-une-principal .pv-carte_corps{ position:relative; z-index:2; margin-top:auto; padding:1.6rem 1.8rem 1.8rem; flex:0 0 auto; }
.pvx-une-principal .pv-carte_eyebrow{ color:var(--jaune-q); }
.pvx-une-principal .pv-carte_titre{ color:#fff; font-size:clamp(1.6rem,2.4vw,2.2rem); }
.pvx-une-principal .pv-carte_titre a{ color:#fff; }
.pvx-une-principal .pv-carte_extrait{ color:var(--rade); font-size:1rem; }
.pvx-une-principal .pv-carte_pastille{ z-index:2; }
@media (max-width:640px){ .pvx-une-principal{ min-height:380px; } }

/* ---- R7 Footer équilibré ---- */
.pv-pied_grille{ grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr) minmax(0,1.3fr) minmax(0,.8fr); }
.pvx-pied_liste--2col{ display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.55rem 1.4rem !important; }
.pvx-pied_atouts{ display:flex; flex-direction:column; gap:.6rem; margin:1.2rem 0 1.3rem !important; }
.pvx-pied_atouts li{ display:flex; align-items:center; gap:.6rem; font-size:.86rem; color:var(--rade); }
.pvx-pied_atouts svg{ flex:0 0 auto; }
@media (max-width:900px){ .pv-pied_grille{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .pv-pied_grille{ grid-template-columns:1fr; } }

/* ---- R8 Article : l'image occupe la moitié droite du héros ---- */
.pvx-a-heros{ position:relative; overflow:hidden; }
.pvx-a-heros_conteneur{ position:relative; z-index:2; padding-block:2.6rem calc(3rem + 2.4vw); }
.pvx-a-heros--image .pvx-a-heros_texte{ max-width:min(640px,54%); }
.pvx-a-heros_image{ position:absolute; top:0; right:0; bottom:0; width:44%; clip-path:polygon(14% 0,100% 0,100% 100%,0 100%); }
.pvx-a-heros_image img{ width:100%; height:100%; object-fit:cover; }
.pvx-a-heros_image::after{ content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(11,30,51,.35),rgba(11,30,51,0) 35%); }
.pvx-a-heros_image::before{ content:""; position:absolute; z-index:1; left:0; top:0; bottom:0; width:14%; background:var(--jaune-q); clip-path:polygon(100% 0,calc(100% - 8px) 0,0 100%,8px 100%); }
.pvx-a-heros_pavillon{ display:block; width:42px; margin:.2rem 0 .9rem; }
.pvx-a-meta{ gap:.7rem; }
.pvx-a-meta_auteur{ display:inline-flex; align-items:center; gap:.6rem; color:#fff; font-weight:700; }
.pvx-a-meta_auteur:hover span{ text-decoration:underline; }
.pvx-a-meta_auteur .pv-portrait{ width:40px; height:40px; border:2px solid var(--jaune-q); }
@media (max-width:900px){
	.pvx-a-heros_image{ position:relative; width:100%; height:240px; clip-path:none; }
	.pvx-a-heros_image::before{ display:none; }
	.pvx-a-heros--image .pvx-a-heros_texte{ max-width:none; }
	.pvx-a-heros_conteneur{ padding-block:1.6rem calc(2.2rem + 2.4vw); }
}

/* ---- R10 Frise d'étapes : carte numérotée, lisible d'un coup d'œil ---- */
sbs-frise,.sbs_frise{ counter-reset:pvx-etape; padding:1.5rem 1.6rem 1.3rem; background:var(--blanc); border-top:6px solid var(--pavillon); box-shadow:var(--ombre-carte); display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.2rem 1.4rem; }
.sbs_frise:has(> sbs-etape:nth-of-type(2):last-of-type),.sbs_frise:has(> sbs-etape:nth-of-type(4):last-of-type){ grid-template-columns:repeat(2,minmax(0,1fr)); }
.sbs_frise:has(> sbs-etape:first-of-type:last-of-type){ grid-template-columns:minmax(0,1fr); }
.sbs_frise::before{ display:none; }
.sbs_frise_titre{ grid-column:1/-1; display:flex; align-items:center; gap:.6em; font-size:1.3rem; margin:0; }
.sbs_frise_titre::before{ content:""; flex:0 0 auto; width:22px; height:15px; background:var(--jaune-q); clip-path:polygon(0 0,100% 0,78% 50%,100% 100%,0 100%); }
sbs-etape,.sbs_etape{ counter-increment:pvx-etape; margin:0; padding:3.3rem 1rem 1rem; background:var(--rade); min-height:100%; }
sbs-etape::before,.sbs_etape::before{ content:counter(pvx-etape,decimal-leading-zero); left:1rem; top:.9rem; width:auto; height:auto; padding:.1rem .7rem 0 .8rem; background:var(--jaune-q); clip-path:polygon(6px 0,100% 0,calc(100% - 6px) 100%,0 100%); font-family:var(--police-titre); font-style:italic; font-weight:900; font-size:1.35rem; line-height:1.4; color:var(--nuit); }
sbs-etape::after,.sbs_etape::after{ content:"→"; position:absolute; right:-1.15rem; top:1.05rem; font-weight:700; color:var(--pavillon); }
sbs-etape:last-of-type::after,.sbs_etape:last-of-type::after{ display:none; }
.sbs_frise:not(:has(> sbs-etape:nth-of-type(2):last-of-type)):has(> sbs-etape:nth-of-type(4):last-of-type) sbs-etape:nth-of-type(2)::after{ display:none; }
.sbs_frise:has(> sbs-etape:nth-of-type(5)) sbs-etape:nth-of-type(3n)::after{ display:none; }
.sbs_etape_date{ display:inline-block; margin-bottom:.4rem; padding:.05rem .5rem; background:var(--blanc); font-size:.78rem; text-transform:uppercase; letter-spacing:.03em; }
.sbs_etape_titre{ font-size:1.12rem; margin:0 0 .35em; color:var(--nuit); line-height:1.15; }
.sbs_etape_desc{ font-size:.9rem; line-height:1.5; color:var(--coque); }
.sbs_frise .sbs_source{ grid-column:1/-1; margin-top:0; }
@media (max-width:640px){
	sbs-frise,.sbs_frise{ grid-template-columns:minmax(0,1fr); padding:1.2rem 1rem; }
	sbs-etape::after,.sbs_etape::after{ content:"↓"; right:auto; left:50%; top:auto; bottom:-1.2rem; }
}

/* Photos du corps (pose R9) */
.pv-article-corps .pv-figure{ margin:2.4rem 0; }
.pv-article-corps .pv-figure img{ width:100%; aspect-ratio:3/2; object-fit:cover; margin:0; }
.pv-article-corps .pv-figure figcaption{ margin-top:.6rem; padding-left:.8rem; border-left:3px solid var(--jaune-q); font-size:.82rem; color:var(--coque); }

/* ---- R13 Bloc auteur ---- */
.pvx-auteur{ display:grid; grid-template-columns:160px minmax(0,1fr); gap:1.8rem; align-items:start; margin-top:3.2rem; padding:1.8rem; background:var(--nuit); color:var(--rade); position:relative; }
.pvx-auteur::before{ content:""; position:absolute; left:0; top:0; right:0; height:6px; background:linear-gradient(90deg,var(--pavillon) 0 70%,var(--jaune-q) 70%); }
.pvx-auteur_photo{ display:block; box-shadow:8px 8px 0 var(--jaune-q); }
.pvx-auteur_photo .pv-portrait{ width:160px; height:160px; border-radius:0; border:0; display:block; }
.pvx-auteur_corps{ min-width:0; display:flex; flex-direction:column; gap:.25rem; }
.pvx-auteur_sur{ margin:0; font-size:.76rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--jaune-q); }
.pvx-auteur_nom{ margin:0; font-family:var(--police-titre); font-style:italic; font-weight:900; text-transform:uppercase; font-size:2rem; line-height:1; }
.pvx-auteur_nom a{ color:#fff; }
.pvx-auteur_nom a:hover{ text-decoration:underline; }
.pvx-auteur_role{ margin:0 0 .5rem; font-size:.85rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:#8FB2FF; }
.pvx-auteur_bio{ margin:0 0 .9rem; font-size:.95rem; line-height:1.6; color:var(--rade); max-width:62ch; }
.pvx-auteur_pied{ display:flex; flex-wrap:wrap; align-items:center; gap:.8rem 1.4rem; }
.pvx-auteur_verifie{ display:inline-flex; align-items:center; gap:.5rem; font-size:.82rem; color:var(--rade); }
.pvx-auteur_verifie .pv-feu{ width:14px; height:14px; border-color:#fff; }
@media (max-width:600px){
	.pvx-auteur{ grid-template-columns:minmax(0,1fr); padding:1.4rem 1.2rem; }
	.pvx-auteur_photo{ width:120px; } .pvx-auteur_photo .pv-portrait{ width:120px; height:120px; }
}

/* ---- R14/R15/R16 Colonne latérale ---- */
.pvx-aside{ position:static; gap:1.6rem; align-self:stretch; }
.pvx-aside_collant{ position:sticky; top:96px; display:flex; flex-direction:column; gap:1.4rem; }
.pvx-sommaire{ background:var(--blanc); box-shadow:var(--ombre-carte); padding:0 0 .6rem; }
.pvx-sommaire_titre{ display:flex; align-items:center; gap:.6rem; margin:0; padding:.9rem 1.2rem; background:var(--nuit); color:#fff; font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; font-size:1.1rem; }
.pvx-sommaire_progression{ height:4px; background:var(--rade); }
.pvx-sommaire_progression span{ display:block; height:100%; width:0; background:var(--jaune-q); transition:width .1s linear; }
.pvx-sommaire .pv-sommaire-liste{ counter-reset:pvx-som; gap:0; padding:.4rem 0; }
.pvx-sommaire .pv-sommaire-liste li{ counter-increment:pvx-som; }
.pvx-sommaire .pv-sommaire-liste a{ display:grid; grid-template-columns:1.8rem minmax(0,1fr); gap:.3rem; padding:.5rem 1.2rem .5rem .9rem; border-left:4px solid transparent; font-size:.9rem; line-height:1.35; color:var(--nuit); text-decoration:none; transition:background .15s ease, border-color .15s ease; }
.pvx-sommaire .pv-sommaire-liste a::before{ content:counter(pvx-som,decimal-leading-zero); font-family:var(--police-titre); font-style:italic; font-weight:800; color:var(--pavillon); }
.pvx-sommaire .pv-sommaire-liste a:hover{ background:var(--rade); }
.pvx-sommaire .pv-sommaire-liste a.est-actif{ border-left-color:var(--jaune-q); background:rgba(11,69,194,.07); font-weight:700; }

.pvx-cta-prix{ position:relative; padding:1.4rem 1.4rem 1.2rem; background:var(--pavillon); color:#fff; overflow:hidden; }
.pvx-cta-prix::after{ content:""; position:absolute; right:-30px; top:-30px; width:120px; height:120px; background:var(--jaune-q); transform:rotate(18deg); opacity:.95; clip-path:polygon(0 0,100% 0,100% 100%); }
.pvx-cta-prix_sur{ position:relative; z-index:1; margin:0 0 .3rem; font-size:.76rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:#fff; }
.pvx-cta-prix_chiffre{ position:relative; z-index:1; margin:0; font-family:var(--police-titre); font-style:italic; font-weight:900; font-size:4rem; line-height:.9; }
.pvx-cta-prix_chiffre small{ font-size:.45em; }
.pvx-cta-prix_texte{ margin:.5rem 0 1rem; font-size:.9rem; line-height:1.45; color:var(--rade); }
.pvx-cta-prix_bouton{ width:100%; }
.pvx-cta-prix_source{ margin:.6rem 0 0; font-size:.72rem; color:#BFD0F5; }

.pvx-cta-ecole{ padding:1.4rem; background:var(--blanc); border:2px solid var(--nuit); box-shadow:6px 6px 0 var(--nuit); }
.pvx-cta-ecole_titre{ display:flex; align-items:center; gap:.5rem; margin:0 0 .5rem; font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; font-size:1.3rem; line-height:1; color:var(--nuit); }
.pvx-cta-ecole_titre svg{ color:var(--babord); flex:0 0 auto; }
.pvx-cta-ecole_texte{ margin:0 0 1rem; font-size:.9rem; color:var(--coque); line-height:1.5; }
.pvx-cta-ecole_form{ display:flex; flex-direction:column; gap:.6rem; }
.pvx-cta-ecole_champ{ min-height:46px; padding:.6em .9em; border:2px solid var(--rade); background:var(--voile); font-family:var(--police-corps); font-size:1rem; color:var(--nuit); }
.pvx-cta-ecole_champ:focus-visible{ border-color:var(--pavillon); }
.pvx-cta-ecole_form .pv-bouton{ width:100%; }
@media (max-width:1000px){ .pvx-aside_collant{ position:static; } }

/* ---- R17/R18 Rubrique : héros photo plein cadre + une magazine ---- */
.pvx-r-heros{ position:relative; overflow:hidden; background:var(--nuit); color:#fff; min-height:min(64vh,560px); display:flex; align-items:flex-end; }
.pvx-r-heros_fond{ position:absolute; inset:0; }
.pvx-r-heros_fond img{ width:100%; height:100%; object-fit:cover; }
.pvx-r-heros_voile{ position:absolute; inset:0; background:linear-gradient(90deg,rgba(11,30,51,.94) 0%,rgba(11,30,51,.75) 45%,rgba(11,30,51,.25) 100%),linear-gradient(0deg,rgba(11,30,51,.7),rgba(11,30,51,0) 45%); }
.pvx-r-heros_corps{ position:relative; z-index:2; width:100%; padding-block:3rem calc(3.4rem + 2.4vw); }
.pvx-r-heros_titre-ligne{ display:flex; align-items:center; gap:1.4rem; margin:.4rem 0 .8rem; }
.pvx-r-heros_pavillon{ flex:0 0 auto; width:84px; filter:drop-shadow(4px 4px 0 rgba(0,0,0,.35)); }
.pvx-r-heros_titre{ margin:0; color:#fff; font-size:clamp(3rem,8vw,7.2rem); line-height:.85; font-weight:900; text-wrap:balance; max-width:14ch; }
.pvx-r-heros_desc{ max-width:52ch; margin:0 0 1.8rem; font-size:1.25rem; line-height:1.5; color:var(--rade); }
.pvx-r-heros_chiffres{ display:flex; flex-wrap:wrap; gap:1rem 2.6rem; align-items:center; }
.pvx-r-heros_chiffres li{ display:flex; flex-direction:column; gap:.1rem; padding-left:1rem; border-left:4px solid var(--jaune-q); }
.pvx-r-heros_chiffres strong{ font-family:var(--police-titre); font-style:italic; font-weight:800; font-size:1.8rem; line-height:1; color:#fff; text-transform:uppercase; }
.pvx-r-heros_chiffres span{ font-size:.82rem; color:var(--rade); }
.pvx-r-heros_auteurs{ flex-direction:row !important; align-items:center; gap:.8rem !important; }
.pvx-r-heros_visages{ display:flex; }
.pvx-r-heros_visages a + a{ margin-left:-12px; }
.pvx-r-heros_visages .pv-portrait{ width:44px; height:44px; border:2px solid var(--jaune-q); }
.pvx-r-nav{ background:var(--blanc); border-bottom:1px solid var(--rade); }
.pvx-r-nav_piste{ display:flex; gap:.5rem; overflow-x:auto; padding-block:.9rem; scrollbar-width:thin; }
.pvx-r-nav_lien{ flex:0 0 auto; display:inline-flex; align-items:center; gap:.5rem; padding:.55rem .95rem; min-height:44px; border:1px solid var(--rade); font-weight:700; font-size:.9rem; white-space:nowrap; }
.pvx-r-nav_lien:hover{ border-color:var(--pavillon); color:var(--pavillon); }
.pvx-r-nav_lien.est-courante{ background:var(--nuit); border-color:var(--nuit); color:#fff; }
.pvx-r-corps{ padding-block:2.8rem 3.4rem; }
.pvx-r-une{ display:grid; grid-template-columns:minmax(0,1.7fr) minmax(0,1fr); grid-template-rows:auto auto; gap:var(--gouttiere); margin-bottom:3.2rem; }
.pvx-r-une_grande{ grid-row:1/3; min-height:520px; }
.pvx-r-une_petite .pv-carte_titre{ font-size:1.2rem; }
.pvx-r-une:has(> :only-child){ grid-template-columns:minmax(0,1fr); }
.pvx-r-tous_titre{ display:flex; flex-wrap:wrap; align-items:baseline; gap:.6rem; font-size:clamp(1.8rem,3vw,2.4rem); margin-bottom:1.4rem; }
.pvx-r-tous_titre span{ font-size:.55em; color:var(--pavillon); }
.pvx-r-carte .pv-carte_titre{ font-size:1.15rem; }
.pvx-r-carte_auteur{ display:inline-flex; align-items:center; gap:.4rem; font-weight:600; color:var(--nuit); }
.pvx-r-carte_auteur .pv-portrait{ width:28px; height:28px; border-width:1px; }
.pv-carte_meta{ align-items:center; flex-wrap:wrap; }
.pvx-une-principal .pv-carte_meta{ color:var(--rade); }
.pvx-une-principal .pvx-r-carte_auteur{ color:#fff; }
.pvx-r-cta_grille{ display:flex; align-items:center; justify-content:space-between; gap:2rem; flex-wrap:wrap; }
.pvx-r-cta .pv-bande_titre{ color:#fff; }
.pvx-r-cta .pv-bande_intro{ color:var(--rade); margin-bottom:0; }
@media (max-width:860px){
	.pvx-r-une{ grid-template-columns:minmax(0,1fr); }
	.pvx-r-une_grande{ grid-row:auto; min-height:420px; }
	.pvx-r-heros_pavillon{ width:56px; }
}

/* ---- R19 Page auteur : vraie photo, cadrée comme le bloc auteur ---- */
.pvx-auteur-heros .pv-portrait{ width:180px; height:180px; border-radius:0; border:0; box-shadow:10px 10px 0 var(--jaune-q); }
@media (max-width:640px){ .pvx-auteur-heros .pv-portrait{ width:130px; height:130px; } }

/* ---- R21 À propos : récit visuel ---- */
.pvx-ap-sur{ display:flex; align-items:center; gap:.6rem; margin:0 0 1rem; font-size:.82rem; font-weight:700; text-transform:uppercase; letter-spacing:.07em; color:var(--jaune-q); }
.pvx-ap-sur--fonce{ color:var(--pavillon); }
.pvx-ap-heros{ position:relative; overflow:hidden; min-height:min(82vh,720px); display:flex; align-items:flex-end; background:var(--nuit); color:#fff; }
.pvx-ap-heros_fond,.pvx-ap-final_fond,.pvx-ct-heros_fond{ position:absolute; inset:0; }
.pvx-ap-heros_fond img,.pvx-ap-final_fond img,.pvx-ct-heros_fond img{ width:100%; height:100%; object-fit:cover; }
.pvx-ap-heros_voile{ position:absolute; inset:0; background:linear-gradient(90deg,rgba(11,30,51,.9) 0%,rgba(11,30,51,.6) 50%,rgba(11,30,51,.1) 100%),linear-gradient(0deg,rgba(11,30,51,.75),rgba(11,30,51,0) 50%); }
.pvx-ap-heros_corps{ position:relative; z-index:2; width:100%; padding-block:4rem calc(4.4rem + 2.4vw); }
.pvx-ap-heros_titre{ color:#fff; font-size:clamp(3rem,7.4vw,7rem); line-height:.85; font-weight:900; max-width:12ch; margin-bottom:1.4rem; text-wrap:balance; }
.pvx-ap-heros_texte{ max-width:52ch; font-size:1.25rem; line-height:1.55; color:var(--rade); margin-bottom:2rem; }
.pvx-ap-heros_actions{ display:flex; flex-wrap:wrap; gap:1rem; }
.pvx-ap-manifeste{ padding-block:5rem 4rem; }
.pvx-ap-manifeste_grille{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(2rem,5vw,5rem); align-items:center; }
.pvx-ap-citation{ margin:0 0 1.8rem; padding:0; border:0; font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; font-size:clamp(1.9rem,3.4vw,2.9rem); line-height:1.02; color:var(--nuit); }
.pvx-ap-citation::before{ content:""; display:block; width:64px; height:8px; margin-bottom:1.2rem; background:var(--jaune-q); }
.pvx-ap-manifeste_texte p{ font-size:1.08rem; color:var(--nuit); max-width:60ch; }
.pvx-ap-manifeste_image{ margin:0; position:relative; }
.pvx-ap-manifeste_image img{ width:100%; aspect-ratio:4/5; object-fit:cover; box-shadow:14px 14px 0 var(--pavillon); }
.pvx-ap-manifeste_image figcaption,.pvx-ap-credits{ margin-top:1.1rem; font-size:.74rem; color:var(--coque); }
.pvx-ap-chiffres{ background:var(--pavillon); color:#fff; padding-block:calc(3.4rem + 2.4vw); }
.pvx-ap-chiffres_liste{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:2rem; }
.pvx-ap-chiffres_liste li{ display:flex; flex-direction:column; gap:.5rem; padding-top:1rem; border-top:4px solid var(--jaune-q); }
.pvx-ap-chiffres_liste strong{ font-family:var(--police-titre); font-style:italic; font-weight:900; font-size:clamp(3.2rem,6vw,5rem); line-height:.85; }
.pvx-ap-chiffres_liste strong small{ font-size:.45em; }
.pvx-ap-chiffres_liste span{ font-size:.98rem; color:var(--rade); line-height:1.4; max-width:24ch; }
.pvx-ap-metiers_grille{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--gouttiere); margin-top:1.6rem; }
.pvx-ap-metier{ background:var(--blanc); box-shadow:var(--ombre-carte); display:flex; flex-direction:column; min-width:0; }
.pvx-ap-metier_image{ aspect-ratio:4/3; overflow:hidden; }
.pvx-ap-metier_image img{ width:100%; height:100%; object-fit:cover; transition:transform .5s ease; }
.pvx-ap-metier:hover .pvx-ap-metier_image img{ transform:scale(1.04); }
.pvx-ap-metier_corps{ position:relative; padding:2rem 1.6rem 1.8rem; }
.pvx-ap-metier_num{ position:absolute; top:-1.6rem; left:1.6rem; padding:.2rem .9rem 0 1rem; background:var(--jaune-q); font-family:var(--police-titre); font-style:italic; font-weight:900; font-size:1.8rem; line-height:1.3; clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%); }
.pvx-ap-metier h3{ font-size:1.9rem; margin:.2rem 0 .6rem; }
.pvx-ap-metier p{ font-size:.98rem; color:var(--coque); margin:0; }
.pvx-ap-equipe_grille{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2rem; margin-top:1.8rem; }
.pvx-ap-membre{ display:grid; grid-template-columns:200px minmax(0,1fr); gap:1.6rem; align-items:start; background:var(--blanc); padding:1.6rem; box-shadow:var(--ombre-carte); min-width:0; }
.pvx-ap-membre_photo{ display:block; box-shadow:10px 10px 0 var(--jaune-q); }
.pvx-ap-membre_photo .pv-portrait{ width:200px; height:240px; border-radius:0; border:0; object-fit:cover; }
.pvx-ap-membre_nom{ font-size:2rem; margin:.2rem 0 .2rem; }
.pvx-ap-membre_role{ font-size:.82rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--pavillon); margin-bottom:.8rem; }
.pvx-ap-membre_bio{ font-size:.95rem; color:var(--coque); margin-bottom:1.1rem; }
.pvx-ap-methode_liste{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:2rem; margin-top:1.6rem !important; counter-reset:pvx-m; }
.pvx-ap-methode_liste li{ padding:1.6rem; border:2px solid var(--nuit); background:var(--blanc); box-shadow:8px 8px 0 var(--nuit); }
.pvx-ap-methode_pav{ display:block; width:48px; margin-bottom:1rem; }
.pvx-ap-methode_liste h3{ font-size:1.45rem; margin-bottom:.5rem; }
.pvx-ap-methode_liste p{ margin:0; font-size:.95rem; color:var(--coque); }
.pvx-ap-methode_liste a{ color:var(--pavillon); text-decoration:underline; font-weight:700; }
.pvx-ap-final{ position:relative; overflow:hidden; background:var(--nuit); color:#fff; padding-block:calc(5rem + 2.4vw) 5rem; text-align:center; }
.pvx-ap-final::after{ content:""; position:absolute; inset:0; background:rgba(11,30,51,.72); }
.pvx-ap-final_corps{ position:relative; z-index:2; }
.pvx-ap-final .pv-bande_titre{ color:#fff; margin-inline:auto; font-size:clamp(2.4rem,5vw,4rem); }
.pvx-ap-final p{ color:var(--rade); font-size:1.15rem; max-width:48ch; margin:0 auto 1.8rem; }
@media (max-width:960px){
	.pvx-ap-manifeste_grille,.pvx-ap-equipe_grille{ grid-template-columns:minmax(0,1fr); }
	.pvx-ap-chiffres_liste{ grid-template-columns:repeat(2,minmax(0,1fr)); }
	.pvx-ap-metiers_grille,.pvx-ap-methode_liste{ grid-template-columns:minmax(0,1fr); }
	.pvx-ap-manifeste_image img{ aspect-ratio:16/10; }
}
@media (max-width:560px){
	.pvx-ap-membre{ grid-template-columns:minmax(0,1fr); }
	.pvx-ap-membre_photo{ width:160px; } .pvx-ap-membre_photo .pv-portrait{ width:160px; height:190px; }
	.pvx-ap-chiffres_liste{ gap:1.4rem; }
}

/* ---- R22 Contact ---- */
.pvx-ct-heros{ position:relative; overflow:hidden; background:var(--nuit); color:#fff; min-height:380px; display:flex; align-items:flex-end; }
.pvx-ct-heros_voile{ position:absolute; inset:0; background:linear-gradient(90deg,rgba(11,30,51,.92),rgba(11,30,51,.45)); }
.pvx-ct-heros_corps{ position:relative; z-index:2; width:100%; padding-block:3rem calc(5.5rem + 2.4vw); }
.pvx-ct-heros_titre{ color:#fff; font-size:clamp(3rem,7vw,6rem); line-height:.85; font-weight:900; margin-bottom:1rem; }
.pvx-ct-heros_texte{ max-width:56ch; font-size:1.15rem; color:var(--rade); margin:0; }
.pvx-ct-grille{ display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:2.4rem; align-items:start; margin-top:-5rem; padding-bottom:4rem; position:relative; z-index:3; }
.pvx-ct-carte{ background:var(--blanc); padding:2.2rem; box-shadow:0 24px 48px rgba(11,30,51,.18); border-top:6px solid var(--jaune-q); min-width:0; }
.pvx-ct-carte_titre{ font-size:2rem; margin-bottom:.4rem; }
.pvx-ct-carte_delai{ display:flex; align-items:center; gap:.5rem; margin-bottom:1.6rem; font-size:.9rem; color:var(--coque); }
.pvx-ct-carte_delai .pv-feu{ width:14px; height:14px; }
.pvx-ct-form{ max-width:none; }
.pvx-ct-form_ligne{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.pvx-ct-form input,.pvx-ct-form textarea,.pvx-ct-form select{ background:var(--voile); border:2px solid var(--rade); }
.pvx-ct-form input:focus-visible,.pvx-ct-form textarea:focus-visible,.pvx-ct-form select:focus-visible{ border-color:var(--pavillon); outline:none; }
.pvx-ct-form .pv-bouton{ align-self:flex-start; }
.pvx-ct-cote{ display:flex; flex-direction:column; gap:1.4rem; padding-top:5.6rem; min-width:0; }
.pvx-ct-cote_titre{ display:flex; align-items:center; gap:.6rem; margin:0 0 .7rem; font-family:var(--police-titre); font-style:italic; font-weight:800; text-transform:uppercase; font-size:1.25rem; line-height:1.05; }
.pvx-ct-cote_titre .pv-feu{ width:16px; height:16px; }
.pvx-ct-equipe{ background:var(--nuit); color:#fff; padding:1.5rem; }
.pvx-ct-equipe .pvx-ct-cote_titre{ color:var(--jaune-q); }
.pvx-ct-equipe_liste{ display:flex; flex-direction:column; gap:1rem; }
.pvx-ct-equipe_liste a{ display:flex; align-items:center; gap:1rem; color:#fff; }
.pvx-ct-equipe_liste .pv-portrait{ width:72px; height:72px; border:3px solid var(--jaune-q); }
.pvx-ct-equipe_liste span{ display:flex; flex-direction:column; }
.pvx-ct-equipe_liste strong{ font-family:var(--police-titre); font-style:italic; text-transform:uppercase; font-size:1.3rem; line-height:1; }
.pvx-ct-equipe_liste em{ font-style:normal; font-size:.8rem; color:#8FB2FF; text-transform:uppercase; letter-spacing:.04em; margin-top:.2rem; }
.pvx-ct-equipe_liste a:hover strong{ text-decoration:underline; }
.pvx-ct-chemin{ background:var(--blanc); padding:1.5rem; border:2px solid var(--rade); }
.pvx-ct-chemin p:not(.pvx-ct-cote_titre){ font-size:.93rem; color:var(--coque); }
.pvx-ct-chemin--ecole{ border-color:var(--nuit); box-shadow:6px 6px 0 var(--nuit); }
@media (max-width:900px){
	.pvx-ct-grille{ grid-template-columns:minmax(0,1fr); margin-top:-3rem; }
	.pvx-ct-cote{ padding-top:0; }
}
@media (max-width:560px){
	.pvx-ct-form_ligne{ grid-template-columns:minmax(0,1fr); }
	.pvx-ct-carte{ padding:1.5rem 1.2rem; }
}

/* 30/09 — le corps d'article collait aux bords du mobile (padding 0 mesuré à 390 px) :
   gouttière du site partout (16 px mobile, 24 px au-delà). */
.pv-article-mise-en-page{ padding-inline:var(--gouttiere); }
