/*
Theme Name: Linz 2006
Theme URI: https://linz2006.com
Author: Linz 2006
Author URI: https://linz2006.com
Description: Le tableau de marche du coureur route & trail : préparer sa course, choisir son matériel, calculer son allure.
Version: 1.0.0
Requires PHP: 7.4
Text Domain: linz2006
*/

/* Polices */
@font-face{font-family:'Tomorrow';src:url('assets/fonts/tomorrow-100.woff2') format('woff2');font-weight:100;font-style:normal;font-display:swap;}
@font-face{font-family:'Tomorrow';src:url('assets/fonts/tomorrow-200.woff2') format('woff2');font-weight:200;font-style:normal;font-display:swap;}
@font-face{font-family:'Tomorrow';src:url('assets/fonts/tomorrow-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Tomorrow';src:url('assets/fonts/tomorrow-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;}
@font-face{font-family:'Tomorrow';src:url('assets/fonts/tomorrow-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap;}
@font-face{font-family:'Tomorrow';src:url('assets/fonts/tomorrow-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:'Tomorrow';src:url('assets/fonts/tomorrow-800.woff2') format('woff2');font-weight:800;font-style:normal;font-display:swap;}
@font-face{
  font-family:'Ubuntu Sans';
  src:url('assets/fonts/ubuntu-sans-variable.woff2') format('woff2-variations'),
      url('assets/fonts/ubuntu-sans-variable.woff2') format('woff2');
  font-weight:100 800;
  font-stretch:75% 100%;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Ubuntu Sans';
  src:url('assets/fonts/ubuntu-sans-italic-variable.woff2') format('woff2-variations'),
      url('assets/fonts/ubuntu-sans-italic-variable.woff2') format('woff2');
  font-weight:100 800;
  font-stretch:75% 100%;
  font-style:italic;
  font-display:swap;
}

/* ==========================================================================
   VARIABLES — palette Linz 2006 (mode clair uniquement, décision DA)
   ========================================================================== */
:root{
  --blanc:#FFFFFF;
  --gomme:#F0F0EB;
  --encre:#0D0D0F;
  --asphalte:#5E5E66;
  --violet:#8E1FE0;
  --violet-nuit:#C08BFF;
  --lavande:#F2E9FE;
  --vert-allure:#12834A;
  --rouge-allure:#C8321E;

  --font-display:'Tomorrow', 'Arial Narrow', sans-serif;
  --font-body:'Ubuntu Sans', 'Segoe UI', Arial, sans-serif;

  --gouttiere:24px;
  --colonne-lecture:680px;
  --contenu-max:1200px;
  --rayon-pill:40px;
  --transition:200ms ease;
}
@media (max-width:640px){
  :root{ --gouttiere:16px; }
}

/* ==========================================================================
   RESET / BASE
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--blanc);
  color:var(--encre);
  font-family:var(--font-body);
  font-weight:400;
  font-size:18px;
  line-height:1.65;
  overflow-x:hidden;
}
img{ max-width:100%; height:auto; display:block; }
.entry-content, .l2-lead, .l2-outil, .l2-sources, .sbs_tableau, .l2-carte-corps{ overflow-wrap:anywhere; word-break:break-word; }
.entry-content a{ overflow-wrap:anywhere; }
svg{ display:block; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; }
ul,ol{ margin:0; padding:0; }
h1,h2,h3{ font-family:var(--font-display); margin:0 0 .5em; line-height:.95; letter-spacing:-.015em; }
p{ margin:0 0 1.2em; }
.l2-container{ max-width:var(--contenu-max); margin:0 auto; padding:0 var(--gouttiere); }
.l2-visually-hidden{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }
:focus-visible{ outline:3px solid var(--violet); outline-offset:2px; }

/* Etiquette / surtitre (à la manière d'On Mono) */
.l2-etiquette{
  font-family:var(--font-display);
  font-weight:600;
  font-size:12px;
  letter-spacing:.14em;
  text-transform:uppercase;
  white-space:nowrap;
}

/* ==========================================================================
   BOUTONS PILULE
   ========================================================================== */
.l2-btn{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-display); font-weight:700; font-size:16px;
  padding:14px 28px; border-radius:var(--rayon-pill); border:2px solid transparent;
  transition:transform var(--transition), background var(--transition), color var(--transition);
  cursor:pointer; white-space:nowrap;
}
.l2-btn:hover{ transform:translateY(-2px); }
.l2-btn--encre{ background:var(--encre); color:var(--blanc); }
.l2-btn--encre:hover{ background:#000; }
.l2-btn--blanc{ background:var(--blanc); color:var(--encre); }
.l2-btn--violet{ background:var(--violet); color:var(--blanc); }
.l2-btn--violet:hover{ background:#7a19c4; }
.l2-btn--contour{ background:transparent; border-color:currentColor; }

/* ==========================================================================
   BANDES DE FOND (accueil : alternance blanc / gomme / carbone)
   ========================================================================== */
.l2-bande{ padding:72px 0; }
.l2-bande--blanc{ background:var(--blanc); color:var(--encre); }
.l2-bande--gomme{ background:var(--gomme); color:var(--encre); }
.l2-bande--encre{ background:var(--encre); color:var(--blanc); }
.l2-bande--encre a{ color:var(--violet-nuit); }
@media (max-width:640px){ .l2-bande{ padding:44px 0; } }

.l2-bande-titre{ font-size:clamp(28px,5vw,42px); font-weight:700; }
.l2-bande-entete{ display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:32px; flex-wrap:wrap; }

/* Borne kilométrique — ouvre chaque bande */
.l2-km{
  display:inline-flex; align-items:center; gap:14px; margin-bottom:20px;
}
.l2-km-panneau{
  background:var(--encre); color:var(--blanc); width:44px; height:56px;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  flex:0 0 auto;
}
.l2-bande--encre .l2-km-panneau{ background:var(--blanc); color:var(--encre); }
.l2-km-panneau small{ font-family:var(--font-display); font-size:9px; letter-spacing:.1em; }
.l2-km-panneau strong{ font-family:var(--font-display); font-weight:800; font-size:20px; font-variant-numeric:tabular-nums; }
.l2-km-label{ font-family:var(--font-display); font-weight:600; font-size:13px; letter-spacing:.14em; text-transform:uppercase; }

/* ==========================================================================
   EN-TÊTE DEUX ÉTAGES
   ========================================================================== */
.l2-departs{
  background:var(--encre); color:var(--blanc); height:36px;
  display:flex; align-items:center; overflow:hidden; font-size:13px;
}
.l2-departs-piste{ display:flex; gap:36px; white-space:nowrap; overflow-x:auto; scrollbar-width:none; padding:0 var(--gouttiere); }
.l2-departs-piste::-webkit-scrollbar{ display:none; }
.l2-departs-piste::before{ content:"Prochains départs"; font-family:var(--font-display); font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--violet-nuit); }
.l2-departs-piste a{ font-family:var(--font-display); font-weight:600; color:var(--blanc); text-decoration:none; }
.l2-departs-piste a:hover{ color:var(--violet-nuit); }
.l2-departs-piste em{ font-style:normal; color:var(--violet-nuit); font-variant-numeric:tabular-nums; margin-left:6px; }
@media (max-width:640px){ .l2-departs-piste{ gap:0; } .l2-departs-piste > *:not(:first-child){ display:none; } }

/* Solide par défaut (toutes les pages) : la transparence ne se justifie que
   sur l'accueil, quand un héros photo plein cadre est vraiment derrière. */
.l2-barre{
  position:sticky; top:0; z-index:50; height:72px;
  display:flex; align-items:center; background:var(--blanc); color:var(--encre);
  border-bottom:1px solid #E3E1DA;
  transition:background var(--transition), box-shadow var(--transition), border-color var(--transition);
}
.l2-barre .l2-container{ max-width:1340px; }
.l2-barre-inner{ width:100%; display:flex; align-items:center; justify-content:space-between; gap:16px; }

.l2-logo{ display:flex; align-items:center; gap:8px; flex:0 0 auto; color:inherit; }
.l2-logo svg{ width:40px; height:40px; }
.l2-logo-texte{ font-family:var(--font-display); font-weight:800; font-style:italic; font-size:20px; letter-spacing:-.01em; }
.l2-logo-texte b{ font-weight:200; font-style:normal; margin-left:2px; }

.l2-nav{ display:flex; gap:18px; list-style:none; flex:1 1 auto; min-width:0; justify-content:center; }
.l2-nav a{ font-family:var(--font-display); font-weight:600; font-size:14px; color:inherit; white-space:nowrap; }
.l2-nav a:hover{ color:var(--violet); }

.l2-barre-droite{ display:flex; align-items:center; gap:16px; }
.l2-recherche-btn{ background:none; border:0; color:inherit; padding:6px; }
.l2-recherche-btn svg{ width:20px; height:20px; }

.l2-burger{ display:none; background:none; border:0; color:inherit; padding:6px; }
.l2-burger svg{ width:26px; height:26px; }

/* Accueil seulement : transparent + blanc tant qu'on n'a pas défilé — mais
   TOUJOURS avec un voile sombre propre, sinon le logo/menu blancs disparaissent
   sur une zone claire de la photo (mesuré : logo réduit à son seul trait violet). */
body.l2-accueil .l2-barre:not(.is-solide){
  background:linear-gradient(180deg, rgba(13,13,15,.62) 0%, rgba(13,13,15,.32) 70%, transparent 100%);
  border-bottom-color:transparent; color:var(--blanc);
}

@media (max-width:1180px){
  .l2-nav, .l2-barre-droite .l2-btn, .l2-nav-outil{ display:none; }
  .l2-burger{ display:block; }
}

/* Panneau mobile */
.l2-panel{
  position:fixed; inset:0; background:var(--blanc); z-index:100;
  transform:translateX(100%); transition:transform 260ms ease;
  padding:24px var(--gouttiere); overflow-y:auto;
}
.l2-panel.est-ouvert{ transform:translateX(0); }
.l2-panel-tete{ display:flex; justify-content:flex-end; margin-bottom:32px; }
.l2-panel-fermer{ background:none; border:0; }
.l2-panel-fermer svg{ width:28px; height:28px; }
.l2-panel-groupe + .l2-panel-groupe{ margin-top:20px; }
.l2-panel-groupe-titre{ font-family:var(--font-display); font-weight:600; font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--asphalte); margin-bottom:8px; }
.l2-panel-nav{ list-style:none; display:flex; flex-direction:column; gap:4px; }
.l2-panel-nav a{ display:block; padding:16px 0; font-family:var(--font-display); font-weight:700; font-size:24px; border-bottom:1px solid var(--gomme); }
.l2-panel .l2-btn{ margin-top:24px; width:100%; justify-content:center; }

/* Barre de navigation basse, mobile uniquement — pensée comme une appli */
.l2-nav-bas{
  display:none; position:fixed; left:0; right:0; bottom:0; z-index:90;
  background:var(--blanc); border-top:1px solid #E3E1DA;
  padding:4px max(4px, env(safe-area-inset-left)) calc(4px + env(safe-area-inset-bottom)) max(4px, env(safe-area-inset-right));
}
.l2-nav-bas a,.l2-nav-bas button{
  flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:3px; min-height:48px; background:none; border:0; color:var(--asphalte);
  font-family:var(--font-display); font-weight:600; font-size:10px; letter-spacing:.02em;
}
.l2-nav-bas svg{ width:22px; height:22px; }
@media (max-width:640px){
  .l2-nav-bas{ display:flex; }
  body{ padding-bottom:calc(56px + env(safe-area-inset-bottom)); }
  .l2-cookies{ bottom:calc(56px + env(safe-area-inset-bottom)); }
}

/* Recherche en overlay */
.l2-recherche-overlay{
  position:fixed; inset:0; background:rgba(13,13,15,.94); z-index:110;
  display:flex; align-items:flex-start; justify-content:center; padding-top:15vh;
  opacity:0; pointer-events:none; transition:opacity var(--transition);
}
.l2-recherche-overlay.est-ouvert{ opacity:1; pointer-events:auto; }
.l2-recherche-overlay form{ width:min(680px,90vw); }
.l2-recherche-overlay input[type="search"]{
  width:100%; background:transparent; border:0; border-bottom:2px solid var(--blanc);
  color:var(--blanc); font-family:var(--font-display); font-size:32px; padding:12px 0;
}
.l2-recherche-overlay input::placeholder{ color:var(--asphalte); }
.l2-recherche-fermer{ position:absolute; top:24px; right:24px; background:none; border:0; color:var(--blanc); }
.l2-recherche-fermer svg{ width:28px; height:28px; }

/* Liste d'affiche (surmenu "Courses") plein écran — pas un sous-menu déroulant */
.l2-affiche-overlay{
  position:fixed; inset:0; background:var(--blanc); z-index:105; overflow-y:auto;
  transform:translateY(-100%); transition:transform 300ms ease;
}
.l2-affiche-overlay.est-ouvert{ transform:translateY(0); }
.l2-affiche-tete{ display:flex; justify-content:space-between; align-items:center; padding:24px var(--gouttiere); border-bottom:1px solid var(--gomme); }
.l2-affiche-fermer{ background:none; border:0; }
.l2-affiche-fermer svg{ width:28px; height:28px; }
.l2-affiche-corps{ display:grid; grid-template-columns:1fr 1fr; gap:0; min-height:60vh; }
.l2-affiche-liste{ list-style:none; padding:48px var(--gouttiere); }
.l2-affiche-liste li{ border-bottom:1px solid var(--gomme); }
.l2-affiche-liste a{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  font-family:var(--font-display); font-weight:700; font-size:clamp(28px,4vw,44px);
  padding:18px 0; transition:color var(--transition);
}
.l2-affiche-liste a:hover{ color:var(--violet); }
.l2-affiche-liste svg{ width:28px; height:28px; flex:0 0 auto; }
.l2-affiche-photo{ background:var(--gomme); position:relative; overflow:hidden; }
.l2-affiche-photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transition:opacity var(--transition); }
.l2-affiche-photo img.est-visible{ opacity:1; }
@media (max-width:900px){ .l2-affiche-corps{ grid-template-columns:1fr; } .l2-affiche-photo{ display:none; } }

/* ==========================================================================
   DOSSARD — en-tête des cartes course
   ========================================================================== */
.l2-dossard{ position:relative; background:var(--blanc); border:2px solid var(--encre); padding:18px 16px 16px; }
.l2-dossard-oeillet{ position:absolute; width:8px; height:8px; border-radius:50%; background:var(--encre); }
.l2-dossard-oeillet.c1{ top:6px; left:6px; } .l2-dossard-oeillet.c2{ top:6px; right:6px; }
.l2-dossard-oeillet.c3{ bottom:6px; left:6px; } .l2-dossard-oeillet.c4{ bottom:6px; right:6px; }
.l2-dossard-bande{ position:absolute; top:0; left:0; right:0; height:26px; background:var(--violet); display:flex; align-items:center; padding:0 16px; }
.l2-dossard-nom{ font-family:var(--font-display); font-weight:600; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--blanc); }
.l2-dossard-chiffre{ font-family:var(--font-display); font-weight:200; font-size:64px; line-height:1; font-variant-numeric:tabular-nums; margin-top:26px; }
.l2-dossard-unite{ font-family:var(--font-display); font-weight:600; font-size:14px; color:var(--asphalte); margin-left:4px; }
.l2-dossard-bas{ display:flex; justify-content:space-between; gap:8px; margin-top:12px; font-family:var(--font-display); font-weight:600; font-size:12px; letter-spacing:.04em; color:var(--asphalte); }

/* Profil altimétrique (trail uniquement) */
.l2-profil-alt{ display:block; width:100%; height:80px; }
.l2-profil-alt path{ fill:var(--gomme); stroke:var(--violet); stroke-width:2; }

/* ==========================================================================
   BRACELET D'ALLURE
   ========================================================================== */
.l2-bracelet{ display:flex; width:100%; border:1px solid var(--encre); }
.l2-segment{ flex:1; padding:14px 10px; text-align:center; border-right:1px solid var(--encre); background:var(--blanc); }
.l2-segment:last-child{ border-right:0; }
.l2-segment.est-passe{ background:var(--encre); color:var(--blanc); }
.l2-segment.est-actif{ background:var(--violet); color:var(--blanc); }
.l2-segment-km{ font-family:var(--font-display); font-weight:600; font-size:11px; letter-spacing:.1em; text-transform:uppercase; opacity:.8; }
.l2-segment-valeur{ font-family:var(--font-display); font-weight:200; font-size:22px; font-variant-numeric:tabular-nums; }
@media (max-width:640px){ .l2-bracelet{ flex-wrap:wrap; } .l2-segment{ flex:1 1 33%; border-bottom:1px solid var(--encre); } }

/* Chrono d'arrivée (chiffres géants, bande carbone) */
.l2-chrono-grille{ display:grid; grid-template-columns:repeat(4,1fr); gap:32px; text-align:center; }
.l2-chrono-chiffre{ font-family:var(--font-display); font-weight:200; font-size:clamp(48px,7vw,110px); line-height:1; font-variant-numeric:tabular-nums; color:var(--blanc); }
.l2-chrono-chiffre em{ font-style:normal; color:var(--violet-nuit); }
.l2-chrono-legende{ font-family:var(--font-display); font-weight:600; font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--violet-nuit); margin-top:8px; }
@media (max-width:640px){ .l2-chrono-grille{ grid-template-columns:1fr 1fr; gap:24px; } }

/* ==========================================================================
   HERO ACCUEIL
   ========================================================================== */
.l2-hero{
  position:relative; min-height:90vh; display:flex; align-items:flex-end;
  background:var(--encre); color:var(--blanc); overflow:hidden;
}
.l2-hero-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.l2-hero-voile{ position:absolute; inset:0; background:linear-gradient(0deg,rgba(13,13,15,.75) 0%,rgba(13,13,15,.15) 55%,transparent 100%); z-index:1; }
/* Confiné au cadran haut-droit : ne doit jamais croiser le titre (bas-gauche). */
.l2-hero-trace{ position:absolute; top:0; right:0; z-index:1; width:56%; height:58%; pointer-events:none; isolation:isolate; }
.l2-hero-trace path{ fill:none; stroke:var(--violet); stroke-width:3; stroke-linecap:round; stroke-dasharray:1400; stroke-dashoffset:1400; }
.l2-hero-trace.est-anime path{ animation:l2-trace 2.4s ease forwards; }
@keyframes l2-trace{ to{ stroke-dashoffset:0; } }
@media (prefers-reduced-motion:reduce){ .l2-hero-trace path{ stroke-dashoffset:0 !important; animation:none !important; } }
.l2-hero-corps{ position:relative; z-index:2; padding:48px var(--gouttiere) 64px; max-width:900px; }
.l2-hero h1{ font-size:clamp(40px,6.4vw,90px); font-weight:800; margin-bottom:16px; }
.l2-hero p{ font-size:clamp(17px,2vw,21px); max-width:560px; margin-bottom:28px; color:#ECECEC; }
.l2-hero-actions{ display:flex; gap:14px; flex-wrap:wrap; }
@media (max-width:640px){ .l2-hero{ min-height:80svh; } .l2-hero-voile{ background:linear-gradient(0deg,rgba(13,13,15,.88) 0%,rgba(13,13,15,.62) 60%,rgba(13,13,15,.35) 100%); } }
.l2-hero-corps p{ text-shadow:0 1px 12px rgba(13,13,15,.55); }

/* ==========================================================================
   CARTES
   ========================================================================== */
.l2-grille{ display:grid; gap:24px; }
.l2-grille--3{ grid-template-columns:repeat(3,1fr); }
.l2-grille--2{ grid-template-columns:repeat(2,1fr); }
.l2-grille--4{ grid-template-columns:repeat(4,1fr); }
@media (max-width:900px){ .l2-grille--3,.l2-grille--4{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){
  /* Une seule colonne pleine largeur : le défilement horizontal coupait la 2e carte au bord (retour Mathias 27/09). */
  .l2-grille--3,.l2-grille--4,.l2-grille--2{ grid-template-columns:minmax(0,1fr); grid-auto-flow:row; overflow-x:visible; padding-bottom:0; }
}

.l2-carte-photo{ position:relative; aspect-ratio:4/5; overflow:hidden; background:var(--gomme); }
.l2-carte-photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.l2-carte-voile{ position:absolute; inset:0; background:linear-gradient(0deg,rgba(13,13,15,.7) 0%,transparent 45%); }
.l2-carte-etiquette{ position:absolute; left:16px; bottom:16px; right:16px; z-index:2; }
.l2-carte-etiquette .l2-etiquette{ color:var(--violet-nuit); }
.l2-carte-titre{ font-family:var(--font-display); font-weight:700; font-size:22px; color:var(--blanc); margin-top:4px; }

.l2-carte{ background:var(--blanc); border:1px solid #E3E1DA; }
.l2-carte-corps{ padding:16px; }
.l2-carte-corps .l2-carte-titre{ color:var(--encre); }
.l2-carte-meta{ display:flex; gap:12px; margin-top:8px; font-size:14px; color:var(--asphalte); }

/* Rang produit sur gomme — fondu au bord droit, signale qu'on peut défiler */
.l2-rang-enveloppe{ position:relative; }
.l2-rang-enveloppe::after{
  content:''; position:absolute; top:0; right:0; bottom:16px; width:72px;
  background:linear-gradient(90deg, transparent, var(--blanc)); pointer-events:none;
}
.l2-rang{ display:flex; gap:20px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:16px; }
.l2-rang::-webkit-scrollbar{ height:4px; }
.l2-rang::-webkit-scrollbar-thumb{ background:var(--violet); }
.l2-produit{ flex:0 0 260px; scroll-snap-align:start; }
.l2-produit-photo{ aspect-ratio:1/1; background:var(--gomme); display:flex; align-items:center; justify-content:center; padding:24px; }
.l2-produit-nom{ font-family:var(--font-display); font-weight:700; font-size:17px; margin-top:12px; display:flex; justify-content:space-between; align-items:center; }
.l2-produit-nom svg{ width:16px; height:16px; }
.l2-produit-chiffre{ font-family:var(--font-display); font-weight:200; font-size:28px; color:var(--violet); font-variant-numeric:tabular-nums; }

/* Liste d'affiche home (courses) */
.l2-affiche-home{ list-style:none; }
.l2-affiche-home li{ border-bottom:1px solid var(--gomme); }
.l2-affiche-home a{ display:flex; align-items:center; justify-content:space-between; padding:22px 0; }
.l2-affiche-home-nom{ font-family:var(--font-display); font-weight:700; font-size:clamp(26px,4vw,44px); }
.l2-affiche-home-badges{ display:flex; gap:10px; margin-top:6px; }
.l2-affiche-home-badges span{ font-size:12px; font-family:var(--font-display); font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--asphalte); white-space:nowrap; }
.l2-affiche-home svg{ width:24px; height:24px; flex:0 0 auto; transition:transform var(--transition); }
.l2-affiche-home a:hover svg{ transform:translateX(6px); color:var(--violet); }

/* Calendrier — tuiles mois plates */
.l2-mois{ position:relative; background:var(--blanc); border:1px solid #E3E1DA; padding:16px; aspect-ratio:1/1; display:flex; flex-direction:column; justify-content:space-between; overflow:hidden; }
.l2-mois img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.16; }
.l2-mois-nom{ font-family:var(--font-display); font-weight:700; font-size:20px; position:relative; }
.l2-mois-compte{ font-family:var(--font-display); font-weight:200; font-size:34px; position:relative; font-variant-numeric:tabular-nums; }

/* Collage "Pourquoi Linz 2006" */
.l2-collage{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; margin-bottom:32px; }
.l2-collage img{ aspect-ratio:3/4; object-fit:cover; }
.l2-collage > *:nth-child(2){ transform:translateY(24px); }
@media (max-width:640px){ .l2-collage{ grid-template-columns:1fr; } .l2-collage > *{ transform:none !important; } }

/* ==========================================================================
   OUTIL / CALCULATEUR
   ========================================================================== */
.l2-outil{ background:var(--blanc); border:1px solid #E3E1DA; padding:32px; }
.l2-outil-onglets{ display:flex; gap:8px; margin-bottom:24px; list-style:none; flex-wrap:wrap; }
.l2-outil-onglets button{ background:var(--gomme); border:0; padding:10px 18px; border-radius:var(--rayon-pill); font-family:var(--font-display); font-weight:600; font-size:14px; }
.l2-outil-onglets button.est-actif{ background:var(--encre); color:var(--blanc); }
.l2-outil-panneau{ display:none; }
.l2-outil-panneau.est-actif{ display:block; }
.l2-champ{ margin-bottom:18px; }
.l2-champ label{ display:block; font-family:var(--font-display); font-weight:600; font-size:13px; letter-spacing:.06em; text-transform:uppercase; margin-bottom:6px; color:var(--asphalte); }
.l2-champ input,.l2-champ select,.l2-champ textarea{
  width:100%; padding:12px 14px; border:1px solid #C9C7C0; background:var(--blanc);
  font-family:var(--font-body); font-size:16px; border-radius:2px; color:var(--encre);
}
.l2-champ textarea{ resize:vertical; }
.l2-champ input:focus,.l2-champ select:focus,.l2-champ textarea:focus{ border-color:var(--violet); }
.l2-outil-grille{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; }
@media (max-width:640px){ .l2-outil-grille{ grid-template-columns:1fr; } .l2-outil{ padding:20px; } }
.l2-resultat{ margin-top:28px; }
.l2-resultat-titre{ font-family:var(--font-display); font-weight:600; font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--asphalte); margin-bottom:10px; }

/* ==========================================================================
   PAGE COACH — héros sombre borné (bleed), corps clair, formulaire sticky
   ========================================================================== */
.l2-coach-grid{ display:grid; grid-template-columns:minmax(0,1fr) 400px; gap:56px; padding:0 0 64px; }
.l2-coach-intro{
  color:var(--blanc); background:var(--encre);
  box-shadow:0 0 0 100vmax var(--encre); clip-path:inset(0 -100vmax 0 -100vmax);
  position:relative; padding:56px 0 40px; margin-bottom:40px;
}
.l2-coach-intro h1{ font-size:clamp(32px,4.6vw,52px); }
.l2-coach-corps{ max-width:var(--colonne-lecture); padding:0; }
.l2-coach-form-col{ position:relative; }
.l2-coach-form-col .l2-lead{ position:sticky; top:96px; }
@media (max-width:1000px){
  .l2-coach-grid{ grid-template-columns:minmax(0,1fr); }
  .l2-coach-form-col{ order:-1; margin-bottom:32px; }
  .l2-coach-form-col .l2-lead{ position:static; }
}

/* ==========================================================================
   FORMULAIRE MULTI-ÉTAPES — bracelet KM 1→5(6)
   ========================================================================== */
.l2-lead{ background:var(--blanc); color:var(--encre); border:1px solid #E3E1DA; max-width:640px; }
.l2-lead-piste{ display:flex; }
.l2-lead-piste .l2-segment{ cursor:default; padding:10px 4px; }
.l2-lead-corps{ padding:32px; }
@media (max-width:640px){ .l2-lead-corps{ padding:20px; } }
.l2-lead-etape{ display:none; }
.l2-lead-etape.est-active{ display:block; }
.l2-lead-etape-titre{ font-family:var(--font-display); font-weight:700; font-size:26px; margin-bottom:20px; }
.l2-choix{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-bottom:18px; }
.l2-choix label{ border:1px solid #C9C7C0; padding:14px; text-align:center; font-family:var(--font-display); font-weight:600; font-size:14px; cursor:pointer; }
.l2-choix input{ position:absolute; opacity:0; }
.l2-choix input:checked + span{ color:var(--violet); }
.l2-choix label:has(input:checked){ border-color:var(--violet); background:var(--lavande); }
.l2-lead-nav{ display:flex; justify-content:space-between; margin-top:24px; }
.l2-lead-erreur{ color:var(--rouge-allure); font-size:14px; margin-top:6px; display:none; }
.l2-lead-consentement{ font-size:13px; color:var(--asphalte); display:flex; gap:8px; align-items:flex-start; margin-top:12px; }
.l2-lead-consentement input{ margin-top:4px; }
.l2-lead-confirmation{ padding:48px 32px; text-align:center; display:none; }
.l2-lead-confirmation.est-active{ display:block; }

/* fenêtre modale erreur centrée */
.l2-modal-erreur{ position:fixed; inset:0; background:rgba(13,13,15,.6); display:none; align-items:center; justify-content:center; z-index:200; padding:24px; }
.l2-modal-erreur.est-ouverte{ display:flex; }
.l2-modal-erreur-boite{ background:var(--blanc); padding:28px; max-width:380px; text-align:center; }
.l2-modal-erreur-boite p{ margin-bottom:16px; }

/* ==========================================================================
   ARTICLE
   ========================================================================== */
.l2-article-hero{ position:relative; }
.l2-article-hero-img{ width:100%; max-height:520px; object-fit:cover; }
.l2-article-bandeau{ background:var(--encre); padding:14px 0; }
.l2-article-bandeau .l2-etiquette{ color:var(--violet-nuit); }
.l2-article-tete{ max-width:var(--colonne-lecture); margin:32px auto 0; padding:0 var(--gouttiere); }
.l2-article-tete h1{ font-size:clamp(30px,4.6vw,52px); }
.l2-article-chapo{ font-family:var(--font-body); font-weight:500; font-size:21px; color:var(--asphalte); margin-top:16px; }
.l2-article-meta{ display:flex; gap:16px; align-items:center; margin-top:20px; font-size:14px; color:var(--asphalte); flex-wrap:wrap; }
.l2-article-meta .l2-avatar-img{ width:32px; height:32px; border-radius:50%; object-fit:cover; }

.l2-article-layout{ display:grid; grid-template-columns:minmax(0,var(--colonne-lecture)) 320px; gap:48px; max-width:var(--contenu-max); margin:40px auto; padding:0 var(--gouttiere); align-items:start; }
@media (max-width:1000px){ .l2-article-layout{ grid-template-columns:minmax(0,1fr); } }

.l2-sommaire{ background:var(--gomme); padding:20px; margin-bottom:28px; }
.l2-sommaire-titre{ font-family:var(--font-display); font-weight:700; font-size:14px; letter-spacing:.08em; text-transform:uppercase; margin-bottom:12px; }
.l2-sommaire ol{ list-style:none; counter-reset:som; display:flex; flex-direction:column; gap:8px; }
.l2-sommaire li{ counter-increment:som; }
.l2-sommaire a{ display:flex; gap:10px; font-size:15px; }
.l2-sommaire a::before{ content:counter(som,decimal-leading-zero); font-family:var(--font-display); font-weight:700; color:var(--violet); flex:0 0 auto; }

.l2-progression{ position:fixed; top:0; left:0; height:3px; background:var(--violet); z-index:60; width:0%; }
.l2-temps-restant{ font-family:var(--font-display); font-weight:600; font-size:13px; }

.entry-content{ max-width:var(--colonne-lecture); margin:0 auto; padding:0 var(--gouttiere); font-size:18px; }
.entry-content h2{ font-size:30px; font-weight:700; margin-top:2.2em; }
.entry-content h3{ font-size:22px; font-weight:600; margin-top:1.8em; }
.entry-content p{ margin-bottom:1.3em; }
.entry-content img{ margin:2em 0; aspect-ratio:16/9; object-fit:cover; width:100%; }
.entry-content figure{ margin:2em 0; }
.entry-content figcaption{ font-size:14px; color:var(--asphalte); margin-top:8px; }
.entry-content blockquote{ border-left:4px solid var(--violet); padding-left:20px; font-style:italic; font-size:21px; margin:2em 0; color:var(--asphalte); }
.entry-content a{ text-decoration:underline; text-decoration-color:var(--violet); text-underline-offset:3px; }
.entry-content strong{ font-weight:700; }
/* Zéro liste à puces brute : rendu carte, jamais de puce ronde par défaut */
.entry-content ul,.entry-content ol{ list-style:none; display:flex; flex-direction:column; gap:10px; margin:1.6em 0; }
.entry-content ul li,.entry-content ol li{ background:var(--gomme); padding:14px 18px; border-left:4px solid var(--violet); }
/* Tableau du corps converti en cartes (zéro <table> à l'écran, règle Mathias) */
.l2-tableau-cartes{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; margin:2em 0; }
.l2-tableau-carte{ background:var(--gomme); border-left:4px solid var(--violet); padding:14px 16px; }
.l2-tableau-ligne{ display:flex; justify-content:space-between; gap:10px; padding:4px 0; font-size:14px; }
.l2-tableau-ligne + .l2-tableau-ligne{ border-top:1px solid #E3E1DA; }
.l2-tableau-libelle{ color:var(--asphalte); font-family:var(--font-display); font-weight:600; font-size:12px; letter-spacing:.04em; text-transform:uppercase; }
.l2-tableau-valeur{ font-weight:600; font-variant-numeric:tabular-nums; text-align:right; }

/* Filet de sécurité : si jamais un <table> brut arrive quand même, jamais brut, jamais débordant sur mobile */
.sbs_tableau{ overflow-x:auto; margin:2em 0; -webkit-overflow-scrolling:touch; }
.sbs_tableau table{ width:100%; border-collapse:collapse; font-family:var(--font-body); font-variant-numeric:tabular-nums; font-size:15px; min-width:480px; }
.sbs_tableau th,.sbs_tableau td{ padding:12px 14px; border-bottom:1px solid #E3E1DA; text-align:left; white-space:nowrap; }
.sbs_tableau thead th{ background:var(--encre); color:var(--blanc); font-family:var(--font-display); font-weight:600; font-size:13px; letter-spacing:.04em; text-transform:uppercase; }
.sbs_tableau tbody tr:nth-child(even){ background:var(--gomme); }

/* Infographies (fiche-lieu, tarifs, frise, jauges) — habillées par le thème */
.sbs_lieu,.sbs_tarifs,.sbs_frise,.sbs_jauges{ display:block; background:var(--gomme); padding:24px; margin:2em 0; }
.sbs_lieu_nom,.sbs_tarifs_titre,.sbs_frise_titre,.sbs_jauges_titre{ display:block; font-family:var(--font-display); font-weight:700; font-size:18px; margin-bottom:14px; }
.sbs_lieu_adresse,.sbs_lieu_acces{ display:block; font-size:14px; color:var(--asphalte); margin-bottom:4px; }
.sbs_lieu_carte{ display:inline-flex; align-items:center; gap:6px; color:var(--violet); font-weight:600; margin-top:10px; text-decoration:none; }
.sbs_tarif{ display:flex; align-items:center; gap:14px; margin-bottom:10px; }
.sbs_tarif_libelle{ flex:0 0 40%; font-size:14px; }
.sbs_tarif_barre{ flex:1; height:10px; width:100%; accent-color:var(--violet); }
.sbs_frise{ display:flex; overflow-x:auto; gap:24px; }
.sbs_etape{ flex:0 0 220px; border-left:3px solid var(--violet); padding-left:14px; }
.sbs_etape_date{ display:block; font-family:var(--font-display); font-weight:700; color:var(--violet); font-variant-numeric:tabular-nums; }
.sbs_etape_titre{ display:block; font-weight:700; margin-top:4px; }
.sbs_jauges{ display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:20px; text-align:center; }
.sbs_jauge_valeur{ display:block; font-family:var(--font-display); font-weight:200; font-size:40px; color:var(--violet); font-variant-numeric:tabular-nums; }
.sbs_jauge_libelle{ display:block; font-size:13px; color:var(--asphalte); }
.sbs_source{ display:block; font-size:12px; color:var(--asphalte); margin-top:12px; }

/* Bloc Sources */
.l2-sources{ background:var(--gomme); padding:20px 24px; margin:2.4em 0; }
.l2-sources-titre{ font-family:var(--font-display); font-weight:700; font-size:14px; letter-spacing:.08em; text-transform:uppercase; margin-bottom:10px; }
.l2-sources ul{ list-style:none; display:flex; flex-direction:column; gap:6px; }
.l2-sources li{ background:none; padding:0; border:0; font-size:14px; color:var(--asphalte); }

/* Publicité / encart */
.l2-encart{ margin:2.4em 0; padding:20px; border:1px dashed #C9C7C0; }
.l2-encart-natif{ display:flex; gap:16px; align-items:center; }
.l2-encart-natif img{ width:120px; height:90px; object-fit:cover; flex:0 0 auto; margin:0; }

/* Bloc auteur — UN seul par article, photo ronde */
.l2-auteur{ display:flex; gap:20px; margin:3em 0; padding:24px; background:var(--gomme); align-items:flex-start; }
.l2-auteur .l2-avatar-img{ width:72px; height:72px; border-radius:50%; object-fit:cover; flex:0 0 auto; }
.l2-auteur-nom{ font-family:var(--font-display); font-weight:700; font-size:17px; }
.l2-auteur-role{ font-size:13px; color:var(--asphalte); text-transform:uppercase; letter-spacing:.06em; font-family:var(--font-display); font-weight:600; }
.l2-auteur-bio{ font-size:15px; margin-top:8px; }
.l2-auteur a.l2-auteur-lien{ display:inline-block; margin-top:8px; font-weight:600; color:var(--violet); text-decoration:underline; }

/* Articles liés */
.l2-lies{ max-width:var(--contenu-max); margin:0 auto 64px; padding:0 var(--gouttiere); }

/* Sidebar sticky, remplie, jamais scrollable en interne */
.l2-sidebar{ position:sticky; top:96px; display:flex; flex-direction:column; gap:24px; }
.l2-colbloc{ background:var(--gomme); padding:20px; }
.l2-colbloc-titre{ font-family:var(--font-display); font-weight:700; font-size:14px; letter-spacing:.06em; text-transform:uppercase; margin-bottom:14px; }
.l2-colliste{ list-style:none; display:flex; flex-direction:column; gap:14px; }
.l2-colliste li{ display:flex; gap:10px; }
.l2-colliste img{ width:64px; height:64px; object-fit:cover; flex:0 0 auto; }
.l2-colliste .l2-carte-titre{ font-size:14px; font-weight:600; color:var(--encre); }
.l2-colliste a:hover .l2-carte-titre{ color:var(--violet); }
.l2-colpub{ background:var(--blanc); border:1px dashed #C9C7C0; }

/* Commentaires */
.l2-commentaires{ max-width:var(--colonne-lecture); margin:0 auto 64px; padding:0 var(--gouttiere); }
.l2-commentaires textarea,.l2-commentaires input{ width:100%; padding:12px; border:1px solid #C9C7C0; margin-bottom:12px; font-family:var(--font-body); }
.l2-commentaires-piege{ position:absolute; left:-9999px; }

/* ==========================================================================
   CATÉGORIE / ARCHIVE
   ========================================================================== */
.l2-cat-hero{ background:var(--gomme); padding:56px 0 40px; }
.l2-cat-hero h1{ font-size:clamp(32px,5vw,54px); }
.l2-cat-hero p{ max-width:var(--colonne-lecture); color:var(--asphalte); font-size:18px; margin-top:12px; margin-bottom:0; }
.l2-cat-liste{ max-width:var(--contenu-max); margin:40px auto; padding:0 var(--gouttiere); }
.l2-filtres{ display:flex; gap:10px; flex-wrap:wrap; margin-bottom:28px; }
.l2-filtres a{ background:var(--gomme); padding:8px 16px; border-radius:var(--rayon-pill); font-family:var(--font-display); font-weight:600; font-size:13px; }
.l2-filtres a.est-actif{ background:var(--encre); color:var(--blanc); }
.l2-pagination{ display:flex; gap:10px; justify-content:center; margin:48px 0; }
.l2-pagination a,.l2-pagination span{ padding:10px 16px; border:1px solid #C9C7C0; font-family:var(--font-display); font-weight:600; }
.l2-pagination .est-actif{ background:var(--encre); color:var(--blanc); border-color:var(--encre); }

/* Page "bientôt" */
.l2-bientot{ max-width:var(--colonne-lecture); margin:80px auto; padding:0 var(--gouttiere); text-align:center; }

/* ==========================================================================
   CONTACT — formulaire à droite, visible dès le premier écran
   ========================================================================== */
.l2-contact-grid{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,400px); gap:48px;
  align-items:start; max-width:var(--contenu-max); margin:8px auto 64px; padding:0 var(--gouttiere);
}
.l2-contact-form-col{ position:sticky; top:96px; }
@media (max-width:900px){
  .l2-contact-grid{ grid-template-columns:minmax(0,1fr); }
  .l2-contact-form-col{ position:static; order:-1; }
}

/* ==========================================================================
   À PROPOS — bandeau Linz 2006, engagements, cartes auteurs
   ========================================================================== */
.l2-apropos-logo svg{ width:56px; height:56px; }
.l2-apropos-chiffres{ display:grid; grid-template-columns:repeat(4,1fr); gap:24px; text-align:center; margin-top:32px; }
.l2-apropos-chiffre{ font-family:var(--font-display); font-weight:200; font-size:clamp(28px,4vw,44px); color:var(--blanc); font-variant-numeric:tabular-nums; }
.l2-apropos-chiffre em{ font-style:normal; color:var(--violet-nuit); }
.l2-apropos-chiffre-legende{ font-family:var(--font-display); font-weight:600; font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--violet-nuit); margin-top:6px; }
@media (max-width:640px){ .l2-apropos-chiffres{ grid-template-columns:1fr 1fr; } }

.l2-engagements{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.l2-engagement{ background:var(--blanc); border:1px solid #E3E1DA; padding:24px; }
.l2-engagement-titre{ font-family:var(--font-display); font-weight:700; font-size:18px; margin-bottom:8px; }
.l2-engagement-texte{ font-size:15px; color:var(--asphalte); }
@media (max-width:900px){ .l2-engagements{ grid-template-columns:1fr; } }

.l2-apropos-auteurs{ display:grid; grid-template-columns:repeat(2,1fr); gap:24px; }
.l2-apropos-auteurs .l2-auteur{ margin:0; align-items:flex-start; }
@media (max-width:900px){ .l2-apropos-auteurs{ grid-template-columns:1fr; } }

/* ==========================================================================
   PAGES GÉNÉRIQUES / 404 / RECHERCHE
   ========================================================================== */
.l2-page-hero{ padding:56px 0 24px; }
.l2-page-corps{ max-width:var(--colonne-lecture); margin:0 auto; padding:0 var(--gouttiere) 64px; }
.l2-404{ min-height:60vh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:0 var(--gouttiere); }
.l2-404 .l2-dossard{ margin:32px 0; width:220px; }

/* ==========================================================================
   FICHE AUTEUR
   ========================================================================== */
.l2-auteur-hero{ background:var(--encre); color:var(--blanc); padding:64px 0; text-align:center; }
.l2-auteur-hero .l2-avatar-img{ width:120px; height:120px; border-radius:50%; object-fit:cover; margin:0 auto 20px; }
.l2-auteur-hero h1{ font-size:36px; }
.l2-auteur-hero p{ color:#D9D9D9; max-width:560px; margin:12px auto 0; }

/* ==========================================================================
   PIED DE PAGE
   ========================================================================== */
.l2-footer{ background:var(--encre); color:var(--blanc); padding:64px 0 32px; }
.l2-footer-grille{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:32px; align-items:start; }
@media (max-width:900px){ .l2-footer-grille{ grid-template-columns:1fr 1fr; } }
@media (max-width:640px){ .l2-footer-grille{ grid-template-columns:1fr; } }
.l2-footer-colonne-titre{ font-family:var(--font-display); font-weight:700; font-size:13px; letter-spacing:.1em; text-transform:uppercase; color:var(--violet-nuit); margin-bottom:16px; }
.l2-footer-liste{ list-style:none; display:flex; flex-direction:column; gap:10px; }
.l2-footer-liste a{ font-size:15px; color:#D9D9D9; }
.l2-footer-liste a:hover{ color:var(--blanc); }
.l2-footer-logo{ margin-bottom:16px; }
.l2-footer-logo svg{ width:44px; height:44px; }
.l2-footer-baseline{ color:#B7B5AF; font-size:14px; max-width:320px; }
.l2-footer-lettre{ display:flex; gap:0; max-width:360px; margin-top:16px; }
.l2-footer-lettre input{ flex:1; background:transparent; border:1px solid #545454; border-right:0; padding:12px; color:var(--blanc); }
.l2-footer-lettre button{ background:var(--violet); border:0; padding:0 18px; color:var(--blanc); font-family:var(--font-display); font-weight:700; }
.l2-footer-bas{ border-top:1px solid #333; margin-top:48px; padding-top:24px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:13px; color:#9C9A94; }

/* ==========================================================================
   POP-UP DE SORTIE
   ========================================================================== */
.l2-exit{ position:fixed; inset:0; background:rgba(13,13,15,.75); z-index:150; display:none; align-items:center; justify-content:center; padding:24px; }
.l2-exit.est-ouvert{ display:flex; }
.l2-exit-boite{ background:var(--blanc); max-width:760px; width:100%; display:grid; grid-template-columns:1fr 1fr; overflow:hidden; position:relative; }
.l2-exit-photo{ position:relative; }
.l2-exit-photo img{ width:100%; height:100%; object-fit:cover; }
.l2-exit-corps{ padding:36px; }
.l2-exit-fermer{ position:absolute; top:14px; right:14px; background:var(--blanc); border-radius:50%; width:36px; height:36px; display:flex; align-items:center; justify-content:center; z-index:2; box-shadow:0 0 0 2px var(--encre); }
.l2-exit-fermer svg{ width:18px; height:18px; }
@media (max-width:640px){ .l2-exit-boite{ grid-template-columns:1fr; } .l2-exit-photo{ display:none; } }

/* Bandeau cookies — bande fine, collée au bord, ne recouvre jamais un bouton */
.l2-cookies{
  position:fixed; left:0; right:0; bottom:0; z-index:140; width:100%;
  background:var(--encre); color:var(--blanc); padding:12px var(--gouttiere);
  display:none; align-items:center; justify-content:center; gap:16px; flex-wrap:wrap;
  font-size:14px; border-top:1px solid #2a2a2c;
}
.l2-cookies p{ margin:0; }
.l2-cookies.est-visible{ display:flex; }
.l2-cookies .l2-btn{ padding:8px 18px; font-size:14px; }
@media (max-width:640px){ .l2-cookies{ justify-content:flex-start; text-align:left; } }

/* ==========================================================================
   POP-UP RICHE — bénéfices + preuve (LOT2 #24)
   ========================================================================== */
.l2-exit-benefices{ list-style:none; display:flex; flex-direction:column; gap:8px; margin:16px 0; font-size:14px; }
.l2-exit-benefices li{ padding-left:22px; position:relative; }
.l2-exit-benefices li::before{ content:"✓"; position:absolute; left:0; color:var(--violet); font-weight:700; }
.l2-exit-preuve{ font-size:13px; color:var(--asphalte); margin-bottom:16px; }

/* ==========================================================================
   TABLEAU → CARTES : en-tête = modèle (LOT2 #22)
   ========================================================================== */
.l2-tableau-carte-modele{ font-family:var(--font-display); font-weight:700; font-size:17px; padding-bottom:10px; margin-bottom:10px; border-bottom:2px solid var(--violet); }

/* ==========================================================================
   IMAGES DE CORPS D'ARTICLE (LOT2 #18)
   ========================================================================== */
.l2-corps-figure{ margin:2.4em 0; }
.l2-corps-figure img{ width:100%; aspect-ratio:16/9; object-fit:cover; }
.l2-corps-figure figcaption{ font-size:13px; color:var(--asphalte); margin-top:8px; }

/* ==========================================================================
   FAQ EN ACCORDÉON (LOT2 #20) + ACCORDÉON DE SECTIONS COACH (LOT2 #16)
   ========================================================================== */
.l2-faq-titre{ margin-top:2.2em; }
.l2-faq,.l2-accordeon{ display:flex; flex-direction:column; gap:10px; margin:1.4em 0 2.4em; }
.l2-faq-item,.l2-accordeon-item{ background:var(--gomme); border-left:4px solid var(--violet); }
.l2-faq-item summary,.l2-accordeon-item summary{
  cursor:pointer; list-style:none; padding:16px 20px; font-family:var(--font-display);
  font-weight:700; font-size:16px; display:flex; justify-content:space-between; align-items:center; gap:12px;
}
.l2-faq-item summary::-webkit-details-marker,.l2-accordeon-item summary::-webkit-details-marker{ display:none; }
.l2-faq-item summary::after,.l2-accordeon-item summary::after{ content:"+"; font-weight:400; font-size:22px; color:var(--violet); flex:0 0 auto; }
.l2-faq-item[open] summary::after,.l2-accordeon-item[open] summary::after{ content:"–"; }
.l2-faq-reponse,.l2-accordeon-corps{ padding:0 20px 20px; font-size:16px; }
.l2-faq-reponse p:last-child,.l2-accordeon-corps p:last-child{ margin-bottom:0; }

/* Rappel formulaire, bas de page coach (LOT2 #16) */
.l2-rappel-form{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  background:var(--gomme); padding:24px 28px; margin:3em 0 1em;
}
.l2-rappel-form p{ margin:0; font-family:var(--font-display); font-weight:700; font-size:18px; }

/* ==========================================================================
   CARTE DE FRANCE — villes coach (LOT2 #17)
   ========================================================================== */
.l2-carte-france-wrap{ display:grid; grid-template-columns:minmax(0,1fr) 300px; gap:40px; align-items:center; }
.l2-carte-france{ background:var(--gomme); padding:24px; }
.l2-carte-france svg{ width:100%; height:auto; max-height:520px; }
.l2-carte-france .l2-fr-regions path{ fill:#E3E1DA; stroke:var(--blanc); stroke-width:2; transition:fill var(--transition); }
.l2-carte-france .l2-fr-regions path:hover{ fill:var(--lavande); }
.l2-carte-france a{ cursor:pointer; }
.l2-carte-france a circle{ fill:var(--violet); stroke:var(--blanc); stroke-width:3; transition:fill var(--transition); }
.l2-carte-france a:hover circle,.l2-carte-france a:focus-visible circle{ fill:var(--encre); }
.l2-carte-france a text{ font-family:var(--font-display); font-weight:700; font-size:15px; fill:var(--encre); pointer-events:none; }
.l2-carte-france .l2-fr-ville-indisponible circle{ fill:#C9C7C0; }
.l2-carte-france .l2-fr-ville-indisponible text{ fill:var(--asphalte); }
.l2-villes-liste{ list-style:none; display:flex; flex-direction:column; gap:12px; }
.l2-ville-carte{
  display:flex; align-items:center; justify-content:space-between; background:var(--gomme);
  padding:16px 18px; font-family:var(--font-display); font-weight:700; font-size:17px;
  transition:background var(--transition), color var(--transition);
}
.l2-ville-carte:hover{ background:var(--lavande); color:var(--violet); }
.l2-ville-carte svg{ width:18px; height:18px; flex:0 0 auto; }
@media (max-width:900px){ .l2-carte-france-wrap{ grid-template-columns:1fr; } }

/* ==========================================================================
   ENCARTS PUB MAISON DANS LE CORPS (LOT2 #23)
   ========================================================================== */
.l2-encart{ margin:2.4em 0; padding:24px; }
.l2-encart h3{ font-size:20px; margin:6px 0 8px; }
.l2-encart p{ font-size:15px; color:var(--asphalte); margin-bottom:16px; }
.l2-encart--coach,.l2-encart--sbform{ background:var(--gomme); border-left:4px solid var(--violet); }
.l2-encart--calc{ background:var(--lavande); border:1px solid #E0CCF8; }
.l2-encart--stage{ background:var(--encre); color:var(--blanc); }
.l2-encart--stage p{ color:#D9D9D9; }
.l2-encart--stage .l2-etiquette{ color:var(--violet-nuit); }
.l2-encart--retraite{ background:var(--blanc); border:2px solid var(--encre); }

/* Sidebar : formulaire coach compact + pictos (LOT2 sidebar) */
.l2-picto{ width:18px; height:18px; margin-right:8px; vertical-align:-4px; color:var(--violet); }
.l2-colbloc--form .l2-lead-piste--mini{ margin-bottom:16px; }
.l2-lead-piste--mini .l2-segment{ padding:6px 2px; }
.l2-lead-corps--mini{ padding:0; }
.l2-lead-corps--mini .l2-lead-etape-titre{ display:none; }

/* Bloc Sources — liste numérotée soignée (LOT2 #21) */
.l2-sources ol{ list-style:none; counter-reset:src; display:flex; flex-direction:column; gap:8px; }
.l2-sources ol li{ counter-increment:src; display:flex; gap:10px; }
.l2-sources ol li::before{ content:counter(src,decimal-leading-zero); font-family:var(--font-display); font-weight:700; color:var(--violet); flex:0 0 auto; }
.l2-source-nom{ font-weight:600; text-decoration:none; color:var(--encre); }

/* Listes du contenu : terme en gras aligné (LOT2 listes) */
.entry-content li > strong:first-child{ display:block; margin-bottom:4px; color:var(--encre); }

/* Assurance responsive globale */
@media (max-width:390px){
  body{ font-size:17px; }
  .l2-container{ padding:0 16px; }
}
