/**
 * Progressive page transitions.
 *
 * Only the page content moves; the persistent header remains pinned in place.
 * Ordinary navigation remains unchanged when scripting is unavailable.
 */
html.is-hv-page-transitioning {
	scroll-behavior: auto !important;
}

html.is-hv-page-transitioning .site-header {
	transform: translate3d(0, 0, 0) !important;
}

.hv-page-loader {
	align-items: center;
	display: flex;
	inset: 0;
	justify-content: center;
	opacity: 0;
	pointer-events: none;
	position: fixed;
	transition: opacity 120ms ease, visibility 0s linear 120ms;
	visibility: hidden;
	z-index: 1085;
}

.hv-page-loader__spinner {
	animation: hv-page-spinner 700ms linear infinite;
	border: 3px solid rgb(var(--hv-ink-rgb) / .28);
	border-radius: 50%;
	border-top-color: var(--hv-color-accent);
	display: block;
	filter: drop-shadow(0 0 0.65rem rgba(255, 255, 255, 0.42));
	height: 2.5rem;
	width: 2.5rem;
}

html.is-hv-page-transitioning.is-hv-page-waiting:not(.is-hv-page-revealing) .hv-page-loader {
	opacity: 1;
	visibility: visible;
}

@keyframes hv-page-spinner {
	to {
		transform: rotate(1turn);
	}
}

html.is-hv-page-transitioning:not(.is-hv-page-revealing) :is(#main.site-main, .site-footer) {
	opacity: 0;
	pointer-events: none;
	transform: translate3d(0, -1.5rem, 0);
	transition: opacity 460ms ease, transform 520ms cubic-bezier(.4, 0, 1, 1);
}

html.is-hv-page-transitioning.is-hv-page-revealing :is(#main.site-main, .site-footer) {
	animation: hv-page-content-enter 520ms cubic-bezier(.22, 1, .36, 1) both;
}

@keyframes hv-page-content-enter {
	from {
		opacity: 0;
		transform: translate3d(0, 1.5rem, 0);
	}

	to {
		opacity: 1;
		transform: translate3d(0, 0, 0);
	}
}

@media (prefers-reduced-motion: reduce) {
	.hv-page-loader__spinner {
		animation: none !important;
	}

	html.is-hv-page-transitioning:not(.is-hv-page-revealing) :is(#main.site-main, .site-footer),
	html.is-hv-page-transitioning.is-hv-page-revealing :is(#main.site-main, .site-footer) {
		animation: none;
		opacity: 1;
		pointer-events: auto;
		transform: none;
		transition: none;
	}
}
