/* =========================================================================
   PAGES — accueil, article, rubrique, hub/ville, contact, auteur, 404, recherche.
   ========================================================================= */

/* -------------------------------------------------------------------------
   HÉROS ZÉNITHAL — le titre posé dans le bassin (procédé 1)
   ------------------------------------------------------------------------- */
.piscin3_hero_photo {
	position: relative;
	border-radius: 14px;
	overflow: hidden;
	aspect-ratio: 16 / 10;
	min-width: 0;
}
.piscin3_hero_photo img { width: 100%; height: 100%; object-fit: cover; }
/* Procédé 1 (DA) : le titre posé DANS l'eau de la photo — AUCUN dégradé (verdict
   27/09 #1). Juste du texte blanc, une ombre portée légère pour la lisibilité. */
.piscin3_hero_eau {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	padding: 40px 44px 40px;
	color: #fff;
	/* Voile UNI (pas un dégradé) : garantit le contraste sur une photo claire (R-0575).
	   Renforcé le 27/09 (rubrique Équipement mesurée à 2,88:1 avec 0,42). */
	background: rgba(21,32,34,0.6);
}
.piscin3_hero_eau .piscin3_surtitre { color: #fff; font-weight: 700; text-shadow: 0 2px 10px rgba(21,32,34,0.55); }
.piscin3_hero_eau h1 {
	color: #fff;
	font-size: clamp(40px, 5vw, 88px);
	text-transform: uppercase;
	letter-spacing: 0.01em;
	margin: 6px 0 14px;
	max-width: 16ch;
	text-shadow: 0 3px 18px rgba(21,32,34,0.55), 0 1px 4px rgba(21,32,34,0.6);
}
.piscin3_hero_eau .piscin3_chapo { color: rgba(255,255,255,0.94); max-width: 46ch; margin-bottom: 22px; text-shadow: 0 2px 10px rgba(21,32,34,0.55); }
.piscin3_hero_eau .piscin3_btn_clair { border-color: #fff; }
/* H1 = promesse du site (verdict 27/09 bis, B1) ; l'article à la une passe en H2. */
.piscin3_hero_soustitre {
	color: #fff;
	font-family: var(--f-corps);
	font-size: 18px;
	font-weight: 700;
	text-transform: none;
	margin: 4px 0 10px;
	max-width: 40ch;
	text-shadow: 0 2px 10px rgba(21,32,34,0.55);
}
.piscin3_hero_soustitre_cat { display: inline-block; color: var(--eau); margin-right: 8px; }
.piscin3_hero_soustitre a { color: inherit; text-decoration: underline; text-decoration-color: rgba(255,255,255,0.5); }
.piscin3_hero_soustitre a:hover { text-decoration-color: #fff; }

/* Héros d'accueil : boîte plus haute + H1-promesse plus compact — le H1 sur 5
   lignes à 88px débordait par le haut de la carte à 1440 (verdict v2 #1). */
.piscin3_hero_photo_accueil { aspect-ratio: 4 / 3; min-height: 480px; }
.piscin3_hero_eau h1.piscin3_hero_promesse {
	font-size: clamp(24px, 2.8vw, 42px);
	line-height: 1.15;
	max-width: 22ch;
	margin: 4px 0 8px;
	text-shadow: 0 3px 14px rgba(21,32,34,0.6), 0 1px 4px rgba(21,32,34,0.65);
}
@media (max-width: 700px) {
	.piscin3_hero_photo_accueil { aspect-ratio: 3 / 4; min-height: 420px; }
}

@media (max-width: 700px) {
	.piscin3_hero_photo { aspect-ratio: 3 / 4; min-height: 420px; }
	.piscin3_hero_eau { padding: 24px 18px 22px; }
	.piscin3_hero_eau .piscin3_chapo { display: none; }
	.piscin3_hero_eau h1 { margin-bottom: 10px; }
}

/* Accueil : héros + fil, en FLEXBOX (P-410 v2 #1) — la grille "fr" laissait la
   carte turquoise déborder sur le fil malgré minmax(0,fr)+min-width:0 ; flex-basis:0%
   force un partage strict de l'espace, immunisé contre tout calage aspect-ratio. */
.piscin3_hero_grid { display: flex; flex-wrap: wrap; gap: 28px; align-items: stretch; }
.piscin3_hero_grid > .piscin3_hero_photo { flex: 2 1 0%; min-width: 0; }
.piscin3_hero_grid > .piscin3_fil { flex: 1 1 0%; min-width: 280px; }
@media (max-width: 900px) {
	.piscin3_hero_grid > .piscin3_hero_photo,
	.piscin3_hero_grid > .piscin3_fil { flex: 1 1 100%; min-width: 0; }
}

.piscin3_fil { background: var(--eau-claire); border-radius: 14px; padding: 26px; display: flex; flex-direction: column; min-width: 0; }
.piscin3_fil h2 { font-size: 20px; margin-bottom: 6px; }
.piscin3_fil_intro { font-size: 14px; color: var(--joint); margin-bottom: 16px; }
.piscin3_fil_liste { display: flex; flex-direction: column; }
.piscin3_fil_item {
	display: flex; align-items: center; gap: 12px;
	padding: 12px 0;
	border-top: 1px solid rgba(21,32,34,0.08);
	min-width: 0;
}
.piscin3_fil_liste li:first-child .piscin3_fil_item { border-top: none; padding-top: 0; }
.piscin3_fil_vignette { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; flex: 0 0 auto; }
.piscin3_fil_texte { min-width: 0; }
.piscin3_fil_meta { display: block; font-size: 12px; font-weight: 700; text-transform: uppercase; color: var(--eau-fonce); white-space: nowrap; }
.piscin3_fil_titre { display: block; font-size: 15px; font-weight: 600; line-height: 1.3; color: var(--encre); }

/* -------------------------------------------------------------------------
   Tuiles marquage de profondeur — grille
   ------------------------------------------------------------------------- */
.piscin3_grille_tuiles { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 20px; }
@media (max-width: 900px) { .piscin3_grille_tuiles { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; } }
@media (max-width: 480px) {
	/* Grille 2×2 compacte — jamais 1 colonne qui étire la page sur 700 px (micro-passe 27/09 #2). */
	.piscin3_tuile { padding: 18px 10px; }
	.piscin3_marquage { font-size: 44px; }
}

/* -------------------------------------------------------------------------
   Rubriques en cartes
   ------------------------------------------------------------------------- */
/* Flexbox colonne (comme .piscin3_carte, qui elle a toujours affiché son titre) —
   le display:block seul laissait parfois le span-titre sans boîte visible (P-410 v2 #2). */
.piscin3_rubrique_carte {
	position: relative;
	display: flex;
	flex-direction: column;
	border-radius: 14px;
	border: 1px solid var(--bordure);
	background: var(--surface);
	min-width: 0;
}
.piscin3_rubrique_carte_cadre { position: relative; flex: 0 0 auto; aspect-ratio: 4/3; margin: 6px; border-radius: 10px; overflow: hidden; }
.piscin3_rubrique_carte_cadre img { width: 100%; height: 100%; object-fit: cover; }
.piscin3_rubrique_carte_titre { flex: 1 0 auto; display: block; padding: 14px 18px 6px; font-family: var(--f-titre); font-weight: 600; font-size: 19px; color: var(--encre); }
.piscin3_rubrique_carte_chapo { display: block; padding: 0 18px 18px; font-size: 14px; color: var(--joint); }

/* -------------------------------------------------------------------------
   Bande lead (bassin de nuit) — accueil + rubrique + ville
   ------------------------------------------------------------------------- */
.piscin3_lead_grid {
	display: grid;
	grid-template-columns: minmax(0,1fr) minmax(0,1fr);
	gap: 48px;
	align-items: center;
}
@media (max-width: 900px) { .piscin3_lead_grid { grid-template-columns: minmax(0,1fr); } }
.piscin3_lead_texte h2 { font-size: clamp(28px, 4vw, 42px); margin-bottom: 16px; }
.piscin3_lead_texte p { color: var(--sur-anthracite-douce); margin-bottom: 0; max-width: 44ch; }
.piscin3_lead_form_hote { display: flex; justify-content: center; position: relative; }
.piscin3_lead_form_hote .piscin3_escalier { box-shadow: 0 0 60px rgba(0,208,198,0.25); }

/* -------------------------------------------------------------------------
   Banc d'essai
   ------------------------------------------------------------------------- */
.piscin3_banc_carte { position: relative; display: flex; flex-direction: column; background: var(--surface); border-radius: 14px; border: 1px solid var(--bordure); }
.piscin3_banc_carte_cadre { position: relative; flex: 0 0 auto; display: block; aspect-ratio: 4/3; margin: 6px; border-radius: 10px; overflow: hidden; }
.piscin3_banc_carte_cadre img { width: 100%; height: 100%; object-fit: cover; }
.piscin3_banc_carte_corps { flex: 1 0 auto; display: flex; flex-direction: column; padding: 14px 18px 20px; }
.piscin3_banc_carte_titre { font-family: var(--f-titre); font-weight: 600; font-size: 17px; display: block; margin-bottom: 4px; color: var(--encre); }
.piscin3_banc_carte_texte { display: block; font-size: 14px; color: var(--joint); max-width: none; }

/* -------------------------------------------------------------------------
   Saison du bassin
   ------------------------------------------------------------------------- */
.piscin3_saison_carte { position: relative; display: flex; flex-direction: column; border-radius: 14px; border: 2px solid transparent; background: var(--surface); }
.piscin3_saison_carte.is-actuelle { border-color: var(--eau); }
.piscin3_saison_carte_cadre { position: relative; flex: 0 0 auto; display: block; aspect-ratio: 4/3; border-radius: 10px; overflow: hidden; }
.piscin3_saison_carte_cadre img { width: 100%; height: 100%; object-fit: cover; }
.piscin3_saison_badge {
	position: absolute; top: 10px; left: 10px;
	background: var(--eau); color: var(--sur-accent);
	font-size: 11px; font-weight: 700; text-transform: uppercase;
	padding: 5px 10px; border-radius: 999px;
}
.piscin3_saison_carte_titre { flex: 1 0 auto; display: block; padding: 14px 16px 18px; font-family: var(--f-titre); font-weight: 600; font-size: 17px; color: var(--encre); }

/* =========================================================================
   ARTICLE
   ========================================================================= */
.piscin3_article_head { padding: 40px 0 32px; }
.piscin3_article_head_grid { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1fr); gap: 40px; align-items: center; min-width: 0; }
@media (max-width: 900px) { .piscin3_article_head_grid { grid-template-columns: minmax(0,1fr); } }
.piscin3_article_meta { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.piscin3_article_rubrique {
	display: inline-flex; padding: 5px 14px; border-radius: 999px;
	background: var(--eau-claire); color: var(--eau-fonce);
	font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em;
}
.piscin3_article_lecture { font-size: 13px; color: var(--joint); }
.piscin3_article_head h1 { font-size: clamp(32px, 4vw, 56px); font-weight: 600; text-transform: none; margin-bottom: 16px; }
.piscin3_article_head .piscin3_chapo { margin-bottom: 20px; }
.piscin3_article_auteur_mini { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--joint); }
.piscin3_article_auteur_mini img { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; }

.piscin3_article_photo { position: relative; border-radius: 14px; overflow: hidden; aspect-ratio: 4/3; min-width: 0; }
.piscin3_article_photo img { width: 100%; height: 100%; object-fit: cover; }

.piscin3_article_corps_grille { display: grid; grid-template-columns: minmax(0,1fr) 320px; gap: 48px; align-items: start; padding: 8px 0 64px; min-width: 0; }
@media (max-width: 980px) { .piscin3_article_corps_grille { grid-template-columns: minmax(0,1fr); } }

/* Le VRAI enfant de la grille (P-410 #5) : sans min-width:0 ici, un tableau ou un mot
   trop long fait gonfler toute la page à 1589px et casse le débordement mobile. */
.piscin3_article_colonne { min-width: 0; overflow-wrap: break-word; word-break: break-word; }

.piscin3_corps { min-width: 0; font-size: 18px; overflow-wrap: break-word; }
.piscin3_corps > * + * { margin-top: 22px; }
.piscin3_corps h2 { font-size: 32px; margin-top: 48px; scroll-margin-top: 96px; }
.piscin3_corps h3 { font-size: 22px; margin-top: 32px; }
.piscin3_corps p { max-width: 68ch; }
.piscin3_corps img { border-radius: var(--rayon); }
.piscin3_corps blockquote {
	margin: 28px 0; padding: 20px 24px; border-left: 4px solid var(--eau);
	background: var(--eau-claire); border-radius: 0 var(--rayon) var(--rayon) 0;
	font-family: var(--f-titre); font-size: 20px; font-style: italic;
}
/* Listes du corps d'article : jamais une puce ronde de navigateur (P-410 #8c) —
   flotteur turquoise pour les listes simples, jeton anthracite numéroté pour les listes ordonnées. */
.piscin3_corps ul:not(.piscin3_faq):not(.piscin3_sources_liste),
.piscin3_corps ol {
	list-style: none;
	padding-left: 0;
	max-width: 68ch;
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.piscin3_corps ul:not(.piscin3_faq):not(.piscin3_sources_liste) > li,
.piscin3_corps ol > li {
	position: relative;
	padding-left: 30px;
}
.piscin3_corps ul:not(.piscin3_faq):not(.piscin3_sources_liste) > li::before {
	content: '';
	position: absolute; left: 0; top: 10px;
	width: 14px; height: 6px; border-radius: 999px;
	background: var(--eau);
}
.piscin3_corps ol { counter-reset: piscin3-liste; }
.piscin3_corps ol > li { counter-increment: piscin3-liste; }
.piscin3_corps ol > li::before {
	content: counter(piscin3-liste);
	position: absolute; left: 0; top: 0;
	width: 22px; height: 22px; border-radius: 50%;
	background: var(--anthracite); color: #fff;
	font-family: var(--f-titre); font-weight: 700; font-size: 12px;
	display: flex; align-items: center; justify-content: center;
}

/* Sidebar sticky article */
.piscin3_sidebar { display: flex; flex-direction: column; gap: 24px; position: sticky; top: 88px; align-self: start; max-height: calc(100vh - 110px); overflow: visible; }
.piscin3_sidebar_carte {
	background: var(--anthracite); color: var(--sur-anthracite);
	border-radius: 14px; padding: 24px;
}
.piscin3_sidebar_carte h3 { color: #fff; font-size: 20px; margin-bottom: 6px; }
.piscin3_sidebar_carte p { color: var(--sur-anthracite-douce); font-size: 14px; margin-bottom: 14px; }
.piscin3_sidebar_carte .piscin3_escalier { padding: 0; background: transparent; }
.piscin3_sidebar_carte .piscin3_escalier input,
.piscin3_sidebar_carte .piscin3_escalier select { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.18); color: #fff; }
.piscin3_sidebar_carte .piscin3_escalier label { color: var(--sur-anthracite-douce); }
.piscin3_sidebar_carte .piscin3_rgpd, .piscin3_sidebar_carte .piscin3_disclaimer { color: rgba(255,255,255,0.5); }
.piscin3_sidebar_carte .piscin3_rgpd a { color: rgba(255,255,255,0.7); }

/* Sommaire migré dans la colonne collante, au-dessus du formulaire (gate P-538) :
   le 1er paragraphe du corps doit rester visible sans défiler, à 1440 ET 390.
   Compact et repliable au-delà de ~6 lignes. */
.piscin3_sidebar_sommaire { background: var(--surface); border: 1px solid var(--bordure); border-radius: 14px; padding: 16px 18px; max-height: 190px; overflow-y: auto; }
.piscin3_sidebar_sommaire .piscin3_sommaire { padding: 0; border: none; }
.piscin3_sidebar_derniers { background: var(--surface); border: 1px solid var(--bordure); border-radius: 14px; padding: 20px; }
.piscin3_sidebar_derniers h3 { font-size: 15px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--joint); font-family: var(--f-corps); margin-bottom: 12px; }

/* Fiche du bassin (liste numérotée sur filet, réf. Soake) */
.piscin3_fiche_bassin { border-left: 2px solid var(--bordure); padding-left: 0; margin: 32px 0; list-style: none; }
.piscin3_fiche_bassin li { position: relative; padding: 10px 0 10px 34px; }
.piscin3_fiche_bassin li::before {
	counter-increment: fiche;
	content: counter(fiche);
	position: absolute; left: -15px; top: 8px;
	width: 30px; height: 30px; border-radius: 50%;
	background: var(--eau); color: var(--sur-accent);
	font-family: var(--f-titre); font-weight: 700; font-size: 13px;
	display: flex; align-items: center; justify-content: center;
}
.piscin3_fiche_bassin { counter-reset: fiche; }

/* Articles liés */
.piscin3_articles_lies { padding: 8px 0 64px; }
.piscin3_articles_lies h2 { margin-bottom: 24px; }

/* =========================================================================
   RUBRIQUE / CATÉGORIE
   ========================================================================= */
.piscin3_categorie_tete { padding-bottom: 8px; }
.piscin3_categorie_compte { display: inline-flex; margin-top: 18px; }
/* Le compteur a une couleur fixe (anthracite) dans .piscin3_marquage — illisible
   sur le voile sombre du héros (verdict v2 #2) : blanc dans ce contexte. */
.piscin3_hero_eau .piscin3_marquage,
.piscin3_hero_eau .piscin3_marquage_unite { color: #fff; }

/* Grille régulière 3 colonnes — jamais de case vide (verdict 27/09 #11) : la
   grande carte "span 2" décalait le nombre de colonnes et laissait des trous
   dans les rangées suivantes ; retirée, la grille reste uniforme quel que soit
   le nombre d'articles. */
/* --piscin3-cols posé en inline par category.php : la grille s'adapte au nombre
   réel de cartes (2 cartes = 2 colonnes), jamais de case vide (verdict v3 #1). */
.piscin3_categorie_grille { display: grid; grid-template-columns: repeat(var(--piscin3-cols, 3), minmax(0,1fr)); gap: 24px; padding: 40px 0; min-width: 0; }
@media (max-width: 900px) { .piscin3_categorie_grille { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px) { .piscin3_categorie_grille { grid-template-columns: minmax(0,1fr); } }

.piscin3_categorie_accordeon { padding: 8px 0 48px; }
.piscin3_categorie_accordeon details {
	background: var(--surface); border: 1px solid var(--bordure); border-radius: var(--rayon); padding: 4px 20px;
}
.piscin3_categorie_accordeon summary { cursor: pointer; padding: 16px 0; font-weight: 600; list-style: none; }
.piscin3_categorie_accordeon summary::-webkit-details-marker { display: none; }
.piscin3_categorie_accordeon .piscin3_corps { padding-bottom: 18px; }

.piscin3_pagination { display: flex; justify-content: center; gap: 8px; padding: 24px 0 56px; }
.piscin3_pagination a, .piscin3_pagination span {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 38px; height: 38px; border-radius: var(--rayon);
	border: 1px solid var(--bordure); font-size: 14px; font-weight: 600;
}
.piscin3_pagination .current { background: var(--eau); border-color: var(--eau); color: var(--sur-accent); }

/* =========================================================================
   HUB DEVIS / PAGE VILLE
   ========================================================================= */
.piscin3_service_hero { padding: 32px 0 16px; }
.piscin3_service_hero_grid { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,0.9fr); gap: 32px; align-items: stretch; min-width: 0; }
@media (max-width: 900px) { .piscin3_service_hero_grid { grid-template-columns: minmax(0,1fr); } }
.piscin3_service_hero_photo { position: relative; border-radius: 14px; overflow: hidden; min-height: 360px; }
.piscin3_service_hero_photo img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
/* Procédé 1 (DA), même règle que le héros d'accueil : aucun dégradé (verdict 27/09 #1). */
.piscin3_service_hero_eau {
	position: relative; z-index: 1; height: 100%;
	display: flex; flex-direction: column; justify-content: flex-end;
	padding: 36px 32px; min-height: 360px;
	color: #fff;
	background: rgba(21,32,34,0.6); /* voile uni, pas un dégradé (R-0575) */
}
.piscin3_service_hero_eau .piscin3_surtitre { color: #fff; font-weight: 700; text-shadow: 0 2px 10px rgba(21,32,34,0.55); }
.piscin3_service_hero_eau h1 { color: #fff; font-size: clamp(32px, 4vw, 56px); text-transform: uppercase; margin: 6px 0 12px; text-shadow: 0 3px 18px rgba(21,32,34,0.55), 0 1px 4px rgba(21,32,34,0.6); }
.piscin3_service_hero_eau .piscin3_chapo { color: rgba(255,255,255,0.94); text-shadow: 0 2px 10px rgba(21,32,34,0.55); }
.piscin3_service_hero_form { display: flex; align-items: center; }
.piscin3_service_hero_form .piscin3_escalier { width: 100%; max-width: none; }

/* B11 (peaufinage 27/09) : à 390, le bouton "Étape suivante" doit rester au-dessus
   de la ligne de flottaison — la photo-héros est réduite, le formulaire resserré. */
@media (max-width: 700px) {
	.piscin3_service_hero_photo { min-height: 220px; }
	.piscin3_service_hero_eau { min-height: 220px; padding: 20px 18px; }
	.piscin3_service_hero_form .piscin3_escalier { padding: 20px; }
	.piscin3_service_hero_form .piscin3_marches { margin-bottom: 14px; }
	.piscin3_escalier .piscin3_etape legend { font-size: 17px; margin-bottom: 10px; }
	.piscin3_escalier label { margin-bottom: 10px; }
}
@media (max-width: 480px) {
	/* Le chapô sur 5 lignes repoussait "Étape suivante" hors du 1er écran (844 px). */
	.piscin3_service_hero_eau .piscin3_chapo { display: none; }
	.piscin3_service_hero_eau h1 { margin-bottom: 4px; }
}

.piscin3_services_grille { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 20px; padding: 48px 0; }
@media (max-width: 900px) { .piscin3_services_grille { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 560px) { .piscin3_services_grille { grid-template-columns: minmax(0,1fr); } }

.piscin3_villes_bande { padding: 8px 0 56px; }
.piscin3_villes_bande h2 { margin-bottom: 18px; }
.piscin3_villes_bande_grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 32px; align-items: center; }
@media (max-width: 900px) { .piscin3_villes_bande_grid { grid-template-columns: minmax(0,1fr); } }

/* -------------------------------------------------------------------------
   Carte de France interactive (B9, peaufinage 27/09) — svg-maps, CC BY 4.0
   ------------------------------------------------------------------------- */
.piscin3_carte_conteneur { max-width: 420px; margin: 0 auto; }
.piscin3_carte_grande, .piscin3_carte_mini { width: 100%; height: auto; display: block; }
.piscin3_carte_mini { max-width: 280px; margin: 0 auto; }
.piscin3_carte_grande path, .piscin3_carte_mini path {
	fill: var(--surface);
	stroke: var(--bordure);
	stroke-width: 1.4;
}
.piscin3_carte_point circle {
	fill: var(--eau);
	stroke: #fff;
	stroke-width: 2;
	transition: r 160ms ease, fill 160ms ease;
}
a.piscin3_carte_point { cursor: pointer; }
a.piscin3_carte_point:hover circle, a.piscin3_carte_point:focus circle { fill: var(--eau-fonce); }
.piscin3_carte_point.is-actuelle circle { fill: var(--anthracite); stroke: var(--eau); stroke-width: 3; }
.piscin3_carte_credit { text-align: center; font-size: 11px; color: var(--joint); margin-top: 8px; }

/* Modules intercalés dans le mur de texte hub/ville (verdict 27/09 #3) */
.piscin3_module_photo { margin: 40px 0; border-radius: 14px; overflow: hidden; border: 1px solid var(--bordure); }
.piscin3_module_photo img { width: 100%; height: auto; max-height: 420px; object-fit: cover; display: block; }
.piscin3_module_tuiles { margin: 40px 0; padding: 28px; border-radius: 14px; }
.piscin3_module_rappel { margin: 40px 0; padding: 36px 28px; border-radius: 14px; }
.piscin3_module_rappel .piscin3_lead_grid { gap: 24px; }
.piscin3_module_rappel h3 { color: #fff; font-size: 24px; margin-bottom: 8px; }
.piscin3_module_rappel p { color: var(--sur-anthracite-douce); margin-bottom: 0; }
@media (max-width: 700px) {
	.piscin3_module_photo img { max-height: 260px; }
	.piscin3_module_tuiles, .piscin3_module_rappel { padding: 22px 18px; }
}

/* =========================================================================
   CONTACT — tient dans l'écran (CO-007)
   ========================================================================= */
.piscin3_contact_grille {
	display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 0;
	min-height: calc(100vh - 320px); /* resserré (B8, I-CTC-01) : la page tenait sur 2200px */
	border-radius: 14px; overflow: hidden; margin: 16px 0 40px;
	border: 1px solid var(--bordure);
}
@media (max-width: 900px) { .piscin3_contact_grille { grid-template-columns: minmax(0,1fr); min-height: auto; } }
.piscin3_contact_grille .piscin3_contact_form { border-radius: 0; justify-content: center; height: 100%; }
.piscin3_contact_panneau {
	background: var(--anthracite); color: var(--sur-anthracite);
	display: flex; flex-direction: column;
	min-width: 0;
}
.piscin3_contact_photo { position: relative; flex: 1 1 auto; min-height: 160px; margin: 0; }
.piscin3_contact_photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.piscin3_contact_panneau_texte { position: relative; z-index: 1; padding: 32px 36px; display: flex; flex-direction: column; gap: 14px; }
.piscin3_contact_panneau .piscin3_logo img { width: 160px; height: 30px; }
.piscin3_contact_panneau h2 { font-size: 24px; }
.piscin3_contact_panneau p { color: var(--sur-anthracite-douce); max-width: 40ch; margin: 0; }
.piscin3_contact_titre { padding: 24px 0 4px; }
.piscin3_contact_titre h1 { font-size: clamp(32px, 4vw, 56px); }
.piscin3_contact_photo { min-height: 120px; }

/* =========================================================================
   AUTEUR
   ========================================================================= */
.piscin3_auteur_tete { display: flex; align-items: center; gap: 24px; padding: 48px 0 24px; flex-wrap: wrap; }
.piscin3_auteur_tete img { width: 110px; height: 110px; border-radius: 50%; object-fit: cover; border: 3px solid var(--eau-claire); }
.piscin3_auteur_tete h1 { font-size: 36px; }
.piscin3_auteur_role { color: var(--joint); font-size: 15px; margin-top: 4px; }
.piscin3_auteur_bio_longue { max-width: 70ch; padding-bottom: 16px; }
.piscin3_auteur_articles { padding: 24px 0 56px; }

/* =========================================================================
   404 / RECHERCHE
   ========================================================================= */
.piscin3_erreur { text-align: center; padding: 90px var(--marge) 70px; }
.piscin3_erreur h1 { font-size: clamp(64px, 12vw, 140px); color: var(--eau-claire); -webkit-text-stroke: 2px var(--encre); }
.piscin3_erreur p { max-width: 48ch; margin: 12px auto 28px; }
.piscin3_erreur_actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

.piscin3_recherche_tete { padding: 48px 0 8px; }
.piscin3_recherche_form { display: flex; gap: 10px; max-width: 520px; margin: 20px 0 8px; }
.piscin3_recherche_form input[type="search"] {
	flex: 1; padding: 12px 16px; border: 1px solid var(--bordure); border-radius: var(--rayon);
	font-size: 16px; background: var(--surface);
}
.piscin3_recherche_grille { padding: 24px 0 56px; }

/* =========================================================================
   PAGES SECONDAIRES (à propos, mentions, confidentialité — GD-006)
   ========================================================================= */
.piscin3_page_tete { padding: 48px 0 16px; border-bottom: 1px solid var(--bordure); margin-bottom: 32px; }
.piscin3_page_tete h1 { font-size: clamp(40px, 6vw, 72px); text-transform: uppercase; } /* hérite du gabarit héros, verdict 27/09 #12 */
.piscin3_page_corps { padding-bottom: 64px; max-width: 780px; }
.piscin3_page_corps.piscin3_corps { max-width: 780px; }

/* -------------------------------------------------------------------------
   Équipe (page À propos)
   ------------------------------------------------------------------------- */
.piscin3_equipe_grille { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px; margin-top: 28px; }
@media (max-width: 700px) { .piscin3_equipe_grille { grid-template-columns: minmax(0,1fr); } }
.piscin3_equipe_carte {
	display: flex; gap: 18px; align-items: flex-start;
	background: var(--surface); border: 1px solid var(--bordure); border-radius: 14px; padding: 24px;
	min-width: 0;
}
.piscin3_equipe_carte .piscin3_auteur_photo { width: 72px; height: 72px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; border: 2px solid var(--eau-claire); }
.piscin3_equipe_texte { min-width: 0; }
.piscin3_equipe_nom { display: block; font-family: var(--f-titre); font-weight: 700; font-size: 18px; color: var(--encre); }
.piscin3_equipe_role { display: block; font-size: 13px; color: var(--eau-fonce); font-weight: 600; margin: 2px 0 10px; }
.piscin3_equipe_bio { font-size: 14px; color: var(--joint); max-width: 46ch; }

/* Contraste (chk_livraison_site, 27/09) : la carte-formulaire est BLANCHE même posée dans une
   bande anthracite — elle ne doit pas hériter des couleurs claires de la bande. */
.piscin3_lead_form_hote .piscin3_escalier,
.piscin3_lead_form_hote .piscin3_escalier legend,
.piscin3_lead_form_hote .piscin3_escalier label,
.piscin3_lead_form_hote .piscin3_escalier p { color: var(--encre); }
.piscin3_lead_form_hote .piscin3_rgpd,
.piscin3_lead_form_hote .piscin3_disclaimer,
.piscin3_lead_form_hote .piscin3_rgpd a { color: var(--joint); }

/* Contraste (chk_livraison_site) : rôle d’auteur lisible sur carte blanche (3,03:1 → ≥ 4,5:1). */
.piscin3_equipe_role { color: var(--joint); }
