:root {
	--motion-fast: 220ms;
	--motion-base: 440ms;
	--motion-slow: 720ms;
	--motion-hero: 1050ms;
	--motion-stagger: 70ms;
	--motion-ease: cubic-bezier(.22, 1, .36, 1);
	--motion-ease-in-out: cubic-bezier(.65, 0, .35, 1);
	--motion-ease-soft: cubic-bezier(.33, 1, .68, 1);
	--elora-duration-fast: var(--motion-fast);
	--elora-duration-standard: var(--motion-base);
	--elora-duration-reveal: var(--motion-slow);
	--elora-duration-editorial: var(--motion-hero);
	--elora-ease: var(--motion-ease);
}

@media (prefers-reduced-motion: no-preference) {
	html.elora-motion-enabled [data-elora-reveal] {
		transition:
			opacity var(--motion-slow) var(--motion-ease),
			transform var(--motion-slow) var(--motion-ease),
			clip-path var(--motion-slow) var(--motion-ease);
		transition-delay: var(--elora-reveal-delay, 0ms);
		will-change: opacity, transform;
	}
	html.elora-motion-enabled [data-elora-reveal][data-elora-motion-state="pending"] {
		opacity: 0;
		transform: translate3d(0, 18px, 0);
	}
	html.elora-motion-enabled [data-elora-reveal="left"][data-elora-motion-state="pending"] { transform: translate3d(-22px, 0, 0); }
	html.elora-motion-enabled [data-elora-reveal="right"][data-elora-motion-state="pending"] { transform: translate3d(22px, 0, 0); }
	html.elora-motion-enabled [data-elora-reveal="card"][data-elora-motion-state="pending"] { transform: translate3d(0, 24px, 0); }
	html.elora-motion-enabled [data-elora-reveal][data-elora-motion-state="revealed"] {
		opacity: 1;
		transform: translate3d(0, 0, 0);
	}

	html.elora-motion-enabled [data-elora-image-reveal] {
		overflow: hidden;
		transition: opacity var(--motion-slow) var(--motion-ease), clip-path 820ms var(--motion-ease);
		will-change: clip-path;
	}
	html.elora-motion-enabled [data-elora-image-reveal][data-elora-motion-state="pending"] {
		opacity: .6;
		clip-path: inset(0 0 16% 0);
	}
	html.elora-motion-enabled [data-elora-image-reveal][data-elora-motion-state="revealed"] {
		opacity: 1;
		clip-path: inset(0 0 0 0);
	}
	html.elora-motion-enabled [data-elora-image-reveal] img { transition: transform var(--motion-hero) var(--motion-ease); }
	html.elora-motion-enabled [data-elora-image-reveal][data-elora-motion-state="pending"] img { transform: scale(1.045); }
	html.elora-motion-enabled [data-elora-image-reveal][data-elora-motion-state="revealed"] img { transform: scale(1); }

	html.elora-motion-enabled [data-elora-heading-reveal][data-elora-motion-state="pending"] {
		opacity: 0;
		clip-path: inset(0 0 100% 0);
		transform: translate3d(0, 20px, 0);
	}
	html.elora-motion-enabled [data-elora-heading-reveal][data-elora-motion-state="revealed"] {
		opacity: 1;
		clip-path: inset(0 0 0 0);
		transform: translate3d(0, 0, 0);
	}

	html.elora-motion-enabled [data-elora-line]::after {
		content: "";
		position: absolute;
		z-index: 1;
		inset: auto 0 0;
		height: 1px;
		background: color-mix(in srgb, var(--elora-gold) 70%, transparent);
		transform: scaleX(0);
		transform-origin: left center;
		transition: transform 760ms var(--motion-ease);
		pointer-events: none;
	}
	html.elora-motion-enabled [data-elora-line][data-elora-line-state="revealed"]::after { transform: scaleX(1); }

	html.elora-motion-enabled [data-elora-parallax] {
		transform: translate3d(0, var(--elora-parallax-y, 0), 0);
		will-change: transform;
	}
	body.home [data-elora-image-reveal][data-elora-motion-state="pending"] { clip-path: inset(0 0 22% 0); }
	body.home [data-elora-reveal="card"][data-elora-motion-state="pending"] { transform: translate3d(0, 30px, 0); }
	[data-elora-hero-running] .elora-label::before { animation: elora-gold-line-in 700ms var(--motion-ease) 420ms both; transform-origin: left center; }
	@keyframes elora-gold-line-in { from { opacity: 0; transform: scaleX(0); } to { opacity: 1; transform: scaleX(1); } }
}

.elora-product-card { position: relative; }
.elora-product-card::after {
	content: "";
	position: absolute;
	inset: auto 0 0;
	height: 1px;
	background: var(--elora-gold);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform var(--motion-base) var(--motion-ease);
	pointer-events: none;
}
.elora-card-action {
	background: linear-gradient(var(--elora-gold), var(--elora-gold)) left calc(100% - .25em) / 0 1px no-repeat;
	transition: color var(--motion-fast) var(--motion-ease), background-size var(--motion-base) var(--motion-ease);
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	html.elora-motion-enabled .elora-card-link:hover .elora-card-photo img { transform: scale(1.035); }
	.elora-product-card:hover::after { transform: scaleX(1); }
	.elora-card-link:hover .elora-card-action { background-size: 100% 1px; }
}

.elora-catalog-filters { position: relative; }
.elora-filter-indicator {
	position: absolute;
	z-index: 2;
	left: 0;
	top: 0;
	height: 1px;
	width: var(--elora-filter-width, 0);
	background: var(--elora-gold);
	transform: translate3d(var(--elora-filter-x, 0), var(--elora-filter-y, 0), 0);
	transition: width var(--motion-base) var(--motion-ease), transform var(--motion-base) var(--motion-ease);
	pointer-events: none;
}
html.elora-filter-leaving .elora-product-grid { opacity: .74; transform: translateY(4px); transition: opacity var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease); }

.elora-header-inner .wp-block-navigation-item__content {
	position: relative;
	transition: color var(--motion-fast) var(--motion-ease);
}
.elora-header-inner .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	inset: auto 0 .36rem;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: right center;
	transition: transform var(--motion-base) var(--motion-ease);
}
html.elora-motion-enabled .elora-header-inner :is(.current-menu-item > a, a[aria-current="page"], a.is-current-page) { text-decoration: none; }
html.elora-motion-enabled .elora-header-inner :is(.current-menu-item > a, a[aria-current="page"], a.is-current-page)::after,
.elora-header-inner .wp-block-navigation-item__content:hover::after { transform: scaleX(1); transform-origin: left center; }
.elora-actions :is(summary, a, button, .wc-block-mini-cart__button) svg { transition: transform var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease); }
@media (hover: hover) and (pointer: fine) {
	.elora-actions :is(summary, a, button, .wc-block-mini-cart__button):hover svg { transform: translateY(-1px); }
}
.elora-search[open] .elora-search-panel { animation: elora-search-open var(--motion-base) var(--motion-ease) both; transform-origin: top right; }
@keyframes elora-search-open { from { opacity: 0; transform: translate3d(0, -8px, 0) scale(.985); } to { opacity: 1; transform: none; } }

:where(.elora-button, .wp-block-button__link, .single_add_to_cart_button, .wc-block-components-button, button.add_to_cart_button) {
	position: relative;
	overflow: hidden;
	transition:
		background-color var(--motion-base) var(--motion-ease),
		border-color var(--motion-base) var(--motion-ease),
		color var(--motion-base) var(--motion-ease),
		transform var(--motion-fast) var(--motion-ease),
		box-shadow var(--motion-base) var(--motion-ease);
}
@media (hover: hover) and (pointer: fine) {
	:where(.elora-button, .wp-block-button__link, .single_add_to_cart_button, .wc-block-components-button, button.add_to_cart_button):hover { box-shadow: 0 7px 18px rgb(10 18 37 / .09); }
}
:where(.elora-button, .wp-block-button__link, .single_add_to_cart_button, .wc-block-components-button, button.add_to_cart_button):active { transform: translateY(1px); }
:where(button, .wp-block-button__link).is-elora-adding { cursor: progress; }
:where(button, .wp-block-button__link).is-elora-added::after {
	content: "Added";
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: var(--elora-navy);
	color: var(--elora-gold-light);
	font: inherit;
	letter-spacing: inherit;
	animation: elora-added-confirm 1200ms var(--motion-ease) both;
}
@keyframes elora-added-confirm { 0% { opacity: 0; transform: translateY(5px); } 18%, 82% { opacity: 1; transform: none; } 100% { opacity: 0; transform: translateY(-3px); } }
.elora-cart-feedback { animation: elora-cart-feedback 520ms var(--motion-ease); }
@keyframes elora-cart-feedback { 0%, 100% { transform: none; } 45% { color: var(--elora-gold-light); transform: translateY(-2px) scale(1.035); } }
.elora-mobile-cart-count.elora-cart-feedback { animation-name: elora-badge-feedback; }
@keyframes elora-badge-feedback { 0%, 100% { transform: scale(1); } 45% { transform: scale(1.16); } }

@media (max-width: 37.49rem) {
	.elora-mobile-nav.elora-mobile-nav--motion .elora-mobile-nav__item::before { opacity: 0; }
	.elora-mobile-nav__glider {
		position: absolute;
		z-index: 1;
		left: 0;
		top: 0;
		width: var(--elora-mobile-active-width, 0);
		height: 1px;
		background: var(--elora-gold);
		transform: translate3d(var(--elora-mobile-active-x, 0), 0, 0);
		transition: width var(--motion-base) var(--motion-ease), transform var(--motion-base) var(--motion-ease);
		pointer-events: none;
	}
	.elora-mobile-nav__item .elora-mobile-nav__icon { transition: color var(--motion-fast) var(--motion-ease), transform var(--motion-base) var(--motion-ease); }
	.elora-mobile-nav__item:is(.is-active, [aria-expanded="true"]) .elora-mobile-nav__icon { transform: translateY(-1px) scale(1.06); }
	.elora-mobile-nav__item:active .elora-mobile-nav__icon { transform: scale(.95); transition-duration: 100ms; }
	html.elora-motion-enabled .elora-mobile-sheet { transition: visibility 0s linear var(--motion-base); }
	html.elora-motion-enabled .elora-mobile-sheet.is-open { transition-delay: 0s; }
	html.elora-motion-enabled .elora-mobile-sheet__backdrop { transition: opacity var(--motion-base) var(--motion-ease); }
	html.elora-motion-enabled .elora-mobile-sheet__panel { transition: transform 480ms var(--motion-ease); }
	html.elora-motion-enabled .elora-mobile-sheet.is-open .elora-mobile-sheet__panel { animation: elora-sheet-settle 520ms var(--motion-ease) both; }
	@keyframes elora-sheet-settle { from { transform: translateY(102%); } 72% { transform: translateY(-3px); } to { transform: translateY(0); } }
}

@view-transition { navigation: auto; }
::view-transition-old(root) { animation: elora-page-old 180ms var(--motion-ease-in-out) both; }
::view-transition-new(root) { animation: elora-page-new 360ms var(--motion-ease) both; }
@keyframes elora-page-old { to { opacity: 0; transform: translateY(-3px); } }
@keyframes elora-page-new { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }

@media (max-width: 47.99rem) and (prefers-reduced-motion: no-preference) {
	:root { --motion-slow: 600ms; --motion-hero: 880ms; --motion-stagger: 55ms; }
	html.elora-motion-enabled [data-elora-reveal][data-elora-motion-state="pending"] { transform: translate3d(0, 11px, 0); }
	html.elora-motion-enabled [data-elora-reveal="left"][data-elora-motion-state="pending"],
	html.elora-motion-enabled [data-elora-reveal="right"][data-elora-motion-state="pending"] { transform: translate3d(0, 12px, 0); }
}

@media (prefers-reduced-motion: reduce) {
	:root {
		--motion-fast: 0ms;
		--motion-base: 0ms;
		--motion-slow: 0ms;
		--motion-hero: 0ms;
		--motion-stagger: 0ms;
		--elora-duration-fast: 0ms;
		--elora-duration-standard: 0ms;
		--elora-duration-reveal: 0ms;
		--elora-duration-editorial: 0ms;
	}
	html { scroll-behavior: auto !important; }
	[data-elora-reveal], [data-elora-image-reveal], [data-elora-heading-reveal], [data-elora-parallax] {
		opacity: 1 !important;
		transform: none !important;
		clip-path: none !important;
	}
	[data-elora-image-reveal] img { transform: none !important; }
	*, *::before, *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0ms !important;
		scroll-behavior: auto !important;
	}
	::view-transition-old(root), ::view-transition-new(root) { animation: none !important; }
}
