/*
Theme Name: Le Tortillard
Theme URI: https://www.letortillard.fr/
Author: Association Le Tortillard
Description: Thème à blocs de l'association Le Tortillard, train à vapeur au 1/3 à Plaine (Bas-Rhin) : prochaines ouvertures en tableau des départs, réservation, réseau, photos des éditions, bénévoles et infos pratiques.
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 7.4
Version: 1.23.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: le-tortillard
Tags: block-patterns, full-site-editing, one-column, wide-blocks
*/

/* ------------------------------------------------------------
   Accessibilité : focus visible sur fond clair comme sur fond sombre
   ------------------------------------------------------------ */
:where(a, button, input, select, textarea, summary, .wp-element-button):focus-visible {
	outline: 3px solid #1C1C1C;
	outline-offset: 2px;
	box-shadow: 0 0 0 6px #F2B705;
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

html { scroll-behavior: smooth; }
[id] { scroll-margin-top: 1.5rem; }

/* Boutons : cible tactile d'au moins 44 px */
.wp-element-button,
.wp-block-button__link {
	min-height: 48px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
}

/* ------------------------------------------------------------
   Sections pleine largeur de l'accueil : pas d'espace entre elles
   ------------------------------------------------------------ */
.lt-section,
.wp-site-blocks > footer,
.wp-site-blocks > main.lt-pleine-largeur {
	margin-block-start: 0;
}
.wp-block-post-content > .lt-section:last-child { margin-block-end: 0; }

/* En-tête */
.lt-entete { border-bottom: 1px solid var(--wp--preset--color--filet); }
.lt-logo { margin: 0; flex-shrink: 0; }
.lt-logo img { display: block; height: auto; }
.lt-entete .wp-block-navigation a { min-height: 44px; display: inline-flex; align-items: center; }
.lt-entete .wp-block-navigation .wp-block-navigation-item__content { padding-inline: 0.25rem; }

/* Surtitre en capitales */
.lt-surtitre {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-weight: 600;
	font-size: 1.125rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

/* ------------------------------------------------------------
   Haut de l'accueil : texte sur diaporama ou vidéo
   ------------------------------------------------------------ */
.lt-heros {
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	justify-content: center;
	overflow: hidden;
	/* Toute la hauteur de l'écran sous l'en-tête, mesuré par le script placé après lui. */
	min-height: calc(100vh - var(--lt-entete, 100px) - var(--wp-admin--admin-bar--height, 0px));
	min-height: calc(100svh - var(--lt-entete, 100px) - var(--wp-admin--admin-bar--height, 0px));
}
/* Le panneau se place dans le tiers supérieur : l'espace libre se partage
   pour un tiers au-dessus et deux tiers au-dessous. */
.lt-heros::before,
.lt-heros::after { content: ""; }
.lt-heros::before { flex: 1; }
.lt-heros::after { flex: 2; }
.lt-heros > .lt-heros-media { position: absolute; inset: 0; max-width: none !important; }
.lt-diapo,
.lt-heros-video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.lt-diapo,
.lt-heros-video { opacity: 0; transition: opacity 1.2s ease; }
.lt-diapo.est-visible,
.lt-heros-video.est-visible { opacity: 1; }
.lt-heros > .lt-heros-contenu { position: relative; z-index: 1; width: 100%; margin-block-start: 0; }
.lt-heros-panneau {
	position: relative;
	box-sizing: border-box;
	width: fit-content;
	max-width: 48rem;
	margin-inline: auto;
	padding: 2.75rem 3rem;
	border-radius: 14px;
	background: rgba(0, 0, 0, 0.65);
}
/* Pastille de la prochaine ouverture : à cheval sur le haut du panneau, à droite */
.lt-heros-panneau > .lt-pastille {
	position: absolute;
	top: 0;
	right: 3rem;
	margin: 0;
	transform: translateY(-50%);
	white-space: nowrap;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
}
.lt-heros-panneau > .wp-block-buttons { margin-block-start: var(--wp--preset--spacing--60); }
.lt-heros-pause,
.lt-heros-son {
	position: absolute;
	right: 1.25rem;
	bottom: 1.25rem;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid rgba(255, 255, 255, 0.6);
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.5);
	color: var(--wp--preset--color--blanc);
	cursor: pointer;
}
.lt-heros-pause[hidden],
.lt-heros-son[hidden] { display: none; }
/* Bouton du son : juste à gauche du bouton pause */
.lt-heros-son { right: calc(1.25rem + 52px); }
.lt-heros-pause svg,
.lt-heros-son svg { display: block; fill: currentColor; }
.lt-heros-pause .lt-ico-lecture,
.lt-heros-pause.est-en-pause .lt-ico-pause { display: none; }
.lt-heros-pause.est-en-pause .lt-ico-lecture { display: block; }
.lt-heros-son .lt-ico-son-actif,
.lt-heros-son.est-actif .lt-ico-son-coupe { display: none; }
.lt-heros-son.est-actif .lt-ico-son-actif { display: block; }
/* Sous 1100 px, les boutons pause et son passent sous le panneau de texte */
@media (max-width: 1100px) {
	.lt-heros > .lt-heros-contenu { padding-bottom: 5rem !important; }
}
/* Flèche qui invite à faire défiler la page, en bas au centre. Elle n'apparaît que si
   l'écran est assez haut pour la loger sous le panneau, sans le chevaucher. */
.lt-heros > .lt-heros-defiler {
	position: absolute;
	bottom: 1.25rem;
	left: 50%;
	z-index: 2;
	display: none;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	margin: 0;
	border: 1px solid rgba(255, 255, 255, 0.6);
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.5);
	color: var(--wp--preset--color--blanc);
	transform: translateX(-50%);
	animation: lt-rebond 2.4s ease-in-out infinite;
}
.lt-heros-defiler svg { display: block; }
@keyframes lt-rebond {
	0%, 100% { transform: translate(-50%, 0); }
	50% { transform: translate(-50%, 6px); }
}
@media (min-width: 1101px) and (min-height: 800px), (min-width: 782px) and (min-height: 870px) {
	.lt-heros > .lt-heros-defiler { display: flex; }
	.lt-heros > .lt-heros-contenu { padding-bottom: 4.75rem !important; }
}
@media (prefers-reduced-motion: reduce) {
	.lt-heros > .lt-heros-defiler { animation: none; }
}
/* Macaron des avis Google : en bas à droite du panneau, sur la ligne des chiffres */
.lt-chiffres > .lt-avis-google {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	align-self: flex-end;
	gap: 0.25rem;
	box-sizing: border-box;
	width: 6.5rem;
	height: 6.5rem;
	/* Remonte à côté des boutons pour ne pas agrandir le panneau. */
	margin-block-start: -2.75rem;
	margin-inline-start: auto;
	border-radius: 50%;
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--encre);
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	transition: transform 0.2s ease;
}
.lt-chiffres > .lt-avis-google:hover { transform: scale(1.05); }
.lt-avis-g { width: 24px; height: 24px; }
.lt-avis-etoiles { width: 72px; height: 14.4px; fill: var(--wp--preset--color--signal); }
/* Sur petit écran, pastille sous les chiffres */
@media (max-width: 781px) {
	.lt-chiffres > .lt-avis-google {
		flex-direction: row;
		gap: 0.5rem;
		width: fit-content;
		height: 40px;
		margin-block-start: 0;
		padding-inline: 0.75rem;
		border-radius: 999px;
	}
	.lt-avis-g { width: 18px; height: 18px; }
	.lt-avis-etoiles { width: 65px; height: 13px; }
}
@media (max-width: 781px) {
	.lt-heros-panneau { width: auto; padding: 2.25rem 1.75rem 1.75rem; }
	.lt-heros-panneau > .lt-pastille { right: 1.25rem; font-size: 0.8125rem; }
}

/* Pastille « Prochaine ouverture » */
.lt-pastille {
	display: inline-block;
	width: fit-content;
	padding: 0.35rem 0.9rem;
	border-radius: 999px;
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--encre);
	font-weight: 600;
}

/* Chiffres clés du héros */
.lt-chiffre {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-weight: 700;
	font-size: 2.25rem;
	line-height: 1;
	margin: 0;
}
.lt-chiffres > .wp-block-group { gap: 0.25rem; }
.lt-chiffres p { margin: 0; }

/* Images arrondies */
.lt-arrondi img,
img.lt-arrondi { border-radius: 14px; }
.wp-block-post-featured-image.lt-arrondi img { border-radius: 12px; }

/* ------------------------------------------------------------
   Style de tableau « Tableau des départs »
   ------------------------------------------------------------ */
.wp-block-table.is-style-tableau-departs {
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--ardoise);
	color: #F4F1E6;
	border-radius: 16px;
	padding: 1.5rem 2rem;
	overflow-x: auto;
}
.wp-block-table.is-style-tableau-departs figcaption {
	order: -1;
	margin: 0 0 1rem;
	text-align: left;
	color: var(--wp--preset--color--signal);
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-weight: 600;
	font-size: 1rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
.wp-block-table.is-style-tableau-departs table {
	border-collapse: collapse;
	width: 100%;
	font-family: var(--wp--preset--font-family--barlow-condensed);
}
.wp-block-table.is-style-tableau-departs thead { border-bottom: 0; }
.wp-block-table.is-style-tableau-departs th,
.wp-block-table.is-style-tableau-departs td {
	border: 0;
	border-bottom: 1px solid #6E6E6E;
	padding: 1rem 1rem 1rem 0;
	text-align: left;
	vertical-align: middle;
}
.wp-block-table.is-style-tableau-departs thead th {
	padding-top: 0;
	font-weight: 500;
	font-size: 1rem;
	color: #E0E0E0;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.wp-block-table.is-style-tableau-departs tbody td:nth-child(1) { font-size: 1.875rem; font-weight: 700; }
.wp-block-table.is-style-tableau-departs tbody td:nth-child(2) { font-size: 1.875rem; font-weight: 600; color: var(--wp--preset--color--signal); }
.wp-block-table.is-style-tableau-departs th:last-child,
.wp-block-table.is-style-tableau-departs td:last-child { text-align: right; padding-right: 0; }
.wp-block-table.is-style-tableau-departs tbody tr:last-child td { border-bottom: 0; padding-bottom: 0; }
.wp-block-table.is-style-tableau-departs td a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 1.1rem;
	border: 2px solid var(--wp--preset--color--signal);
	border-radius: 8px;
	color: var(--wp--preset--color--signal);
	font-family: var(--wp--preset--font-family--barlow);
	font-size: 1rem;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
}
.wp-block-table.is-style-tableau-departs td a:hover {
	background: var(--wp--preset--color--signal);
	color: var(--wp--preset--color--encre);
}
@media (max-width: 640px) {
	.wp-block-table.is-style-tableau-departs { padding: 1.25rem; }
	.wp-block-table.is-style-tableau-departs thead { display: none; }
	.wp-block-table.is-style-tableau-departs tbody tr {
		display: grid;
		grid-template-columns: 1fr auto;
		align-items: center;
		column-gap: 0.75rem;
		padding: 0.75rem 0;
		border-top: 1px solid #6E6E6E;
	}
	.wp-block-table.is-style-tableau-departs tbody td { border: 0; padding: 0; }
	.wp-block-table.is-style-tableau-departs tbody tr:last-child { padding-bottom: 0; }
	.wp-block-table.is-style-tableau-departs tbody td:nth-child(1),
	.wp-block-table.is-style-tableau-departs tbody td:nth-child(2) { grid-column: 1; font-size: 1.5rem; line-height: 1.15; }
	.wp-block-table.is-style-tableau-departs td:last-child { grid-column: 2; grid-row: 1 / span 2; }
}

/* Tableau réduit, avec l'affiche de l'évènement à droite */
.lt-ouverture--affiche {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 22rem);
	gap: var(--wp--preset--spacing--50);
}
.lt-ouverture--affiche > figure { margin: 0; }
.lt-affiche { display: block; }
.lt-affiche img { display: block; width: 100%; height: auto; border-radius: 16px; }
@media (max-width: 781px) {
	.lt-ouverture--affiche { grid-template-columns: minmax(0, 1fr); }
}

.lt-ouvertures-vide {
	padding: 1.5rem 2rem;
	border-radius: 16px;
	background: var(--wp--preset--color--ardoise);
	color: #F4F1E6;
}

/* ------------------------------------------------------------
   Style de groupe « Carte »
   ------------------------------------------------------------ */
.wp-block-group.is-style-carte {
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--encre);
	border: 1px solid var(--wp--preset--color--filet);
	border-radius: 14px;
	padding: var(--wp--preset--spacing--50);
}
.wp-block-group.is-style-carte > * { margin-block: 0; }
.wp-block-group.is-style-carte > * + * { margin-block-start: 0.5rem; }

.lt-valeur {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-weight: 700;
	font-size: 2rem;
	line-height: 1.1;
}

/* Numéros des étapes de la visite */
.lt-etape-numero {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-weight: 700;
	font-size: 2.75rem;
	line-height: 1;
	color: var(--wp--preset--color--graphite);
}

/* Photos des étapes de la visite : toute la largeur du bloc, arrondies en haut seulement */
.wp-block-group.is-style-carte > .lt-etape-photo {
	margin-block-start: calc(-1 * var(--wp--preset--spacing--50));
	margin-inline: calc(-1 * var(--wp--preset--spacing--50));
}
.lt-etape-photo img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: 14px 14px 0 0;
}
.wp-block-group.is-style-carte > .lt-etape-photo + * { margin-block-start: var(--wp--preset--spacing--50); }

/* ------------------------------------------------------------
   Style de liste « Liste de liens »
   ------------------------------------------------------------ */
.wp-block-list.is-style-liste-liens {
	list-style: none;
	padding: 0;
	border-top: 1px solid var(--wp--preset--color--filet);
}
.wp-block-list.is-style-liste-liens li {
	margin: 0;
	border-bottom: 1px solid var(--wp--preset--color--filet);
}
.wp-block-list.is-style-liste-liens a {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	min-height: 60px;
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-weight: 600;
	font-size: 1.5rem;
	color: var(--wp--preset--color--encre);
	text-decoration: none;
}
.wp-block-list.is-style-liste-liens a::after {
	content: "→";
	color: var(--wp--preset--color--graphite);
}
.wp-block-list.is-style-liste-liens a:hover { color: var(--wp--preset--color--graphite); }

/* ------------------------------------------------------------
   Formulaire bénévole [tortillard_benevole]
   ------------------------------------------------------------ */
.lt-formulaire { display: flex; flex-direction: column; gap: 1rem; margin-top: 1rem; }
.lt-formulaire p { margin: 0; }
.lt-champs-duo {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
	gap: 1rem;
}
.lt-champ { display: flex; flex-direction: column; gap: 0.35rem; }
.lt-champ label { font-weight: 600; }
.lt-facultatif, .lt-aide {
	font-weight: 400;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--gris);
}
.lt-formulaire input[type="text"],
.lt-formulaire input[type="email"],
.lt-formulaire textarea {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	padding: 0.65rem 0.85rem;
	border: 1px solid #8C8C8C;
	border-radius: 8px;
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--encre);
	font: inherit;
}
.lt-formulaire textarea { min-height: 8.5rem; resize: vertical; }
.lt-formulaire input:focus-visible,
.lt-formulaire textarea:focus-visible { border-color: var(--wp--preset--color--graphite); }
.lt-envoi .wp-element-button { border: 0; cursor: pointer; min-width: 10rem; }
.lt-mention {
	font-size: 0.875rem;
	line-height: 1.45;
	color: var(--wp--preset--color--gris);
}
.lt-message {
	padding: 0.85rem 1rem;
	border-radius: 8px;
	font-weight: 500;
}
.lt-message--ok { background: #EDEDED; color: #2B2B2B; border: 1px solid #BDBDBD; }
.lt-message--erreur { background: #FBEAEA; color: #8A1C1C; border: 1px solid #E3A9A9; }
.lt-pot {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* ------------------------------------------------------------
   Formulaire « Être prévenu » [tortillard_alerte] (extension Newsletter)
   ------------------------------------------------------------ */
.lt-alerte .tnp-subscription-minimal { flex: 1 1 22rem; max-width: 30rem; margin: 0; }
.lt-alerte .tnp-subscription-minimal form { display: flex; flex-wrap: wrap; gap: 0.75rem; white-space: normal; }
.lt-alerte .tnp-subscription-minimal input.tnp-email {
	flex: 1 1 14rem;
	width: auto;
	max-width: none;
	min-height: 48px;
	margin: 0;
	padding: 0.65rem 0.85rem;
	border: 1px solid #8C8C8C;
	border-radius: 8px;
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--encre);
	font: inherit;
}
.lt-alerte .tnp-subscription-minimal input.tnp-submit {
	flex: 0 0 auto;
	width: auto;
	min-height: 48px;
	margin: 0;
	padding: 0 1.4rem;
	border: 0;
	border-radius: 8px;
	background: var(--wp--preset--color--graphite);
	color: var(--wp--preset--color--blanc);
	font: inherit;
	font-weight: 600;
	cursor: pointer;
}
.lt-alerte .tnp-subscription-minimal input.tnp-submit:hover { background: var(--wp--preset--color--anthracite); }

/* Formulaire bénévole en pleine largeur sur l'accueil */
.lt-benevoles-carte .lt-formulaire {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: start;
	gap: 1rem;
}
.lt-benevoles-carte .lt-champs-duo,
.lt-benevoles-carte .lt-mention { grid-column: span 2; }
.lt-benevoles-carte .lt-champ--message,
.lt-benevoles-carte .lt-message { grid-column: 1 / -1; }
.lt-benevoles-carte .lt-formulaire textarea { min-height: 6.5rem; }
.lt-benevoles-carte .lt-mention { align-self: center; }
.lt-benevoles-carte .lt-envoi { justify-self: end; }
@media (max-width: 781px) {
	.lt-benevoles-carte .lt-formulaire { grid-template-columns: minmax(0, 1fr); }
	.lt-benevoles-carte .lt-champs-duo,
	.lt-benevoles-carte .lt-mention { grid-column: auto; }
	.lt-benevoles-carte .lt-envoi { justify-self: stretch; }
	.lt-benevoles-carte .lt-envoi .wp-element-button { width: 100%; }
}

/* Pied de page */
.lt-pied a { text-underline-offset: 3px; }
.lt-pied .wp-block-navigation a { min-height: 44px; display: inline-flex; align-items: center; }

/* En-tête et menu sur mobile */
@media (max-width: 781px) {
	.lt-logo img { width: 150px !important; }
	.lt-entete .wp-block-group > .wp-block-group:last-child {
		width: 100%;
		justify-content: space-between;
	}
	.lt-entete .wp-block-navigation { order: 2; }
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
	align-items: flex-start;
	gap: 0.5rem;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	font-family: var(--wp--preset--font-family--barlow-condensed);
	font-size: 1.75rem;
	font-weight: 600;
}

/* ------------------------------------------------------------
   Pages de contenu : grille sur toute la largeur
   ------------------------------------------------------------ */
.lt-grille {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--wp--preset--spacing--60);
	align-items: start;
}
.lt-grille-cellule > :first-child { margin-block-start: 0; }
.lt-grille-cellule > :last-child { margin-block-end: 0; }
.lt-grille-cellule--image + .lt-grille-cellule--texte,
.lt-grille-cellule--texte:has(+ .lt-grille-cellule--image) { align-self: center; }
.lt-grille :is(input, select, textarea).wpcf7-form-control:not(.wpcf7-submit) {
	width: 100%;
	box-sizing: border-box;
}
.lt-grille .tnp-subscription { margin-inline: 0; }
.lt-grille-cellule--large { grid-column: 1 / -1; }
.lt-grille-cellule--colonnes {
	columns: 2;
	column-gap: var(--wp--preset--spacing--60);
}
.lt-grille-cellule--colonnes > * { break-inside: avoid; }
.lt-grille-cellule--colonnes > :is(h2, h3, h4) { break-after: avoid; }
.lt-grille img { max-width: 100%; height: auto; }
.lt-grille-cellule--image img {
	display: block;
	width: 100%;
	border-radius: 14px;
}
.lt-grille-cellule--image p,
.lt-grille-cellule--image figure { margin: 0; }
.lt-grille .wp-caption { width: auto !important; max-width: 100%; }
.lt-grille figcaption {
	margin-block-start: 0.5rem;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--gris);
}
.lt-grille-cellule--video > * { margin-block: 0; }
.lt-grille-cellule--video > * + * { margin-block-start: 0.5rem; }
.lt-grille-cellule--video iframe {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	border: 0;
	border-radius: 14px;
}
@media (max-width: 781px) {
	.lt-grille { grid-template-columns: minmax(0, 1fr); }
	.lt-grille-cellule--colonnes { columns: auto; }
}

/* ------------------------------------------------------------
   Galerie de photos de l'accueil : toute la largeur, 3 colonnes
   ------------------------------------------------------------ */
.lt-galerie-grille {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 2px;
}
.lt-galerie-photo {
	display: block;
	overflow: hidden;
	aspect-ratio: 3 / 2;
	background: var(--wp--preset--color--brume);
}
.lt-galerie-photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease, filter 0.6s ease;
}
.lt-galerie-photo:hover img,
.lt-galerie-photo:focus-visible img { transform: scale(1.04); filter: brightness(1.08); }
.lt-galerie-photo:focus-visible { position: relative; z-index: 1; outline-offset: -3px; }
@media (max-width: 1024px) {
	.lt-galerie-grille { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ------------------------------------------------------------
   Visionneuse d'images (extension Lightbox 2) : bouton « Fermer » en français
   à la place de l'image « CLOSE » de l'extension
   ------------------------------------------------------------ */
#stimuli_lightbox #stimuli_imageData #stimuli_bottomNavClose {
	width: auto;
	background: none;
	color: #ccc;
	font: 700 0.75rem/1 var(--wp--preset--font-family--barlow), Verdana, sans-serif;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
}
#stimuli_lightbox #stimuli_imageData #stimuli_bottomNavClose::after { content: "Fermer ×"; }
#stimuli_lightbox #stimuli_imageData #stimuli_bottomNavClose:hover { color: #fff; }

/* ------------------------------------------------------------
   Référencement : section « Découvrir » de l'accueil et pages thématiques
   ------------------------------------------------------------ */
/* Paragraphe d'introduction : lignes moins longues sur grand écran */
.lt-chapo { max-width: 52rem; }
/* Mot composé jamais coupé au trait d'union (week-end, Bas-Rhin) */
.lt-insecable { white-space: nowrap; }

/* ------------------------------------------------------------
   Page Contact : même bandeau que l'accueil, en moins haut ;
   formulaire dans une carte, aux couleurs du site
   ------------------------------------------------------------ */
.lt-heros.lt-heros--page {
	min-height: max(24rem, 52vh);
	min-height: max(24rem, 52svh);
}
.lt-heros--page::after { flex: 1; }
.lt-heros--page > .lt-heros-contenu { padding-bottom: var(--wp--preset--spacing--60) !important; }
.lt-contact-formulaire .wpcf7 { margin-block-start: var(--wp--preset--spacing--40); }
.lt-contact-formulaire .wpcf7-form > p { margin-block: 0 1.1rem; }
.lt-contact-formulaire .wpcf7-form label { display: block; font-weight: 600; }
.lt-contact-formulaire .wpcf7-form label > br { display: none; }
.lt-contact-formulaire :is(input, select, textarea).wpcf7-form-control:not(.wpcf7-submit) {
	display: block;
	width: 100%;
	box-sizing: border-box;
	margin-block-start: 0.35rem;
	padding: 0.7rem 0.9rem;
	border: 1px solid var(--wp--preset--color--filet);
	border-radius: 8px;
	background: var(--wp--preset--color--blanc);
	color: var(--wp--preset--color--encre);
	font: inherit;
	font-weight: 400;
}
.lt-contact-formulaire textarea.wpcf7-form-control { height: 10rem; min-height: 7rem; resize: vertical; }
.lt-contact-formulaire :is(input, select, textarea).wpcf7-form-control:focus-visible {
	outline: 2px solid var(--wp--preset--color--graphite);
	outline-offset: 1px;
}
.lt-contact-formulaire .wpcf7-submit {
	padding: 0.8rem 1.5rem;
	border: 0;
	border-radius: 8px;
	background: var(--wp--preset--color--signal);
	color: var(--wp--preset--color--encre);
	font-family: var(--wp--preset--font-family--barlow);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.3;
	cursor: pointer;
}
.lt-contact-formulaire .wpcf7-submit:hover,
.lt-contact-formulaire .wpcf7-submit:focus-visible { background: #FFCB2E; }
.lt-contact-plan { margin: 0; }
.lt-contact-plan img { display: block; width: 100%; height: auto; }
