/* =========================
   GLOBAL TRANSITIONS
   Cross-page and cross-state motion only
   ========================= */

/* =========================
   PAGE ENTRY
   Applied after JS marks page as ready
   ========================= */

body {
	opacity: 1;
	transform: translateY(0) scale(1);
}

body.rv-page-ready {
	opacity: 1;
	transform: translateY(0) scale(1);
	transition:
		opacity var(--rv-dur-page) var(--rv-ease-standard),
		transform var(--rv-dur-page) var(--rv-ease-standard);
}

/* =========================
   PAGE EXIT
   Applied before navigation
   ========================= */

body.rv-page-transition-out {
	opacity: 0;
	transform: translateY(8px) scale(0.995);
	transition:
		opacity 0.24s var(--rv-ease-standard),
		transform 0.24s var(--rv-ease-standard);
}

/* =========================
   MOTION SAFETY
   Respect reduced-motion preferences
   ========================= */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	body,
	body.rv-page-ready,
	body.rv-page-transition-out {
		transform: none !important;
	}
}