/* Motion — theme fade, page enter, hovers */

:root {
	--wr-ease: cubic-bezier(0.22, 1, 0.36, 1);
	--wr-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--wr-dur-fast: 180ms;
	--wr-dur: 320ms;
	--wr-dur-slow: 520ms;
}

/* Crossfade light/dark by morphing colors — content stays visible */
body,
.wr-site-header,
.wr-card,
.wr-splash-panel,
.wr-btn,
.wr-btn--ghost,
.wr-theme-toggle,
.wr-score-badge,
.wr-latest-rail,
.wr-home-retro,
.wr-home-throwback,
.wr-home-columns,
.wr-home-cta,
.wr-request-form input,
.wr-request-form select,
.wr-request-form textarea,
.wr-notice,
a {
	transition:
		background-color 0.45s var(--wr-ease),
		color 0.45s var(--wr-ease),
		border-color 0.45s var(--wr-ease),
		box-shadow 0.45s var(--wr-ease),
		filter 0.45s var(--wr-ease);
}

html.wr-theme-animating .wr-theme-toggle {
	pointer-events: none;
}

.wr-brand__mark {
	transition: transform 0.25s ease, filter 0.45s var(--wr-ease);
}

/* Soft internal nav fade still uses these helpers */
html.wr-theme-fade-out body {
	opacity: 0;
	transition: opacity 0.28s var(--wr-ease);
}

html.wr-theme-fade-in body {
	opacity: 1;
	transition: opacity 0.4s var(--wr-ease);
}

/* Page enter */
@keyframes wr-page-in {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes wr-rise {
	from {
		opacity: 0;
		transform: translateY(18px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes wr-fade {
	from { opacity: 0; }
	to { opacity: 1; }
}

.wr-site-header {
	animation: wr-fade var(--wr-dur-slow) var(--wr-ease) both;
}

.wr-main {
	animation: wr-page-in var(--wr-dur-slow) var(--wr-ease) both;
	animation-delay: 60ms;
}

.wr-reveal {
	opacity: 0;
	transform: translateY(18px);
	transition:
		opacity var(--wr-dur-slow) var(--wr-ease-out),
		transform var(--wr-dur-slow) var(--wr-ease-out);
	transition-delay: var(--wr-reveal-delay, 0ms);
}

.wr-reveal.is-in {
	opacity: 1;
	transform: translateY(0);
}

/* Nav hover underline */
.wr-nav a {
	position: relative;
	transition: color var(--wr-dur-fast) var(--wr-ease);
}

.wr-nav a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -0.3rem;
	height: 2px;
	background: var(--wr-accent);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform var(--wr-dur) var(--wr-ease);
}

.wr-nav a:hover::after,
.wr-nav .current-menu-item > a::after {
	transform: scaleX(1);
}

/* Brand */
.wr-brand {
	transition: color var(--wr-dur-fast) var(--wr-ease), transform var(--wr-dur) var(--wr-ease);
}

.wr-brand:hover {
	transform: translateY(-1px);
}

.wr-brand__mark {
	transition: transform var(--wr-dur) var(--wr-ease), filter var(--wr-dur) var(--wr-ease);
}

.wr-brand:hover .wr-brand__mark {
	transform: rotate(-6deg) scale(1.06);
}

/* Cards / hero / rail — color only on hover (no lift, zoom, or shadow) */
.wr-card,
.wr-card__media,
.wr-card__media img,
.wr-hero-feature__media img,
.wr-score-badge {
	transition: none;
}

.wr-card:hover,
.wr-card:hover .wr-card__media,
.wr-card:hover .wr-card__media img,
.wr-hero-feature:hover .wr-hero-feature__media img,
.wr-card:hover .wr-score-badge,
.wr-hero-feature:hover .wr-score-badge,
.wr-latest-rail__item:hover {
	transform: none;
	box-shadow: none;
	filter: none;
}

.wr-hero-feature__media {
	overflow: hidden;
}

.wr-card__title a,
.wr-hero-feature__title a,
.wr-latest-rail__title {
	transition: color var(--wr-dur-fast) var(--wr-ease);
}

/* Buttons + theme toggle */
.wr-btn {
	transition:
		transform var(--wr-dur-fast) var(--wr-ease),
		filter var(--wr-dur-fast) var(--wr-ease),
		background-color var(--wr-dur) var(--wr-ease),
		color var(--wr-dur) var(--wr-ease),
		border-color var(--wr-dur) var(--wr-ease);
}

.wr-btn:hover {
	transform: translateY(-2px);
}

.wr-btn:active {
	transform: translateY(0) scale(0.98);
}

.wr-theme-toggle {
	transition:
		transform var(--wr-dur) var(--wr-ease),
		border-color var(--wr-dur-fast) var(--wr-ease),
		color var(--wr-dur-fast) var(--wr-ease),
		background-color var(--wr-dur) var(--wr-ease);
}

.wr-theme-toggle:hover {
	transform: rotate(-10deg) scale(1.06);
}

.wr-theme-toggle:active {
	transform: rotate(0deg) scale(0.96);
}

.wr-theme-toggle svg {
	transition: opacity var(--wr-dur-fast) var(--wr-ease), transform var(--wr-dur) var(--wr-ease);
}

html.wr-theme-animating .wr-theme-toggle svg {
	transform: rotate(180deg) scale(0.9);
	opacity: 0.45;
	transition: transform 0.55s var(--wr-ease), opacity 0.55s var(--wr-ease);
}

/* Panels */
.wr-splash-panel {
	transition: border-color var(--wr-dur) var(--wr-ease);
}

.wr-splash-panel:hover {
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	html.wr-theme-fade-out body,
	html.wr-theme-fade-in body,
	.wr-main,
	.wr-site-header,
	.wr-reveal,
	.wr-card,
	.wr-btn,
	.wr-theme-toggle,
	.wr-nav a::after,
	.wr-card__media img,
	.wr-hero-feature__media img {
		animation: none !important;
		transition: none !important;
		transform: none !important;
		opacity: 1 !important;
	}

	::view-transition-old(root),
	::view-transition-new(root) {
		animation: none !important;
	}
}
