/**
 * ET Events Calendar — le calendrier et la fiche.
 *
 * La feuille ne choisit ni police ni taille de texte : elle hérite du thème.
 * Elle apporte la mise en page, et une seule couleur réglable, l'accent,
 * avec l'encre calculée pour rester lisible dessus. Les gris sont des
 * mélanges de la couleur du texte : ils suivent un thème clair comme un
 * thème sombre.
 *
 * Les sélecteurs portent deux classes là où un thème pose d'habitude ses
 * propres règles (listes, tableaux, titres) : une classe seule y perdrait.
 *
 * @package ET_Events_Calendar
 */

.etec,
.etec-page,
.etec-fiche,
.etec-prochains,
.etec-rdv {
	--etec-accent: #2271b1;
	--etec-sur-accent: #fff;
	--etec-accent-fort: color-mix(in srgb, var(--etec-accent) 86%, #000);
	--etec-accent-texte: var(--etec-accent);
	--etec-rayon: 10px;
	--etec-largeur: 1200px;
	--etec-encre: currentColor;
	--etec-doux: color-mix(in srgb, currentColor 68%, transparent);
	--etec-trait: color-mix(in srgb, currentColor 16%, transparent);
	--etec-fond: color-mix(in srgb, currentColor 4%, transparent);
	--etec-accent-doux: color-mix(in srgb, var(--etec-accent) 12%, transparent);
	box-sizing: border-box;
}

.etec *,
.etec-fiche *,
.etec-prochains * {
	box-sizing: border-box;
}

/*
 * Les jetons des préréglages (ETEC_Presets) : texte, fond et marge du
 * conteneur, pour un style sombre. Sans préréglage, la variable n'existe
 * pas, la propriété retombe à sa valeur « unset » : le texte hérite du
 * thème, le fond reste transparent, la marge nulle.
 */
.etec,
.etec-page,
.etec-fiche,
.etec-prochains,
.etec-mini,
.etec-rdv {
	color: var(--etec-texte);
	background: var(--etec-fond-page);
}

.etec,
.etec-fiche,
.etec-prochains,
.etec-mini,
.etec-rdv {
	padding: var(--etec-marge);
	border-radius: calc(var(--etec-rayon) + 4px);
}

/* Dans la page des événements, c'est la page qui porte le fond. */
.etec-page .etec,
.etec-page .etec-fiche,
.etec-page .etec-rdv {
	padding: 0;
	background: none;
}

/* Le texte réservé aux lecteurs d'écran, si le thème ne le définit pas. */
.etec .screen-reader-text,
.etec-mini .screen-reader-text,
.etec-prochains .screen-reader-text,
.etec-fiche .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* ─────────── La page ─────────── */

.etec-page__cadre {
	max-width: var(--etec-largeur);
	margin: 0 auto;
	padding: clamp(24px, 5vw, 56px) 20px;
}

.etec-page__tete {
	margin: 0 0 28px;
}

.etec-page .etec-page__titre {
	margin: 0 0 10px;
}

.etec-page__intro {
	max-width: 70ch;
	color: var(--etec-doux);
}

/* ─────────── Les boutons ─────────── */

.etec .etec__bouton,
.etec-fiche .etec__bouton,
.etec-prochains .etec__bouton,
.etec-form .etec__bouton,
.etec-rdv .etec__bouton {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 40px;
	padding: 8px 18px;
	font: inherit;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	border: 1px solid transparent;
	border-radius: var(--etec-rayon);
	transition: background-color .15s, border-color .15s, color .15s;
}

/*
 * Les couleurs des boutons, dans tous leurs états. Les thèmes colorent
 * `button:hover`, `button:focus` ou `input[type=submit]` (Astra : texte
 * blanc, fond de sa couleur) : `:not(#etec)` compte comme un identifiant,
 * nos couleurs restent donc les nôtres, lisibles, après un clic comme au
 * survol. L'encre, le fond et la teinte de survol sont calculés par le
 * serveur pour atteindre 4,5:1 (ETEC_Presets::encres()).
 */
/* Un bouton-lien ne se souligne pas, même dans un article (Astra souligne `.entry-content a`). */
:is(.etec, .etec-page, .etec-fiche, .etec-prochains, .etec-mini, .etec-rdv) :is(.etec__bouton, .etec__vue):not(#etec) {
	text-decoration: none;
}

.etec__bouton.etec__bouton--plein:not(#etec),
.etec__bouton.etec__bouton--plein:not(#etec):focus,
.etec__bouton.etec__bouton--plein:not(#etec):active,
.etec__bouton.etec__bouton--plein:not(#etec):visited {
	color: var(--etec-sur-accent);
	background: var(--etec-plein, var(--etec-accent));
	border-color: transparent;
}

.etec__bouton.etec__bouton--plein:not(#etec):hover,
.etec__bouton.etec__bouton--plein:not(#etec):focus-visible {
	color: var(--etec-sur-accent);
	background: var(--etec-accent-fort, color-mix(in srgb, var(--etec-accent) 86%, #000));
}

.etec__bouton.etec__bouton--second:not(#etec),
.etec__bouton.etec__bouton--second:not(#etec):focus,
.etec__bouton.etec__bouton--second:not(#etec):active,
.etec__bouton.etec__bouton--second:not(#etec):visited {
	color: inherit;
	background: transparent;
	border-color: var(--etec-trait);
}

.etec__bouton.etec__bouton--second:not(#etec):hover,
.etec__bouton.etec__bouton--second:not(#etec):focus-visible {
	color: var(--etec-accent-texte, var(--etec-accent));
	background: transparent;
	border-color: var(--etec-accent);
}

.etec a:focus-visible,
.etec-fiche a:focus-visible,
.etec select:focus-visible,
.etec-form :is(input, select, textarea, button):focus-visible {
	outline: 2px solid var(--etec-accent);
	outline-offset: 2px;
}

/* ─────────── La barre : période, vues ─────────── */

.etec__barre {
	display: flex;
	flex-wrap: wrap;
	gap: 14px 24px;
	align-items: center;
	justify-content: space-between;
	margin: 0 0 16px;
}

.etec__periode {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 18px;
	align-items: center;
}

.etec .etec__titre {
	margin: 0;
	font-size: clamp(1.25rem, 2.4vw, 1.6rem);
	line-height: 1.2;
	text-transform: var(--etec-casse, capitalize);
}

.etec__fleches {
	display: inline-flex;
	align-items: stretch;
	overflow: hidden;
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
}

.etec .etec__fleche,
.etec .etec__aujourdhui {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	min-height: 38px;
	padding: 0 12px;
	color: inherit;
	text-decoration: none;
}

.etec .etec__fleche {
	font-size: 1.3em;
	line-height: 1;
}

.etec .etec__aujourdhui {
	font-size: .9em;
	font-weight: 600;
	border-inline: 1px solid var(--etec-trait);
}

.etec .etec__fleche:hover,
.etec .etec__aujourdhui:hover {
	color: var(--etec-accent-texte, var(--etec-accent));
	background: var(--etec-accent-doux);
}

.etec .etec__bascule {
	font-size: .92em;
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec__vues {
	display: inline-flex;
	flex-wrap: wrap;
	max-width: 100%;
	padding: 3px;
	background: var(--etec-fond);
	border: 1px solid var(--etec-trait);
	border-radius: calc(var(--etec-rayon) + 3px);
}

.etec .etec__vue {
	padding: 6px 14px;
	font-size: .9em;
	font-weight: 600;
	color: inherit;
	text-decoration: none;
	border-radius: var(--etec-rayon);
}

.etec .etec__vue:hover {
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec .etec__vue.is-active {
	color: var(--etec-sur-accent);
	background: var(--etec-plein, var(--etec-accent));
}

/* ─────────── Les filtres ─────────── */

.etec__filtres {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 14px;
	align-items: flex-end;
	margin: 0 0 20px;
	padding: 14px 16px;
	background: var(--etec-panneau, var(--etec-fond));
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
	box-shadow: var(--etec-ombre, none);
}

.etec__filtre {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 160px;
	margin: 0;
	font-size: .85em;
	font-weight: 600;
}

.etec__filtre select {
	min-height: 38px;
	padding: 6px 10px;
	font: inherit;
	font-weight: 400;
	color: inherit;
	background: transparent;
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
}

.etec .etec__effacer {
	align-self: center;
	font-size: .9em;
	color: var(--etec-accent-texte, var(--etec-accent));
}

/* Avec le script, le formulaire s'envoie à chaque changement : le bouton devient inutile. */
.etec.is-js [data-etec-envoi] {
	display: none;
}

/* ─────────── Le chargement ─────────── */

.etec__corps {
	position: relative;
	transition: opacity .15s;
}

.etec.is-charge .etec__corps {
	opacity: .45;
	pointer-events: none;
}

.etec__vide {
	margin: 20px 0;
	padding: 18px;
	text-align: center;
	color: var(--etec-doux);
	background: var(--etec-fond);
	border-radius: var(--etec-rayon);
}

.etec__erreur {
	padding: 12px 14px;
	color: #8a1c1c;
	background: #fdecec;
	border-radius: var(--etec-rayon);
}

/* ─────────── La vue Mois ─────────── */

.etec .etec-mois.etec-mois {
	width: 100%;
	margin: 0;
	table-layout: fixed;
	border-collapse: collapse;
	border: 0;
}

.etec .etec-mois th {
	padding: 8px 6px;
	font-size: .8em;
	font-weight: 600;
	text-align: center;
	text-transform: uppercase;
	letter-spacing: .04em;
	color: var(--etec-doux);
	background: transparent;
	border: 0;
}

.etec .etec-mois abbr {
	text-decoration: none;
	border: 0;
}

.etec .etec-mois td.etec-mois__jour {
	height: 112px;
	padding: 6px;
	vertical-align: top;
	background: var(--etec-case, transparent);
	border: 1px solid var(--etec-trait);
}

.etec .etec-mois td.is-hors-mois {
	background: var(--etec-fond);
}

.etec .etec-mois td.is-hors-mois .etec-mois__num {
	opacity: .45;
}

.etec-mois__date {
	display: block;
	margin: 0 0 4px;
}

.etec-mois__num {
	display: inline-grid;
	place-items: center;
	min-width: 26px;
	height: 26px;
	padding: 0 4px;
	font-size: .85em;
	font-weight: 600;
	border-radius: 999px;
}

.etec .is-aujourdhui .etec-mois__num {
	color: var(--etec-sur-accent);
	background: var(--etec-plein, var(--etec-accent));
}

/* Le nom complet du jour ne sert qu'au téléphone, où la grille devient une liste. */
.etec-mois__nom {
	display: none;
}

.etec .etec-mois__liste.etec-mois__liste,
.etec .etec-semaine__liste.etec-semaine__liste {
	display: flex;
	flex-direction: column;
	gap: 3px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.etec .etec-mois__liste > li,
.etec .etec-semaine__liste > li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.etec .etec-mois__liste > li::before,
.etec .etec-mois__liste > li::marker,
.etec .etec-semaine__liste > li::before,
.etec .etec-semaine__liste > li::marker {
	content: none;
}

.etec .etec-puce {
	display: block;
	overflow: hidden;
	padding: 3px 6px;
	font-size: .8em;
	line-height: 1.3;
	color: inherit;
	text-decoration: none;
	text-overflow: ellipsis;
	white-space: nowrap;
	background: var(--etec-puce-fond, var(--etec-accent-doux));
	border-left: var(--etec-puce-lisere, 3px) solid var(--etec-accent);
	border-radius: calc(var(--etec-rayon) / 2);
}

/* Sans jeton, « unset » : la couleur du texte, héritée. */
.etec a.etec-puce {
	color: var(--etec-puce-encre);
}

.etec .etec-puce:hover {
	background: color-mix(in srgb, var(--etec-accent) 20%, transparent);
}

.etec-puce__heure {
	margin-right: 4px;
	font-weight: 700;
}

.etec .etec-puce.is-annule .etec-puce__titre {
	text-decoration: line-through;
}

.etec .etec-puce.is-passe {
	opacity: .6;
}

.etec .etec-mois__plus {
	display: inline-block;
	margin-top: 2px;
	font-size: .78em;
	font-weight: 600;
	color: var(--etec-accent-texte, var(--etec-accent));
}

/* ─────────── La mention d'état ─────────── */

.etec-mention {
	display: inline-block;
	margin-left: 4px;
	padding: 1px 7px;
	font-size: .75em;
	font-weight: 700;
	line-height: 1.5;
	text-transform: uppercase;
	letter-spacing: .03em;
	vertical-align: middle;
	color: #7a2e0e;
	background: #fdecd8;
	border-radius: 999px;
}

.etec-puce .etec-mention {
	font-size: .9em;
}

/* ─────────── La vue Semaine ─────────── */

.etec-semaine {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
	overflow: hidden;
}

.etec-semaine__jour {
	min-height: 180px;
	padding: 10px 8px;
	border-left: 1px solid var(--etec-trait);
}

.etec-semaine__jour:first-child {
	border-left: 0;
}

.etec-semaine__jour.is-aujourdhui {
	background: var(--etec-accent-doux);
}

.etec .etec-semaine__date {
	display: flex;
	flex-direction: column;
	margin: 0 0 10px;
	font-size: .85em;
	line-height: 1.3;
}

.etec-semaine__nom {
	font-weight: 700;
	text-transform: capitalize;
}

.etec-semaine__num {
	color: var(--etec-doux);
}

.etec-semaine__rien {
	margin: 0;
	color: var(--etec-doux);
	opacity: .5;
}

.etec .etec-semaine .etec-puce {
	white-space: normal;
}

/* ─────────── Les vues Liste et Photo ─────────── */

.etec .etec-liste__mois {
	margin: 26px 0 10px;
	font-size: 1em;
	font-weight: 700;
	text-transform: capitalize;
	color: var(--etec-doux);
}

.etec .etec-liste__mois:first-child {
	margin-top: 0;
}

.etec-ligne {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr) auto;
	gap: 16px 20px;
	align-items: start;
	padding: 18px 0;
	border-bottom: 1px solid var(--etec-trait);
}

.etec-ligne__texte > * {
	margin: 0;
}

.etec .etec-ligne__quand,
.etec-prochains .etec-ligne__quand {
	margin: 0 0 4px;
	font-size: .9em;
	font-weight: 600;
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec .etec-ligne__titre,
.etec-prochains .etec-ligne__titre {
	margin: 0 0 4px;
	font-size: 1.15em;
	line-height: 1.3;
}

.etec .etec-ligne__titre a,
.etec-prochains .etec-ligne__titre a,
.etec .etec-carte__titre a,
.etec-prochains .etec-carte__titre a {
	color: inherit;
	text-decoration: none;
}

.etec .etec-ligne__titre a:hover,
.etec-prochains .etec-ligne__titre a:hover,
.etec .etec-carte__titre a:hover,
.etec-prochains .etec-carte__titre a:hover {
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec-ligne__ou,
.etec-carte__ou {
	font-size: .9em;
	color: var(--etec-doux);
}

.etec .etec-ligne__extrait,
.etec-prochains .etec-ligne__extrait {
	margin-top: 6px;
	font-size: .95em;
}

.etec-ligne__image {
	display: block;
	width: 180px;
	overflow: hidden;
	border-radius: var(--etec-rayon);
}

.etec-ligne__image img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 10;
	object-fit: cover;
}

.etec-ligne.is-annule .etec-ligne__titre,
.etec-carte.is-annule .etec-carte__titre {
	text-decoration: line-through;
}

.etec-ligne.is-passe {
	opacity: .7;
}

/* La pastille de date. */
.etec-pastille {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	line-height: 1;
	color: var(--etec-sur-accent);
	background: var(--etec-plein, var(--etec-accent));
	border-radius: var(--etec-rayon);
}

.etec-pastille__mois {
	font-size: .72em;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
}

.etec-pastille__jour {
	margin-top: 3px;
	font-size: 1.55em;
	font-weight: 800;
}

.etec-photo {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
	gap: 22px;
}

.etec-carte {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: var(--etec-panneau, var(--etec-fond));
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
	box-shadow: var(--etec-ombre, none);
}

.etec-carte__image {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--etec-accent-doux);
}

.etec-carte__image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .3s;
}

.etec-carte:hover .etec-carte__image img {
	transform: scale(1.03);
}

.etec-carte__sans-image {
	display: block;
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, var(--etec-accent-doux), color-mix(in srgb, var(--etec-accent) 30%, transparent));
}

.etec-carte .etec-pastille {
	position: absolute;
	top: 12px;
	left: 12px;
	width: 54px;
	height: 54px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, .18);
}

.etec-carte__texte {
	padding: 16px 18px 18px;
}

.etec .etec-carte__quand,
.etec-prochains .etec-carte__quand {
	margin: 0 0 6px;
	font-size: .85em;
	font-weight: 600;
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec .etec-carte__titre,
.etec-prochains .etec-carte__titre {
	margin: 0 0 6px;
	font-size: 1.1em;
	line-height: 1.3;
}

.etec .etec-carte__ou,
.etec-prochains .etec-carte__ou {
	margin: 0;
}

.etec-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
	justify-content: center;
	margin: 28px 0 0;
}

.etec-pagination__etat {
	font-size: .9em;
	color: var(--etec-doux);
}

/* ─────────── Les prochains événements ─────────── */

.etec-prochains .etec-prochains__titre {
	margin: 0 0 14px;
}

.etec-liste--compacte .etec-ligne {
	grid-template-columns: 56px minmax(0, 1fr) auto;
	padding: 14px 0;
}

.etec-liste--compacte .etec-pastille {
	width: 56px;
	height: 56px;
}

.etec-liste--compacte .etec-ligne__image {
	width: 120px;
}

.etec-liste--compacte .etec-ligne__extrait {
	display: none;
}

.etec-prochains__pied {
	margin: 18px 0 0;
}

/* ─────────── La fiche ─────────── */

.etec-fiche__tete {
	margin: 0 0 26px;
}

.etec-fiche__retour {
	margin: 0 0 12px;
	font-size: .9em;
}

.etec-fiche__retour a {
	color: var(--etec-accent-texte, var(--etec-accent));
	text-decoration: none;
}

.etec-fiche .etec-fiche__categories.etec-fiche__categories {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin: 0 0 12px;
	padding: 0;
	list-style: none;
}

.etec-fiche .etec-fiche__categories > li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.etec-fiche .etec-fiche__categories > li::before,
.etec-fiche .etec-fiche__categories > li::marker {
	content: none;
}

.etec-fiche__categories a {
	display: inline-block;
	padding: 3px 10px;
	font-size: .8em;
	font-weight: 600;
	color: var(--etec-accent-texte, var(--etec-accent));
	text-decoration: none;
	background: var(--etec-accent-doux);
	border-radius: 999px;
}

.etec-fiche .etec-fiche__titre {
	margin: 0 0 10px;
	line-height: 1.15;
}

.etec-fiche__quand {
	margin: 0;
	font-size: 1.1em;
	font-weight: 600;
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec-fiche__avis {
	margin: 14px 0 0;
	padding: 10px 14px;
	font-weight: 600;
	color: #7a2e0e;
	background: #fdecd8;
	border-radius: var(--etec-rayon);
}

.etec-fiche__avis--doux {
	color: inherit;
	background: var(--etec-fond);
}

.etec-fiche__corps {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 32px;
}

.etec-fiche .etec-fiche__image {
	margin: 0 0 24px;
	overflow: hidden;
	border-radius: var(--etec-rayon);
}

.etec-fiche__image img {
	display: block;
	width: 100%;
	height: auto;
}

.etec-fiche__inscription {
	margin-top: 36px;
	padding: 24px;
	background: var(--etec-panneau, var(--etec-fond));
	box-shadow: var(--etec-ombre, none);
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
	scroll-margin-top: 90px;
}

.etec-fiche .etec-fiche__inscription h2 {
	margin: 0 0 16px;
}

.etec-fiche__infos {
	align-self: start;
	padding: 22px;
	background: var(--etec-panneau, var(--etec-fond));
	box-shadow: var(--etec-ombre, none);
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
}

.etec-fiche .etec-infos {
	margin: 0 0 18px;
}

.etec-infos__ligne {
	padding: 12px 0;
	border-bottom: 1px solid var(--etec-trait);
}

.etec-infos__ligne:first-child {
	padding-top: 0;
}

.etec-fiche .etec-infos dt {
	margin: 0 0 4px;
	font-size: .78em;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	color: var(--etec-doux);
}

.etec-fiche .etec-infos dd {
	margin: 0;
}

.etec-infos a {
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec-infos__note {
	font-size: .9em;
	color: var(--etec-doux);
}

.etec-fiche__infos .etec__bouton--plein {
	width: 100%;
}

.etec-agenda {
	margin-top: 18px;
}

.etec-agenda__titre {
	margin: 0 0 8px;
	font-size: .85em;
	font-weight: 700;
}

.etec-agenda__liens {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
}

.etec-agenda__liens .etec__bouton {
	min-height: 36px;
	padding: 6px 12px;
	font-size: .85em;
}

@media (min-width: 960px) {

	.etec-fiche__corps {
		grid-template-columns: minmax(0, 1fr) 330px;
		gap: 48px;
	}

	.etec-fiche__infos {
		position: sticky;
		top: 100px;
	}
}

/* ─────────── Le formulaire ─────────── */

.etec-form__grille {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
	gap: 0 16px;
}

.etec-form .etec-form__champ {
	display: flex;
	flex-direction: column;
	gap: 5px;
	margin: 0 0 14px;
}

.etec-form label {
	font-size: .9em;
	font-weight: 600;
}

.etec-form input[type="text"],
.etec-form input[type="email"],
.etec-form input[type="tel"],
.etec-form select,
.etec-form textarea {
	width: 100%;
	min-height: 42px;
	padding: 9px 12px;
	font: inherit;
	color: inherit;
	background: transparent;
	border: 1px solid color-mix(in srgb, currentColor 30%, transparent);
	border-radius: var(--etec-rayon);
}

.etec-form [aria-invalid="true"] {
	border-color: #c0392b;
}

.etec-form__aide-erreur {
	font-size: .85em;
	font-weight: 600;
	color: #c0392b;
}

.etec-form__rgpd label {
	display: flex;
	gap: 8px;
	align-items: flex-start;
	font-weight: 400;
}

.etec-form__rgpd input {
	margin-top: 4px;
}

/* Le champ piège : hors de l'écran, pas `display: none`, que certains robots savent éviter. */
.etec-form__piege {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.etec-form__ok,
.etec-form__erreur,
.etec-form__complet {
	margin: 0 0 16px;
	padding: 12px 14px;
	font-weight: 600;
	border-radius: var(--etec-rayon);
}

.etec-form__ok {
	color: #0f5132;
	background: #d1e7dd;
}

.etec-form__erreur {
	color: #842029;
	background: #f8d7da;
}

.etec-form__complet {
	color: #7a2e0e;
	background: #fdecd8;
}

.etec-form.is-envoi button[type="submit"] {
	opacity: .6;
	pointer-events: none;
}

/* ─────────── Les options des codes courts ─────────── */

.etec .etec__entete {
	margin: 0 0 14px;
}

.etec-photo--colonnes {
	grid-template-columns: repeat(var(--etec-colonnes, 3), minmax(0, 1fr));
}

@media (max-width: 959px) {

	.etec-photo--colonnes {
		grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr));
	}
}

.etec-prochains--sans-image .etec-ligne__image,
.etec-prochains--sans-image .etec-carte__image img {
	display: none;
}

.etec-prochains--sans-image .etec-ligne {
	grid-template-columns: 56px minmax(0, 1fr);
}

.etec-prochains--sans-extrait .etec-ligne__extrait {
	display: none;
}

.etec-prochains--liste .etec-liste--compacte .etec-ligne__extrait {
	display: block;
}

.etec-prochains--sans-extrait.etec-prochains--liste .etec-liste--compacte .etec-ligne__extrait {
	display: none;
}

/* La liste compacte : une ligne par événement, sans image ni extrait. */
.etec-prochains--compact .etec-ligne {
	grid-template-columns: 48px minmax(0, 1fr);
	gap: 10px 14px;
	padding: 10px 0;
}

.etec-prochains--compact .etec-pastille {
	width: 48px;
	height: 48px;
}

.etec-prochains--compact .etec-pastille__jour {
	font-size: 1.25em;
}

.etec-prochains--compact .etec-ligne__image,
.etec-prochains--compact .etec-ligne__extrait {
	display: none;
}

.etec-prochains--compact .etec-ligne__titre {
	font-size: 1em;
}

/* ─────────── Le mini-calendrier ─────────── */

.etec-mini {
	--etec-accent: #2271b1;
	--etec-sur-accent: #fff;
	--etec-rayon: 10px;
	--etec-trait: color-mix(in srgb, currentColor 16%, transparent);
	--etec-accent-doux: color-mix(in srgb, var(--etec-accent) 14%, transparent);
	max-width: 340px;
	transition: opacity .15s;
}

.etec-mini.is-charge {
	opacity: .5;
}

.etec-mini .etec-mini__entete {
	margin: 0 0 10px;
	font-size: 1.1em;
}

.etec-mini__tete {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	margin: 0 0 6px;
}

.etec-mini .etec-mini__titre {
	margin: 0;
	font-weight: 700;
	text-transform: capitalize;
}

.etec-mini .etec-mini__fleche {
	display: inline-grid;
	place-items: center;
	width: 32px;
	height: 32px;
	font-size: 1.2em;
	line-height: 1;
	color: inherit;
	text-decoration: none;
	border: 1px solid var(--etec-trait);
	border-radius: 999px;
}

.etec-mini .etec-mini__fleche:hover,
.etec-mini .etec-mini__fleche:focus-visible {
	color: var(--etec-accent-texte, var(--etec-accent));
	border-color: var(--etec-accent);
}

.etec-mini .etec-mini__grille.etec-mini__grille {
	width: 100%;
	margin: 0;
	table-layout: fixed;
	border-collapse: collapse;
	border: 0;
}

.etec-mini .etec-mini__grille th,
.etec-mini .etec-mini__grille td {
	padding: 2px;
	text-align: center;
	background: transparent;
	border: 0;
}

.etec-mini .etec-mini__grille th {
	font-size: .75em;
	font-weight: 600;
	opacity: .6;
}

.etec-mini .etec-mini__grille abbr {
	text-decoration: none;
	border: 0;
}

.etec-mini__jour > a,
.etec-mini__jour > span {
	position: relative;
	display: inline-grid;
	place-items: center;
	width: 34px;
	max-width: 100%;
	aspect-ratio: 1;
	font-size: .88em;
	color: inherit;
	text-decoration: none;
	border-radius: 999px;
}

.etec-mini .etec-mini__jour.is-hors-mois {
	opacity: .35;
}

.etec-mini .etec-mini__jour.is-occupe > a {
	font-weight: 700;
	color: var(--etec-accent-texte, var(--etec-accent));
	background: var(--etec-accent-doux);
}

/* Le point sous un jour occupé : lisible même sans couleur. */
.etec-mini .etec-mini__jour.is-occupe > a::after {
	position: absolute;
	bottom: 3px;
	left: 50%;
	width: 4px;
	height: 4px;
	content: "";
	background: currentColor;
	border-radius: 50%;
	transform: translateX(-50%);
}

.etec-mini .etec-mini__jour.is-occupe > a:hover,
.etec-mini .etec-mini__jour.is-occupe > a:focus-visible {
	color: var(--etec-sur-accent);
	background: var(--etec-plein, var(--etec-accent));
}

.etec-mini .etec-mini__jour.is-aujourdhui > a,
.etec-mini .etec-mini__jour.is-aujourdhui > span {
	box-shadow: inset 0 0 0 2px var(--etec-accent);
}

.etec-mini .etec-mini__pied {
	margin: 8px 0 0;
	font-size: .9em;
}

.etec-mini .etec-mini__pied a {
	color: var(--etec-accent-texte, var(--etec-accent));
}

/* ─────────── Les finitions ─────────── */

.etec .etec__titre {
	font-weight: 700;
	letter-spacing: -.01em;
}

.etec .etec-mois td.etec-mois__jour {
	transition: background-color .15s, box-shadow .15s;
}

/* Le week-end, à peine teinté : la semaine se lit d'un coup d'œil. */
.etec .etec-mois td.is-weekend:not(.is-hors-mois) {
	background: color-mix(in srgb, currentColor 2.5%, var(--etec-case, transparent));
}

.etec .etec-mois td.is-aujourdhui {
	background: color-mix(in srgb, var(--etec-accent) 7%, var(--etec-case, transparent));
}

@media (hover: hover) {

	.etec .etec-mois td.etec-mois__jour:not(.is-hors-mois):not(.is-aujourdhui):hover {
		background: color-mix(in srgb, var(--etec-accent) 4%, var(--etec-case, transparent));
	}

	.etec .etec-puce:hover {
		transform: translateX(2px);
	}

	.etec-ligne:hover {
		background: var(--etec-fond);
	}

	.etec-carte:hover {
		transform: translateY(-3px);
		box-shadow: 0 12px 28px rgba(16, 24, 40, .12);
	}
}

.etec .etec-puce {
	transition: background-color .15s, transform .15s;
}

.etec-ligne {
	padding-inline: 10px;
	border-radius: var(--etec-rayon);
	transition: background-color .15s;
}

.etec-carte {
	transition: transform .2s, box-shadow .2s;
}

.etec-pastille,
.etec-mois__num {
	font-variant-numeric: tabular-nums;
}

.etec .etec__vue {
	transition: background-color .15s, color .15s;
}

/* La couleur de catégorie : elle l'emporte sur l'accent pour la pastille de l'événement. */
.etec .etec-puce[style*="--etec-cat"] {
	background: color-mix(in srgb, var(--etec-cat) 14%, transparent);
	border-left-color: var(--etec-cat);
}

.etec .etec-puce[style*="--etec-cat"]:hover {
	background: color-mix(in srgb, var(--etec-cat) 24%, transparent);
}

.etec-cat {
	display: inline-flex;
	gap: 6px;
	align-items: center;
	margin: 0 0 6px;
	font-size: .72em;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--etec-doux);
}

.etec-cat::before {
	width: 8px;
	height: 8px;
	content: "";
	background: var(--etec-cat, var(--etec-accent));
	border-radius: 50%;
}

/* L'heure du visiteur, sous l'horaire de la fiche. */
.etec-fiche__fuseau {
	display: block;
	margin-top: 4px;
	font-size: .82em;
	font-weight: 400;
	color: var(--etec-doux);
}

/* La liste d'attente et la fenêtre d'inscription. */
.etec-form__attente,
.etec-form__fenetre {
	margin: 0 0 16px;
	padding: 12px 14px;
	font-weight: 600;
	background: var(--etec-accent-doux);
	border-left: 4px solid var(--etec-accent);
	border-radius: var(--etec-rayon);
}

.etec-form .etec-form__case label {
	display: flex;
	gap: 8px;
	align-items: flex-start;
	font-weight: 400;
}

.etec-form__case input {
	margin-top: 4px;
}

/* ─────────── Téléphone et tablette ─────────── */

@media (max-width: 959px) {

	.etec-semaine {
		grid-template-columns: minmax(0, 1fr);
	}

	.etec-semaine__jour {
		min-height: 0;
		border-left: 0;
		border-top: 1px solid var(--etec-trait);
	}

	.etec-semaine__jour:first-child {
		border-top: 0;
	}

	/* Un jour sans rien n'occupe pas l'écran d'un téléphone. */
	.etec-semaine__jour.is-vide:not(.is-aujourdhui) {
		display: none;
	}

	.etec .etec-semaine__date {
		flex-direction: row;
		gap: 8px;
	}
}

@media (max-width: 759px) {

	/*
	 * La grille du mois devient la liste de ses jours occupés : sept
	 * colonnes de 50 px ne montrent que des titres coupés.
	 */
	.etec .etec-mois,
	.etec .etec-mois tbody,
	.etec .etec-mois tr,
	.etec .etec-mois td.etec-mois__jour {
		display: block;
		width: auto;
		height: auto;
	}

	.etec .etec-mois thead {
		display: none;
	}

	.etec .etec-mois td.etec-mois__jour {
		padding: 10px 0;
		border: 0;
		border-bottom: 1px solid var(--etec-trait);
	}

	.etec .etec-mois td.is-vide:not(.is-aujourdhui),
	.etec .etec-mois td.is-hors-mois {
		display: none;
	}

	.etec-mois__date {
		display: flex;
		gap: 8px;
		align-items: center;
		margin-bottom: 8px;
	}

	.etec-mois__nom {
		display: inline;
		font-weight: 700;
		text-transform: capitalize;
	}

	/* Le nom complet porte déjà le numéro : la pastille le répéterait. */
	.etec-mois__num {
		display: none;
	}

	.etec .is-aujourdhui .etec-mois__nom {
		color: var(--etec-accent-texte, var(--etec-accent));
	}

	.etec .etec-puce {
		padding: 6px 10px;
		font-size: .95em;
		white-space: normal;
	}

	.etec-ligne {
		grid-template-columns: 52px minmax(0, 1fr);
	}

	.etec-ligne .etec-pastille {
		width: 52px;
		height: 52px;
	}

	.etec-ligne__image {
		display: none;
	}

	.etec__filtre {
		flex: 1 1 140px;
		min-width: 0;
	}
}

@media (prefers-reduced-motion: reduce) {

	.etec *,
	.etec-fiche *,
	.etec-prochains * {
		transition: none !important;
	}

	.etec .etec-puce:hover,
	.etec-carte:hover {
		transform: none;
	}
}

/* ─────────── La recherche, dans les filtres ─────────── */

.etec__filtre--recherche {
	flex: 2 1 200px;
}

.etec__filtre input[type="search"] {
	min-height: 38px;
	padding: 6px 10px;
	font: inherit;
	font-weight: 400;
	color: inherit;
	background: transparent;
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
}

/* ─────────── La vue Jour ─────────── */

.etec-jour {
	display: grid;
	gap: 18px;
}

.etec .etec-jour__intertitre {
	margin: 0 0 8px;
	font-size: .85em;
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: uppercase;
	color: var(--etec-doux);
}

.etec .etec-jour__liste.etec-jour__liste {
	display: grid;
	gap: 0;
	margin: 0;
	padding: 0;
	list-style: none;
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
}

.etec .etec-jour__liste > li {
	margin: 0;
}

.etec-jour__item {
	display: grid;
	grid-template-columns: 9.5em minmax(0, 1fr);
	gap: 8px 18px;
	padding: 14px 16px;
	border-top: 1px solid var(--etec-trait);
}

.etec-jour__item:first-child {
	border-top: 0;
}

.etec-jour__heure {
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec-bloc-court {
	padding-left: 12px;
	border-left: 3px solid var(--etec-cat, var(--etec-accent));
}

.etec-bloc-court > * {
	margin: 0;
}

.etec .etec-bloc-court__titre {
	font-size: 1.05em;
	line-height: 1.35;
}

.etec .etec-bloc-court__titre a {
	color: inherit;
	text-decoration: none;
}

.etec .etec-bloc-court__titre a:hover,
.etec .etec-bloc-court__titre a:focus-visible {
	color: var(--etec-accent-texte, var(--etec-accent));
	text-decoration: underline;
}

.etec-bloc-court__ou {
	margin-top: 4px;
	font-size: .9em;
	color: var(--etec-doux);
}

.etec-bloc-court.is-annule .etec-bloc-court__titre a {
	text-decoration: line-through;
}

/* ─────────── La vue Résumé ─────────── */

.etec-resume {
	display: grid;
	gap: 4px;
}

.etec .etec-resume__date {
	margin: 14px 0 4px;
	padding-bottom: 4px;
	font-size: .95em;
	font-weight: 700;
	text-transform: capitalize;
	border-bottom: 2px solid var(--etec-trait);
}

.etec-resume__jour:first-child .etec-resume__date {
	margin-top: 0;
}

.etec-resume__jour.is-aujourdhui .etec-resume__date {
	color: var(--etec-accent-texte, var(--etec-accent));
	border-color: var(--etec-accent);
}

.etec .etec-resume__liste.etec-resume__liste {
	margin: 0;
	padding: 0;
	list-style: none;
}

.etec .etec-resume__liste > li {
	margin: 0;
}

.etec-resume__item {
	display: grid;
	grid-template-columns: 8.5em minmax(0, 1fr) auto;
	gap: 4px 14px;
	align-items: baseline;
	padding: 7px 0 7px 10px;
	border-left: 3px solid var(--etec-cat, transparent);
}

.etec-resume__heure {
	font-size: .9em;
	font-variant-numeric: tabular-nums;
	color: var(--etec-doux);
}

.etec .etec-resume__titre {
	font-weight: 600;
	color: inherit;
	text-decoration: none;
}

.etec .etec-resume__titre:hover,
.etec .etec-resume__titre:focus-visible {
	color: var(--etec-accent-texte, var(--etec-accent));
	text-decoration: underline;
}

.etec-resume__ou {
	grid-column: 2;
	font-size: .88em;
	color: var(--etec-doux);
}

.etec-resume__item .etec-mention {
	grid-column: 3;
	grid-row: 1;
}

.etec-resume__item.is-annule .etec-resume__titre {
	text-decoration: line-through;
}

/* ─────────── La vue Carte ─────────── */

.etec-carte-vue {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr);
	gap: 20px;
	align-items: start;
}

.etec .etec-carte-vue__liste.etec-carte-vue__liste {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.etec .etec-carte-vue__liste > li {
	margin: 0;
}

.etec-carte-vue__item {
	display: grid;
	grid-template-columns: 32px minmax(0, 1fr);
	gap: 12px;
	padding: 12px;
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
	transition: border-color .15s ease, background-color .15s ease;
}

.etec-carte-vue__item.is-actif {
	background: var(--etec-accent-doux);
	border-color: var(--etec-accent);
}

.etec-carte-vue__num {
	display: grid;
	place-items: center;
	width: 32px;
	height: 32px;
	font-weight: 700;
	color: var(--etec-sur-accent);
	background: var(--etec-plein, var(--etec-accent));
	border-radius: 50%;
}

.etec-carte-vue__texte > * {
	margin: 0;
}

.etec-carte-vue__quand,
.etec-carte-vue__ou {
	font-size: .9em;
	color: var(--etec-doux);
}

.etec .etec-carte-vue__titre {
	margin: 2px 0;
	font-size: 1.05em;
	line-height: 1.35;
}

.etec .etec-carte-vue__titre a {
	color: inherit;
	text-decoration: none;
}

.etec .etec-carte-vue__titre a:hover,
.etec .etec-carte-vue__titre a:focus-visible {
	color: var(--etec-accent-texte, var(--etec-accent));
	text-decoration: underline;
}

.etec .etec-carte-vue__situer {
	display: inline-block;
	margin-top: 6px;
	font-size: .88em;
	font-weight: 600;
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec-carte-vue__carte {
	position: sticky;
	top: 24px;
	display: grid;
	place-items: center;
	min-height: 420px;
	padding: 20px;
	text-align: center;
	background: var(--etec-fond);
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
	overflow: hidden;
}

.etec-carte-vue__carte.is-chargee {
	display: block;
	padding: 0;
}

.etec-carte-vue__carte iframe {
	display: block;
	width: 100%;
	height: 460px;
	border: 0;
}

.etec-carte-vue__credit {
	margin: 0;
	padding: 4px 10px;
	font-size: .75em;
	text-align: right;
	color: var(--etec-doux);
}

.etec-carte-vue__accord p,
.etec-carte-vue__sans {
	max-width: 32ch;
	margin: 0 auto 12px;
	color: var(--etec-doux);
}

/* ─────────── Les autres dates d'une série ─────────── */

.etec-serie {
	margin: 28px 0;
	padding: 20px;
	background: var(--etec-panneau, var(--etec-fond));
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
}

.etec-serie__tete {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 16px;
	align-items: baseline;
	justify-content: space-between;
	margin: 0 0 14px;
}

.etec-fiche .etec-serie__titre {
	margin: 0;
	font-size: 1.15em;
}

.etec-serie__regle {
	margin: 0;
	font-size: .92em;
	color: var(--etec-doux);
}

.etec-serie__icone {
	color: var(--etec-accent-texte, var(--etec-accent));
	font-weight: 700;
}

/* Les dates : des cartes, pastille à gauche. */
.etec-fiche .etec-serie__liste {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.etec-fiche .etec-serie__liste li {
	margin: 0;
}

.etec-fiche .etec-serie__liste li::marker {
	content: none;
}

.etec-serie__lien {
	display: flex;
	gap: 12px;
	align-items: center;
	height: 100%;
	padding: 10px 12px;
	color: inherit;
	text-decoration: none;
	background: var(--etec-fond-page, #fff);
	border: 1px solid var(--etec-trait);
	border-radius: var(--etec-rayon);
	transition: border-color .15s, box-shadow .15s;
}

a.etec-serie__lien:hover,
a.etec-serie__lien:focus-visible {
	border-color: var(--etec-accent);
	box-shadow: 0 2px 10px color-mix(in srgb, var(--etec-accent) 18%, transparent);
}

.etec-serie__date .etec-pastille {
	flex: none;
	width: 52px;
	height: 52px;
}

.etec-serie__quand {
	display: grid;
	gap: 1px;
	min-width: 0;
	line-height: 1.35;
}

.etec-serie__quand strong {
	font-size: .95em;
}

.etec-serie__quand > span {
	font-size: .88em;
	color: var(--etec-doux);
}

.etec-serie__quand .etec-mention {
	justify-self: start;
	margin: 2px 0 0;
}

.etec-serie__date.is-courante .etec-serie__lien {
	border: 2px solid var(--etec-accent);
	background: color-mix(in srgb, var(--etec-accent) 6%, var(--etec-fond-page, #fff));
}

.etec-fiche .etec-serie__quand .etec-serie__ici,
.etec-fiche .etec-serie__quand .etec-serie__reste {
	font-size: .78em;
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: uppercase;
	color: var(--etec-accent-texte, var(--etec-accent));
}

.etec-serie__date.is-indisponible .etec-pastille {
	opacity: .55;
}

.etec-serie__plus {
	margin: 8px 0 0;
	font-size: .9em;
	color: var(--etec-doux);
}

@media (max-width: 759px) {

	.etec-jour__item,
	.etec-resume__item {
		grid-template-columns: minmax(0, 1fr);
	}

	.etec-resume__ou,
	.etec-resume__item .etec-mention {
		grid-column: auto;
		grid-row: auto;
	}

	.etec-carte-vue {
		grid-template-columns: minmax(0, 1fr);
	}

	/* Sur téléphone, la carte passe au-dessus : on voit où, puis quoi. */
	.etec-carte-vue__carte {
		position: static;
		order: -1;
		min-height: 260px;
	}

	.etec-carte-vue__carte iframe {
		height: 300px;
	}
}
