/* WPSW Base — effets de mouvement (0.9.0), chargés seulement si le thème enfant a un mouvement.json.
 * L'état de départ (masqué, décalé) n'existe que sous html.wpsw-anime, classe posée par le script d'en-tête
 * hors prefers-reduced-motion et retirée si le script des effets ne démarre pas : sans JavaScript ou en
 * mouvement réduit, tout est visible et immobile. */

.wpsw-anime .wpsw-apparition,
.wpsw-anime .wpsw-cascade > *,
.wpsw-anime .wpsw-titre-revele {
	opacity: 0;
}

/* Parallaxe : l'image déborde légèrement de son cadre pour ne jamais laisser voir de bord en bougeant. */
.wpsw-anime .wpsw-parallaxe {
	overflow: hidden;
}
.wpsw-anime :is(.wp-block-cover.wpsw-parallaxe .wp-block-cover__image-background, .wp-block-image.wpsw-parallaxe img) {
	scale: 1.15;
	will-change: transform;
}

/* Bandeau défilant : une piste (le contenu, puis sa copie masquée aux lecteurs d'écran) qui glisse. */
.wpsw-defilant {
	position: relative;
}
.wpsw-anime .wpsw-defilant {
	overflow: hidden;
}
.wpsw-anime .wpsw-defilant__piste {
	display: flex;
	flex-wrap: nowrap;
	width: max-content;
}
/* Écart porté par chaque élément (pas par « gap ») : la piste se répète exactement à -50 %. */
.wpsw-anime .wpsw-defilant__piste > * {
	flex: none;
	margin-block: 0;
	margin-inline: 0 var(--wp--style--block-gap, 1.5rem);
	white-space: nowrap;
}
.wpsw-defilant__pause {
	position: absolute;
	inset-block-start: 50%;
	inset-inline-end: var(--wp--preset--spacing--20, 0.5rem);
	translate: 0 -50%;
	inline-size: 2.75rem;
	block-size: 2.75rem;
	border: 1px solid currentColor;
	border-radius: 50%;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	font: inherit;
	line-height: 1;
	cursor: pointer;
	opacity: 0.85;
}
.wpsw-defilant__pause:is(:hover, :focus-visible) {
	opacity: 1;
}
.wpsw-defilant__pause:focus-visible {
	outline: 2px solid var(--wp--preset--color--accent, currentColor);
	outline-offset: 2px;
}

/* Annonce du titre de la nouvelle page aux lecteurs d'écran (Barba). */
.wpsw-annonce {
	position: absolute;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* Rideau des transitions de page (Barba) : couleur de marque, au-dessus de tout, hors du flux. */
.wpsw-rideau {
	position: fixed;
	inset: 0;
	z-index: 99999;
	background: var(--wp--preset--color--primary);
	transform: scaleY(0);
	transform-origin: bottom;
	pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
	.wpsw-rideau,
	.wpsw-defilant__pause {
		display: none;
	}
}
