/* Samy 13/09/2026 : feuille des pages V2 (parcours ville > centre > commande).
   Phase 1b : disposition de la fiche centre calquee sur le modele etudie (demande Samy),
   aux couleurs du site : bleu #3b5998 (menu, pied), rouge #e62117 (boutons), encre #111827,
   police systeme posee le 10/09.

   FILET : theme.css porte des regles d'element nues (`label{float:left}`, `ol li{float:left}`,
   `p` et `td` en graisse 300, `td{padding:20px;text-align:center}`, `th` sur fond bleu...).
   Tout est enferme sous .v2 ; les composants n'utilisent ni <label> ni <ol>. */

.v2 {
	--v2-bleu: #3b5998;
	--v2-bleu-fonce: #2d4677;
	--v2-rouge: #e62117;
	--v2-rouge-fonce: #c81b12;
	--v2-encre: #111827;
	--v2-encre-2: #4B5566;
	--v2-encre-3: #7A8496;
	--v2-gris: #F5F6F8;
	--v2-bord: #E3E6EC;
	--v2-vert: #0F7B4B;
	--v2-orange: #B45309;
	--v2-police: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	font-family: var(--v2-police);
	color: var(--v2-encre);
	font-size: 16px;
	line-height: 1.5;
	padding-bottom: 24px;
}
.v2, .v2 * { float: none; box-sizing: border-box; }
.v2 :where(p, ul, h1, h2, h3) { margin: 0; padding: 0; }
.v2 :where(ul) { list-style: none; }
.v2 :where(p, li, td, span, strong, small, a, h1, h2, h3, button, select) { font-family: var(--v2-police); }
.v2 [hidden] { display: none !important; }
/* Texte reserve aux lecteurs d'ecran (legende du tableau, en-tete de colonne vide). Regle perdue lors de la
   reecriture de la phase 1b : la legende <caption> s'affichait. */
.v2 .v2-masque { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; clip-path: inset(50%) !important; white-space: nowrap !important; border: 0 !important; }
.v2 p:not([class]) { font-size: 16px; font-weight: 400; line-height: 1.6; margin: 0; }
.v2 svg { display: inline-block; vertical-align: middle; flex: 0 0 auto; }
/* Phase 1c : contour visible a la navigation clavier (liens, boutons, menu). */
.v2 a:focus-visible, .v2 button:focus-visible, .v2 select:focus-visible { outline: 3px solid var(--v2-bleu); outline-offset: 2px; }

/* ---- Fil d'Ariane ---- */
.v2-ariane { font-size: 13px; color: var(--v2-encre-3); margin: 6px 0 14px; line-height: 1.9; }
.v2 .v2-ariane a { color: var(--v2-encre-3); text-decoration: none; }
.v2 .v2-ariane a:hover { color: var(--v2-rouge); }
.v2-ariane span { padding: 0 8px; color: #C6CBD6; }
.v2-ariane strong { color: var(--v2-encre); font-weight: 600; }

/* ---- Boutons ---- */
.v2 .v2-bouton { display: inline-block; text-align: center; background: var(--v2-rouge); color: #fff; font-weight: 700; text-decoration: none; border: 0; border-radius: 8px; box-shadow: 0 3px 0 var(--v2-rouge-fonce); transition: background .15s, transform .1s; }
.v2 .v2-bouton:hover, .v2 .v2-bouton:focus { background: var(--v2-rouge-fonce); color: #fff; text-decoration: none; }
.v2 .v2-bouton:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--v2-rouge-fonce); }
.v2 .v2-bouton-grand { display: block; font-size: 26px; padding: 14px 20px; }
.v2 .v2-bouton-grand span { margin-left: 14px; }
.v2 .v2-bouton-petit { font-size: 15px; padding: 7px 14px; box-shadow: 0 2px 0 var(--v2-rouge-fonce); }
.v2 .v2-bouton-inactif { background: #CBD2DC; box-shadow: none; pointer-events: none; cursor: default; }
.v2 .v2-bouton-contour { display: block; text-align: center; font-size: 15px; font-weight: 600; color: var(--v2-bleu); background: #fff; border: 1px solid var(--v2-bleu); border-radius: 6px; padding: 10px 14px; text-decoration: none; }
.v2 .v2-bouton-contour:hover { background: var(--v2-bleu); color: #fff; }
.v2 .v2-bouton-bleu { display: inline-block; background: var(--v2-bleu); color: #fff; font-size: 22px; font-weight: 600; padding: 8px 18px; border-radius: 4px; text-decoration: none; }
.v2 .v2-bouton-bleu:hover { background: var(--v2-bleu-fonce); color: #fff; }

/* ================= Bande grise ================= */
.v2-bande { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 0 26px; background: var(--v2-gris); padding: 0 0 22px; margin: 0 0 22px; }
.v2-bande-plan { display: flex; flex-direction: column; gap: 14px; }
.v2-plan { position: relative; width: 100%; aspect-ratio: 9 / 10; max-width: 100%; background: #e5e3df; overflow: hidden; }
.v2-plan iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.v2-entete { background: var(--v2-bleu); padding: 11px 26px; }
.v2 .v2-entete h1 { color: #fff; font-size: 23px; font-weight: 400; line-height: 1.3; letter-spacing: 0; margin: 0; text-wrap: pretty; }
.v2 .v2-entete h1 strong { font-weight: 700; }
.v2 .v2-sous-titre { font-size: 15px; font-style: italic; color: var(--v2-encre); margin: 6px 0 16px 26px; }
.v2 .v2-sous-titre strong { color: var(--v2-bleu); font-weight: 700; }

/* 1.75/1 : la date courte (« Lun. 14 au mer. 16 septembre ») tient sur une ligne a cote du prix. */
.v2-bande-cols { display: grid; grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr); gap: 26px; padding: 0 0 0 26px; }

.v2-bloc { background: #fff; border: 1px solid var(--v2-bord); border-left: 4px solid var(--v2-bleu); padding: 16px 20px; margin: 0 0 16px; }
.v2 .v2-bloc h2 { font-size: 16px; font-weight: 700; color: var(--v2-encre); margin: 0 0 8px; letter-spacing: 0; }
.v2 .v2-adresse { font-size: 16px; line-height: 1.45; }
.v2 .v2-bleu-fort { color: var(--v2-bleu); font-weight: 700; font-size: 17px; }
.v2 .v2-itineraire { margin-top: 8px; }
.v2 .v2-itineraire a { display: inline-flex; align-items: center; gap: 5px; font-size: 15px; font-weight: 600; color: var(--v2-bleu); text-decoration: underline; }

.v2-dates-ligne { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.v2 .v2-date { font-size: 20px; font-weight: 700; color: var(--v2-bleu); line-height: 1.25; letter-spacing: -.01em; }
.v2 .v2-horaires { font-size: 14px; color: var(--v2-encre); margin-top: 2px; }
.v2 .v2-places { display: inline-block; font-size: 16px; font-weight: 600; margin-top: 6px; }
.v2 .v2-places::before { content: ""; display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 7px; vertical-align: -1px; background: currentColor; }
.v2 .v2-places-ok { color: var(--v2-vert); }
.v2 .v2-places-peu { color: var(--v2-orange); }
.v2 .v2-places-complet { color: var(--v2-encre-3); }
.v2 .v2-prix-grand { font-size: 40px; font-weight: 400; color: var(--v2-bleu); line-height: 1; white-space: nowrap; }
.v2 .v2-prix-grand small { font-size: 24px; }
.v2 .v2-prix-grand .v2-ttc { display: block; font-size: 13px; color: var(--v2-encre-3); text-align: right; margin-top: 4px; letter-spacing: .04em; }
.v2 .v2-vide { color: var(--v2-encre-2); }

.v2-changer { margin: 4px 0 12px; }
.v2 .v2-changer-titre { font-size: 16px; font-weight: 400; color: var(--v2-encre); margin: 0 0 6px; letter-spacing: 0; }
.v2-select-ligne { display: flex; align-items: center; gap: 10px; }
.v2-select-ligne > span { font-size: 26px; line-height: 1; color: var(--v2-bleu); }
.v2 .v2-select-ligne select { flex: 1 1 auto; min-width: 0; height: 40px; padding: 0 10px; font-size: 15px; color: var(--v2-bleu); background: #fff; border: 1px solid #CCC; border-radius: 4px; }
.v2 .v2-statut { font-size: 15px; font-weight: 700; margin: 4px 0 0; }
.v2 .v2-statut-ok { color: var(--v2-vert); }
.v2 .v2-statut-peu { color: var(--v2-orange); }
.v2 .v2-statut-complet { color: var(--v2-encre-2); }
.v2 .v2-statut a { color: var(--v2-bleu); text-decoration: underline; }

.v2-bande-action { text-align: center; padding-top: 10px; }
.v2 .v2-tel a { display: inline-flex; align-items: center; gap: 8px; color: var(--v2-bleu); font-size: 30px; font-weight: 400; text-decoration: none; line-height: 1.1; }
.v2 .v2-tel-libelle { color: var(--v2-bleu); font-size: 24px; line-height: 1.2; }
.v2 .v2-tel-horaires { font-size: 14px; color: var(--v2-encre-2); margin: 4px 0 26px; }
.v2 .v2-immediat { font-size: 14px; text-align: right; margin-top: 8px; }

/* ================= Reassurance + logos ================= */
.v2-reassurance { display: flex; align-items: center; gap: 14px; padding: 4px 6px 18px; color: var(--v2-vert); }
.v2 .v2-reassurance p { color: var(--v2-encre); font-size: 16px; line-height: 1.45; margin: 0; }
.v2 .v2-reassurance strong { color: var(--v2-rouge); font-weight: 600; }

.v2-logos { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 24px 70px; padding: 10px 0 34px; }
.v2 .v2-logos img { display: inline-block; height: auto; max-width: 100%; vertical-align: middle; }
.v2 .v2-logo-titre { font-size: 15px; text-align: center; color: var(--v2-encre); margin-bottom: 6px; }
.v2-logo-paiement div { display: flex; align-items: center; gap: 16px; }

/* ================= Deux colonnes ================= */
.v2-carte { background: #fff; border: 1px solid var(--v2-bord); border-radius: 4px; padding: 30px 32px; margin: 0 0 34px; }
.v2-deux-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 36px; }
.v2 .v2-titre-section { font-size: 28px; font-weight: 400; color: var(--v2-encre); margin: 0 0 22px; letter-spacing: 0; }
.v2 .v2-puces { list-style: disc; padding-left: 22px; }
.v2 .v2-puces li { font-size: 17px; line-height: 1.55; margin: 0 0 16px; color: var(--v2-encre); font-weight: 400; }
.v2 .v2-puces strong { font-weight: 700; }
.v2 .v2-lien { color: var(--v2-bleu); text-decoration: underline; }
.v2 .v2-lien:hover { color: var(--v2-rouge); }

.v2-atouts { display: flex; justify-content: space-between; gap: 16px; background: var(--v2-gris); border-left: 4px solid var(--v2-bleu); padding: 18px 22px; margin-bottom: 26px; }
.v2 .v2-atouts ul { display: flex; flex-direction: column; gap: 8px; }
.v2 .v2-atouts li { display: flex; gap: 8px; align-items: flex-start; font-size: 16px; line-height: 1.4; }
.v2 .v2-atouts svg { color: #1BA86B; margin-top: 1px; }
.v2 .v2-atouts img { width: 120px; height: auto; align-self: center; }

.v2 .v2-titre-bleu { font-size: 22px; font-weight: 400; color: var(--v2-bleu); text-align: center; margin: 0 0 12px; letter-spacing: 0; }
.v2 .v2-dates-table { width: 100%; border-collapse: collapse; border: 1px solid var(--v2-bord); }
.v2 .v2-dates-table td { padding: 11px 14px; border: 0; border-bottom: 1px solid var(--v2-bord); background: #fff; text-align: left; font-size: 16px; font-weight: 400; color: var(--v2-encre); vertical-align: middle; }
.v2 .v2-dates-table tr:nth-child(even) td { background: #FAFAFA; }
.v2 .v2-dates-table .v2-td-prix { color: var(--v2-bleu); font-size: 22px; white-space: nowrap; text-align: center; }
.v2 .v2-dates-table .v2-td-action { text-align: right; white-space: nowrap; }
.v2 .v2-dates-table .v2-ligne-active td { background: #FDF3F2; }
.v2 .v2-dates-table .v2-places { font-size: 13px; margin-top: 2px; }
.v2 .v2-replie .v2-ligne-plus:not(.v2-ligne-active) { display: none; }
.v2-complet { color: var(--v2-encre-3); font-size: 14px; }
.v2 .v2-plus { display: block; width: 100%; margin-top: 10px; padding: 9px 14px; font-size: 15px; font-weight: 600; color: var(--v2-bleu); background: var(--v2-gris); border: 1px solid var(--v2-bord); border-radius: 4px; cursor: pointer; }
.v2 .v2-bouton-contour-droite { display: table; margin: 18px 0 0 auto; }

/* ================= Centres a proximite ================= */
.v2 .v2-bandeau { background: var(--v2-bleu); color: #fff; font-size: 23px; font-weight: 400; padding: 13px 26px; margin: 0 0 14px; letter-spacing: 0; }
.v2 .v2-bandeau strong { font-weight: 700; }
.v2-proches { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0 0 36px; }
.v2 .v2-proches li { display: flex; flex-direction: column; border: 1px solid var(--v2-bleu); background: #fff; padding: 12px 12px 14px; }
.v2 .v2-proches h3 { font-size: 20px; font-weight: 400; line-height: 1.25; margin: 0 0 12px; }
.v2 .v2-proches h3 a { color: var(--v2-bleu); text-decoration: underline; }
.v2 .v2-proche-adresse { font-size: 15px; line-height: 1.4; color: var(--v2-encre); }
.v2 .v2-proche-infos { font-size: 13px; color: var(--v2-encre-3); margin: 6px 0 14px; }
.v2 .v2-proches .v2-bouton-bleu { margin-top: auto; align-self: center; }

/* ================= Comment s'inscrire ================= */
.v2-texte { border-left: 4px solid var(--v2-bleu); padding: 2px 0 4px 22px; margin: 0 0 30px; max-width: 1000px; }
.v2 .v2-texte h2 { font-size: 24px; font-weight: 400; color: var(--v2-encre); margin: 0 0 12px; letter-spacing: 0; }
.v2 .v2-texte h2 + p { margin-top: 0; }
.v2 .v2-texte p { font-size: 17px; line-height: 1.7; margin: 0 0 14px; }
.v2 .v2-texte * + h2 { margin-top: 26px; }
.v2 .v2-texte a { color: var(--v2-bleu); }
.v2 .v2-lien-fort { font-weight: 700; text-decoration: underline; }
.v2-pastilles { display: flex; flex-wrap: wrap; gap: 8px; }
.v2 .v2-pastilles a { display: inline-block; font-size: 15px; font-weight: 600; color: var(--v2-bleu); text-decoration: none; background: #fff; border: 1px solid var(--v2-bleu); border-radius: 999px; padding: 7px 14px; }
.v2 .v2-pastilles a:hover { background: var(--v2-bleu); color: #fff; }

/* ---- Barre d'inscription mobile ---- */
.v2-barre { display: none; }

/* ================= Tablette ================= */
@media screen and (max-width: 1199px) {
	.v2-bande-cols { grid-template-columns: minmax(0, 1fr); gap: 10px; }
	.v2-proches { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.v2 .v2-bande-action { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 0 20px; text-align: left; padding-top: 0; }
	.v2 .v2-bande-action .v2-bouton-grand, .v2 .v2-bande-action .v2-immediat { grid-column: 2; }
	.v2 .v2-bande-action .v2-bouton-grand { grid-row: 1 / span 3; align-self: center; }
	.v2 .v2-tel-horaires { margin-bottom: 0; }
}
@media screen and (max-width: 991px) {
	.v2-bande { grid-template-columns: minmax(0, 1fr); background: var(--v2-gris); }
	.v2-bande-plan { display: none; }
	.v2-bande-cols { padding: 0 16px; }
	.v2 .v2-sous-titre { margin-left: 16px; }
	.v2-deux-cols { grid-template-columns: minmax(0, 1fr); }
}

/* ================= Mobile ================= */
@media screen and (max-width: 767px) {
	.v2-entete { padding: 12px 16px; }
	.v2 .v2-entete h1 { font-size: 21px; }
	.v2 .v2-date { font-size: 20px; }
	.v2 .v2-prix-grand { font-size: 38px; }
	.v2 .v2-bande-action { display: block; text-align: center; padding-top: 8px; }
	.v2 .v2-bande-action .v2-bouton-grand { display: inline-block; min-width: 72%; margin-top: 16px; }
	.v2 .v2-immediat { text-align: center; }
	.v2 .v2-tel a { font-size: 26px; }
	.v2 .v2-tel-libelle { font-size: 20px; }
	.v2-reassurance { padding: 4px 0 14px; align-items: flex-start; }
	.v2 .v2-reassurance p { font-size: 15px; }
	.v2-logos { gap: 18px 30px; padding-bottom: 24px; }
	.v2-carte { padding: 22px 18px; }
	.v2 .v2-titre-section { font-size: 23px; }
	.v2 .v2-puces li { font-size: 16px; margin-bottom: 12px; }
	.v2-atouts { flex-direction: column; }
	.v2 .v2-atouts img { align-self: flex-start; }
	.v2 .v2-titre-bleu { font-size: 19px; }
	.v2 .v2-dates-table td { padding: 10px 8px; font-size: 14px; }
	.v2 .v2-dates-table .v2-td-prix { font-size: 18px; }
	.v2 .v2-bouton-contour-droite { display: block; margin-left: 0; }
	.v2 .v2-bandeau { font-size: 19px; padding: 12px 16px; }
	.v2-proches { grid-template-columns: minmax(0, 1fr); }
	.v2-texte { padding-left: 16px; }
	.v2 .v2-texte h2 { font-size: 21px; }
	.v2 .v2-texte p { font-size: 16px; }

	.v2 { padding-bottom: 84px; }
	.v2-barre { display: flex; align-items: center; justify-content: space-between; gap: 12px; position: fixed; left: 0; right: 0; bottom: 0; z-index: 1000; background: #fff; border-top: 1px solid var(--v2-bord); box-shadow: 0 -4px 16px rgba(17,24,39,.08); padding: 10px 16px; transition: transform .2s ease; }
	/* Phase 1c : la barre s'efface tant que le gros bouton S'inscrire est a l'ecran (v2.js). */
	.v2-barre.v2-barre-cachee { transform: translateY(110%); box-shadow: none; }
	.v2-barre > span { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
	.v2-barre strong { font-size: 20px; font-weight: 700; }
	.v2-barre small { font-size: 12px; color: var(--v2-encre-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	.v2 .v2-barre .v2-bouton { flex: 0 0 auto; padding: 12px 22px; font-size: 16px; }
	/* Le badge Societe des Avis Garantis (.agJsWidget, fixe en bas a gauche, z-index 99999)
	   recouvrait le prix de la barre : on le remonte au-dessus d'elle sur les pages V2. */
	body:has(.v2-barre) .agJsWidget { bottom: 78px !important; }
}

/* =====================================================================================
   PAGE VILLE V2 (phase 2, Samy 13/09/2026) — disposition calquee sur la page ville du modele :
   colonne gauche 1/3 (villes proches, jours, region, paiement, telephone, engagements) |
   titre, sous-titre bleu, encadre de synthese, onglets de tri, tableau des sessions,
   « Voir les dates suivantes », encadre des villes proches, contenu editorial de la V1.
   ===================================================================================== */
/* Phase 4a (demande Samy) : colonne de liens a DROITE (a gauche chez le modele) ; elle suit la colonne principale dans le HTML. */
.v2-ville-grille { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.v2-ville-cote { display: flex; flex-direction: column; gap: 22px; }
.v2-cadre-cote { background: #fff; border: 1px solid var(--v2-bord); box-shadow: 0 1px 3px rgba(17,24,39,.06); padding: 22px 24px; }
.v2 .v2-cadre-cote h2 { font-size: 22px; font-weight: 400; text-align: center; color: var(--v2-encre); margin: 0 0 14px; padding-bottom: 10px; border-bottom: 1px solid #C9CED8; letter-spacing: 0; }
.v2 .v2-liste-fleche li { font-size: 17px; line-height: 1.7; }
.v2 .v2-liste-fleche li::before { content: "> "; color: var(--v2-encre); }
.v2 .v2-liste-fleche a, .v2 .v2-liste-simple a { color: var(--v2-bleu); text-decoration: none; }
.v2 .v2-liste-fleche a:hover, .v2 .v2-liste-simple a:hover { text-decoration: underline; }
.v2 .v2-liste-simple li { font-size: 16px; line-height: 1.8; }

/* theme.css : `label{float:left;display:block;font-weight:bold;border-bottom:1px solid #DDD...}` -> repris */
.v2 .v2-filtre-jours label.v2-case { display: flex; align-items: center; gap: 8px; float: none; width: auto; margin: 0 0 6px; padding: 0; border: 0; font-size: 16px; font-weight: 400; color: var(--v2-bleu); cursor: pointer; background: none; }
.v2 .v2-filtre-jours label.v2-case small { color: var(--v2-encre-3); font-size: 13px; }
.v2 .v2-filtre-jours input { width: 17px; height: 17px; margin: 0; accent-color: var(--v2-bleu); }

.v2 .v2-cote-paiement { text-align: center; }
.v2 .v2-cote-paiement p { font-size: 15px; margin-bottom: 10px; }
.v2-cote-logos { display: flex; justify-content: center; align-items: center; gap: 12px; }
.v2 .v2-cote-logos img { display: inline-block; height: auto; }
.v2-cote-tel { text-align: left; padding: 0 4px; }
.v2 .v2-cote-tel img { display: block; margin: 0 auto 12px; height: auto; }
.v2 .v2-cote-tel .v2-tel a { font-size: 28px; }
.v2 .v2-cote-tel .v2-tel-libelle { font-size: 24px; }
.v2 .v2-cote-tel .v2-tel-horaires { margin-bottom: 0; }
.v2 .v2-engagements ul { display: flex; flex-direction: column; gap: 10px; }
.v2 .v2-engagements li { display: flex; gap: 8px; align-items: flex-start; font-size: 16px; line-height: 1.4; }
.v2 .v2-engagements svg { color: #1BA86B; margin-top: 1px; }

.v2 .v2-ville-h1 { font-size: 34px; font-weight: 400; line-height: 1.2; color: var(--v2-encre); margin: 0 0 4px; letter-spacing: -.01em; text-wrap: pretty; }
.v2 .v2-ville-sous-titre { font-size: 26px; line-height: 1.25; color: var(--v2-bleu); margin: 0 0 18px; }
.v2 .v2-synthese { background: #ECEEF8; border-radius: 12px; padding: 18px 26px; margin: 0 0 20px; }
.v2 .v2-synthese p { font-size: 18px; line-height: 1.55; margin: 0; }
.v2 .v2-synthese strong { font-weight: 700; }

.v2-tri { display: flex; justify-content: flex-end; margin: 0 0 12px; }
.v2-tri-bouton + .v2-tri-bouton { margin-left: 4px; }
.v2 .v2-tri { background: none; }
.v2 .v2-tri-bouton { font-size: 16px; font-weight: 600; color: var(--v2-encre-2); background: #fff; border: 1px solid var(--v2-bord); border-radius: 999px; padding: 8px 16px; cursor: pointer; }
.v2 .v2-tri-bouton:hover { color: var(--v2-bleu); border-color: var(--v2-bleu); }
.v2 .v2-tri-bouton.v2-tri-actif { background: #ECEEF8; color: var(--v2-encre); border-color: #C9CFEA; }

.v2 .v2-sessions { width: 100%; border-collapse: collapse; border: 1px solid #ECECEC; }
.v2 .v2-sessions th { background: none; border: 0; border-bottom: 1px solid #ECECEC; color: var(--v2-encre); font-size: 17px; font-weight: 700; text-align: center; padding: 10px 12px; text-transform: none; letter-spacing: 0; }
.v2 .v2-sessions td { background: #fff; border: 0; border-bottom: 1px solid #ECECEC; padding: 16px 14px 16px 22px; text-align: left; vertical-align: middle; font-size: 15px; font-weight: 400; color: var(--v2-encre); }
/* Phase 2b : plus de zebrure (les separateurs de mois et les lignes masquees la decalaient) ; survol a la place. */
.v2 .v2-sessions tr.v2-ligne-session { cursor: pointer; }
.v2 .v2-sessions tr.v2-ligne-session:hover td { background: #F7F9FC; }
.v2 .v2-sessions tr.v2-separateur th { background: #ECEEF8; color: var(--v2-bleu); font-size: 15px; font-weight: 700; text-align: left; letter-spacing: .02em; padding: 8px 22px; border: 0; border-bottom: 1px solid #DCE1F0; text-transform: none; }
.v2 .v2-lieu-lien { display: block; color: var(--v2-encre); text-decoration: none; }
.v2 .v2-lieu-lien:hover .v2-lieu-ville { color: var(--v2-bleu); }
.v2 .v2-lieu-ville { display: block; font-size: 22px; font-weight: 600; line-height: 1.2; }
.v2 .v2-lieu-ville span { font-size: 17px; font-weight: 400; color: var(--v2-bleu); }
.v2 .v2-lieu-adresse { display: block; font-size: 15px; color: var(--v2-encre); margin-top: 2px; }
.v2 .v2-lieu-km { display: block; font-size: 13px; color: var(--v2-encre-3); margin-top: 4px; }
.v2 .v2-dates-mobile, .v2 .v2-places-mobile { display: none; }
.v2 .v2-sessions .v2-col-dates { text-align: center; }
.v2 .v2-dates-deux { display: inline-flex; flex-direction: column; gap: 6px; text-align: left; border-left: 3px solid var(--v2-bleu); background: #fff; padding: 6px 12px; font-size: 16px; }
.v2 .v2-dates-deux span { white-space: nowrap; }
/* Largeurs fixes : sans elles, la colonne Villes prend toute la place et les dates se coupent. */
.v2 .v2-sessions { table-layout: fixed; }
.v2 .v2-sessions th:nth-child(1) { width: 36%; }
.v2 .v2-sessions th:nth-child(2) { width: 25%; }
.v2 .v2-sessions th:nth-child(3) { width: 17%; }
.v2 .v2-sessions th:nth-child(4) { width: 22%; }
.v2 .v2-dates-deux strong { color: var(--v2-bleu); font-weight: 600; }
.v2 .v2-sessions .v2-places { display: block; margin-top: 8px; font-size: 16px; }
.v2 .v2-sessions .v2-places::before { display: none; }
.v2 .v2-sessions .v2-col-prix { text-align: center; }
.v2 .v2-prix-case { display: inline-block; font-size: 26px; color: var(--v2-bleu); padding: 6px 12px; white-space: nowrap; }
.v2 .v2-prix-case.v2-prix-bas { background: #03A88E; color: #fff; font-weight: 700; border-radius: 3px; }
.v2 .v2-sessions .v2-col-action { text-align: center; }
.v2 .v2-bouton-ligne { font-size: 18px; padding: 9px 16px; }
.v2 .v2-seul-mobile { display: none; }
.v2 .v2-aucune { text-align: center; font-size: 16px; padding: 18px; border: 1px solid #ECECEC; border-top: 0; }
.v2 .v2-lien-bouton { background: none; border: 0; padding: 0; color: var(--v2-bleu); text-decoration: underline; font-size: 16px; cursor: pointer; }
.v2-suivantes-cadre { text-align: center; margin: 18px 0 26px; }
.v2 .v2-suivantes { display: inline-flex; align-items: center; gap: 14px; background: #fff; border: 1px solid var(--v2-bleu); border-radius: 4px; color: var(--v2-bleu); font-size: 21px; font-weight: 600; padding: 12px 30px; cursor: pointer; }
.v2 .v2-suivantes span { max-width: 150px; line-height: 1.25; }
.v2 .v2-suivantes:hover { background: #F2F5FB; }

.v2-encadre-ville { border: 1px solid var(--v2-encre); border-radius: 4px; padding: 30px 26px 22px; margin: 0 0 30px; }
.v2 .v2-encadre-ville h2 { font-size: 22px; font-weight: 600; color: var(--v2-encre); margin: 0 0 16px; letter-spacing: 0; }
.v2 .v2-encadre-ville * + h2 { margin-top: 30px; }
.v2 .v2-villes-proches li { font-size: 17px; margin-bottom: 14px; }
.v2 .v2-villes-proches a { color: var(--v2-bleu); font-weight: 600; text-decoration: underline; }
.v2 .v2-km-liste { color: var(--v2-encre-3); font-size: 14px; }
.v2 .v2-grille-villes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px 20px; padding: 4px 0 0 40px; }
.v2 .v2-grille-villes a { color: var(--v2-bleu); font-weight: 600; font-size: 16px; text-decoration: underline; }
.v2 .v2-texte-ville { max-width: none; }
.v2 .v2-texte-ville ul { list-style: disc; padding-left: 22px; margin: 0 0 14px; }
.v2 .v2-texte-ville li { font-size: 16px; line-height: 1.6; margin-bottom: 6px; float: none; }
.v2 .v2-texte-ville h3 { font-size: 19px; font-weight: 600; margin: 18px 0 8px; }
.v2 .v2-texte-ville img { max-width: 100%; height: auto; }

@media screen and (max-width: 991px) {
	.v2-ville-grille { grid-template-columns: minmax(0, 1fr); }
	.v2-ville-cote { order: 2; }
	.v2-ville-principal { order: 1; }
}
@media screen and (max-width: 767px) {
	.v2 .v2-ville-h1 { font-size: 26px; }
	.v2 .v2-ville-sous-titre { font-size: 19px; }
	.v2 .v2-synthese { padding: 14px 16px; }
	.v2 .v2-synthese p { font-size: 16px; }
	.v2-tri { justify-content: center; flex-wrap: wrap; gap: 6px; }
	.v2-tri-bouton + .v2-tri-bouton { margin-left: 0; }
	.v2 .v2-tri-bouton { font-size: 14px; padding: 7px 12px; }
	.v2 .v2-sessions thead { display: none; }
	.v2 .v2-sessions { table-layout: auto; }
	.v2 .v2-sessions .v2-col-dates, .v2 .v2-sessions .v2-col-prix { display: none; }
	.v2 .v2-sessions td { padding: 12px 10px; }
	.v2 .v2-lieu-ville { font-size: 19px; }
	.v2 .v2-dates-mobile { display: block; font-size: 15px; font-weight: 600; color: var(--v2-bleu); margin-top: 6px; }
	.v2 .v2-places-mobile { display: block; font-size: 14px; font-weight: 600; margin-top: 2px; }
	.v2 .v2-sessions .v2-col-action { width: 1%; white-space: nowrap; }
	.v2 .v2-bouton-ligne { font-size: 17px; padding: 9px 14px; }
	.v2 .v2-masque-mobile { display: none; }
	.v2 .v2-seul-mobile { display: inline; }
	.v2 .v2-suivantes { font-size: 18px; padding: 10px 20px; }
	.v2-encadre-ville { padding: 20px 16px; }
	.v2 .v2-encadre-ville h2 { font-size: 19px; }
	.v2 .v2-grille-villes { grid-template-columns: repeat(2, minmax(0, 1fr)); padding-left: 0; }
	.v2 .v2-villes-proches li { font-size: 16px; }
}

/* ---- Phase 2b : barre de filtres, cartes des centres ---- */
.v2-filtres { display: flex; flex-direction: column; gap: 10px; margin: 0 0 12px; }
.v2-filtre-mois { display: flex; flex-wrap: wrap; gap: 6px; }
.v2 .v2-puce-filtre { font-size: 14px; font-weight: 600; color: var(--v2-bleu); background: #fff; border: 1px solid #CFD6E6; border-radius: 999px; padding: 6px 13px; cursor: pointer; }
.v2 .v2-puce-filtre:hover { border-color: var(--v2-bleu); }
.v2 .v2-puce-filtre.v2-puce-active { background: var(--v2-bleu); border-color: var(--v2-bleu); color: #fff; }
.v2-filtre-ligne { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.v2 .v2-select-filtre { height: 40px; max-width: 100%; padding: 0 10px; font-size: 15px; color: var(--v2-encre); background: #fff; border: 1px solid #CFD6E6; border-radius: 8px; }
.v2 .v2-filtre-ligne .v2-tri { margin: 0 0 0 auto; }
.v2 .v2-plus-loin { font-size: 14px; color: var(--v2-encre-3); margin-top: 10px; }

.v2-centres-zone { margin: 0 0 30px; }
.v2-centres-cartes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.v2 .v2-centres-cartes li { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--v2-bleu); padding: 14px 16px 16px; }
.v2 .v2-centres-cartes h3 { font-size: 20px; font-weight: 600; line-height: 1.2; margin: 0 0 4px; }
.v2 .v2-centres-cartes h3 a { color: var(--v2-bleu); text-decoration: underline; }
.v2 .v2-centre-adresse { font-size: 15px; color: var(--v2-encre); }
.v2 .v2-centre-infos { font-size: 13px; color: var(--v2-encre-3); margin: 6px 0 8px; }
.v2 .v2-centre-prix { font-size: 15px; margin: 0 0 12px; }
.v2 .v2-centre-prix strong { color: var(--v2-bleu); font-size: 22px; font-weight: 600; }
.v2-centre-actions { display: flex; flex-direction: column; gap: 8px; margin-top: auto; }
.v2 .v2-centre-actions .v2-bouton-contour { display: block; width: 100%; font-size: 15px; padding: 8px 10px; cursor: pointer; }
.v2 .v2-centre-actions .v2-bouton-bleu { display: block; text-align: center; font-size: 15px; padding: 9px 10px; }

@media screen and (max-width: 1199px) {
	.v2-centres-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media screen and (max-width: 767px) {
	.v2-filtre-mois { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
	.v2-filtre-mois::-webkit-scrollbar { display: none; }
	.v2 .v2-puce-filtre { flex: 0 0 auto; }
	.v2 .v2-select-filtre { flex: 1 1 100%; }
	.v2 .v2-filtre-ligne .v2-tri { margin: 0; width: 100%; justify-content: flex-start; }
	.v2 .v2-sessions tr.v2-separateur th { padding: 7px 10px; }
	.v2-centres-cartes { grid-template-columns: minmax(0, 1fr); }
}

/* =====================================================================================
   COMMANDE V2 (phase 3, maquette, Samy 13/09/2026) : recapitulatif en tete, une page en 4 blocs
   numerotes, colonne de reassurance. theme.css : `label{float:left;display:block;font-weight:bold;
   border-bottom...}` et `input`/`select` herites -> tout est redefini sous .v2-commande.
   ===================================================================================== */
.v2-maquette-bandeau { background: #FFF7E0; border: 1px solid #F0D48A; color: #6B4E00; font-size: 15px; padding: 10px 16px; border-radius: 6px; margin: 0 0 18px; }
.v2-commande-grille { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr); gap: 28px; align-items: start; }
.v2-commande-cote { display: flex; flex-direction: column; gap: 20px; position: sticky; top: 110px; }

.v2-recap { background: #fff; border: 1px solid var(--v2-bord); border-top: 4px solid var(--v2-bleu); padding: 22px 26px; margin: 0 0 22px; }
.v2 .v2-recap h1 { font-size: 28px; font-weight: 400; line-height: 1.25; color: var(--v2-encre); margin: 0 0 6px; letter-spacing: 0; }
.v2 .v2-recap-accroche { font-size: 17px; margin: 0 0 16px; padding-bottom: 14px; border-bottom: 1px solid var(--v2-bord); }
.v2-recap-grille { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; align-items: start; }
.v2 .v2-recap-liste { display: grid; grid-template-columns: 130px minmax(0, 1fr); gap: 8px 14px; margin: 0; }
.v2 .v2-recap-liste dt { font-size: 15px; font-weight: 400; color: var(--v2-encre-2); }
.v2 .v2-recap-liste dd { font-size: 16px; margin: 0; color: var(--v2-encre); }
.v2 .v2-recap-liste .v2-places { margin: 0; font-size: 15px; }
.v2-recap-total { text-align: right; min-width: 210px; }
.v2 .v2-recap-total-libelle { font-size: 18px; color: var(--v2-encre); }
.v2 .v2-recap-total-montant { font-size: 38px; font-weight: 700; color: var(--v2-encre); line-height: 1.1; white-space: nowrap; }
.v2 .v2-recap-total-mention { font-size: 13px; color: var(--v2-encre-3); margin: 6px 0 10px; }
.v2 .v2-recap-total .v2-lien { font-size: 15px; }
.v2 .v2-alerte { background: #FDF0EE; border-left: 4px solid var(--v2-rouge); padding: 16px 20px; margin: 0 0 20px; }
.v2 .v2-alerte p + p { margin-top: 10px; }

.v2 .v2-obligatoire-note { font-size: 14px; color: var(--v2-encre-3); text-align: right; margin: 0 0 8px; }
.v2 .v2-bloc-form { background: #fff; border: 1px solid var(--v2-bord); margin: 0 0 18px; padding: 0 0 22px; min-width: 0; }
.v2 .v2-bloc-form legend { display: flex; align-items: center; gap: 12px; width: 100%; float: none; margin: 0 0 18px; padding: 14px 22px; background: #F5F6F8; border: 0; border-bottom: 1px solid var(--v2-bord); font-size: 21px; font-weight: 400; color: var(--v2-encre); }
.v2 .v2-num { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: var(--v2-bleu); color: #fff; font-size: 16px; font-weight: 700; flex: 0 0 auto; }
.v2 .v2-champs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 18px; padding: 0 22px; }
.v2 .v2-champ { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.v2 .v2-champ-plein { grid-column: 1 / -1; }
.v2.v2-commande label, .v2 .v2-etiquette-champ { float: none; display: block; width: auto; margin: 0; padding: 0; border: 0; background: none; font-size: 15px; font-weight: 600; color: var(--v2-encre); line-height: 1.3; }
.v2.v2-commande label small { font-weight: 400; color: var(--v2-encre-3); }
.v2.v2-commande label span[aria-hidden], .v2 .v2-etiquette-champ span[aria-hidden], .v2 .v2-obligatoire-note span { color: var(--v2-rouge); }
.v2 .v2-champ input[type=text], .v2 .v2-champ input[type=email], .v2 .v2-champ input[type=tel], .v2 .v2-champ select { width: 100%; height: 44px; padding: 0 12px; font-size: 16px; color: var(--v2-encre); background: #fff; border: 1px solid #C9CFDA; border-radius: 6px; box-shadow: none; }
.v2 .v2-champ input:focus, .v2 .v2-champ select:focus { border-color: var(--v2-bleu); outline: 2px solid rgba(59,89,152,.25); outline-offset: 0; }
.v2 .v2-champ input[readonly] { background: #F5F6F8; color: var(--v2-encre-2); }
.v2 .v2-trio { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr) minmax(0, 1fr); gap: 8px; }
.v2 .v2-invalide { border-color: var(--v2-rouge) !important; background: #FFF8F7 !important; }
.v2 .v2-case-ligne { display: flex !important; align-items: flex-start; gap: 10px; font-weight: 400 !important; cursor: pointer; }
.v2 .v2-case-ligne input { width: 20px; height: 20px; margin: 1px 0 0; flex: 0 0 auto; accent-color: var(--v2-bleu); }
.v2 .v2-case-ligne input.v2-invalide { outline: 2px solid var(--v2-rouge); }
/* (0,3,2) : doit battre `.v2.v2-commande label { padding: 0 }` */
.v2.v2-commande label.v2-cgv { padding: 0 22px; font-size: 16px; }
.v2 .v2-cgv a { color: var(--v2-bleu); text-decoration: underline; }

.v2 .v2-paiements { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; padding: 0 22px; }
.v2 .v2-paiement-choix { display: flex !important; align-items: center; gap: 10px; border: 1px solid #C9CFDA !important; border-radius: 8px; padding: 14px !important; font-weight: 400 !important; cursor: pointer; }
.v2 .v2-paiement-choix:has(input:checked) { border-color: var(--v2-bleu) !important; background: #F2F5FB; box-shadow: 0 0 0 1px var(--v2-bleu); }
.v2 .v2-paiement-choix input { width: 18px; height: 18px; margin: 0; accent-color: var(--v2-bleu); flex: 0 0 auto; }
.v2 .v2-paiement-choix span { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; }
.v2 .v2-paiement-choix strong { font-size: 16px; font-weight: 600; }
.v2 .v2-paiement-choix small { font-size: 13px; color: var(--v2-encre-3); }
.v2 .v2-paiement-choix img { display: block; height: auto; max-width: 64px; flex: 0 0 auto; }

.v2 .v2-erreurs { background: #FDF0EE; border-left: 4px solid var(--v2-rouge); padding: 14px 18px; margin: 0 0 16px; }
.v2 .v2-erreurs p { font-weight: 700; margin: 0 0 6px; }
.v2 .v2-erreurs ul { list-style: disc; padding-left: 20px; }
.v2 .v2-erreurs li { font-size: 15px; line-height: 1.6; }
.v2 .v2-erreurs a { color: var(--v2-rouge-fonce); text-decoration: underline; }
.v2 .v2-valider { text-align: center; margin: 8px 0 26px; }
.v2 .v2-valider .v2-bouton-grand { display: inline-block; min-width: 60%; }
.v2 .v2-valider-mention { font-size: 14px; color: var(--v2-encre-3); margin-top: 10px; }
.v2 .v2-maquette-resultat { border: 2px dashed #F0D48A; background: #FFFBEF; padding: 18px 20px; margin: 0 0 26px; outline: none; }
.v2 .v2-maquette-resultat h2 { font-size: 20px; font-weight: 700; margin: 0 0 8px; }
.v2 .v2-maquette-resultat pre { white-space: pre-wrap; word-break: break-word; font-size: 13px; background: #fff; border: 1px solid #EEE; padding: 12px; margin: 12px 0 0; max-height: 360px; overflow: auto; }

.v2 .v2-cote-recap p { font-size: 15px; margin: 0 0 6px; }
.v2 .v2-cote-recap-titre { font-weight: 700; color: var(--v2-bleu); }
.v2 .v2-cote-recap-prix { font-size: 26px !important; font-weight: 700; margin-top: 10px !important; }
.v2 .v2-cote-recap-prix small { font-size: 14px; font-weight: 400; color: var(--v2-encre-3); }

@media screen and (max-width: 991px) {
	.v2-commande-grille { grid-template-columns: minmax(0, 1fr); }
	.v2-commande-cote { position: static; order: 2; }
	.v2 .v2-cote-recap { display: none; }
}
@media screen and (max-width: 767px) {
	.v2-recap { padding: 18px 16px; }
	.v2 .v2-recap h1 { font-size: 23px; }
	.v2-recap-grille { grid-template-columns: minmax(0, 1fr); }
	.v2-recap-total { text-align: left; border-top: 1px solid var(--v2-bord); padding-top: 12px; }
	.v2 .v2-recap-liste { grid-template-columns: 105px minmax(0, 1fr); }
	.v2 .v2-champs { grid-template-columns: minmax(0, 1fr); padding: 0 16px; }
	.v2 .v2-bloc-form legend { font-size: 18px; padding: 12px 16px; }
	.v2 .v2-paiements { grid-template-columns: minmax(0, 1fr); padding: 0 16px; }
	.v2.v2-commande label.v2-cgv { padding: 0 16px; }
	.v2 .v2-valider .v2-bouton-grand { display: block; width: 100%; min-width: 0; font-size: 21px; }
}

/* ---- Commande V2, phase 3b : progression, aides, erreurs sous le champ, relecture, barre mobile ---- */
.v2 .v2-changer-date { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--v2-bord); }
.v2.v2-commande .v2-changer-date label { font-size: 15px; font-weight: 600; }
.v2 .v2-changer-date select { height: 40px; min-width: 0; max-width: 100%; padding: 0 10px; font-size: 15px; color: var(--v2-bleu); background: #fff; border: 1px solid #C9CFDA; border-radius: 6px; }
.v2 .v2-changer-date .v2-aide { flex: 1 1 100%; margin: 0; }

.v2 .v2-progression { position: sticky; top: 100px; z-index: 20; background: rgba(255,255,255,.96); border: 1px solid var(--v2-bord); border-radius: 999px; padding: 6px; margin: 0 0 16px; box-shadow: 0 2px 8px rgba(17,24,39,.06); }
.v2 .v2-progression ol { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; list-style: none; margin: 0; padding: 0; }
.v2 .v2-progression li { float: none; margin: 0; padding: 0; }
.v2 .v2-progression a { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 6px 8px; border-radius: 999px; font-size: 15px; font-weight: 600; color: var(--v2-encre-2); text-decoration: none; white-space: nowrap; }
.v2 .v2-progression a:hover { background: #F2F5FB; color: var(--v2-bleu); }
.v2 .v2-pastille { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; border: 2px solid #C9CFDA; font-size: 13px; font-weight: 700; color: var(--v2-encre-2); flex: 0 0 auto; }
.v2 .v2-etape-faite .v2-pastille { background: var(--v2-vert); border-color: var(--v2-vert); color: transparent; position: relative; }
.v2 .v2-etape-faite .v2-pastille::after { content: "✓"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 14px; }
.v2 .v2-etape-faite a { color: var(--v2-vert); }

.v2 .v2-obligatoire-note { text-align: left; }
.v2 .v2-sous-groupe { font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--v2-encre-3); margin: 4px 22px 10px; }
.v2 .v2-champs + .v2-sous-groupe { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--v2-bord); }
.v2 .v2-aide { font-size: 13px; color: var(--v2-encre-3); margin: -2px 0 2px; line-height: 1.4; }
.v2 .v2-aide-groupe { margin: -4px 22px 10px; }
.v2 .v2-vide { visibility: hidden; }
.v2 .v2-erreur-champ { font-size: 14px; font-weight: 600; color: var(--v2-rouge-fonce); margin: 2px 0 0; }
.v2 .v2-erreur-champ::before { content: "! "; }
.v2 .v2-erreur-cgv { padding: 0 22px; }
.v2 .v2-suggestion { font-size: 14px; color: var(--v2-encre-2); margin: 2px 0 0; }
.v2 .v2-suggestion button { background: none; border: 0; padding: 0; color: var(--v2-bleu); font-weight: 700; text-decoration: underline; cursor: pointer; font-size: 14px; }

.v2 .v2-relecture { background: #fff; border: 1px solid var(--v2-bord); border-top: 4px solid var(--v2-vert); padding: 22px 24px; margin: 0 0 26px; outline: none; }
.v2 .v2-relecture > h2 { font-size: 26px; font-weight: 400; margin: 0 0 16px; }
.v2 .v2-relecture-grille { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.v2 .v2-relecture-carte { background: #F7F8FA; border: 1px solid var(--v2-bord); border-radius: 8px; padding: 14px 16px; }
.v2 .v2-relecture-carte h3 { font-size: 16px; font-weight: 700; margin: 0 0 8px; }
.v2 .v2-relecture-carte dl { margin: 0 0 8px; }
.v2 .v2-relecture-carte dt { font-size: 12px; color: var(--v2-encre-3); font-weight: 400; margin-top: 6px; }
.v2 .v2-relecture-carte dd { font-size: 15px; margin: 0; word-break: break-word; }
.v2 .v2-relecture-total { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--v2-bord); margin: 18px 0 0; padding-top: 14px; font-size: 18px; }
.v2 .v2-relecture-total strong { font-size: 32px; }
.v2 .v2-relecture-actions { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-top: 16px; }
.v2 .v2-relecture-actions .v2-bouton-contour { display: inline-block; cursor: pointer; padding: 12px 18px; }
.v2 .v2-relecture-actions .v2-bouton-grand { display: inline-block; }
.v2 .v2-relecture-actions button[disabled] { opacity: .6; cursor: progress; }
.v2 .v2-maquette-resultat { margin: 18px 0 0; }
.v2 .v2-maquette-resultat h3 { font-size: 18px; font-weight: 700; margin: 0 0 6px; }
.v2 .v2-maquette-resultat summary { cursor: pointer; color: var(--v2-bleu); margin-top: 8px; }

@media screen and (max-width: 991px) {
	.v2 .v2-relecture-grille { grid-template-columns: minmax(0, 1fr); }
}
@media screen and (max-width: 767px) {
	/* Mobile : le menu du site se masque et reapparait au defilement, une barre collante le chevauchait.
	   La progression reste en tete du formulaire ; la barre du bas affiche « n blocs completes sur 4 ». */
	.v2 .v2-progression { position: static; border-radius: 10px; }
	.v2 .v2-progression a { flex-direction: column; gap: 2px; font-size: 11px; padding: 4px 2px; }
	.v2 .v2-sous-groupe { margin-left: 16px; margin-right: 16px; }
	.v2 .v2-aide-groupe { margin-left: 16px; margin-right: 16px; }
	.v2 .v2-erreur-cgv { padding: 0 16px; }
	.v2 .v2-vide { display: none; }
	.v2 .v2-relecture { padding: 18px 16px; }
	.v2 .v2-relecture-actions { flex-direction: column-reverse; align-items: stretch; }
	.v2 .v2-relecture-actions .v2-bouton-grand, .v2 .v2-relecture-actions .v2-bouton-contour { width: 100%; text-align: center; }
}

/* ==================================================================================
   Phase 3c (13/09) : liaison des trois pages — bandeau de test, etapes du parcours,
   retour a la liste, date indisponible, derniere session consultee.
   ================================================================================== */
.v2 .v2-test { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 16px; background: #1F2937; color: #fff; font-size: 13px; line-height: 1.4; padding: 7px 14px; border-radius: 6px; margin: 8px 0 6px; }
.v2 .v2-test strong { color: #FDE68A; font-weight: 700; }
.v2 .v2-test-liens { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.v2 .v2-test a { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
.v2 .v2-test a:hover { color: #FDE68A; }

.v2 .v2-haut { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 20px; margin: 6px 0 4px; }
.v2 .v2-haut .v2-ariane { margin: 0; flex: 1 1 320px; }
.v2 .v2-retour { order: -1; display: inline-flex; align-items: center; gap: 6px; font-size: 15px; font-weight: 600; color: var(--v2-bleu); text-decoration: none; padding: 4px 0; }
.v2 .v2-retour span[aria-hidden] { font-size: 22px; line-height: 1; margin-top: -2px; }
.v2 .v2-retour:hover { color: var(--v2-rouge); }
.v2 .v2-retour:hover [data-v2-origine-nom] { text-decoration: underline; }

.v2 .v2-parcours { margin-left: auto; }
.v2 .v2-parcours ol { display: flex; align-items: center; margin: 0; padding: 0; list-style: none; }
.v2 .v2-parcours li { display: flex; align-items: center; margin: 0; padding: 0; font-size: 13px; color: var(--v2-encre-3); white-space: nowrap; }
.v2 .v2-parcours li + li::before { content: ""; display: block; width: 22px; height: 1px; background: #C6CBD6; margin: 0 8px; }
.v2 .v2-parcours li a { display: flex; align-items: center; color: var(--v2-bleu); text-decoration: none; }
.v2 .v2-parcours li a:hover { color: var(--v2-rouge); text-decoration: underline; }
.v2 .v2-parcours-num { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; border: 1px solid #C6CBD6; font-size: 11px; font-weight: 700; margin-right: 6px; color: var(--v2-encre-3); background: #fff; }
.v2 .v2-parcours-fait .v2-parcours-num { border-color: var(--v2-bleu); color: var(--v2-bleu); }
.v2 .v2-parcours-actuel { color: var(--v2-encre); font-weight: 700; }
.v2 .v2-parcours-actuel .v2-parcours-num { background: var(--v2-bleu); border-color: var(--v2-bleu); color: #fff; }

.v2 .v2-date-indispo { background: #FFF7E0; border: 1px solid #F0D48A; color: #6B4E00; font-size: 15px; padding: 10px 16px; border-radius: 6px; margin: 6px 0 12px; }

@keyframes v2-flash { 0% { background: #FFF1C9; } 100% { background: #fff; } }
.v2 .v2-bloc.v2-flash { animation: v2-flash 2.2s ease-out 1; }

.v2 .v2-sessions tr.v2-ligne-vue td { background: #F1F5FC; }
.v2 .v2-sessions tr.v2-ligne-vue .v2-dates-deux { background: transparent; }
.v2 .v2-vue-badge { display: block; width: fit-content; font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: var(--v2-bleu); background: #E3EAF6; border-radius: 3px; padding: 1px 6px; margin: 0 0 4px; }

@media (prefers-reduced-motion: reduce) { .v2 .v2-bloc.v2-flash { animation: none; } }

@media screen and (max-width: 767px) {
	.v2 .v2-test { font-size: 12px; padding: 6px 10px; }
	.v2 .v2-haut { gap: 4px 12px; }
	/* Page ville : la place au-dessus du titre sert au fil d'Ariane ; les etapes restent sur centre et commande. */
	.v2 .v2-parcours-1 { display: none; }
	.v2 .v2-parcours { margin-left: 0; width: 100%; }
	.v2 .v2-parcours li { font-size: 12px; }
	.v2 .v2-parcours li + li::before { width: 12px; margin: 0 6px; }
	.v2 .v2-retour { width: 100%; font-size: 15px; }
}

/* ==================================================================================
   Phase 4c (14/09) : page ville — choix de la formation, dans le style des onglets de l'accueil
   (onglets-accueil.css : barre sur fond gris clair, element actif blanc en relief, accent rouge de marque,
   etiquette rouge sur fond rose). La version 4b (une couleur par formation) a ete jugee trop « cheap ».
   ================================================================================== */
.v2 .v2-types { margin: 14px 0 26px; }
.v2 .v2-types-titre { font-size: 14px; font-weight: 600; letter-spacing: .02em; color: var(--v2-encre-3); margin: 0 0 10px; }
.v2 .v2-types-liste { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin: 0; padding: 6px; list-style: none; background: #F3F4F7; border-radius: 16px; }
.v2 .v2-types-liste li { margin: 0; padding: 0; list-style: none; }
.v2 a.v2-type { display: flex; align-items: center; gap: 14px; height: 100%; padding: 12px 14px; border-radius: 12px; color: var(--v2-encre-2); text-decoration: none; background: transparent; transition: background .16s ease, box-shadow .16s ease, color .16s ease; }
.v2 a.v2-type:hover { background: rgba(255, 255, 255, .72); color: var(--v2-encre); }
.v2 a.v2-type:focus-visible { outline: 2px solid var(--v2-rouge); outline-offset: -2px; }
.v2 .v2-type-duree { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 54px; height: 54px; border-radius: 14px; background: #fff; box-shadow: inset 0 0 0 1px #E3E6EC; font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1; color: var(--v2-encre-3); transition: background .16s ease, color .16s ease, box-shadow .16s ease; }
.v2 .v2-type-duree strong { font-size: 24px; font-weight: 800; letter-spacing: -.02em; line-height: 1; color: var(--v2-encre); margin-bottom: 3px; }
.v2 .v2-type-texte { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.v2 .v2-type-nom { font-size: 15px; font-weight: 700; line-height: 1.25; color: var(--v2-encre); }
.v2 .v2-type-infos { font-size: 13px; line-height: 1.3; color: var(--v2-encre-3); }
/* Formation affichee : element blanc en relief, pastille de duree au rouge de marque. */
.v2 a.v2-type.v2-type-actif { background: #fff; color: var(--v2-encre); box-shadow: 0 1px 2px rgba(17, 24, 39, .10), 0 0 0 1px rgba(17, 24, 39, .04), 0 8px 20px rgba(17, 24, 39, .06); }
.v2 a.v2-type.v2-type-actif .v2-type-duree { background: var(--v2-rouge); box-shadow: 0 4px 10px rgba(230, 33, 23, .28); color: rgba(255, 255, 255, .88); }
.v2 a.v2-type.v2-type-actif .v2-type-duree strong { color: #fff; }

/* Etiquette de la formation affichee, au-dessus du titre (composant .oa-etiquette de l'accueil). */
.v2 .v2-formation-affichee { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0 0 12px; }
.v2 .v2-etiquette { display: block; width: fit-content; font-size: 14px; font-weight: 600; line-height: 1; color: #C81B12; background: #FDF0EE; border-radius: 999px; padding: 8px 15px; }
.v2 .v2-etiquette-pour { font-size: 14px; line-height: 1.4; color: var(--v2-encre-3); }

@media screen and (max-width: 1199px) {
	.v2 a.v2-type { gap: 10px; padding: 10px; }
	.v2 .v2-type-duree { width: 48px; height: 48px; }
	.v2 .v2-type-duree strong { font-size: 21px; }
	.v2 .v2-type-nom { font-size: 14px; }
}
@media screen and (max-width: 991px) {
	.v2 .v2-types-liste { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media screen and (max-width: 767px) {
	.v2 .v2-types { margin: 8px 0 18px; }
	.v2 .v2-types-titre { font-size: 13px; margin-bottom: 8px; }
	.v2 .v2-types-liste { gap: 4px; padding: 4px; border-radius: 14px; }
	.v2 a.v2-type { gap: 9px; padding: 8px; border-radius: 10px; }
	.v2 .v2-type-duree { width: 42px; height: 42px; border-radius: 11px; font-size: 9px; }
	.v2 .v2-type-duree strong { font-size: 18px; margin-bottom: 2px; }
	.v2 .v2-type-nom { font-size: 13px; }
	.v2 .v2-type-infos { font-size: 12px; }
	/* Mobile : le prix reste, le nombre de sessions (repris dans la synthese) est masque. */
	.v2 .v2-type-nb { display: none; }
	.v2 .v2-etiquette { font-size: 13px; padding: 7px 13px; }
	.v2 .v2-etiquette-pour { font-size: 13px; }
}

/* ==================================================================================
   Phase 4d (14/09) : colonne de droite de la page ville au style des cartes de la colonne du site
   (theme.css, `.col-md-3.alignl` : carte blanche 12 px, titre en capitales grises, filet entre les
   entrees, pastille rouge, survol rouge). Demande Samy, capture du bloc « Villes de la region ».
   ================================================================================== */
.v2 .v2-ville-cote { gap: 14px; }
.v2 .v2-ville-cote .v2-cadre-cote { background: #fff; border: 1px solid #E8EAF0; border-radius: 12px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); padding: 18px 20px; font-size: 15px; color: var(--v2-encre); text-align: left; }
.v2 .v2-ville-cote .v2-cadre-cote h2 { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-encre-3); text-align: left; line-height: 1.35; margin: 0 0 4px; padding: 0; border: 0; }

.v2 .v2-liste-cote { margin: 0; padding: 0; list-style: none; }
.v2 .v2-liste-cote li { margin: 0; padding: 0; list-style: none; border-top: 1px solid #E8EAF0; }
.v2 .v2-liste-cote li:first-child { border-top: 0; }
.v2 .v2-liste-cote a { display: block; position: relative; padding: 10px 0 10px 16px; color: var(--v2-encre); font-size: 14px; font-weight: 500; line-height: 1.45; text-decoration: none; transition: color .15s ease; }
.v2 .v2-liste-cote a::before { content: ""; position: absolute; left: 2px; top: calc(10px + .58em); width: 5px; height: 5px; border-radius: 50%; background: var(--v2-rouge); opacity: .75; }
.v2 .v2-liste-cote a:hover, .v2 .v2-liste-cote a:focus { color: var(--v2-rouge); text-decoration: none; }

.v2 .v2-ville-cote .v2-cote-paiement p { font-size: 14px; line-height: 1.5; color: var(--v2-encre-2); margin: 6px 0 12px; }
.v2 .v2-ville-cote .v2-cote-logos { justify-content: flex-start; }

.v2 .v2-ville-cote .v2-cote-tel .v2-tel { margin: 8px 0 2px; }
.v2 .v2-ville-cote .v2-cote-tel .v2-tel a { display: inline-flex; align-items: center; gap: 8px; font-size: 22px; font-weight: 700; letter-spacing: -.01em; color: var(--v2-encre); text-decoration: none; }
.v2 .v2-ville-cote .v2-cote-tel .v2-tel a:hover { color: var(--v2-rouge); }
.v2 .v2-ville-cote .v2-cote-tel .v2-tel svg { width: 20px; height: 20px; color: var(--v2-rouge); }
.v2 .v2-ville-cote .v2-cote-tel .v2-tel-horaires { font-size: 13px; color: var(--v2-encre-3); margin: 0; padding-bottom: 14px; border-bottom: 1px solid #E8EAF0; }
.v2 .v2-ville-cote .v2-cote-qualiopi { display: block; width: 130px; height: auto; margin: 14px 0 0; }

.v2 .v2-ville-cote .v2-engagements ul { gap: 0; }
.v2 .v2-ville-cote .v2-engagements li { gap: 10px; align-items: flex-start; padding: 10px 0; border-top: 1px solid #E8EAF0; font-size: 14px; line-height: 1.45; color: var(--v2-encre-2); }
.v2 .v2-ville-cote .v2-engagements li:first-child { border-top: 0; }
.v2 .v2-ville-cote .v2-engagements li strong { color: var(--v2-encre); font-weight: 600; }
.v2 .v2-ville-cote .v2-engagements svg { color: var(--v2-rouge); width: 16px; height: 16px; margin-top: 2px; }

/* ==================================================================================
   Phase 4e (14/09) : filtres et tableau des sessions de la page ville, meme structure, habilles au style
   du site (accueil + colonne) : carte 12 px, filets #E8EAF0, en-tetes en capitales grises, accent rouge
   de marque, boutons plats. Demande Samy : « juste legerement le faire coller avec le theme ».
   + LIGNE ENTIERE CLIQUABLE par de vrais liens (survol = adresse, clic molette = nouvel onglet) :
   le lien du centre couvre sa case (::after), un lien vide aria-hidden couvre chacune des autres cases.
   Le positionnement se fait sur les cases (td), pas sur la ligne (tr), mal gere par d'anciens navigateurs.
   ================================================================================== */
/* -- Mois : puces -- */
.v2.v2-ville .v2-puce-filtre { font-size: 14px; font-weight: 600; color: var(--v2-encre-2); background: #fff; border: 1px solid #E3E6EC; border-radius: 999px; padding: 7px 14px; transition: border-color .15s ease, color .15s ease, background .15s ease; }
.v2.v2-ville .v2-puce-filtre:hover { border-color: #C9CED8; color: var(--v2-encre); }
.v2.v2-ville .v2-puce-filtre.v2-puce-active { color: #C81B12; background: #FDF0EE; border-color: #F5CFCA; }
.v2.v2-ville .v2-puce-filtre:focus-visible { outline: 2px solid var(--v2-rouge); outline-offset: 2px; }

/* -- Menus deroulants -- */
.v2.v2-ville .v2-select-filtre { height: 42px; padding: 0 12px; font-size: 15px; color: var(--v2-encre); background-color: #fff; border: 1px solid #E3E6EC; border-radius: 10px; box-shadow: 0 1px 2px rgba(17, 24, 39, .04); }
.v2.v2-ville .v2-select-filtre:hover { border-color: #C9CED8; }

/* -- Tri : barre segmentee, comme les onglets de l'accueil -- */
.v2.v2-ville .v2-tri { background: #F3F4F7; border-radius: 12px; padding: 4px; gap: 4px; }
.v2.v2-ville .v2-tri-bouton + .v2-tri-bouton { margin-left: 0; }
.v2.v2-ville .v2-tri-bouton { font-size: 14px; font-weight: 600; color: var(--v2-encre-2); background: transparent; border: 0; border-radius: 9px; padding: 8px 14px; transition: background .15s ease, color .15s ease, box-shadow .15s ease; }
.v2.v2-ville .v2-tri-bouton:hover { color: var(--v2-encre); background: rgba(255, 255, 255, .7); }
.v2.v2-ville .v2-tri-bouton.v2-tri-actif { color: #C81B12; background: #fff; border: 0; box-shadow: 0 1px 2px rgba(17, 24, 39, .10), 0 0 0 1px rgba(17, 24, 39, .04); }

/* -- Tableau : carte -- */
.v2.v2-ville .v2-sessions { border-collapse: separate; border-spacing: 0; border: 1px solid #E8EAF0; border-radius: 12px; overflow: hidden; background: #fff; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); }
.v2.v2-ville .v2-sessions thead th { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-encre-3); background: #fff; padding: 13px 14px; border-bottom: 1px solid #E8EAF0; }
.v2.v2-ville .v2-sessions thead th:first-child { text-align: left; padding-left: 22px; }
.v2.v2-ville .v2-sessions tr.v2-separateur th { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--v2-encre-2); background: #F7F8FA; padding: 9px 22px; border: 0; border-bottom: 1px solid #E8EAF0; }
.v2.v2-ville .v2-sessions td { position: relative; background: #fff; border-bottom: 1px solid #EEF0F4; padding: 18px 14px 18px 22px; transition: background .15s ease; }
.v2.v2-ville .v2-sessions tr.v2-ligne-session:hover td { background: #FAFBFC; }
.v2.v2-ville .v2-sessions tr.v2-ligne-session:hover td:first-child { box-shadow: inset 3px 0 0 var(--v2-rouge); }

/* -- Liens couvrant les cases -- */
.v2.v2-ville .v2-sessions a.v2-lieu-lien::after,
.v2.v2-ville .v2-sessions a.v2-cellule-lien { content: ""; position: absolute; inset: 0; z-index: 1; }
.v2.v2-ville .v2-sessions a.v2-cellule-lien { display: block; }
.v2.v2-ville .v2-sessions .v2-bouton-ligne { position: relative; z-index: 2; }

/* -- Cases -- */
.v2.v2-ville .v2-lieu-ville { font-size: 19px; font-weight: 700; letter-spacing: -.01em; color: var(--v2-encre); transition: color .15s ease; }
.v2.v2-ville .v2-lieu-ville span { font-size: 15px; font-weight: 500; letter-spacing: 0; color: var(--v2-encre-3); }
.v2.v2-ville .v2-lieu-lien:hover .v2-lieu-ville,
.v2.v2-ville tr.v2-ligne-session:hover .v2-lieu-ville { color: var(--v2-rouge); }
.v2.v2-ville .v2-lieu-adresse { font-size: 14px; color: var(--v2-encre-2); margin-top: 3px; }
.v2.v2-ville .v2-lieu-km { font-size: 12px; font-weight: 600; color: var(--v2-encre-3); margin-top: 6px; }
.v2.v2-ville .v2-dates-deux { border-left: 2px solid #E3E6EC; background: transparent; padding: 2px 0 2px 12px; gap: 4px; font-size: 15px; color: var(--v2-encre-2); }
.v2.v2-ville .v2-dates-deux strong { color: var(--v2-encre); font-weight: 700; }
.v2.v2-ville .v2-sessions .v2-places { font-size: 13px; font-weight: 600; margin-top: 8px; }
.v2.v2-ville .v2-sessions .v2-places::before { display: inline-block; width: 6px; height: 6px; margin-right: 6px; vertical-align: 2px; }
.v2.v2-ville .v2-prix-case { font-size: 22px; font-weight: 700; letter-spacing: -.01em; color: var(--v2-encre); padding: 4px 10px; }
.v2.v2-ville .v2-prix-case.v2-prix-bas { color: var(--v2-vert); background: #E8F5EE; border-radius: 8px; }
.v2.v2-ville .v2-bouton-ligne { font-size: 15px; font-weight: 600; padding: 10px 18px; border-radius: 10px; box-shadow: 0 1px 2px rgba(230, 33, 23, .25); }
.v2.v2-ville .v2-bouton-ligne:active { transform: none; box-shadow: 0 1px 2px rgba(230, 33, 23, .25); }
.v2.v2-ville .v2-sessions tr.v2-ligne-vue td { background: #FDF7F6; }
.v2.v2-ville .v2-vue-badge { color: #C81B12; background: #FDF0EE; border-radius: 999px; padding: 2px 8px; }

/* -- Sous le tableau -- */
.v2.v2-ville .v2-aucune { border: 1px solid #E8EAF0; border-radius: 12px; margin-top: 8px; color: var(--v2-encre-2); }
.v2.v2-ville .v2-suivantes { gap: 10px; background: #fff; border: 1px solid #E3E6EC; border-radius: 12px; color: var(--v2-encre); font-size: 15px; font-weight: 600; padding: 12px 22px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); transition: border-color .15s ease, color .15s ease; }
.v2.v2-ville .v2-suivantes span { max-width: none; }
.v2.v2-ville .v2-suivantes svg { width: 20px; height: 20px; color: var(--v2-rouge); }
.v2.v2-ville .v2-suivantes:hover { background: #fff; border-color: var(--v2-rouge); color: var(--v2-rouge); }

@media screen and (max-width: 767px) {
	.v2.v2-ville .v2-sessions td { padding: 14px 10px 14px 14px; }
	.v2.v2-ville .v2-lieu-ville { font-size: 17px; }
	.v2.v2-ville .v2-lieu-ville span { font-size: 14px; }
	.v2.v2-ville .v2-dates-mobile { font-size: 14px; color: var(--v2-encre); }
	.v2.v2-ville .v2-places-mobile { font-size: 13px; }
	.v2.v2-ville .v2-bouton-ligne { font-size: 15px; padding: 9px 12px; }
	.v2.v2-ville .v2-sessions tr.v2-separateur th { padding: 8px 14px; }
	.v2.v2-ville .v2-tri { width: 100%; }
	.v2.v2-ville .v2-tri-bouton { flex: 1 1 0; }
}

/* ==================================================================================
   Phase 4f (14/09) : centres, villes proches + texte de la page ville sur TOUTE LA LARGEUR, sous la grille.
   Sur tablette et mobile (une colonne), la grille s'efface (display: contents) pour garder l'ordre
   d'avant : contenu principal, centres, villes proches, texte, puis la colonne de liens en dernier.
   ================================================================================== */
.v2 .v2-ville-bas { margin-top: 28px; }
.v2 .v2-ville-bas .v2-grille-villes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.v2 .v2-ville-bas .v2-centres-cartes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.v2 .v2-ville-bas .v2-villes-proches { columns: 2; column-gap: 40px; }
.v2 .v2-ville-bas .v2-villes-proches li { break-inside: avoid; }

@media screen and (max-width: 991px) {
	.v2.v2-ville { display: flex; flex-direction: column; }
	.v2.v2-ville .v2-ville-grille { display: contents; }
	.v2.v2-ville .v2-ville-principal { order: 1; }
	.v2.v2-ville .v2-ville-bas { order: 2; }
	.v2.v2-ville .v2-ville-cote { order: 3; margin-top: 28px; }
	.v2 .v2-ville-bas .v2-grille-villes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.v2 .v2-ville-bas .v2-villes-proches { columns: 1; }
	.v2 .v2-ville-bas .v2-centres-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media screen and (max-width: 767px) {
	.v2 .v2-ville-bas .v2-centres-cartes { grid-template-columns: minmax(0, 1fr); }
}

/* Phase 4h (14/09, demande Samy) : colonne de liens plus etroite (1/4 de la largeur, comme le col-md-3 du site)
   et police des listes reduite. */
.v2-ville-grille { grid-template-columns: minmax(0, 3fr) minmax(0, 1fr); }
.v2 .v2-ville-cote .v2-cadre-cote { padding: 16px 16px; }
.v2 .v2-ville-cote .v2-cadre-cote h2 { font-size: 11px; }
.v2 .v2-liste-cote a { font-size: 13px; padding: 8px 0 8px 14px; }
.v2 .v2-liste-cote a::before { top: calc(8px + .56em); }
.v2 .v2-ville-cote .v2-cote-paiement p, .v2 .v2-ville-cote .v2-engagements li { font-size: 13px; }
.v2 .v2-ville-cote .v2-cote-tel .v2-tel a { font-size: 20px; }
.v2 .v2-ville-cote .v2-cote-tel .v2-tel-horaires { font-size: 12px; }
@media screen and (max-width: 991px) {
	.v2-ville-grille { grid-template-columns: minmax(0, 1fr); }
}

/* Phase 4i (14/09) : colonne « Formation » du tableau avec l'icone de la V1 reproduite en texte. */
.v2.v2-ville .v2-sessions th:nth-child(1) { width: 31%; }
.v2.v2-ville .v2-sessions th:nth-child(2) { width: 22%; }
.v2.v2-ville .v2-sessions th:nth-child(3) { width: 16%; }
.v2.v2-ville .v2-sessions th:nth-child(4) { width: 13%; }
.v2.v2-ville .v2-sessions th:nth-child(5) { width: 18%; }
.v2.v2-ville .v2-sessions .v2-col-formation { text-align: center; padding-left: 8px; padding-right: 8px; }
.v2 .v2-icone-formation { display: inline-flex; align-items: center; gap: 3px; color: var(--v2-encre); line-height: 1; white-space: nowrap; }
.v2 .v2-if-bloc { display: inline-flex; flex-direction: column; align-items: center; }
.v2 .v2-if-sigle { font-size: 24px; font-weight: 800; letter-spacing: -.03em; line-height: .95; }
.v2 .v2-if-duree { font-size: 11px; font-weight: 600; letter-spacing: -.01em; margin-top: 2px; color: var(--v2-encre-2); }
.v2 .v2-if-plus { font-size: 14px; font-weight: 700; align-self: flex-start; margin-top: 4px; }
.v2.v2-ville .v2-prix-case { font-size: 20px; padding: 4px 6px; }
@media screen and (max-width: 1199px) {
	.v2 .v2-if-sigle { font-size: 20px; }
}
@media screen and (max-width: 767px) {
	.v2 .v2-sessions .v2-col-formation { display: none; }
}

/* Samy 14/09/2026 : deux numeros de telephone l'un sous l'autre. */
.v2 .v2-tel + .v2-tel { margin-top: 4px; }
.v2 .v2-ville-cote .v2-cote-tel .v2-tel + .v2-tel { margin-top: 2px; }

/* Samy 14/09/2026 : icone de la formation au-dessus du bouton, sur mobile uniquement (demande Samy). */
.v2 .v2-icone-mobile { display: none; }
@media screen and (max-width: 767px) {
	.v2.v2-ville .v2-icone-mobile { display: flex; justify-content: center; margin: 0 0 8px; }
	.v2.v2-ville .v2-icone-mobile .v2-if-sigle { font-size: 19px; }
	.v2.v2-ville .v2-icone-mobile .v2-if-duree { font-size: 10px; }
	.v2.v2-ville .v2-icone-mobile .v2-if-plus { font-size: 12px; margin-top: 3px; }
}

/* ==================================================================================
   Phase 5b (14/09) : FICHE CENTRE — reprise des ameliorations de la page ville (demande Samy) :
   onglets de formation, etiquette, cartes au style du site (12 px, titres en capitales grises),
   telephone en gras a icone rouge, boutons plats, tableau des dates en carte avec icone de formation
   et ligne entiere cliquable. Structure inchangee.
   ================================================================================== */
.v2.v2-centre .v2-types { margin: 8px 0 20px; }
.v2.v2-centre .v2-bande { border-radius: 12px; overflow: hidden; background: #F5F6F8; }
.v2 .v2-formation-affichee-centre { margin: 12px 0 16px 26px; }

/* -- Blocs Adresse / Dates -- */
.v2.v2-centre .v2-bloc { border: 1px solid #E8EAF0; border-radius: 12px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); padding: 16px 20px; }
.v2.v2-centre .v2-bloc h2 { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-encre-3); margin: 0 0 8px; }
.v2.v2-centre .v2-adresse { color: var(--v2-encre-2); }
.v2.v2-centre .v2-bleu-fort { color: var(--v2-encre); }
.v2.v2-centre .v2-itineraire a { color: var(--v2-encre); text-decoration: none; font-weight: 600; }
.v2.v2-centre .v2-itineraire a:hover { color: var(--v2-rouge); }
.v2.v2-centre .v2-itineraire svg { color: var(--v2-rouge); }
.v2.v2-centre .v2-date { color: var(--v2-encre); }
.v2.v2-centre .v2-horaires { color: var(--v2-encre-2); }
.v2.v2-centre .v2-prix-grand { color: var(--v2-encre); font-weight: 700; letter-spacing: -.02em; }
.v2.v2-centre .v2-prix-grand .v2-ttc { font-weight: 600; }
.v2.v2-centre .v2-changer-titre { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-encre-3); margin: 0 0 8px; }
.v2.v2-centre .v2-select-ligne select { height: 42px; padding: 0 12px; color: var(--v2-encre); border: 1px solid #E3E6EC; border-radius: 10px; box-shadow: 0 1px 2px rgba(17, 24, 39, .04); }
.v2.v2-centre .v2-statut a { color: var(--v2-encre); }
.v2.v2-centre .v2-statut a:hover { color: var(--v2-rouge); }

/* -- Telephone + bouton -- */
.v2.v2-centre .v2-bande-action .v2-tel a { color: var(--v2-encre); font-size: 26px; font-weight: 700; letter-spacing: -.01em; }
.v2.v2-centre .v2-bande-action .v2-tel a:hover { color: var(--v2-rouge); }
.v2.v2-centre .v2-bande-action .v2-tel svg { color: var(--v2-rouge); width: 22px; height: 22px; }
.v2.v2-centre .v2-tel-libelle { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-encre-3); margin-top: 8px; }
.v2.v2-centre .v2-tel-horaires { font-size: 13px; color: var(--v2-encre-3); }
.v2.v2-centre .v2-bouton-grand { border-radius: 12px; font-size: 24px; box-shadow: 0 6px 16px rgba(230, 33, 23, .25); }
.v2.v2-centre .v2-bouton:active { transform: none; }
.v2.v2-centre .v2-immediat { color: var(--v2-encre-3); font-size: 13px; }
.v2.v2-centre .v2-bouton-contour { color: var(--v2-encre); background: #fff; border: 1px solid #E3E6EC; border-radius: 10px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); }
.v2.v2-centre .v2-bouton-contour:hover { color: var(--v2-rouge); background: #fff; border-color: var(--v2-rouge); }

/* -- Carte « Votre formation » -- */
.v2.v2-centre .v2-carte { border: 1px solid #E8EAF0; border-radius: 12px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); }
.v2.v2-centre .v2-titre-section { font-size: 22px; font-weight: 700; letter-spacing: -.01em; }
.v2.v2-centre .v2-formation .v2-puces { list-style: none; padding-left: 0; }
.v2.v2-centre .v2-formation .v2-puces li { position: relative; padding-left: 22px; font-size: 16px; color: var(--v2-encre-2); margin-bottom: 14px; }
.v2.v2-centre .v2-formation .v2-puces li::before { content: ""; position: absolute; left: 6px; top: .72em; width: 6px; height: 6px; border-radius: 50%; background: var(--v2-rouge); opacity: .6; }
.v2.v2-centre .v2-formation .v2-puces strong { color: var(--v2-encre); font-weight: 600; }
.v2.v2-centre .v2-lien { color: var(--v2-encre); font-weight: 600; }
.v2.v2-centre .v2-lien:hover { color: var(--v2-rouge); }
.v2.v2-centre .v2-atouts { background: #F7F8FA; border-left: 0; border-radius: 12px; }
.v2.v2-centre .v2-atouts li { font-size: 15px; color: var(--v2-encre-2); }
.v2.v2-centre .v2-atouts li strong { color: var(--v2-encre); font-weight: 600; }
.v2.v2-centre .v2-atouts svg { color: var(--v2-rouge); }

/* -- Tableau des prochaines dates -- */
.v2.v2-centre .v2-titre-bleu { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-encre-3); text-align: left; margin: 0 0 10px; }
.v2.v2-centre .v2-dates-table { border-collapse: separate; border-spacing: 0; border: 1px solid #E8EAF0; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); }
.v2.v2-centre .v2-dates-table td { position: relative; background: #fff; border-bottom: 1px solid #EEF0F4; padding: 12px 12px; font-size: 15px; transition: background .15s ease; }
.v2.v2-centre .v2-dates-table tr:nth-child(even) td { background: #fff; }
.v2.v2-centre .v2-dates-table tr:hover td { background: #FAFBFC; }
.v2.v2-centre .v2-dates-table tr:hover td:first-child,
.v2.v2-centre .v2-dates-table tr.v2-ligne-active td:first-child { box-shadow: inset 3px 0 0 var(--v2-rouge); }
.v2.v2-centre .v2-dates-table tr.v2-ligne-active td { background: #FDF7F6; }
.v2.v2-centre .v2-dates-table .v2-td-date { color: var(--v2-encre); }
.v2.v2-centre .v2-dates-table .v2-td-formation { text-align: center; padding-left: 4px; padding-right: 4px; }
.v2.v2-centre .v2-dates-table .v2-if-sigle { font-size: 18px; }
.v2.v2-centre .v2-dates-table .v2-if-duree { font-size: 10px; }
.v2.v2-centre .v2-dates-table .v2-if-plus { font-size: 12px; margin-top: 3px; }
.v2.v2-centre .v2-dates-table .v2-td-prix { color: var(--v2-encre); font-size: 18px; font-weight: 700; }
.v2.v2-centre .v2-dates-table a.v2-cellule-lien { position: absolute; inset: 0; z-index: 1; display: block; }
.v2.v2-centre .v2-dates-table .v2-bouton-petit { position: relative; z-index: 2; font-size: 14px; font-weight: 600; padding: 8px 14px; border-radius: 10px; box-shadow: 0 1px 2px rgba(230, 33, 23, .25); }
.v2.v2-centre .v2-plus { background: #fff; border: 1px solid #E3E6EC; border-radius: 12px; color: var(--v2-encre); box-shadow: 0 1px 2px rgba(17, 24, 39, .05); }
.v2.v2-centre .v2-plus:hover { border-color: var(--v2-rouge); color: var(--v2-rouge); }

/* -- Pastilles « Egalement a cette adresse » / « Les autres formations » (les deux pages) -- */
.v2 .v2-pastilles a { color: var(--v2-encre-2); background: #fff; border: 1px solid #E3E6EC; font-size: 14px; }
.v2 .v2-pastilles a:hover { color: var(--v2-rouge); background: #fff; border-color: var(--v2-rouge); }

@media screen and (max-width: 991px) {
	.v2 .v2-formation-affichee-centre { margin-left: 16px; margin-right: 16px; }
}
@media screen and (max-width: 767px) {
	.v2.v2-centre .v2-dates-table .v2-td-formation { display: none; }
	.v2.v2-centre .v2-icone-mobile { display: flex; justify-content: flex-end; margin: 0 0 6px; }
	.v2.v2-centre .v2-bande-action .v2-tel a { font-size: 24px; }
	.v2.v2-centre .v2-titre-section { font-size: 20px; }
}

/* Samy 14/09/2026 : texte editorial repris de la fiche centre V1, sur toute la largeur (comme la page ville). */
.v2 .v2-texte-centre { max-width: none; }
.v2 .v2-texte-centre ul { list-style: disc; padding-left: 22px; margin: 0 0 14px; }
.v2 .v2-texte-centre li { font-size: 16px; line-height: 1.6; margin-bottom: 6px; float: none; }
.v2 .v2-texte-centre img { max-width: 100%; height: auto; margin-top: 8px; }

/* Samy 14/09/2026 : blocs de liens de la V1 en bas des pages ville et centre, au style des cartes de la colonne de droite. */
.v2 .v2-maillage { display: flex; flex-direction: column; gap: 14px; margin: 10px 0 30px; }
.v2 .v2-maillage-carte { background: #fff; border: 1px solid #E8EAF0; border-radius: 12px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); padding: 18px 20px; }
.v2 .v2-maillage-carte h2 { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-encre-3); text-align: left; line-height: 1.35; margin: 0 0 8px; padding: 0; border: 0; }
.v2 .v2-maillage-colonnes { columns: 4; column-gap: 28px; }
.v2 .v2-maillage-colonnes li { break-inside: avoid; border-top: 0; }
.v2 .v2-maillage-colonnes a { font-size: 13px; padding: 5px 0 5px 14px; }
.v2 .v2-maillage-colonnes a::before { top: calc(5px + .56em); }
@media screen and (max-width: 991px) { .v2 .v2-maillage-colonnes { columns: 3; } }
@media screen and (max-width: 767px) { .v2 .v2-maillage-colonnes { columns: 2; column-gap: 16px; } }

/* ==================================================================================
   Phase 5e (14/09) : « Centres de formation … a proximite » (page ville et fiche centre) au style du site.
   ================================================================================== */
.v2 .v2-cc-section { margin: 0 0 32px; }
.v2 .v2-cc-titre-section { font-size: 22px; font-weight: 700; letter-spacing: -.01em; color: var(--v2-encre); margin: 0 0 14px; background: none; padding: 0; }
.v2 .v2-cc-titre-section small { font-size: 15px; font-weight: 500; color: var(--v2-encre-3); letter-spacing: 0; }
.v2 .v2-cc-liste { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; }
.v2 .v2-cc { position: relative; display: flex; flex-direction: column; margin: 0; padding: 16px 18px 14px; list-style: none; background: #fff; border: 1px solid #E8EAF0; border-radius: 12px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); transition: border-color .15s ease, box-shadow .15s ease; }
.v2 .v2-cc:hover { border-color: #F2B8B3; box-shadow: 0 6px 18px rgba(17, 24, 39, .08); }
.v2 .v2-cc-couvre { position: absolute; inset: 0; z-index: 1; border-radius: 12px; }
.v2 .v2-cc-distance { align-self: flex-start; font-size: 12px; font-weight: 600; line-height: 1; color: var(--v2-encre-2); background: #F3F4F7; border-radius: 999px; padding: 6px 10px; margin: 0 0 10px; }
.v2 .v2-cc-titre { font-size: 18px; font-weight: 700; line-height: 1.25; letter-spacing: -.01em; margin: 0 0 4px; }
.v2 .v2-cc-titre a { color: var(--v2-encre); text-decoration: none; transition: color .15s ease; }
.v2 .v2-cc-titre a span { font-size: 15px; font-weight: 500; color: var(--v2-encre-3); }
.v2 .v2-cc:hover .v2-cc-titre a { color: var(--v2-rouge); }
.v2 .v2-cc-adresse { font-size: 14px; line-height: 1.4; color: var(--v2-encre-2); margin: 0 0 6px; }
.v2 .v2-cc-infos { font-size: 13px; line-height: 1.4; color: var(--v2-encre-3); margin: 0 0 12px; }
.v2 .v2-cc-pied { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: auto; padding-top: 12px; border-top: 1px solid #EEF0F4; }
.v2 .v2-cc-prix { font-size: 13px; color: var(--v2-encre-3); }
.v2 .v2-cc-prix strong { font-size: 19px; font-weight: 700; color: var(--v2-encre); letter-spacing: -.01em; }
.v2 .v2-cc-fleche { font-size: 13px; font-weight: 600; color: var(--v2-rouge); white-space: nowrap; }
.v2 .v2-cc-dates { position: relative; z-index: 2; font-size: 13px; font-weight: 600; color: var(--v2-encre); background: #fff; border: 1px solid #E3E6EC; border-radius: 999px; padding: 6px 12px; cursor: pointer; white-space: nowrap; transition: border-color .15s ease, color .15s ease; }
.v2 .v2-cc-dates:hover { border-color: var(--v2-rouge); color: var(--v2-rouge); }
.v2 .v2-cc-dates:focus-visible, .v2 .v2-cc-titre a:focus-visible { outline: 2px solid var(--v2-rouge); outline-offset: 2px; }
@media screen and (max-width: 991px) { .v2 .v2-cc-liste { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media screen and (max-width: 767px) { .v2 .v2-cc-liste { grid-template-columns: minmax(0, 1fr); } .v2 .v2-cc-titre-section { font-size: 20px; } }

/* ==================================================================================
   Phase 5f (14/09) : textes du bas des pages ville et centre AU STYLE DES ARTICLES (demande Samy).
   Valeurs relevees sur un article en ligne (theme.css, .content_list, 10/09 et 13/09) : police systeme,
   texte 20 px graisse 300 interligne 1,65 encre #111827, h2 27 px 650 rouge de marque, h3 650 gris,
   pas de gras dans le texte courant, liens bleus a trait discret (rouges au survol), carte blanche 12 px.
   Largeur : pleine (demande Samy du 14/09 sur la page ville), sans la mesure de 68ch des articles.
   ================================================================================== */
.v2 section.v2-texte { max-width: none; background: #fff; border: 1px solid #E8EAF0; border-left: 1px solid #E8EAF0; border-radius: 12px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); padding: 34px 40px; margin: 0 0 26px; color: #111827; }
.v2 section.v2-texte h2 { font-size: 27px; font-weight: 650; line-height: 1.25; letter-spacing: -.012em; color: var(--v2-rouge); text-wrap: pretty; margin: 1.5em 0 .5em; }
.v2 section.v2-texte > h2:first-child, .v2 section.v2-texte h2:first-of-type { margin-top: 0; }
.v2 section.v2-texte h3 { font-size: 19px; font-weight: 650; line-height: 1.3; letter-spacing: -.012em; color: var(--v2-encre-2); margin: 1.5em 0 .4em; }
.v2 section.v2-texte p { font-size: 20px; font-weight: 300; line-height: 1.65; color: #111827; margin: 0 0 20px; }
.v2 section.v2-texte h2 + p, .v2 section.v2-texte h3 + p { margin-top: 0; }
.v2 section.v2-texte ul { list-style: disc; padding-left: 26px; margin: 0 0 20px; }
.v2 section.v2-texte ul li { list-style: disc; float: none; font-size: 20px; font-weight: 300; line-height: 1.65; color: #111827; margin: 0; }
.v2 section.v2-texte p strong, .v2 section.v2-texte p b, .v2 section.v2-texte li strong, .v2 section.v2-texte li b { font-weight: inherit; }
.v2 section.v2-texte a:not(.v2-pastilles a) { color: var(--v2-bleu); font-weight: inherit; text-decoration: none; border-bottom: 1px solid rgba(59, 89, 152, .30); transition: border-color .15s ease, color .15s ease; }
.v2 section.v2-texte a:not(.v2-pastilles a):hover, .v2 section.v2-texte a:not(.v2-pastilles a):focus { color: var(--v2-rouge); border-bottom-color: currentColor; }
.v2 section.v2-texte a:has(img) { border-bottom: 0; }
.v2 section.v2-texte img { max-width: 100%; height: auto; border-radius: 10px; }
.v2 section.v2-texte .v2-pastilles { margin-top: 4px; }
.v2 section.v2-texte .v2-pastilles li { list-style: none; font-size: inherit; line-height: normal; }

/* Encadre « Liste des villes proches / Les autres formations / Recherche… » (page ville), meme habillage. */
.v2 .v2-encadre-ville { background: #fff; border: 1px solid #E8EAF0; border-radius: 12px; box-shadow: 0 1px 2px rgba(17, 24, 39, .05); padding: 34px 40px 26px; margin: 0 0 26px; color: #111827; }
.v2 .v2-encadre-ville h2 { font-size: 27px; font-weight: 650; line-height: 1.25; letter-spacing: -.012em; color: var(--v2-rouge); margin: 0 0 .5em; }
.v2 .v2-encadre-ville * + h2 { margin-top: 1.5em; }
.v2 .v2-encadre-ville .v2-villes-proches { list-style: disc; padding-left: 26px; }
.v2 .v2-encadre-ville .v2-villes-proches li { list-style: disc; font-size: 18px; font-weight: 300; line-height: 1.6; color: #111827; margin: 0 0 8px; }
.v2 .v2-encadre-ville .v2-villes-proches a, .v2 .v2-encadre-ville .v2-grille-villes a { color: var(--v2-bleu); font-weight: 400; text-decoration: none; border-bottom: 1px solid rgba(59, 89, 152, .30); transition: border-color .15s ease, color .15s ease; }
.v2 .v2-encadre-ville .v2-villes-proches a:hover, .v2 .v2-encadre-ville .v2-grille-villes a:hover { color: var(--v2-rouge); border-bottom-color: currentColor; }
.v2 .v2-encadre-ville .v2-km-liste { font-size: 15px; color: var(--v2-encre-3); }
.v2 .v2-encadre-ville .v2-grille-villes { padding-left: 0; }
.v2 .v2-encadre-ville .v2-grille-villes a { font-size: 17px; }

@media screen and (max-width: 767px) {
	.v2 section.v2-texte, .v2 .v2-encadre-ville { padding: 22px 18px; }
	.v2 section.v2-texte p, .v2 section.v2-texte ul li { font-size: 17px; line-height: 1.6; }
	.v2 section.v2-texte h2, .v2 .v2-encadre-ville h2 { font-size: 22px; line-height: 1.3; }
	.v2 section.v2-texte h3 { font-size: 18px; }
	.v2 .v2-encadre-ville .v2-villes-proches li { font-size: 16px; }
}
/* Le texte de la ville en base (ville.texte1) place parfois du texte nu directement sous les titres, sans <p> :
   la carte porte donc elle-meme la taille et la graisse du texte courant. */
.v2 section.v2-texte { font-size: 20px; font-weight: 300; line-height: 1.65; }
@media screen and (max-width: 767px) { .v2 section.v2-texte { font-size: 17px; line-height: 1.6; } }
.v2 section.v2-texte ul.v2-pastilles { list-style: none; padding-left: 0; margin: 4px 0 0; }

/* ==================================================================================
   Phase 6a (14/09) : VERSION MOBILE des pages ville et centre (demande Samy).
   Constats a 390 px : premiere session a 915 px (ville), bloc Dates a 962 px (centre), pages de 16 000 px
   (ville) et 10 500 px (centre) a cause des longues listes de liens et des cartes empilees.
   ================================================================================== */
/* Blocs repliables (<details>) : sur ordinateur, le titre ne fait rien et reste un simple titre. */
.v2 details.v2-repli > summary { list-style: none; cursor: default; }
.v2 details.v2-repli > summary::-webkit-details-marker { display: none; }
.v2 details.v2-repli > summary h2 { display: inline; }
@media screen and (min-width: 768px) {
	.v2 details.v2-repli > summary { pointer-events: none; }
}

@media screen and (max-width: 767px) {
	/* -- Haut de page : fil d'Ariane sur une ligne, onglets de formation sur une ligne qui defile -- */
	.v2 .v2-ariane { white-space: nowrap; overflow-x: auto; scrollbar-width: none; font-size: 12px; line-height: 1.6; margin: 0 0 8px; }
	.v2 .v2-ariane::-webkit-scrollbar { display: none; }
	.v2 .v2-ariane span { padding: 0 5px; }
	.v2 .v2-types { margin: 4px 0 14px; }
	.v2 .v2-types-titre { font-size: 12px; margin: 0 0 6px; }
	.v2 .v2-types-liste { display: flex; gap: 6px; padding: 4px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.v2 .v2-types-liste::-webkit-scrollbar { display: none; }
	.v2 .v2-types-liste li { flex: 0 0 auto; scroll-snap-align: center; }
	.v2 a.v2-type { width: 212px; min-height: 64px; padding: 8px 10px; gap: 9px; }
	.v2 a.v2-type.v2-type-actif { padding: 8px 10px; }
	.v2 .v2-type-duree { width: 42px; height: 42px; }
	.v2 .v2-type-nom { font-size: 13px; line-height: 1.2; }

	/* -- Page ville : etiquette, titre et sous-titre resserres -- */
	.v2 .v2-formation-affichee { margin-bottom: 8px; }
	.v2 .v2-formation-affichee .v2-etiquette-pour { display: none; }
	.v2.v2-ville .v2-ville-h1 { font-size: 22px; line-height: 1.25; margin-bottom: 4px; }
	.v2.v2-ville .v2-ville-sous-titre { font-size: 15px; line-height: 1.4; margin-bottom: 12px; }

	/* -- Fiche centre : les dates et le prix avant l'adresse, blocs resserres -- */
	.v2.v2-centre .v2-entete { padding: 12px 16px; }
	.v2.v2-centre .v2-entete h1 { font-size: 19px; }
	.v2 .v2-formation-affichee-centre { margin: 10px 16px 12px; }
	.v2.v2-centre .v2-bande-infos { display: flex; flex-direction: column; }
	.v2.v2-centre .v2-bande-infos > #v2-session { order: 1; }
	.v2.v2-centre .v2-bande-infos > .v2-changer { order: 2; }
	.v2.v2-centre .v2-bande-infos > .v2-statut { order: 3; margin-bottom: 14px; }
	.v2.v2-centre .v2-bande-infos > .v2-bloc:not(#v2-session) { order: 4; }
	.v2.v2-centre .v2-bloc { padding: 14px 16px; margin-bottom: 12px; }
	.v2.v2-centre .v2-prix-grand { font-size: 34px; }
	.v2.v2-centre .v2-bande-action { padding-bottom: 6px; }
	.v2.v2-centre .v2-bande-action .v2-tel a { font-size: 22px; }
	.v2.v2-centre .v2-logos { gap: 10px 28px; padding: 4px 0 18px; }
	.v2.v2-centre .v2-logos .v2-logo:first-child img { width: 120px; }
	.v2.v2-centre .v2-carte { padding: 18px 16px; }
	.v2.v2-centre .v2-formation .v2-puces li { font-size: 15px; margin-bottom: 10px; }

	/* -- Centres a proximite : cartes cote a cote qui defilent au doigt -- */
	.v2 .v2-cc-liste { display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; margin: 0 -15px; padding: 2px 15px 10px; scroll-padding: 0 15px; }
	.v2 .v2-cc-liste::-webkit-scrollbar { display: none; }
	.v2 .v2-cc { flex: 0 0 82%; scroll-snap-align: start; }

	/* -- Listes de liens repliables : titre cliquable avec chevron -- */
	.v2 details.v2-repli > summary { cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
	.v2 details.v2-repli > summary::after { content: ""; flex: 0 0 auto; width: 9px; height: 9px; border-right: 2px solid var(--v2-encre-3); border-bottom: 2px solid var(--v2-encre-3); transform: rotate(45deg); margin: -4px 4px 0 0; transition: transform .2s ease; }
	.v2 details.v2-repli[open] > summary::after { transform: rotate(-135deg); margin-top: 4px; }
	.v2 details.v2-repli > summary h2 { margin: 0; }
	.v2 details.v2-repli:not([open]) { padding-top: 14px; padding-bottom: 14px; }
	.v2 details.v2-repli[open] > summary { margin-bottom: 6px; }

	/* Ecart entre les blocs de liens repliés et la colonne de liens, en bas de la page ville. */
	.v2 .v2-maillage { margin-bottom: 14px; }
	.v2.v2-ville .v2-ville-cote { margin-top: 0; }
}

/* Phase 6b (14/09) : les trois pistes mobiles. */
.v2 .v2-lire-suite { display: none; }
.v2 .v2-encadre-ville details.v2-repli-texte > summary h2 { display: block; }
.v2 .v2-encadre-ville details.v2-repli-texte + h2, .v2 .v2-encadre-ville * + details.v2-repli-texte { margin-top: 1.5em; }
@media screen and (max-width: 767px) {
	/* 1. Texte editorial replie : les 520 premiers pixels, fondu, bouton « Lire la suite ». */
	.v2 section.v2-texte.v2-texte-replie { max-height: 520px; overflow: hidden; position: relative; margin-bottom: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
	.v2 section.v2-texte.v2-texte-replie::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 140px; background: linear-gradient(rgba(255, 255, 255, 0), #fff); }
	.v2 .v2-lire-suite:not([hidden]) { display: block; width: 100%; margin: 0 0 26px; padding: 12px 16px; font-size: 15px; font-weight: 600; color: var(--v2-encre); background: #fff; border: 1px solid #E8EAF0; border-top: 0; border-radius: 0 0 12px 12px; cursor: pointer; }
	.v2 .v2-lire-suite:hover { color: var(--v2-rouge); }
	/* 2. « Liste des villes proches » et « Recherche de formations » : repliables (titre rouge + chevron). */
	.v2 .v2-encadre-ville details.v2-repli-texte > summary h2 { font-size: 20px; margin: 0; }
	.v2 .v2-encadre-ville details.v2-repli-texte:not([open]) { padding: 0; }
	.v2 .v2-encadre-ville * + details.v2-repli-texte { margin-top: 18px; }
	/* 3. Fiche centre : « Encore des places disponibles. Reserver cette date » fait doublon avec le bouton et la barre du bas. */
	.v2.v2-centre .v2-bande-infos > .v2-statut { display: none; }
}
