/* ==========================================================================
   Eurodrop — styles complémentaires à theme.json
   Le jour (fond clair) pour préparer et lire, la nuit (fond bleu) pour le spectacle.
   ========================================================================== */

:root {
	--ed-sodium: var(--wp--preset--color--sodium);
	--ed-nuit: var(--wp--preset--color--nuit);
	--ed-transition: 160ms ease;
}

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

h1, h2, h3 {
	text-wrap: balance;
	font-variation-settings: "opsz" 96;
}
p { text-wrap: pretty; }

::selection { background: var(--wp--preset--color--sodium); color: var(--wp--preset--color--nuit-profonde); }

a { text-underline-offset: 0.18em; text-decoration-thickness: 1px; }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--wp--preset--color--sodium);
	outline-offset: 3px;
	border-radius: 2px;
}
.has-jour-background-color :where(a, button, input, select, textarea):focus-visible,
.has-brume-background-color :where(a, button, input, select, textarea):focus-visible,
.has-blanc-background-color :where(a, button, input, select, textarea):focus-visible {
	outline-color: var(--wp--preset--color--laiton);
}

.wp-element-button,
.wp-block-button__link {
	transition: background-color var(--ed-transition), color var(--ed-transition), border-color var(--ed-transition);
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: color-mix(in srgb, currentColor 10%, transparent);
}

/* Texte secondaire sur fond nuit */
.has-nuit-background-color .ed-discret,
.has-nuit-profonde-background-color .ed-discret { color: var(--wp--preset--color--fumee); }
.ed-discret { color: var(--wp--preset--color--ardoise); }

/* ---------------------------------------------------------------- En-tête */

.ed-entete {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 50;
}
.ed-entete .wp-block-site-logo img { display: block; }
.ed-entete .wp-block-site-title a { color: inherit; }
.ed-entete .wp-block-navigation a:hover { text-decoration: underline; }
.ed-entete .wp-block-navigation .current-menu-item > a,
.ed-entete .wp-block-navigation a[aria-current="page"] {
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--sodium);
	text-decoration-thickness: 2px;
}
.ed-entete .wp-block-navigation__responsive-container.is-menu-open {
	padding: var(--wp--preset--spacing--50);
}
.ed-entete .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	gap: var(--wp--preset--spacing--40);
	font-family: var(--wp--preset--font-family--bodoni);
	font-size: var(--wp--preset--font-size--grand);
}
@media (max-width: 1023px) {
	.ed-entete .ed-bouton-entete { display: none; }
}

/* ---------------------------------------------------------------- Ciel (héros) */

.ed-ciel {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	background-image:
		radial-gradient(120% 65% at 50% 100%, rgba(52, 62, 138, 0.75) 0%, rgba(35, 42, 92, 0.35) 45%, transparent 70%),
		linear-gradient(180deg, #070A1C 0%, #0F1433 55%, #1B2152 100%);
}
.ed-ciel::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: clamp(70px, 11vw, 150px);
	background: var(--ed-foule) repeat-x bottom center / auto 100%;
	z-index: 1;
	pointer-events: none;
}
.ed-toile {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	z-index: 0;
}
.ed-ciel > .ed-toile,
.ed-final > .ed-toile { cursor: crosshair; }
.ed-ciel > *:not(canvas),
.ed-final > *:not(canvas),
.ed-partition > *:not(canvas) {
	position: relative;
	z-index: 2;
}
.ed-ciel > .ed-ciel__indice,
.ed-partition > .ed-partition__timecode { position: absolute; }
/* En colonne flexible, les marges automatiques rétrécissent les blocs : on leur rend toute la largeur permise. */
.ed-ciel > *:not(canvas):not(.ed-ciel__indice) { width: 100%; box-sizing: border-box; }
.ed-ciel h1 {
	font-variation-settings: "opsz" 96;
	font-weight: 500;
	max-width: 11ch;
	text-shadow: 0 2px 30px rgba(8, 11, 30, 0.6);
}
.ed-ciel p { max-width: 38rem; text-shadow: 0 1px 16px rgba(8, 11, 30, 0.8); }
.ed-ciel__indice {
	position: absolute;
	right: var(--wp--style--root--padding-right, 1.5rem);
	top: var(--wp--preset--spacing--50);
	z-index: 2;
	margin: 0;
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--fumee);
	opacity: 0;
	transition: opacity 600ms ease;
	pointer-events: none;
}
.ed-ciel__indice.est-visible { opacity: 1; }

/* ---------------------------------------------------------------- Programme (liste des spectacles) */

.ed-programme > .wp-block-columns {
	margin-block: 0;
	padding-block: var(--wp--preset--spacing--50);
	border-top: 1px solid color-mix(in srgb, currentColor 22%, transparent);
}
.ed-programme > .wp-block-columns:last-child {
	border-bottom: 1px solid color-mix(in srgb, currentColor 22%, transparent);
}
.ed-programme h3 { margin: 0; }
.ed-programme h3 a { text-decoration: none; }
.ed-programme h3 a:hover { text-decoration: underline; text-decoration-thickness: 1px; }

/* Petit éclat de couleur : chaque type de spectacle garde sa couleur de métal */
.ed-metal {
	--ed-metal: var(--wp--preset--color--sodium);
}
.ed-metal--sodium { --ed-metal: var(--wp--preset--color--sodium); }
.ed-metal--strontium { --ed-metal: var(--wp--preset--color--strontium); }
.ed-metal--cuivre { --ed-metal: var(--wp--preset--color--cuivre); }
.ed-metal--baryum { --ed-metal: var(--wp--preset--color--baryum); }

.ed-metal h2::before,
.ed-metal h3::before {
	content: "";
	display: inline-block;
	width: 0.62em;
	height: 0.62em;
	margin-right: 0.35em;
	vertical-align: 0.02em;
	background-color: var(--ed-metal);
	-webkit-mask: var(--ed-eclat) center / contain no-repeat;
	mask: var(--ed-eclat) center / contain no-repeat;
}
.has-jour-background-color .ed-metal--sodium,
.has-brume-background-color .ed-metal--sodium,
.has-blanc-background-color .ed-metal--sodium { --ed-metal: var(--wp--preset--color--laiton); }

/* ---------------------------------------------------------------- Étapes numérotées */

.ed-etapes {
	counter-reset: etape;
}
.ed-etapes > .wp-block-group {
	counter-increment: etape;
	position: relative;
	padding-top: var(--wp--preset--spacing--40);
	border-top: 1px solid color-mix(in srgb, currentColor 25%, transparent);
}
.ed-etapes > .wp-block-group::before {
	content: counter(etape);
	display: block;
	font-family: var(--wp--preset--font-family--bodoni);
	font-variation-settings: "opsz" 96;
	font-size: var(--wp--preset--font-size--tres-grand);
	line-height: 1;
	margin-bottom: var(--wp--preset--spacing--20);
	color: var(--wp--preset--color--laiton);
}
.has-nuit-background-color .ed-etapes > .wp-block-group::before { color: var(--wp--preset--color--sodium); }
.ed-etapes h3 { margin-top: 0; }

/* ---------------------------------------------------------------- Ce qui est compris */

.ed-inclus {
	list-style: none;
	padding-left: 0;
	columns: 2 18rem;
	column-gap: var(--wp--preset--spacing--60);
}
.ed-inclus li {
	break-inside: avoid;
	padding: 0.7em 0 0.7em 1.6em;
	position: relative;
	border-bottom: 1px solid color-mix(in srgb, currentColor 15%, transparent);
}
.ed-inclus li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 1.05em;
	width: 0.75em;
	height: 0.75em;
	background-color: var(--wp--preset--color--laiton);
	-webkit-mask: var(--ed-eclat) center / contain no-repeat;
	mask: var(--ed-eclat) center / contain no-repeat;
}
.has-nuit-background-color .ed-inclus li::before { background-color: var(--wp--preset--color--sodium); }

/* ---------------------------------------------------------------- Galerie sur fond nuit */

.ed-galerie.wp-block-gallery.has-nested-images figure.wp-block-image img {
	border-radius: var(--wp--custom--rayon);
}
.ed-galerie.wp-block-gallery.has-nested-images figure.wp-block-image figcaption {
	background: linear-gradient(0deg, rgba(8, 11, 30, 0.85), transparent);
	font-size: var(--wp--preset--font-size--petit);
	padding-top: 2.5em;
}

/* ---------------------------------------------------------------- Citation / mise en avant */

.ed-citation {
	border-left: 2px solid var(--wp--preset--color--sodium);
	padding-left: var(--wp--preset--spacing--40);
}

/* ---------------------------------------------------------------- Bandeau de titre des pages */

.ed-bandeau {
	position: relative;
	background-image:
		radial-gradient(90% 120% at 85% 120%, rgba(52, 62, 138, 0.55), transparent 60%),
		linear-gradient(180deg, #0B0F28 0%, #0F1433 100%);
}
.ed-bandeau .wp-block-post-title { max-width: 16ch; }
.ed-bandeau .wp-block-post-excerpt { max-width: 40rem; }
.ed-bandeau .wp-block-post-excerpt__excerpt { margin: 0; }

/* ---------------------------------------------------------------- Pied de page */

.ed-pied a { color: inherit; }
.ed-pied a:hover { color: var(--wp--preset--color--sodium); }
.ed-pied .ed-coord__ligne { margin: 0 0 0.6em; }
.ed-pied .wp-block-site-title a { text-decoration: none; }

/* ---------------------------------------------------------------- Coordonnées */

.ed-coord__ligne {
	display: grid;
	grid-template-columns: 6.5rem 1fr;
	gap: 0.75rem;
	margin: 0 0 0.75em;
}
.ed-coord__nom {
	color: var(--wp--preset--color--ardoise);
	font-size: var(--wp--preset--font-size--petit);
	padding-top: 0.15em;
}
.has-nuit-background-color .ed-coord__nom,
.has-nuit-profonde-background-color .ed-coord__nom { color: var(--wp--preset--color--fumee); }
.ed-reseaux { display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; margin-top: 1em; }

.screen-reader-text {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important;
	width: 1px; word-wrap: normal !important;
}

/* ---------------------------------------------------------------- Formulaire de devis */

.ed-form { scroll-margin-top: 6rem; }
.ed-form__grille {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 var(--wp--preset--spacing--40);
}
@media (max-width: 640px) {
	.ed-form__grille { grid-template-columns: 1fr; }
}
.ed-champ { margin: 0 0 var(--wp--preset--spacing--40); display: flex; flex-direction: column; gap: 0.4rem; }
.ed-champ--large { grid-column: 1 / -1; }
.ed-champ label { font-weight: 600; font-size: 0.95rem; }
.ed-champ__facultatif { font-weight: 400; color: var(--wp--preset--color--ardoise); }
.ed-form input[type="text"],
.ed-form input[type="email"],
.ed-form input[type="tel"],
.ed-form input[type="date"],
.ed-form select,
.ed-form textarea {
	width: 100%;
	box-sizing: border-box;
	font: inherit;
	font-size: 1rem;
	color: var(--wp--preset--color--nuit);
	background: var(--wp--preset--color--blanc);
	border: 1px solid #9CA1BD;
	border-radius: var(--wp--custom--rayon);
	padding: 0.75em 0.85em;
	min-height: 3rem;
	transition: border-color var(--ed-transition), box-shadow var(--ed-transition);
}
.ed-form textarea { min-height: 10rem; resize: vertical; }
.ed-form input:focus,
.ed-form select:focus,
.ed-form textarea:focus {
	outline: none;
	border-color: var(--wp--preset--color--nuit);
	box-shadow: 0 0 0 3px rgba(244, 183, 64, 0.55);
}
.ed-form [aria-invalid="true"] { border-color: #B3261E; }
.ed-champ__erreur { color: #B3261E; font-size: 0.9rem; font-weight: 500; }
.ed-champ--case { flex-direction: row; align-items: flex-start; gap: 0.75rem; flex-wrap: wrap; }
.ed-champ--case input { width: 1.25rem; height: 1.25rem; margin-top: 0.2rem; accent-color: var(--wp--preset--color--nuit); flex: none; }
.ed-champ--case label { font-weight: 400; flex: 1 1 0; min-width: 12rem; }
.ed-champ--case .ed-champ__erreur { flex-basis: 100%; }
.ed-form__note { font-size: var(--wp--preset--font-size--petit); color: var(--wp--preset--color--ardoise); margin-top: 0; }
.ed-form__alerte {
	border-left: 3px solid #B3261E;
	background: #FBEDEC;
	padding: 1rem 1.25rem;
	margin-bottom: var(--wp--preset--spacing--40);
}
.ed-form__alerte p { margin: 0 0 0.5em; }
.ed-form__alerte ul { margin: 0; padding-left: 1.2em; }
.ed-form__envoi .wp-element-button { border: 0; cursor: pointer; font-size: 1.05rem; }
.ed-form--merci {
	border-left: 3px solid var(--wp--preset--color--laiton);
	background: var(--wp--preset--color--blanc);
	padding: var(--wp--preset--spacing--40) var(--wp--preset--spacing--50);
}
.ed-form__titre { font-size: var(--wp--preset--font-size--grand); margin-top: 0; }
.ed-piege { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* ---------------------------------------------------------------- Articles (actualités) */

.ed-cartes .wp-block-post-featured-image img { aspect-ratio: 4 / 3; object-fit: cover; }
.ed-cartes .wp-block-post-title { font-size: var(--wp--preset--font-size--grand); }

/* ---------------------------------------------------------------- Mobile */

@media (max-width: 781px) {
	.ed-ciel { min-height: 92svh !important; }
	.ed-programme > .wp-block-columns { gap: var(--wp--preset--spacing--20); }
	.ed-coord__ligne { grid-template-columns: 1fr; gap: 0.1rem; }
}

@media print {
	.ed-entete, .ed-pied, .ed-ciel::after, canvas { display: none !important; }
	.ed-ciel, .ed-bandeau { background: none !important; color: #000 !important; min-height: 0 !important; }
}

/* ---------------------------------------------------------------- Enchaînement des sections */

.wp-site-blocks > main,
.wp-site-blocks > footer.wp-block-template-part { margin-block-start: 0; }
.ed-contenu > .alignfull { margin-block: 0; }
.ed-contenu > :first-child:not(.alignfull) { margin-block-start: var(--wp--preset--spacing--70); }
.ed-contenu > :last-child:not(.alignfull) { margin-block-end: var(--wp--preset--spacing--70); }
.ed-contenu > .alignfull + :not(.alignfull) { margin-block-start: var(--wp--preset--spacing--70); }
.ed-contenu > :not(.alignfull):has(+ .alignfull) { margin-block-end: var(--wp--preset--spacing--70); }

.ed-liste-simple { list-style: none; margin: 0; }
.ed-pied h2 { margin-bottom: 0.9em; }
.ed-pied .ed-liens-legaux { gap: 0.5rem 1.5rem; }
.ed-liste-simple li { margin: 0 0 0.6em; }

/* ==========================================================================
   Motion design — le fil conducteur est le métier : mèche, bouquet, timecode.
   Tout ce qui suit ne s'applique que si html.ed-anime (posé dans le <head>
   uniquement quand l'appareil n'a pas demandé de réduire les animations).
   ========================================================================== */

/* ---- Bouquet final (bas de page) */
.ed-final { position: relative; isolation: isolate; overflow: hidden; }

/* ---- Partition pyrosymphonique */
.ed-partition {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	min-height: clamp(320px, 42vw, 460px);
	border-radius: var(--wp--custom--rayon);
	background:
		radial-gradient(80% 70% at 60% 100%, rgba(52, 62, 138, 0.45), transparent 70%),
		var(--wp--preset--color--nuit-profonde);
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
}
.ed-partition__timecode {
	position: absolute;
	top: var(--wp--preset--spacing--30);
	left: var(--wp--preset--spacing--30);
	z-index: 2;
	font-family: var(--wp--preset--font-family--hanken);
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	font-size: var(--wp--preset--font-size--moyen);
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--sodium);
}
.ed-partition p {
	margin: 0;
	padding: 0 var(--wp--preset--spacing--30) var(--wp--preset--spacing--20);
	font-size: var(--wp--preset--font-size--petit);
	color: var(--wp--preset--color--fumee);
}

/* ---- Mèche de lecture sous l'en-tête */
.ed-progression {
	position: absolute;
	left: 0; right: 0; bottom: -1px;
	height: 2px;
	pointer-events: none;
	--p: 0;
}
.ed-progression__trace {
	position: absolute; inset: 0;
	background: linear-gradient(90deg, rgba(244, 183, 64, 0.15), var(--wp--preset--color--sodium));
	transform-origin: left center;
	transform: scaleX(var(--p));
}
.ed-progression__etincelle {
	position: absolute;
	top: 50%;
	left: calc(var(--p) * 100%);
	width: 6px; height: 6px;
	margin: -3px 0 0 -3px;
	border-radius: 50%;
	background: #FFF3D6;
	box-shadow: 0 0 6px 2px rgba(255, 210, 120, 0.9), 0 0 16px 6px rgba(244, 183, 64, 0.45);
	opacity: 0;
	transition: opacity 300ms ease;
}
.ed-progression.est-active .ed-progression__etincelle { opacity: 1; animation: ed-crepite 260ms steps(2) infinite; }
@keyframes ed-crepite {
	0% { transform: scale(1); }
	50% { transform: scale(1.5); }
}

/* ---- En-tête qui se resserre au défilement */
.ed-entete .ed-entete__barre { transition: padding 250ms ease, box-shadow 250ms ease; }
.ed-entete.est-defile .ed-entete__barre {
	padding-top: 0.45rem !important;
	padding-bottom: 0.45rem !important;
	box-shadow: 0 10px 30px rgba(8, 11, 30, 0.35);
}

/* ---- Titre du ciel : chaque lettre s'allume comme une lance */
.ed-anime .ed-ciel h1:not(.est-pret) { opacity: 0; animation: ed-secours 0s 2.5s forwards; }
@keyframes ed-secours { to { opacity: 1; } }
.ed-mot { display: inline-block; white-space: nowrap; }
.ed-anime .ed-lettre {
	display: inline-block;
	opacity: 0;
	animation: ed-allumage 1100ms cubic-bezier(0.2, 0.7, 0.2, 1) forwards;
	animation-delay: calc(450ms + var(--i) * 42ms);
}
@keyframes ed-allumage {
	0% { opacity: 0; filter: blur(8px); color: var(--wp--preset--color--sodium); transform: translateY(0.12em) scale(0.92); text-shadow: 0 0 0 transparent; }
	35% { opacity: 1; filter: blur(0); color: #FFE7AE; transform: none; text-shadow: 0 0 22px rgba(244, 183, 64, 0.95), 0 0 48px rgba(244, 183, 64, 0.5); }
	100% { opacity: 1; filter: none; color: inherit; transform: none; text-shadow: 0 2px 30px rgba(8, 11, 30, 0.6); }
}
.ed-anime .ed-ciel .wp-block-group > p,
.ed-anime .ed-ciel .wp-block-buttons {
	opacity: 0;
	animation: ed-apparait 900ms ease forwards;
	animation-delay: calc(700ms + var(--n, 20) * 42ms);
}
.ed-anime .ed-ciel .wp-block-buttons { animation-delay: calc(900ms + var(--n, 20) * 42ms); }
@keyframes ed-apparait { from { opacity: 0; } to { opacity: 1; } }

/* ---- Titres : la mèche brûle, puis le titre s'allume */
.ed-titre-meche { position: relative; }
.ed-meche {
	display: block;
	position: relative;
	width: min(9rem, 40%);
	height: 2px;
	margin-top: 0.38em;
	background: linear-gradient(90deg, var(--wp--preset--color--laiton), rgba(140, 90, 11, 0.25)) no-repeat left / 100% 100%;
}
.has-nuit-background-color .ed-meche,
.has-nuit-profonde-background-color .ed-meche,
.ed-bandeau .ed-meche {
	background-image: linear-gradient(90deg, var(--wp--preset--color--sodium), rgba(244, 183, 64, 0.2));
}
.has-text-align-center .ed-meche { margin-inline: auto; }
.ed-meche::after {
	content: "";
	position: absolute;
	top: 50%; left: 100%;
	width: 7px; height: 7px;
	margin: -3.5px 0 0 -3.5px;
	border-radius: 50%;
	background: #FFF3D6;
	box-shadow: 0 0 8px 3px rgba(255, 205, 110, 0.9), 0 0 22px 8px rgba(244, 183, 64, 0.4);
	opacity: 0;
}
.ed-anime .ed-titre-meche.ed-a-reveler:not(.est-visible) { opacity: 0.08; }
.ed-anime .ed-titre-meche.ed-a-reveler:not(.est-visible) .ed-meche { background-size: 0% 100%; }
.ed-anime .ed-titre-meche.est-visible { animation: ed-eclair 900ms ease 420ms both; }
.ed-anime .ed-titre-meche.est-visible .ed-meche { animation: ed-brule 650ms cubic-bezier(0.5, 0, 0.3, 1) both; }
.ed-anime .ed-titre-meche.est-visible .ed-meche::after { animation: ed-etincelle-meche 650ms cubic-bezier(0.5, 0, 0.3, 1) both; }
@keyframes ed-brule { from { background-size: 0% 100%; } to { background-size: 100% 100%; } }
@keyframes ed-etincelle-meche {
	0% { left: 0; opacity: 1; }
	85% { left: 100%; opacity: 1; }
	100% { left: 100%; opacity: 0; }
}
@keyframes ed-eclair {
	0% { opacity: 0.08; text-shadow: 0 0 0 transparent; }
	30% { opacity: 1; text-shadow: 0 0 26px rgba(244, 183, 64, 0.75); }
	100% { opacity: 1; text-shadow: 0 0 0 transparent; }
}

/* ---- Éléments qui s'enflamment les uns après les autres */
.ed-anime .ed-a-reveler:not(.ed-titre-meche):not(.est-visible) { opacity: 0; }
.ed-anime .ed-a-reveler.est-visible:not(.ed-titre-meche) {
	animation: ed-enflamme 800ms ease both;
	animation-delay: calc(var(--i, 0) * 110ms);
}
@keyframes ed-enflamme {
	0% { opacity: 0; filter: brightness(2.4) saturate(0.3); }
	35% { opacity: 1; filter: brightness(1.5) saturate(0.8); }
	100% { opacity: 1; filter: none; }
}

/* Programme : l'éclat de couleur explose à l'apparition et au survol */
.ed-programme > .wp-block-columns {
	position: relative;
	transition: background-color 300ms ease;
}
.ed-programme > .wp-block-columns:hover { background-color: color-mix(in srgb, var(--ed-metal) 9%, transparent); }
.ed-programme h3::before { transition: transform 450ms cubic-bezier(0.3, 1.6, 0.5, 1); }
.ed-programme > .wp-block-columns:hover h3::before { transform: scale(1.45) rotate(30deg); }
.ed-anime .ed-programme > .est-visible h3::before {
	animation: ed-pop 900ms cubic-bezier(0.3, 1.6, 0.5, 1) both;
	animation-delay: calc(var(--i, 0) * 110ms + 150ms);
}
@keyframes ed-pop {
	0% { transform: scale(0) rotate(-90deg); opacity: 0; }
	60% { transform: scale(1.6) rotate(15deg); opacity: 1; }
	100% { transform: scale(1) rotate(0); opacity: 1; }
}

/* Étapes : la ligne du haut brûle d'une étape à l'autre */
.ed-etapes > .wp-block-group::after {
	content: "";
	position: absolute;
	top: -1px; left: 0;
	width: 100%; height: 2px;
	background: linear-gradient(90deg, var(--wp--preset--color--laiton), var(--wp--preset--color--sodium));
	transform: scaleX(0);
	transform-origin: left;
}
.ed-etapes > .est-visible::after { transform: scaleX(1); transition: transform 700ms cubic-bezier(0.5, 0, 0.3, 1) calc(var(--i, 0) * 110ms + 200ms); }
html:not(.ed-anime) .ed-etapes > .wp-block-group::after { transform: scaleX(1); }

/* Galerie : chaque photo apparaît comme un flash, zoom léger au survol */
.ed-galerie .wp-block-image { overflow: hidden; }
.ed-galerie .wp-block-image img { transition: transform 900ms cubic-bezier(0.2, 0.7, 0.2, 1), filter 400ms ease; }
.ed-galerie .wp-block-image:hover img { transform: scale(1.05); filter: brightness(1.12); }

/* Frise chronologique : la mèche descend et allume les dates */
.ed-frise {
	position: relative;
	padding-left: clamp(2rem, 5vw, 3.5rem);
	--p: 0;
}
.ed-frise::before,
.ed-frise::after {
	content: "";
	position: absolute;
	left: 0.45rem; top: 0.6rem; bottom: 0.6rem;
	width: 2px;
}
.ed-frise::before { background: color-mix(in srgb, currentColor 18%, transparent); }
.ed-frise::after {
	background: linear-gradient(180deg, var(--wp--preset--color--laiton), var(--wp--preset--color--sodium));
	transform-origin: top;
	transform: scaleY(var(--p));
}
html:not(.ed-anime) .ed-frise::after { transform: none; }
.ed-frise > .wp-block-group { position: relative; }
.ed-frise > .wp-block-group::before {
	content: "";
	position: absolute;
	left: calc(-1 * clamp(2rem, 5vw, 3.5rem) + 0.45rem + 1px);
	top: 0.55em;
	width: 14px; height: 14px;
	margin-left: -7px;
	border-radius: 50%;
	background: var(--wp--preset--color--jour);
	border: 2px solid color-mix(in srgb, currentColor 35%, transparent);
	transition: background-color 300ms ease, border-color 300ms ease, box-shadow 300ms ease;
	z-index: 1;
}
.ed-frise > .wp-block-group.est-allume::before,
html:not(.ed-anime) .ed-frise > .wp-block-group::before {
	background: var(--wp--preset--color--sodium);
	border-color: var(--wp--preset--color--laiton);
	box-shadow: 0 0 0 4px rgba(244, 183, 64, 0.25), 0 0 18px rgba(244, 183, 64, 0.8);
}
.ed-frise .ed-frise__date {
	font-family: var(--wp--preset--font-family--bodoni);
	font-variation-settings: "opsz" 96;
	font-size: var(--wp--preset--font-size--tres-grand);
	line-height: 1;
	margin: 0;
	transition: color 400ms ease;
}
.ed-anime .ed-frise > .wp-block-group:not(.est-allume) .ed-frise__date { color: color-mix(in srgb, currentColor 30%, transparent); }
.ed-frise > .wp-block-group.est-allume .ed-frise__date { color: var(--wp--preset--color--laiton); }

/* ---- Étincelles du cierge magique au survol des boutons principaux */
.ed-cierge { position: relative; overflow: visible; }
.ed-etincelle {
	position: absolute;
	left: var(--x);
	top: 50%;
	width: 3px; height: 3px;
	border-radius: 50%;
	background: #FFE7AE;
	box-shadow: 0 0 6px 1px rgba(244, 183, 64, 0.9);
	pointer-events: none;
	animation: ed-gerbe 620ms ease-out var(--delai, 0ms) both;
}
@keyframes ed-gerbe {
	0% { transform: translate(0, 0) scale(1); opacity: 1; }
	100% { transform: translate(var(--dx), var(--dy)) scale(0.2); opacity: 0; }
}

/* ---- Sécurité : aucun mouvement si l'appareil le demande */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
	.ed-progression, .ed-etincelle { display: none; }
}

/* ---------------------------------------------------------------- Références (communes) */

.ed-villes {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
	gap: 0 var(--wp--preset--spacing--50);
}
.ed-villes li {
	font-family: var(--wp--preset--font-family--bodoni);
	font-variation-settings: "opsz" 96;
	font-size: var(--wp--preset--font-size--grand);
	line-height: 1.15;
	padding: 0.55em 0;
	border-bottom: 1px solid color-mix(in srgb, currentColor 15%, transparent);
}
