/* Design system V2/V3 : voir /design-system/. Après fonts.css. */

/* == 1. Variables == */
:root{/* Palette du brief */
--bleu-nuit:#0F2D4A;--bronze:#B99A7A;/* décor, texte sur bleu nuit */
--ivoire:#F8F5EE;/* fond principal */
--beige:#E6D9C6;/* fond des sections alternées */
--anthracite:#3E3E3E;/* texte */
/* Ajustements d'accessibilité */
--bronze-fonce:#6E5236;/* texte bronze sur fond clair */
--bronze-clair:#CDB497;/* survol des boutons bronze (texte bleu nuit) */
--bleu-survol:#1B4468;--blanc:#FFFFFF;--texte-discret:#5F5A50;--bordure-champ:#857E70;--filet:#D5C6AF;/* séparateurs décoratifs (non porteurs d'information) */
--erreur:#8B2E24;--succes:#2F5D3A;--etudes:#2F5D3A;/* carte : études de Claude Martin */
--hypothese:#8B2E24;/* carte : hypothèses (pointillé) */
--itin:#5A2D6B;--focus:#0F2D4A;/* Typographie */
--police-titre:"Playfair Display",Georgia,"Times New Roman",serif;--police-texte:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;/* Échelle (rapport ~1,25), fluide entre 375 et 1440 px */
--t-xs:.8125rem;/* 13 px : mentions, sources */
--t-sm:.9375rem;/* 15 px */
--t-base:1.0625rem;/* 17 px : texte courant */
--t-md:1.25rem;/* 20 px : chapeaux */
--t-lg:clamp(1.375rem,1.2rem + .75vw,1.75rem);/* h3 */
--t-xl:clamp(1.75rem,1.45rem + 1.3vw,2.5rem);/* h2 */
--t-2xl:clamp(2.25rem,1.7rem + 2.4vw,3.75rem);/* h1 */
--t-3xl:clamp(2.75rem,1.9rem + 3.8vw,5rem);/* titre du hero */
--interligne:1.65;--interligne-titre:1.15;--espacement-capitales:.18em;/* Espacements (base 4 px) */
--e-1: .25rem;--e-2: .5rem;--e-3: .75rem;--e-4: 1rem;--e-5: 1.5rem;--e-6: 2rem;--e-7: 3rem;--e-8: 4rem;--e-9: 6rem;--section:clamp(3rem,2rem + 4vw,6rem);/* marge verticale des sections */

/* Mise en page */
--largeur-max:72rem;/* 1152 px */
--largeur-texte:42rem;/* ~70 caractères */
--gouttiere:clamp(1rem,.6rem + 2vw,2rem);--rayon:2px;--ombre:0 1px 2px rgba(15,45,74,.06),0 4px 16px rgba(15,45,74,.06);--transition:150ms ease}

/* == 2. Base == */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--ivoire);color:var(--anthracite);font-family:var(--police-texte);font-size:var(--t-base);line-height:var(--interligne);text-rendering:optimizeLegibility}
img,svg,video{max-width:100%;height:auto;display:block}
h1,h2,h3,h4{font-family:var(--police-titre);font-weight:400;line-height:var(--interligne-titre);color:var(--bleu-nuit);margin:0 0 var(--e-4);text-wrap:balance;overflow-wrap:break-word;hyphens:auto;/* mots longs (NL) */}
h1{font-size:var(--t-2xl)}
h2{font-size:var(--t-xl)}
h3{font-size:var(--t-lg)}
h4{font-size:var(--t-md);font-weight:700}
p,ul,ol,dl,blockquote,figure{margin:0 0 var(--e-4)}
a{color:var(--bleu-nuit);text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:var(--bronze-fonce)}
main a{overflow-wrap:anywhere} /* URL longues */
strong{font-weight:600}
blockquote{font-family:var(--police-titre);font-size:var(--t-md);color:var(--bleu-nuit);border-left:2px solid var(--bronze);padding-left:var(--e-5)}
blockquote cite,.source{display:block;font-family:var(--police-texte);font-size:var(--t-xs);font-style:normal;color:var(--texte-discret);margin-top:var(--e-2)}
figcaption{font-size:var(--t-xs);color:var(--texte-discret);margin-top:var(--e-2)}
figcaption .credit{display:block}
hr{border:0;border-top:1px solid var(--filet);margin:var(--e-7) 0}

:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.fond-bleu :focus-visible,.appel:not(.appel--clair) :focus-visible{--focus:var(--bronze);outline-color:var(--bronze)}

.visuellement-masque{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.lien-evitement{position:absolute;left:var(--e-4);top:-3rem;z-index:100;background:var(--bleu-nuit);color:var(--ivoire);padding:var(--e-2) var(--e-4)}
.lien-evitement:focus{top:var(--e-4);color:var(--ivoire)}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none !important;animation:none !important;scroll-behavior:auto !important}}

/* == 3. Mise en page et grilles == */
.conteneur{width:100%;max-width:var(--largeur-max);margin-inline:auto;padding-inline:var(--gouttiere)}
.conteneur--texte{max-width:calc(var(--largeur-texte) + 2 * var(--gouttiere))}
.section{padding-block:var(--section)}
.section--beige{background:var(--beige)}
.fond-bleu{background:var(--bleu-nuit);color:var(--ivoire)}
.fond-bleu h1,.fond-bleu h2,.fond-bleu h3{color:var(--ivoire)}
.fond-bleu a:where(:not(.bouton)){color:var(--ivoire)}
.fond-bleu a:where(:not(.bouton)):hover{color:var(--bronze)}

.grille{display:grid;gap:var(--e-5);grid-template-columns:1fr}
@media (min-width:48em){.grille--2,.grille--3,.grille--4{grid-template-columns:repeat(2,1fr)}}
.grille>*{min-width:0} /* mots longs (NL) : une colonne 1fr ne s'élargit plus au-delà de la grille */
@media (min-width:64em){.grille--3{grid-template-columns:repeat(3,1fr)}
.grille--4{grid-template-columns:repeat(4,1fr)}}
.grille--auto{grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr))}

.pile > * + *{margin-top:var(--e-4)}

/* == 4. Icônes == */
.icone{width:1.25em;height:1.25em;flex:none;display:inline-block;vertical-align:-0.2em;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.icone--grande{width:2rem;height:2rem}

/* == 5. Titres de section == */
.surtitre{display:block;margin-bottom:var(--e-2);font-family:var(--police-texte);font-size:var(--t-xs);font-weight:600;letter-spacing:var(--espacement-capitales);text-transform:uppercase;color:var(--bronze-fonce)}
.fond-bleu .surtitre{color:var(--bronze)}
.titre-section{margin-bottom:var(--e-6);max-width:var(--largeur-texte)}
.titre-section h2{margin-bottom:var(--e-3)}
.titre-section::after{content:"";display:block;width:3rem;height:1px;margin-top:var(--e-4);background:var(--bronze)}
.titre-section--centre{margin-inline:auto;text-align:center}
.titre-section--centre::after{margin-inline:auto}
.chapeau{font-size:var(--t-md);line-height:1.55;color:var(--texte-discret)}
.titre-capitales{text-transform:uppercase;letter-spacing:.06em}
.titre-espace{font-family:var(--police-texte);text-transform:uppercase;letter-spacing:.35em;font-size:var(--t-sm)}

/* == 6. Boutons == */
.bouton{display:inline-flex;align-items:center;justify-content:center;gap:var(--e-3);min-height:2.75rem;padding:var(--e-3) var(--e-5);font-family:var(--police-titre);font-size:var(--t-base);line-height:1.2;text-decoration:none;text-align:center;border:1px solid transparent;border-radius:var(--rayon);cursor:pointer;transition:background-color var(--transition),color var(--transition),border-color var(--transition)}
.bouton .icone{width:1.1em;height:1.1em}
.bouton--primaire{background:var(--bleu-nuit);border-color:var(--bleu-nuit);color:var(--ivoire)}
.bouton--primaire:hover{background:var(--bleu-survol);border-color:var(--bleu-survol);color:var(--ivoire)}
.bouton--secondaire,.bouton--bronze{background:var(--bronze);border-color:var(--bronze);color:var(--bleu-nuit)}
.bouton--secondaire:hover,.bouton--bronze:hover{background:var(--bronze-clair);border-color:var(--bronze-clair);color:var(--bleu-nuit)}
.bouton--tertiaire{background:transparent;border-color:var(--bleu-nuit);color:var(--bleu-nuit)}
.bouton--tertiaire:hover{background:var(--bleu-nuit);color:var(--ivoire)}
.fond-bleu .bouton--tertiaire{border-color:var(--ivoire);color:var(--ivoire)}
.fond-bleu .bouton--tertiaire:hover{background:var(--ivoire);color:var(--bleu-nuit)}
.bouton--grand{flex-direction:column;min-height:6rem;padding:var(--e-4) var(--e-5)}
.bouton--grand .icone{width:1.75rem;height:1.75rem}
.bouton[disabled],.bouton[aria-disabled="true"]{opacity:.55;cursor:not-allowed;pointer-events:none}
.groupe-boutons{display:flex;flex-wrap:wrap;gap:var(--e-3)}
.groupe-boutons--pleine > .bouton{flex:1 1 12rem}

.lien-fleche{display:inline-flex;align-items:center;gap:var(--e-2);font-size:var(--t-sm);font-weight:600;color:var(--bronze-fonce);text-decoration:none}
.lien-fleche:hover{color:var(--bleu-nuit);text-decoration:underline}
.fond-bleu .lien-fleche{color:var(--bronze)}

/* == 7. Badges et étiquettes == */
.badge{display:inline-flex;align-items:center;gap:var(--e-1);padding:.125rem var(--e-2);border-radius:var(--rayon);font-size:var(--t-xs);font-weight:600;letter-spacing:.04em;line-height:1.5;background:var(--bleu-nuit);color:var(--ivoire)}
.badge--bronze{background:var(--bronze);color:var(--bleu-nuit)}
.badge--a-verifier{background:transparent;color:var(--bronze-fonce);border:1px dashed var(--bronze-fonce)}
.badge--source{background:var(--beige);color:var(--bleu-nuit);font-family:var(--police-texte)}
.etiquettes{display:flex;flex-wrap:wrap;gap:var(--e-2);list-style:none;padding:0;margin:0}
.etiquette{display:inline-block;padding:.125rem var(--e-3);border:1px solid var(--bordure-champ);border-radius:999px;font-size:var(--t-xs);color:var(--anthracite);background:var(--blanc);text-decoration:none}
a.etiquette:hover,.etiquette[aria-pressed="true"]{background:var(--bleu-nuit);border-color:var(--bleu-nuit);color:var(--ivoire)}

/* == 8. Cartes == */
.carte{position:relative;display:flex;flex-direction:column;background:var(--blanc);border:1px solid var(--filet);border-radius:var(--rayon);transition:box-shadow var(--transition),transform var(--transition)}
.carte:hover{box-shadow:var(--ombre)}
.carte__image{aspect-ratio:4 / 3;width:100%;object-fit:cover;background:var(--beige)}
.carte__corps{display:flex;flex-direction:column;gap:var(--e-2);flex:1;padding:var(--e-4) var(--e-5) var(--e-5)}
.carte__titre{font-size:var(--t-md);margin:0}
.carte__titre a{text-decoration:none;color:inherit}
.carte__titre a::after{content:"";position:absolute;inset:0} /* toute la carte cliquable */
.carte__texte{font-size:var(--t-sm);color:var(--texte-discret);margin:0}
.carte__pied{margin-top:auto;padding-top:var(--e-2);display:flex;justify-content:space-between;align-items:center;color:var(--bronze-fonce)}
.carte:focus-within{outline:2px solid var(--focus);outline-offset:3px}
.carte:focus-within a:focus-visible{outline:none}

/* Carte d'archive (V3, MOODBOARD-ECARTS.md § 3.12) */
.carte-archive picture{display:block}
.carte-archive .carte__image{aspect-ratio:3 / 2;height:auto;display:block;border-bottom:1px solid var(--beige)}
.carte-archive__apercu{object-position:top}
.carte-archive__type{display:inline-flex;align-items:center;gap:var(--e-2);font-size:var(--t-xs);font-weight:600;letter-spacing:.04em;color:var(--bronze-fonce)}
.carte-archive__date{margin:0;font-family:var(--police-titre);font-size:var(--t-sm)}
.carte-archive__meta,.carte-archive__credit{font-size:var(--t-xs);color:var(--texte-discret);margin:0}
.carte-archive__meta dt{display:inline;font-weight:600}
.carte-archive__meta dd{display:inline;margin:0 var(--e-2) 0 0}
.carte .vignette-texte{aspect-ratio:3 / 2;display:flex;flex-direction:column;justify-content:center;gap:var(--e-1);text-align:center;box-shadow:inset 0 0 0 .5rem var(--beige),inset 0 0 0 calc(.5rem + 1px) var(--bronze)}
.vignette-texte__titre{font-family:var(--police-titre);font-size:1.5rem;color:var(--bleu-nuit)}
.vignette-texte__precision{font-size:var(--t-xs);letter-spacing:var(--espacement-capitales);text-transform:uppercase;color:var(--bronze-fonce)}
.vignette-texte__date{font-family:var(--police-titre);font-style:italic;font-size:var(--t-sm)}

/* Carte famille */
.carte-famille{background:var(--bleu-nuit);border-color:var(--bleu-nuit);color:var(--ivoire)}
.carte-famille .carte__titre{color:var(--ivoire);font-size:var(--t-lg)}
.carte-famille .carte__texte{color:var(--beige)}
.carte-famille .carte__pied{color:var(--bronze)}
.carte-famille .carte__image{filter:grayscale(.2)}

/* Espace réservé éditorial (jamais de faux contenu) */
.a-fournir{display:grid;place-items:center;gap:var(--e-2);min-height:10rem;padding:var(--e-5);background:repeating-linear-gradient(135deg,var(--beige) 0 12px,#EBE0CF 12px 24px);border:1px dashed var(--bordure-champ);color:var(--texte-discret);font-size:var(--t-sm);text-align:center}

/* == 9. Hero (MOODBOARD-ECARTS.md § 3.4–3.6 bis) == */
.hero{position:relative;overflow:hidden;isolation:isolate;background:url("/assets/img/decor/papier-manuscrit.svg") 0 0 / 30rem repeat,linear-gradient(180deg,var(--ivoire) 0%,#EFE6D7 100%)}
.hero__grille{position:relative;display:grid;gap:var(--e-5);padding-block:0 var(--e-7)}
.hero__image{position:relative;margin:0 calc(-1 * var(--gouttiere))}
.hero__image img{display:block;width:100%;height:100%;max-height:21rem;object-fit:cover;object-position:50% 14%;-webkit-mask-image:linear-gradient(to bottom,#000 62%,transparent 100%);mask-image:linear-gradient(to bottom,#000 62%,transparent 100%)}
.hero__image figcaption{position:absolute;top:var(--e-3);left:var(--gouttiere);margin:0;padding:.125rem var(--e-2);font-size:var(--t-xs);color:var(--anthracite);background:rgb(248 245 238 / .85)}
.hero__contenu{text-align:center}
.hero__titre{font-size:clamp(2.25rem,1.4rem + 3.4vw,4.25rem);line-height:1.08;letter-spacing:.01em;text-wrap:balance;margin-bottom:var(--e-3)}
.hero__dates{font-family:var(--police-titre);font-size:var(--t-xl);color:var(--bleu-nuit);letter-spacing:.12em;word-spacing:.2em;margin-bottom:var(--e-2)}
.hero__lieu{font-family:var(--police-titre);font-size:var(--t-sm);letter-spacing:.42em;text-transform:uppercase;color:var(--bronze-fonce);margin-bottom:var(--e-5)}
.hero__accroche{max-width:30rem;margin:0 auto;font-family:var(--police-titre);font-size:var(--t-sm);line-height:1.55;color:var(--anthracite)}
.hero .groupe-boutons{justify-content:center}

/* 3 grands boutons ; icône masquée en mobile */
.hero__boutons{display:grid;gap:var(--e-3);position:relative;z-index:1}
.hero .hero__boutons{justify-content:stretch}
.hero__boutons .bouton--grand{display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;column-gap:var(--e-2);row-gap:var(--e-3);min-height:3.5rem;font-size:var(--t-md)}
.hero__boutons .bouton--grand > .icone:first-child{display:none;grid-column:1 / -1;justify-self:center}
.hero__boutons .bouton--grand > .icone:last-child{width:1.1rem;height:1.1rem}
.hero__boutons .bouton--primaire{box-shadow:inset 0 0 0 3px var(--bleu-nuit),inset 0 0 0 4px rgb(248 245 238 / .35)}
.hero__boutons .bouton--tertiaire{background:rgb(248 245 238 / .88);border-color:var(--bronze)}
.hero__boutons .bouton--tertiaire:hover{background:var(--bleu-nuit);border-color:var(--bleu-nuit)}

@media (min-width:48em){.hero__image{margin-inline:0}
.hero__image img{max-height:30rem}
.hero__accroche{font-size:var(--t-base)}
.hero__image figcaption{left:var(--e-3)}
.hero__boutons{grid-template-columns:repeat(3,1fr);gap:var(--e-5)}
.hero__boutons .bouton--grand{min-height:7.5rem;padding:var(--e-5) var(--e-3);font-size:var(--t-base)}
.hero__boutons .bouton--grand > .icone:first-child{display:block;width:2rem;height:2rem}}
@media (min-width:64em){/* Panorama décoratif, fondu vers le bas et la gauche */
.hero::before{content:"";position:absolute;z-index:-1;top:0;right:0;width:min(64%,58rem);aspect-ratio:1200 / 320;background:url("/assets/img/decor/panorama-clairac.svg") top right / 100% auto no-repeat;opacity:.55;-webkit-mask-image:linear-gradient(to bottom,#000 45%,transparent 100%);mask-image:linear-gradient(to bottom,#000 45%,transparent 100%),linear-gradient(to right,transparent 0,#000 22%);mask-composite:intersect;pointer-events:none}
.hero__grille{grid-template-columns:2fr 3fr;grid-template-areas:"image contenu" "boutons boutons";column-gap:var(--e-6);row-gap:var(--e-6);min-height:min(46rem,calc(100vh - 4.5rem));padding-block:0 var(--e-6)}
.hero__image{grid-area:image;grid-row:1 / 3;margin-left:calc(-1 * var(--gouttiere))}
.hero__image img{position:absolute;inset:0;max-height:none;object-position:50% 18%;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 12%,#000 58%,transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 12%,#000 58%,transparent 100%),linear-gradient(to bottom,#000 72%,transparent 100%);mask-composite:intersect}
.hero__image figcaption{left:calc(var(--gouttiere) + var(--e-3));top:var(--e-4)}
.hero__contenu{grid-area:contenu;align-self:end;padding-top:clamp(7rem,11vw,10rem)}
.hero__boutons{grid-area:boutons;align-self:end}
.hero__boutons .bouton--grand{font-size:var(--t-md)}}

/* == 10. Appel à l'action (CTA / bannière) == */
.appel{display:grid;gap:var(--e-5);align-items:center;padding:var(--e-6) var(--gouttiere);background:var(--bleu-nuit);color:var(--ivoire);border-radius:var(--rayon)}
.appel h2,.appel h3{color:var(--ivoire);margin-bottom:var(--e-2)}
.appel p{margin:0;color:var(--beige)}
.appel--clair{background:var(--beige);color:var(--anthracite);border-left:3px solid var(--bronze)}
.appel--clair h2,.appel--clair h3{color:var(--bleu-nuit)}
.appel--clair p{color:var(--anthracite)}
.appel .groupe-boutons{margin-top:var(--e-5)}
@media (min-width:48em){.appel{grid-template-columns:1fr auto;padding:var(--e-7) var(--e-7)}}

/* == 11. Frise chronologique == */
.frise{list-style:none;margin:0;padding:0;position:relative}
.frise__jalon{position:relative;padding:0 0 var(--e-6) var(--e-6)}
.frise__jalon::before{/* ligne */
content:"";position:absolute;left:.4375rem;top:.5rem;bottom:0;width:1px;background:var(--bleu-nuit)}
.frise__jalon:last-child::before{display:none}
.frise__jalon::after{/* point ; pointillé = date incertaine */
content:"";position:absolute;left:0;top:.25rem;width:.9375rem;height:.9375rem;border-radius:50%;background:var(--bronze);border:2px solid var(--bleu-nuit)}
.frise__annee{display:block;font-family:var(--police-titre);font-size:var(--t-lg);color:var(--bleu-nuit);line-height:1.2}
.frise__texte{font-size:var(--t-sm);margin:var(--e-1) 0 0}
.frise__source{margin-top:var(--e-2)}
.frise__jalon--incertain::after{border-style:dashed}
.frise__jalon--incertain::after{background:var(--ivoire)}
.frise__jalon--futur .frise__annee{color:var(--bronze-fonce)}
@media (min-width:64em){.frise{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--e-4)}
.frise__jalon{padding:var(--e-6) 0 0;text-align:center}
.frise__jalon::before{left:50%;right:calc(-50% - var(--e-4));top:.4375rem;bottom:auto;width:auto;height:1px}
.frise__jalon::after{left:calc(50% - .46875rem);top:0}
.frise__texte{font-size:var(--t-xs)}}

/* == 12. Formulaires == */
.formulaire{display:grid;gap:var(--e-5)}
.champ{display:grid;gap:var(--e-2);align-content:start}
.champ label,.champ legend{font-size:var(--t-sm);font-weight:500;color:var(--anthracite)}
.champ .obligatoire{color:var(--erreur)}
.champ__aide{font-size:var(--t-xs);color:var(--texte-discret);margin:0}
.champ input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),.champ select,.champ textarea{width:100%;min-height:2.5rem;padding:var(--e-1) var(--e-3);font:inherit;font-size:1rem;color:var(--anthracite);background:var(--blanc);border:1px solid var(--bordure-champ);border-radius:var(--rayon)}
.champ textarea{min-height:8rem;resize:vertical}
.champ input:focus-visible,.champ select:focus-visible,.champ textarea:focus-visible{outline-offset:0;border-color:var(--bleu-nuit)}
.champ--erreur input,.champ--erreur select,.champ--erreur textarea{border-color:var(--erreur);border-width:2px}
.champ__erreur{font-size:var(--t-xs);color:var(--erreur);font-weight:600;margin:0}
.case{display:flex;gap:var(--e-3);align-items:flex-start;font-size:var(--t-sm)}
.case input{width:1.25rem;height:1.25rem;margin:.15rem 0 0;accent-color:var(--bleu-nuit);flex:none}
fieldset.champ{border:0;padding:0;margin:0}
.champ-piege{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden} /* honeypot anti-spam */
.champ__titre{font-size:var(--t-sm);font-weight:600;color:var(--anthracite)}
.champ .case,.champ .depot{font-weight:400}
/* Mention sur les données personnelles (RGPD), repliable */
.rgpd{border-top:1px solid var(--filet);padding-top:var(--e-3);font-size:var(--t-sm)}
.rgpd summary{cursor:pointer;font-weight:600;color:var(--bleu-nuit)}
.rgpd p{margin:var(--e-2) 0 0}
/* V3 (MOODBOARD-ECARTS.md § 3.13) */
.champ select{appearance:none;padding-right:2.25rem;background:#FFF url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%233E3E3E' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right .8rem center/.75rem}
.carte-formulaire{background:#FFF;border:1px solid var(--filet);box-shadow:var(--ombre);padding:clamp(1.25rem,.8rem + 2vw,2.5rem)}
.carte-formulaire > *{margin-bottom:var(--e-4);max-width:var(--largeur-texte)}
.carte-formulaire > form{max-width:none;margin:0}
.formulaire__champs,.formulaire__cote{display:grid;gap:var(--e-5);align-content:start}
.formulaire__envoi .bouton{width:100%;opacity:.8}
.formulaire__envoi p{margin-top:var(--e-2);text-align:center}
.formulaire__cote .depot{min-height:10rem;background:#FFF}
@media (min-width:48em){.formulaire--2col{grid-template-columns:1fr 1fr}
.formulaire--2col > .champ--large,.formulaire--2col > .formulaire__envoi{grid-column:1 / -1}}
@media (min-width:64em){.formulaire--depot{grid-template-columns:minmax(0,1fr) 17rem;gap:var(--e-6)}}

/* Zone de dépôt : <label> autour d'un <input type="file"> */
.depot{position:relative;display:grid;place-items:center;gap:var(--e-2);min-height:9rem;padding:var(--e-5);text-align:center;cursor:pointer;border:1.5px dashed var(--bordure-champ);border-radius:var(--rayon);background:var(--ivoire);color:var(--texte-discret);font-size:var(--t-sm)}
.depot strong{color:var(--bleu-nuit)}
.depot:hover{border-color:var(--bleu-nuit);background:var(--blanc)}
.depot input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.depot:focus-within{outline:2px solid var(--focus);outline-offset:3px}

/* == 13. Alertes et bandeaux == */
.alerte{display:flex;gap:var(--e-3);align-items:flex-start;padding:var(--e-4) var(--e-5);border-left:3px solid var(--bleu-nuit);background:var(--blanc);font-size:var(--t-sm)}
.alerte > .icone{margin-top:.15rem;color:var(--bleu-nuit)}
.alerte p{margin:0}
.alerte--info{border-color:var(--bleu-nuit)}
.alerte--attention{border-color:var(--bronze-fonce);background:#FBF6EC}
.alerte--attention > .icone{color:var(--bronze-fonce)}
.alerte--erreur{border-color:var(--erreur)}
.alerte--erreur > .icone{color:var(--erreur)}
/* Bandeau des pages traduites (EN/NL) */
.bandeau-traduction{padding:var(--e-3) 0;background:#FBF6EC;border-bottom:1px solid var(--filet);font-size:var(--t-sm)}
.bandeau-traduction p{margin:0}
.bandeau-traduction .icone{color:var(--bronze-fonce);vertical-align:-0.15em}
.alerte--succes{border-color:var(--succes)}
.alerte--succes > .icone{color:var(--succes)}
.bandeau{padding:var(--e-2) var(--gouttiere);text-align:center;font-size:var(--t-xs);font-weight:600;background:var(--bronze);color:var(--bleu-nuit)}

/* == 14. Sélecteur de langue (moodboard § 1.13) == */
.langues{display:flex;flex:none;align-items:center;gap:var(--e-1);list-style:none;margin:0;padding:0;font-size:var(--t-xs);font-weight:600;letter-spacing:.08em;white-space:nowrap}
.langues a{display:inline-flex;align-items:center;gap:.3rem;min-height:2.75rem;padding:0 var(--e-1);text-decoration:none;color:var(--texte-discret)}
.langues a:hover{color:var(--bleu-nuit);text-decoration:underline}
.langues a[aria-current="true"],.langues a[aria-current="page"]{color:var(--bleu-nuit);text-decoration:underline;text-decoration-color:var(--bronze);text-decoration-thickness:2px;text-underline-offset:.3em}
.drapeau{flex:none;width:1rem;height:.6875rem;box-shadow:0 0 0 1px var(--filet)}
.fond-bleu .langues a{color:var(--beige)}
.fond-bleu .langues a[aria-current]{color:var(--ivoire)}
.fond-bleu .drapeau{box-shadow:none}
@media (max-width:29.99em){.entete .drapeau{display:none} /* codes seuls */}

/* == 15. Sceau / signature du centenaire (texte) == */
.centenaire-titre{text-align:center;color:var(--bleu-nuit)}
.centenaire-titre__nom{display:block;font-family:var(--police-titre);font-size:var(--t-xl);letter-spacing:.02em}
.centenaire-titre__ans{display:block;font-family:var(--police-titre);font-size:var(--t-3xl);line-height:1}
.centenaire-titre__dates{display:block;font-family:var(--police-titre);font-size:var(--t-lg);letter-spacing:.15em}
.fond-bleu .centenaire-titre{color:var(--ivoire)}

/* == 16. En-tête (gabarit.py) == */
.entete{position:relative;z-index:10;background:var(--ivoire);border-bottom:1px solid var(--filet)}
.entete__barre{display:flex;align-items:center;gap:var(--e-3);min-height:4rem;padding-block:var(--e-2)}
.logo{display:inline-flex;flex-direction:column;line-height:1.15;text-decoration:none;color:var(--bleu-nuit);margin-right:auto}
.logo:hover{color:var(--bleu-nuit)}
.logo__nom{font-family:var(--police-titre);font-size:1.125rem;letter-spacing:.02em}
.logo__sous-titre{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--bronze-fonce);margin-top:.25rem;white-space:nowrap}
.logo--clair,.logo--clair:hover{color:var(--ivoire)}
.logo--clair .logo__sous-titre{color:var(--bronze)}
@media (min-width:48em){.logo__nom{font-size:1.1875rem;white-space:nowrap}
.logo__sous-titre{font-size:.75rem;letter-spacing:.24em}}

.menu{order:3;flex:none}
.menu__bouton{display:inline-flex;align-items:center;gap:var(--e-2);min-height:2.75rem;padding:var(--e-2) var(--e-3);font-size:var(--t-sm);font-weight:600;color:var(--bleu-nuit);cursor:pointer;list-style:none;border:1px solid var(--bleu-nuit);border-radius:var(--rayon)}
.menu__bouton::-webkit-details-marker{display:none}
.menu[open] > .menu__bouton{background:var(--bleu-nuit);color:var(--ivoire)}
.menu__nav{position:absolute;left:0;right:0;top:100%;background:var(--ivoire);border-bottom:1px solid var(--filet);box-shadow:var(--ombre)}
.navigation{list-style:none;margin:0;padding:var(--e-2) var(--gouttiere) var(--e-4)}
.navigation a{display:block;padding:var(--e-3) 0;border-bottom:1px solid var(--filet);font-family:var(--police-titre);font-size:var(--t-md);color:var(--bleu-nuit);text-decoration:none}
.navigation li:last-child a{border-bottom:0}
.navigation a:hover{color:var(--bronze-fonce)}
.navigation a[aria-current]{color:var(--bronze-fonce);text-decoration:underline;text-decoration-color:var(--bronze);text-decoration-thickness:2px;text-underline-offset:.35em}
@media (max-width:29.99em){/* téléphones : tout tient sur une ligne */
.entete__barre{gap:var(--e-2)}
.menu__bouton{min-width:2.75rem;justify-content:center;padding-inline:var(--e-2)}
.menu__bouton > span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap} /* « Menu » lu, non affiché */
.logo{min-width:0}
.logo__sous-titre{white-space:normal} /* pas de débordement */}
@media (max-width:22.49em){/* 320 px */
.logo__nom{font-size:1rem}
.logo__sous-titre{letter-spacing:.06em}
.langues a{padding-inline:.3rem}}
@media (min-width:48em) and (max-width:74.99em){.menu__nav{left:auto;width:min(22rem,100%);border-left:1px solid var(--filet)} /* tablette : panneau à droite */}

@media (min-width:75em){.entete__barre{min-height:4.5rem;gap:var(--e-5)}
.menu{order:0}
.menu[open] > .menu__bouton{display:none} /* ouvert par menu.js */
.menu__nav{position:static;background:none;border:0;box-shadow:none}
.navigation{display:flex;flex-wrap:nowrap;gap:var(--e-1) 1.25rem;padding:0;white-space:nowrap}
.navigation a{padding:var(--e-2) 0;border:0;font-family:var(--police-titre);font-size:1rem;letter-spacing:.01em}
.navigation:has(> li:nth-child(8)){column-gap:.8rem}}
/* Menu visible sur grand écran, même sans JS */
@supports selector(::details-content){@media (min-width:75em){.menu::details-content{content-visibility:visible}
.menu > .menu__bouton{display:none}}}

/* == 17. Pied de page (moodboard § 1.16) == */
.pied{font-size:var(--t-sm);margin-top:var(--section);background:url("/assets/img/decor/pied-collines.svg") right bottom / min(44rem,100%) auto no-repeat,var(--bleu-nuit)}
.pied p{color:var(--beige)}
.pied__grille{display:grid;gap:var(--e-6);padding-block:var(--e-8) var(--e-6)}
.pied__identite{display:flex;flex-direction:column;align-items:center;text-align:center}
.pied__dessin{width:15rem;margin-bottom:var(--e-3)}
.pied .pied__dates{font-family:var(--police-titre);color:var(--ivoire);letter-spacing:.12em;margin:0}
.pied__dates::before{content:"";display:block;width:2.5rem;height:1px;margin:var(--e-2) auto;background:var(--bronze)}
.pied__centenaire{display:flex;gap:var(--e-4);align-items:flex-start}
.pied__centenaire img{width:5rem;height:5rem;flex:none}
.pied .pied__titre{font-family:var(--police-titre);font-size:var(--t-md);color:var(--ivoire);margin-bottom:var(--e-1)}
.plan{list-style:none;margin:0;padding:0;display:grid;grid:repeat(4,auto) / auto auto;grid-auto-flow:column;justify-content:start;column-gap:var(--e-6)}
@media (max-width:24.5em){.plan{grid:auto-flow / auto}} /* une colonne jusqu'à 392 px : deux colonnes débordaient à 360 px */
.plan a{display:inline-block;padding-block:.3rem;font-family:var(--police-titre);font-size:var(--t-md);text-decoration:none}
.plan a:hover{text-decoration:underline}
.pied__bas{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--e-3);padding-block:var(--e-4) var(--e-6);border-top:1px solid rgba(185,154,122,.4);font-size:var(--t-xs)}
.pied__liens{display:flex;flex-wrap:wrap;gap:var(--e-2) var(--e-5);list-style:none;margin:0;padding:0;color:var(--beige)}
.pied__liens a{display:inline-block;padding-block:var(--e-2)}
/* Bandeau de consentement */
.consentement{position:fixed;inset:auto 0 0;z-index:50;padding-block:var(--e-4);background:var(--bleu-nuit);border-top:2px solid var(--bronze);box-shadow:0 -.25rem 1rem rgb(15 45 74 / .25);font-size:var(--t-sm)}
.consentement__grille{display:flex;flex-wrap:wrap;align-items:center;gap:var(--e-3) var(--e-6)}
.consentement p{flex:1 1 28rem;margin:0;max-width:none}
.consentement__boutons{display:flex;gap:var(--e-3);flex:1 1 16rem;max-width:24rem}
.consentement .bouton{flex:1 1 0;min-width:0}
@media (min-width:48em){.pied__grille{grid-template-columns:auto 1fr;align-items:center;column-gap:var(--e-8)}
.pied__identite{padding-right:var(--e-8);border-right:1px solid rgba(248,245,238,.25)}
.pied__centenaire{grid-column:1 / -1}}
@media (min-width:75em){.pied__grille{grid-template-columns:auto auto 1fr}
.pied__centenaire{grid-column:auto}}

/* == 18. Page d'accueil (outils/generer-accueil.py) == */
/* Appel de source et liste des sources */
.renvoi{font-size:var(--t-xs);font-weight:600;color:var(--bronze-fonce);text-decoration:none;white-space:nowrap;/* cible tactile ≥ 24 px (WCAG 2.5.8) */
  display:inline-block;min-width:1.5rem;padding:.125rem;line-height:1.25rem;text-align:center}
a.renvoi:hover{text-decoration:underline}
.fond-bleu .renvoi{color:var(--bronze)}
.sources-note{margin-top:var(--e-7);padding-top:var(--e-4);border-top:1px solid var(--filet);font-size:var(--t-xs);color:var(--texte-discret)}
.sources-note ul{list-style:none;padding:0;margin:0}
.sources-note li{margin-bottom:var(--e-1)}
.sources-note:first-child{margin-top:0}

/* Carte sans photographie : aplat + pictogramme */
.carte__visuel{display:grid;place-items:center;aspect-ratio:4 / 3;background:var(--beige);color:var(--bleu-nuit)}
.carte__visuel .icone{width:3.5rem;height:3.5rem;stroke-width:1.25}
.carte__visuel--bleu{background:var(--bleu-nuit)}
.carte__visuel--bleu img{width:45%}
.liste-cartes{list-style:none;padding:0;margin:0}


/* Bannière « 100 ANS » (MOODBOARD-ECARTS.md § 3.7 bis) */
.banniere-centenaire{background:url("/assets/img/decor/paysage-centenaire.svg") 18% 100% / 230% auto no-repeat,#E6D3D6;padding-block:var(--e-7) 11rem}
.banniere-centenaire__contenu{text-align:center}
.banniere-centenaire__titre{margin:0 0 var(--e-3);font-weight:400;color:var(--bleu-nuit)}
.banniere-centenaire__titre > span{display:block;text-transform:uppercase}
.banniere-centenaire__nom{font-size:var(--t-lg);letter-spacing:.06em;text-wrap:balance}
.banniere-centenaire__ans{font-size:clamp(3.75rem,2rem + 8vw,7.5rem);line-height:1;letter-spacing:.04em;margin-block:var(--e-2)}
.banniere-centenaire__dates{font-size:var(--t-xl);letter-spacing:.12em;word-spacing:.25em}
.banniere-centenaire__phrase{font-family:var(--police-titre);font-size:var(--t-md);color:var(--anthracite);text-wrap:balance;margin-bottom:var(--e-5)}
.banniere-centenaire__bouton{min-height:3.5rem;width:min(100%,26rem)}
@media (min-width:48em){.banniere-centenaire{background-size:cover;background-position:22% 100%;padding-bottom:clamp(11rem,26vw,14rem)}
.banniere-centenaire__bouton{font-size:var(--t-md)}}
@media (min-width:64em){.banniere-centenaire{background-position:0 100%;padding-block:var(--e-8) var(--e-9);min-height:36rem}
.banniere-centenaire__contenu{width:52%;margin-right:0;padding-right:var(--gouttiere)}}

/* Section « 1927 → 2027 » (V3, moodboard § 1.5) */
.accueil-1927{background:linear-gradient(180deg,var(--ivoire),#F2ECE1);overflow:hidden}
.accueil-1927__grille{display:grid;gap:var(--e-5);align-items:center}
.accueil-1927__titre{font-size:clamp(2.75rem,.9rem + 4.4vw,5rem);white-space:nowrap;font-weight:400;letter-spacing:.02em;margin-bottom:var(--e-3)}
.accueil-1927__phrase{font-family:var(--police-titre);font-size:var(--t-lg);line-height:1.3;color:var(--bleu-nuit);max-width:22em}
.accueil-1927__texte > p:not(.accueil-1927__phrase){max-width:32rem}
.accueil-1927__photo{position:relative;margin:0}
.accueil-1927__photo img{display:block;width:100%;max-height:22rem;object-fit:cover;object-position:50% 8%;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 18%,#000 75%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 18%,#000 75%,transparent 100%)}
.accueil-1927__photo figcaption{position:absolute;right:0;bottom:var(--e-3);margin:0;padding:.125rem var(--e-2);font-size:var(--t-xs);color:var(--anthracite);background:rgb(248 245 238 / .85)}
@media (min-width:48em){.accueil-1927__grille{grid-template-columns:9fr 11fr;gap:0}
.accueil-1927__texte{position:relative;z-index:1;padding-right:var(--e-5)}
.accueil-1927__photo{align-self:stretch;margin-block:calc(-1 * var(--section));margin-right:calc(-1 * var(--gouttiere))}
.accueil-1927__photo img{height:100%;max-height:30rem;min-height:24rem;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 35%,#000 85%,transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 35%,#000 85%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 12%,#000 88%,transparent 100%);mask-composite:intersect}
.accueil-1927__photo figcaption{right:var(--gouttiere);bottom:var(--e-6)}}

/* Section « Une vie au service de la mémoire » */
.accueil-vie{display:grid;gap:var(--e-6)}
.accueil-vie .titre-section{max-width:var(--largeur-texte);margin-bottom:0}
.accueil-vie__photo{margin:0;max-width:22rem}
.accueil-vie__photo img{width:100%;border-radius:var(--rayon)}
@media (min-width:48em){.accueil-vie{grid-template-columns:3fr 2fr;align-items:start;gap:var(--e-8)}}
.piliers{list-style:none;padding:0;margin:var(--e-7) 0 0;display:grid;gap:var(--e-6)}
.pilier{border-top:2px solid var(--bronze);padding-top:var(--e-4)}
.pilier .icone{color:var(--bronze-fonce);margin-bottom:var(--e-3)}
.pilier h3{font-size:var(--t-md);margin-bottom:var(--e-2)}
.pilier p{font-size:var(--t-sm);margin:0}
@media (min-width:48em){.piliers{grid-template-columns:repeat(2,1fr)}}
@media (min-width:64em){.piliers{grid-template-columns:repeat(4,1fr)}}

/* == 19. Page Centenaire 2027 (outils/generer-centenaire.py) == */
.centenaire-hero__grille{display:grid;gap:var(--e-6);justify-items:center;text-align:center;padding-block:var(--e-7) var(--e-8)}
.centenaire-hero__sceau{width:10rem;height:10rem}
.centenaire-hero .centenaire-titre{margin-bottom:var(--e-5)}
.centenaire-hero__phrase{font-family:var(--police-titre);font-size:var(--t-lg);line-height:1.3}
.centenaire-hero p{color:var(--beige)}
.centenaire-hero .centenaire-hero__phrase{color:var(--ivoire)}
.centenaire-hero .groupe-boutons{justify-content:center;margin-top:var(--e-5)}
@media (min-width:48em){.centenaire-hero__grille{grid-template-columns:auto 1fr;justify-items:start;text-align:left;gap:var(--e-8)}
.centenaire-hero .centenaire-titre{text-align:left}
.centenaire-hero__sceau{width:15rem;height:15rem}
.centenaire-hero .groupe-boutons{justify-content:flex-start}}

/* Sommaire interne (ancres), défilant sur téléphone */
.sommaire{background:var(--ivoire);border-bottom:1px solid var(--filet)}
.sommaire__liste{display:flex;gap:var(--e-5);overflow-x:auto;list-style:none;margin:0;padding:0;font-size:var(--t-sm);font-weight:600}
.sommaire__liste a{display:inline-block;padding:var(--e-3) 0;white-space:nowrap;text-decoration:none;color:var(--bleu-nuit)}
.sommaire__liste a:hover{color:var(--bronze-fonce);text-decoration:underline}
[id]{scroll-margin-top:var(--e-4)}

/* Fiches d'information (date, lieu, programme, intervenants) */
.fiches-infos{list-style:none;padding:0;margin:0;display:grid;gap:var(--e-5)}
.fiche-info{background:var(--ivoire);border-top:2px solid var(--bronze);padding:var(--e-5)}
.fiche-info .icone{color:var(--bronze-fonce);margin-bottom:var(--e-3)}
.fiche-info h3{font-size:var(--t-md);margin-bottom:var(--e-2)}
.fiche-info p{font-size:var(--t-sm);margin:0 0 var(--e-3)}
.fiche-info p:last-child{margin-bottom:0}
@media (min-width:48em){.fiches-infos{grid-template-columns:repeat(2,1fr)}}
@media (min-width:64em){.fiches-infos{grid-template-columns:repeat(4,1fr)}}

.centenaire-venir{display:grid;gap:var(--e-6)}
.centenaire-venir .a-fournir{min-height:14rem}
@media (min-width:48em){.centenaire-venir{grid-template-columns:3fr 2fr;align-items:center;gap:var(--e-8)}}
.carte__pied span{font-size:var(--t-sm);font-weight:600}

/* == 20. Chronologie (outils/chronologie.py) == */
.frise__precision{display:block;margin-top:var(--e-1);font-family:var(--police-texte);font-size:var(--t-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--bronze-fonce)}
.frise__source{display:flex;flex-wrap:wrap;align-items:center;gap:var(--e-2)}
@media (min-width:64em){.frise--compacte .frise__annee{font-size:var(--t-md)}
.frise--compacte .frise__source{justify-content:center}
.accueil-chronologie .frise{margin-bottom:var(--e-6)}}
.accueil-chronologie .frise{margin-bottom:var(--e-4)}

/* Frise compacte de l'accueil */
.frise--compacte{--vignette:3.5rem;background:var(--ivoire);border:1px solid var(--filet);border-radius:var(--rayon);padding:var(--e-5) var(--e-4) var(--e-2)}
.frise--compacte .frise__jalon{display:grid;grid-template-columns:var(--vignette) 1fr;column-gap:var(--e-4);align-content:start;padding-bottom:var(--e-5)}
.frise--compacte .frise__jalon > :not(.frise__vignette){grid-column:2}
.frise--compacte .frise__vignette{grid-column:1;grid-row:1 / span 5}
.frise--compacte .frise__credit{order:9}
.frise__vignette{display:flex;align-items:center;justify-content:center;overflow:hidden;width:var(--vignette);height:var(--vignette);background:var(--beige);color:var(--bronze-fonce)}
.frise__vignette .icone{width:45%;height:45%;stroke-width:1.25}
.frise__vignette--photo{background:var(--bleu-nuit)}
.frise__vignette--photo picture{width:100%;height:100%}
.frise__vignette--photo img{width:100%;height:100%;object-fit:cover;filter:sepia(.35)}
.frise__vignette--sceau{background:none}
.frise__vignette--sceau img{width:100%;height:100%}
.frise__credit{display:block;margin-top:var(--e-1);font-size:.75rem;line-height:1.3;color:var(--texte-discret)}
.frise__credit .credit{display:block}
@media (min-width:64em){.frise--compacte{--vignette:clamp(4.5rem,1rem + 4.5vw,5.75rem);padding:var(--e-6) var(--e-5) var(--e-4)}
.frise--compacte .frise__jalon{display:flex;flex-direction:column;align-items:center;padding:calc(var(--vignette) + 2.25rem) 0 0}
.frise--compacte .frise__vignette{position:absolute;top:0;left:calc(50% - var(--vignette) / 2)}
.frise--compacte .frise__jalon::before{top:calc(var(--vignette) + 1.0625rem)}
.frise--compacte .frise__jalon::after{top:calc(var(--vignette) + .625rem)}
.frise--compacte .frise__credit{order:9;margin-top:var(--e-2)}}

/* Variante détaillée : verticale, année à gauche dès 768 px */
.frise--detaillee .frise__annee{margin:0;font-size:var(--t-lg)}
.frise--detaillee .frise__texte{font-size:var(--t-base);margin-top:var(--e-2)}
.frise--detaillee .frise__jalon{padding-bottom:var(--e-7)}
.frise--detaillee .frise__jalon:last-child{padding-bottom:0}
.frise__photo{margin:var(--e-4) 0 0;max-width:16rem}
.frise__photo img{width:100%;border-radius:var(--rayon)}
@media (min-width:48em){.frise--detaillee .frise__photo,.frise--detaillee .frise__source{grid-column:2}
.frise--detaillee .frise__jalon{display:grid;grid-template-columns:11rem 1fr;column-gap:var(--e-5)}
.frise--detaillee .frise__annee{grid-row:span 2}
.frise--detaillee .frise__texte{margin-top:0}}
@media (min-width:64em){.frise.frise--detaillee{display:block}
.frise--detaillee .frise__jalon{padding:0 0 var(--e-7) var(--e-6);text-align:left}
.frise--detaillee .frise__jalon:last-child{padding-bottom:0}
.frise--detaillee .frise__jalon::before{left:.4375rem;right:auto;top:.5rem;bottom:0;width:1px;height:auto}
.frise--detaillee .frise__jalon::after{left:0;top:.25rem}
.frise--detaillee .frise__texte{font-size:var(--t-base)}}

/* Fil d'Ariane et en-tête de page intérieure */
.ariane{border-bottom:1px solid var(--filet);font-size:var(--t-xs)}
.ariane__liste{display:flex;flex-wrap:wrap;align-items:center;gap:var(--e-2);list-style:none;margin:0;padding:var(--e-2) 0}
.ariane__liste li + li::before{content:"›";margin-right:var(--e-2);color:var(--texte-discret)}
.ariane__liste a{display:inline-block;padding-block:.25rem;color:var(--texte-discret)} /* cible tactile ≥ 24 px */
.ariane__liste a[aria-current="page"]{color:var(--anthracite);text-decoration:none}
/* Papier manuscrit (MOODBOARD-ECARTS.md § 3.20 bis) */
.section--intro{padding-bottom:var(--e-7);background:linear-gradient(transparent 60%,var(--ivoire)),linear-gradient(100deg,rgb(248 245 238 / .15),var(--ivoire) 62%),url("/assets/img/decor/papier-manuscrit.svg") 0 0 / 30rem}

/* == 21. Rubrique « Claude » (outils/generer-claude.py) == */
/* Sa vie : texte + photographie en marge (dès 64em) */
.vie{display:grid;gap:var(--e-7)}
.vie__texte{max-width:var(--largeur-texte)}
.vie__texte h2{font-size:var(--t-lg);margin-top:var(--e-7);clear:both}
.vie__texte h2:first-child{margin-top:0}
.vie__marge{max-width:22rem}
.vie__photo{margin:0 0 var(--e-4)}
.vie__photo img{width:100%;border-radius:var(--rayon)}
/* Photos dans le texte (armoiries, portrait de 2011) */
.vie__figure{margin:var(--e-4) 0 var(--e-5);max-width:16rem}
.vie__figure img{width:100%;border-radius:var(--rayon)}
@media (min-width:48em){.vie__figure{float:right;width:14rem;margin:var(--e-1) 0 var(--e-4) var(--e-6)}}
@media (min-width:64em){.vie{grid-template-columns:minmax(0,1fr) 20rem;gap:var(--e-8);align-items:start}
.vie__marge{position:sticky;top:var(--e-5)}}

/* Galerie : une colonne sur téléphone, 2 puis 3 colonnes */
.galerie{list-style:none;padding:0;margin:0;display:grid;gap:var(--e-7)}
.galerie__titre{font-size:var(--t-md);margin-bottom:var(--e-3)}
.galerie__element figure{margin:0 0 var(--e-3)}
.galerie__element img{width:100%;border-radius:var(--rayon);background:var(--beige)}
.galerie__note{margin-top:var(--e-6);font-size:var(--t-sm);color:var(--texte-discret);max-width:var(--largeur-texte)}
@media (min-width:48em){.galerie{grid-template-columns:repeat(2,1fr)}}
@media (min-width:64em){.galerie{grid-template-columns:repeat(3,1fr)}}

.galerie-manques{display:grid;gap:var(--e-6)}
.galerie-manques .a-fournir{min-height:14rem}
@media (min-width:48em){.galerie-manques{grid-template-columns:3fr 2fr;align-items:center;gap:var(--e-8)}}

/* == Pages familles (outils/generer-familles.py) == */
.fond-bleu .chapeau{color:var(--beige)}
/* Bandeau (MOODBOARD-ECARTS.md § 3.11 bis) */
.bandeau-famille{display:grid}
.bandeau-famille__decor{min-height:10rem;background:url("/assets/img/decor/bandeau-navire.svg") 50% 70% / auto 90% no-repeat,url("/assets/img/decor/papier-manuscrit.svg") 0 0 / 30rem,#EDE3D1}
.bandeau-famille__texte{padding:var(--e-7) var(--gouttiere)}
.bandeau-famille .titre-section{margin-bottom:var(--e-6)}
@media (min-width:48em){.bandeau-famille{grid-template-columns:1fr 1fr}
.bandeau-famille__texte{padding:var(--e-8) var(--e-7)}}
.rubriques-a-venir{columns:2 12rem;margin:var(--e-4) 0 0}

/* == 22. Carte « De Clairac au monde » == */
/* Deux SVG (monde + Europe) ; interactifs avec carte.js (V3-B) */
.carte-monde{margin:0}
.carte-monde__vues{display:grid;gap:var(--e-6)}
.carte-monde__titre{margin:0 0 var(--e-2);font-size:var(--t-xs);font-weight:600;letter-spacing:var(--espacement-capitales);text-transform:uppercase;color:var(--bronze-fonce)}
.carte__svg{display:block;width:100%;height:auto;border:1px solid var(--filet);border-radius:var(--rayon)}
.carte__mer{fill:var(--ivoire)}
.carte__graticule{fill:none;stroke:var(--filet);stroke-width:.6}
.carte__terres{fill:var(--beige);stroke:#C9B79C;stroke-width:.8;stroke-linejoin:round}
.carte__encart{fill:none;stroke:var(--bleu-nuit);stroke-width:1.2;stroke-dasharray:4 3}
.carte__traits path{fill:none;stroke:var(--bronze-fonce);stroke-width:1.6;stroke-linecap:round}
.carte__points circle{fill:var(--bleu-nuit);stroke:var(--ivoire);stroke-width:2}
/* Couche « exil » [D][E] : pointillés, repères creux */
.carte__traits--exil path{stroke:var(--bleu-survol);stroke-dasharray:7 5}
.carte__pays circle{fill:var(--ivoire);stroke:var(--bleu-survol);stroke-width:2.5}
.carte__traits--liste path{stroke:var(--bleu-nuit);stroke-width:2.2}
.carte__liste circle{fill:var(--bronze);stroke:var(--bleu-nuit);stroke-width:2}
.carte__filets path{fill:none;stroke:var(--bronze-fonce);stroke-width:1.2;stroke-dasharray:2 4}
.carte__fonds path{fill:var(--bronze-fonce);stroke:var(--ivoire);stroke-width:1.5}
.carte__fonds .carte__etape{fill:var(--ivoire);stroke:var(--bronze-fonce);stroke-width:2}
.carte__svg .carte__libelle-pays{font-style:italic;fill:var(--bleu-survol)}
.carte__clairac{fill:var(--bleu-nuit);stroke:var(--bronze);stroke-width:4}
.carte__svg text{font-family:var(--police-titre);font-size:20px;fill:var(--anthracite);paint-order:stroke;stroke:var(--ivoire);stroke-width:4px;stroke-linejoin:round}
.carte__svg--europe text{font-size:30px}
.carte__svg .carte__libelle-clairac{font-family:var(--police-titre);font-weight:700;fill:var(--bleu-nuit);font-size:26px}
.carte__svg--europe .carte__libelle-clairac{font-size:38px}
.carte__svg .carte__note{font-size:16px;font-style:italic;fill:var(--texte-discret)}
.carte-monde figcaption{display:flex;flex-wrap:wrap;gap:var(--e-2) var(--e-5);margin-top:var(--e-4);font-size:var(--t-sm)}
.carte-monde__legende{display:inline-flex;align-items:center;gap:var(--e-2)}
.carte-monde__credit{flex-basis:100%;font-size:var(--t-xs);color:var(--texte-discret)}
.pastille{display:inline-block;width:.75rem;height:.75rem;border-radius:50%;background:var(--bleu-nuit);flex:none}
.pastille--clairac{width:1rem;height:1rem;box-shadow:0 0 0 2px var(--bronze)}
.pastille--exil{background:var(--ivoire);border:2px solid var(--bleu-survol)}
.pastille--liste{background:var(--bronze);border:2px solid var(--bleu-nuit)}
.pastille--fonds{border-radius:0;transform:rotate(45deg);background:var(--bronze-fonce)}
@media (min-width:64em){.carte-monde__vues{grid-template-columns:1fr 1fr;align-items:start}}
.carte-monde__plan{position:relative}
/* < 600 px : carte ≥ 560 px, défilable */
@media (max-width:37.49em){.carte-monde__vue{overflow-x:auto}.carte-monde__plan{min-width:560px}.carte__svg--monde text,.carte__svg .carte__note{font-size:28px}}
.carte-point{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;padding:0;border:0;border-radius:50%;background:none;cursor:pointer}
.carte-point:hover,.carte-point[aria-expanded="true"]{box-shadow:inset 0 0 0 2px var(--bronze-fonce)}
.carte__svg .est-masque{display:none}
.carte__svg .est-incertain{opacity:.3}
.carte__svg path.est-actif{stroke-width:3.5}
.carte__svg circle.est-actif{stroke:var(--bronze-fonce);stroke-width:4}
.carte__labo rect{fill:var(--bleu-nuit);stroke:var(--ivoire);stroke-width:1.5}
.carte__filets--labo path{stroke:var(--bleu-nuit)}
.carte__svg rect.est-actif{stroke-width:3}
.pastille--labo{border-radius:0;background:var(--bleu-nuit)}
/* Couches Études, Hypothèses, Itinéraire */
.carte__etudes-traits path{fill:none;stroke:var(--etudes);stroke-width:2;stroke-linecap:round}
.carte__etudes-traits .carte__filet,.carte__hypotheses .carte__filet,.carte__itineraires .carte__filet{stroke-width:1.2;stroke-dasharray:2 3}
.carte__etudes circle{fill:var(--etudes);stroke:var(--ivoire);stroke-width:2}
.carte__hypotheses path{fill:none;stroke:var(--hypothese);stroke-width:2.4;stroke-linecap:round;stroke-dasharray:.1 6}
.carte__hypotheses-points circle{fill:var(--ivoire);stroke:var(--hypothese);stroke-width:2;stroke-dasharray:3 2}
.carte__hypotheses-points .carte__hypothese-symbole{stroke-width:2.5}
.carte__hypotheses-points .carte__hypothese-signe{fill:none;stroke:var(--hypothese);stroke-width:1.8;stroke-dasharray:none;stroke-linecap:round}
.carte__svg .carte__libelle-etude{fill:var(--etudes);font-style:italic}
.carte__svg .carte__libelle-hypothese{fill:var(--hypothese);font-style:italic}
.pastille--etudes{background:var(--etudes)}
.pastille--hypothese{background:var(--ivoire);border:2px dashed var(--hypothese)}
.carte__itineraires path{fill:none;stroke:var(--itin);stroke-width:2.6;stroke-dasharray:9 5}
.carte__itineraires-points rect{fill:var(--itin);stroke:var(--ivoire)}
.carte__itineraires-points circle{fill:var(--ivoire);stroke:var(--itin);stroke-width:2.5}
.carte__itineraire-signe{fill:none;stroke:var(--itin);stroke-width:1.8}
.carte__svg .carte__libelle-itineraire{fill:var(--itin);font-style:italic}
.pastille--itineraire{border-radius:0;background:var(--itin)}
.lieu__labo{list-style:none;padding:0}
.carte-filtres{display:flex;flex-wrap:wrap;align-items:center;gap:var(--e-2);margin-bottom:var(--e-5);font-size:var(--t-sm)}
.carte-filtres p{flex-basis:100%;margin:0}
.carte-filtres__groupe{display:flex;flex-wrap:wrap;align-items:center;gap:inherit;flex-basis:100%}
.carte-filtres .etiquette{min-height:44px;padding:0 var(--e-4);font-size:inherit;cursor:pointer}
.carte-fiche{position:relative;margin-top:var(--e-5);padding:var(--e-4) var(--e-7) var(--e-4) var(--e-5);background:var(--blanc);border-left:4px solid var(--bronze)}
.carte-fiche__titre{font-family:var(--police-titre);font-size:var(--t-md);font-weight:700;margin:0 0 var(--e-3)}
.carte-fiche__fermer{position:absolute;top:0;right:0;width:44px;height:44px;border:0;background:none;font-size:1.75rem;color:var(--bleu-nuit);cursor:pointer}
.lieux{list-style:none;padding:0;margin:0 0 var(--e-7)}
.lieu{padding:var(--e-4) 0;border-top:1px solid var(--filet)}
.lieu__nom{font-size:var(--t-md);margin:0 0 var(--e-3)}
.lieu__pays{font-weight:400}
.lieu__fiche{margin:0;font-size:var(--t-sm)}
.lieu__fiche dt{font-weight:600}
.lieu__fiche dd{margin:0 0 var(--e-2)}
.lieu__personnes summary{min-height:44px;display:flex;align-items:center;font-weight:600;cursor:pointer}
.lieu__personnes .tableau-defilant{margin:var(--e-2) 0}
.lieu__note{margin:0;color:var(--texte-discret)}
@media (min-width:48em){.lieu__fiche{display:grid;grid-template-columns:minmax(7rem,max-content) minmax(0,1fr);gap:var(--e-2) var(--e-4)} .lieu__fiche dd{margin:0}}
/* Accueil (V3-B) : carte compacte, ton parchemin */
.accueil-carte{content-visibility:auto;contain-intrinsic-size:auto 70rem}
.carte-monde--compacte .carte__mer{fill:#EFE5D0}
.carte-monde--compacte .carte__terres{fill:#DCCBAD}
.accueil-carte__lieux{margin:var(--e-5) 0}
.accueil-carte__lieux summary{min-height:44px;font-weight:600;cursor:pointer}
@media (prefers-reduced-motion:no-preference){.carte-js .carte__traits:not(.carte__traits--exil) path{stroke-dasharray:1;stroke-dashoffset:1}
.carte-js .carte__traits--exil{opacity:0}
.carte--vue .carte__traits:not(.carte__traits--exil) path{animation:tracer 1.6s ease-out forwards}
.carte--vue .carte__traits--exil{animation:apparaitre .8s 1.2s forwards}}
@keyframes tracer{to{stroke-dashoffset:0}}
@keyframes apparaitre{to{opacity:1}}

/* Tableau simple (mentions légales) */
.tableau-defilant{overflow-x:auto;margin:var(--e-5) 0 var(--e-7)}
.tableau{width:100%;border-collapse:collapse;font-size:var(--t-sm)}
.tableau caption{text-align:left;font-weight:600;margin-bottom:var(--e-2);color:var(--texte-discret)}
.tableau th,.tableau td{text-align:left;padding:var(--e-2) var(--e-3);border-bottom:1px solid var(--filet)}
.tableau thead th{border-bottom:2px solid var(--bleu-nuit);font-weight:600}
.tableau tbody th{font-weight:600}

/* == 23. Archives (outils/generer-archives.py) == */
[hidden]{display:none !important}
.section--archives{padding-top:0}
.archives-categories{margin-bottom:var(--e-5)}
.archives-categories .etiquette[aria-current="page"]{background:var(--bleu-nuit);border-color:var(--bleu-nuit);color:var(--ivoire)}
.archives__note{margin-top:var(--e-5);font-size:var(--t-sm);color:var(--texte-discret);max-width:var(--largeur-texte)}
.archives__aucun{font-weight:600}
[data-nom] td:last-child{min-width:20rem}
.liste-archives{list-style:none;padding:0;margin:0}
.carte-archive__photo{object-position:center 25%}

/* Filtres : 1 colonne sur téléphone, 2 puis 5 */
.filtres{margin-bottom:var(--e-6);padding:var(--e-5);background:var(--blanc);border:1px solid var(--filet);border-radius:var(--rayon)}
.filtres__titre{font-size:var(--t-md);margin:0 0 var(--e-4)}
.filtres__champs{display:grid;gap:var(--e-4)}
.filtres__pied{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--e-3);margin-top:var(--e-4)}
.filtres__compte{margin:0;font-size:var(--t-sm);color:var(--texte-discret)}
@media (min-width:48em){.filtres__champs{grid-template-columns:repeat(2,1fr)}}
@media (min-width:64em){.filtres__champs{grid-template-columns:repeat(5,1fr)}}

/* Fiche d'une pièce : texte + visuel, notice en <dl> */
.fiche{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--e-6)}
.fiche__texte{max-width:var(--largeur-texte)}
.fiche__texte .surtitre .icone{vertical-align:-0.25em}
.fiche__langue{display:flex;gap:var(--e-2);align-items:flex-start;font-size:var(--t-sm);color:var(--texte-discret)}
.fiche__langue .icone{margin-top:.15rem}
.fiche__marge{max-width:28rem}
.fiche__photo{margin:0}
.fiche__photo img{width:100%;border-radius:var(--rayon);background:var(--beige)}
.fiche__photo figcaption{margin-top:var(--e-2);font-size:var(--t-xs);color:var(--texte-discret)}
.fiche__visuel{border-radius:var(--rayon)}
.fiche__portrait{max-width:12rem;margin-top:var(--e-5)}
@media (min-width:64em){.fiche{grid-template-columns:minmax(0,1fr) 24rem;gap:var(--e-8);align-items:start}}
.notice{display:grid;gap:var(--e-1) var(--e-5);margin:0;font-size:var(--t-sm)}
.notice dt{font-weight:600;color:var(--bleu-nuit)}
.notice dd{margin:0 0 var(--e-3)}
@media (min-width:48em){.notice{grid-template-columns:11rem minmax(0,1fr)}
.notice dd{margin:0;padding-bottom:var(--e-2);border-bottom:1px solid var(--filet)}
.notice dt{padding-bottom:var(--e-2);border-bottom:1px solid var(--filet)}}
.notice dd{overflow-wrap:break-word;hyphens:auto}
/* Notice dans une fiche en grille à deux colonnes (768-1023 px) : une seule colonne, sinon la colonne de texte tombe sous 100 px (NL) */
@media (min-width:48em) and (max-width:63.99em){.carte .notice{grid-template-columns:minmax(0,1fr)}
.carte .notice dt{padding-bottom:0;border-bottom:0}}

/* Crédit photo sur une carte */
.carte__credit{font-size:var(--t-xs);color:var(--texte-discret);margin:0}

/* == 24. Cartes d'accès (V3, MOODBOARD-ECARTS.md § 3.10) == */
.liste-cartes--acces{display:grid;gap:var(--e-3);grid-template-columns:1fr}
@media (min-width:30em){.liste-cartes--acces{grid-template-columns:repeat(2,1fr)}}
@media (min-width:48em){.liste-cartes--acces{grid-template-columns:repeat(3,1fr)}}
@media (min-width:80em){.liste-cartes--acces{grid-template-columns:repeat(6,1fr)}}
@media (min-width:64em){.liste-cartes--acces.liste-cartes--4{grid-template-columns:repeat(4,1fr)}
.liste-cartes--acces.liste-cartes--3{grid-template-columns:repeat(3,1fr)}}
.carte--acces,.carte-archive{border-color:#E6D9C6;overflow:hidden;box-shadow:0 1px 3px rgba(15,45,74,.05)}
.carte--acces:hover{transform:translateY(-2px)}
.carte--acces picture{display:block}
.carte--acces .carte__image,.carte--acces .carte__visuel{aspect-ratio:16 / 9;width:100%;height:auto;object-fit:cover;display:block}
.carte--acces .carte__visuel--bleu{position:relative}
.carte--acces .carte__visuel--bleu img{position:absolute;inset:0;margin:auto;width:auto;height:82%}
.carte__image--sepia{object-position:30% 4%;filter:sepia(.35) saturate(.75)}
.carte--acces .carte__corps{gap:var(--e-1);padding:var(--e-3)}
.carte--acces .carte__titre,.carte-archive .carte__titre{font-family:var(--police-titre);font-size:1.125rem;font-weight:600;color:var(--bleu-nuit)}
.carte--acces .carte__texte{font-family:var(--police-titre);font-size:.875rem;line-height:1.4}
.carte--acces .carte__pied{justify-content:flex-end;padding-top:var(--e-1)}
@media (prefers-reduced-motion:reduce){.carte--acces:hover{transform:none}}
/* Réseaux du départ : états seulement */
.reseau-vue{position:relative;overflow-x:auto;background:var(--ivoire);border:1px solid var(--filet)}
.reseau-plan{position:relative;min-width:960px}.reseau__svg{display:block;width:100%;height:auto}
.reseau:not(.reseau-js) .carte-point{display:none}
.reseau__svg .est-masque{display:none}.reseau__svg .est-attenue{opacity:.15}
.reseau__svg path.est-actif{stroke-width:4;opacity:1}.reseau__svg circle.est-actif{fill:var(--bronze)}
.reseau-legende{display:flex;flex-wrap:wrap;gap:var(--e-2) var(--e-5);list-style:none;padding:0;font-size:var(--t-sm)}
.reseau-trait-legende{display:inline-block;vertical-align:middle;margin-right:.35em}
.liste-renvois{margin:0;padding-left:1em}
