/* Photo movement sits behind static, readable text and has no layout cost. */
.cinematic-hero .hero-image img,
.article-hero > img {
	animation: hero-drift 14s ease-in-out -3.5s infinite alternate;
	animation-play-state: paused;
	transform-origin: 60% 54%;
}
.cinematic-hero[data-scene-visible] .hero-image img,
.article-hero[data-scene-visible] > img { animation-play-state: running; }
@keyframes hero-drift {
	from { transform: translate3d(-1.5%, -.5%, 0) scale(1.04); }
	to { transform: translate3d(1.5%, 1%, 0) scale(1.16); }
}
:root[data-page-hidden] *, :root[data-page-hidden] *::before, :root[data-page-hidden] *::after {
	animation-play-state: paused !important;
}
:root[data-reduced-motion] .cinematic-hero .hero-image img,
:root[data-reduced-motion] .article-hero > img { animation: none; transform: none; }
@media (prefers-reduced-motion: reduce) {
	.cinematic-hero .hero-image img, .article-hero > img { animation: none; transform: none; }
}
@media (max-width: 40rem) and (prefers-reduced-motion: no-preference) {
	:root:not([data-reduced-motion]) .cinematic-hero .hero-image img { animation: hero-drift-mobile 8s ease-in-out infinite alternate; animation-play-state: running; }
	:root:not([data-reduced-motion]) :is(.prayer-scene .scene-image img,.vocation-image img,.welcome-glass) { animation: scene-drift-mobile 9s ease-in-out infinite alternate; will-change: transform; }
}
@keyframes hero-drift-mobile {
	from { transform: translate3d(-3%, 0, 0) scale(1.08); }
	to { transform: translate3d(3%, -1%, 0) scale(1.2); }
}
@keyframes scene-drift-mobile {
	from { transform: translate3d(-2%, 0, 0) scale(1.08); }
	to { transform: translate3d(2%, -2%, 0) scale(1.18); }
}

/* Native cursor, with a small Chi-Rho on reading surfaces. No follower or trail.
   Forms, dialogs, links and controls retain familiar operating-system cursors. */
@media (hover: hover) and (pointer: fine) and (forced-colors: none) {
	:root:not([data-contrast="light"]):not([data-contrast="dark"]) body {
		cursor: url('/assets/chi-rho-cursor.svg') 20 20, auto;
	}
}
:is(form, .journey, .service-form, dialog) { cursor: auto; }
:is(input, textarea, [contenteditable="true"]) { cursor: text; }
:is(a[href], button, select, summary, [role="button"], [role="link"], input[type="submit"], input[type="button"], input[type="checkbox"], input[type="radio"], label[for]) { cursor: pointer; }
:is(a[href], button, summary, [role="button"], [role="link"]) * { cursor: inherit; }
:is(button, input, select, textarea):disabled, [aria-disabled="true"] { cursor: not-allowed; }
