/**
 * Block Animator — page transition overlay.
 *
 * The overlay starts in its "covered" state (no class) so it's already
 * covering the very first paint of every page, then transitions.js adds
 * .is-hidden to reveal the page, and removes it again just before
 * navigating away. Only position/transform/opacity are animated, so this
 * is cheap to composite and never affects page layout.
 */
.gba-page-transition-overlay {
	position: fixed;
	inset: 0;
	z-index: 2147483647;
	pointer-events: none;
	background: var(--gba-pt-color, #111111);
	transition:
		transform var(--gba-pt-duration, 0.5s) var(--gba-pt-easing, ease-in-out),
		opacity var(--gba-pt-duration, 0.5s) var(--gba-pt-easing, ease-in-out);
	will-change: transform, opacity;
}

[data-gba-pt-style='fade'] { opacity: 1; }
[data-gba-pt-style='fade'].is-hidden { opacity: 0; }

[data-gba-pt-style='slideLeft'] { transform: translateX(0); }
[data-gba-pt-style='slideLeft'].is-hidden { transform: translateX(-100%); }

[data-gba-pt-style='slideRight'] { transform: translateX(0); }
[data-gba-pt-style='slideRight'].is-hidden { transform: translateX(100%); }

[data-gba-pt-style='wipeUp'] { transform: translateY(0); }
[data-gba-pt-style='wipeUp'].is-hidden { transform: translateY(-100%); }

[data-gba-pt-style='wipeDown'] { transform: translateY(0); }
[data-gba-pt-style='wipeDown'].is-hidden { transform: translateY(100%); }

[data-gba-pt-style='curtain'] { transform: scaleY(1); transform-origin: top; }
[data-gba-pt-style='curtain'].is-hidden { transform: scaleY(0); }

[data-gba-pt-style='zoomFade'] { opacity: 1; transform: scale(1); }
[data-gba-pt-style='zoomFade'].is-hidden { opacity: 0; transform: scale(1.15); }

@media (prefers-reduced-motion: reduce) {
	.gba-page-transition-overlay {
		display: none;
	}
}
