/*
Theme Name: Psychedelic Stickers
Description: A cinematic, accessible WooCommerce block theme for premium psychedelic art.
Version: 0.7.6
Requires at least: 6.6
Requires PHP: 8.0
Text Domain: psychedelic-stickers
*/

@font-face {
	font-family: "Psychedelic Sans";
	src: local("Inter");
	font-display: swap;
	font-weight: 100 900;
}

@font-face {
	font-family: "Psychedelic Display";
	src: local("Arial Black");
	font-display: swap;
	font-weight: 700 900;
}

/*
 * Design tokens. Single source of truth for color, motion, and layering so the
 * "living gallery" roadmap (animated backdrops, featured drops, immersive motion)
 * can be layered on without touching component CSS. Values mirror theme.json.
 * New code should consume these tokens; legacy hard-coded values are migrated over time.
 */
:root {
	color-scheme: dark;

	/* Palette */
	--ps-color-void: #050507;
	--ps-color-ink: #101016;
	--ps-color-paper: #f8f7ff;
	--ps-color-cyan: #21f6ff;
	--ps-color-violet: #8b5cff;
	--ps-color-magenta: #ff2bd6;
	--ps-color-lime: #c8ff3d; /* focus / sale accent only */
	--ps-color-hairline: rgb(255 255 255 / 12%);

	/* Motion. Gated by .ps-enhanced-motion and prefers-reduced-motion. */
	--ps-motion-fast: .2s;
	--ps-button-motion: 0.18s;
	--ps-btn-ease: cubic-bezier(.23, 1, .32, 1);
	--ps-btn-radius: .5rem;
	--ps-btn-hover-scale: 1.03;
	--ps-btn-tap-scale: .97;
	--ps-motion-base: .6s;
	--ps-motion-carousel: .9s;
	--ps-motion-slow: 1.2s;
	--ps-motion-ambient: 14s;
	--ps-ease-out: cubic-bezier(.2, .8, .2, 1);
	--ps-ease-gallery: cubic-bezier(.22, .72, .18, 1);

	/* Responsive composition rhythm. Laptop values are overridden as one
	   coordinated system instead of scattered one-off section fixes. */
	--ps-section-space: clamp(4rem, 9vw, 8rem);
	--ps-section-heading-space: clamp(2rem, 4vw, 3.5rem);
	--ps-editorial-heading-space: clamp(3rem, 6vw, 6rem);
	--ps-editorial-offset: clamp(0rem, 7vw, 7rem);
	--ps-process-space: calc(var(--wp--preset--spacing--50) + var(--wp--preset--spacing--20));
	--ps-process-gap: clamp(2rem, 6vw, 6.5rem);
	--ps-editorial-media-ratio: 4 / 3;
	--ps-product-row-gap: clamp(1rem, 2vw, 1.5rem);
	--ps-card-radius: 1rem;
	--ps-card-bg: rgb(16 16 22 / 94%);
	--ps-card-border: rgb(255 255 255 / 10%);
	--ps-card-shadow: 0 1px 2px rgb(0 0 0 / 28%);
	--ps-card-shadow-hover: 0 1.25rem 2.5rem rgb(0 0 0 / 38%);
	--ps-card-content-pad: 1rem;

	/* Layering. Reserved stack so backdrop/atmosphere never fights content. */
	--ps-z-backdrop: 0;
	--ps-z-content: 1;
	--ps-z-header: 20;
	--ps-z-overlay: 60;
	--ps-z-transition: 1000;

	/* Live-gallery backdrop opacity. Dormant (0) until a backdrop opts in. */
	--ps-backdrop-opacity: 0;
}
html { scroll-behavior: smooth; }
body {
	overflow-x: hidden;
	background:
		radial-gradient(circle at 15% 12%, rgb(33 246 255 / 8%), transparent 26rem),
		radial-gradient(circle at 85% 30%, rgb(255 43 214 / 9%), transparent 30rem),
		#050507;
}

/*
 * Full-page gallery transition. Markup is inert without the tiny head bootstrap,
 * so script failures can never strand visitors behind an overlay.
 */
.ps-page-transition {
	position: fixed;
	inset: 0;
	z-index: var(--ps-z-transition);
	display: none;
	place-items: center;
	overflow: hidden;
	visibility: hidden;
	opacity: 0;
	background: var(--ps-color-void);
	pointer-events: none;
	transition:
		opacity .42s var(--ps-ease-out),
		visibility 0s linear .42s;
}
.ps-transition-enabled .ps-page-transition { display: grid; }
.ps-transition-nonblocking .ps-page-transition,
.ps-transition-failed-open .ps-page-transition {
	display: none !important;
	visibility: hidden !important;
	opacity: 0 !important;
	pointer-events: none !important;
}
.ps-transition-active .ps-page-transition {
	visibility: visible;
	opacity: 1;
	pointer-events: auto;
	transition:
		opacity .18s ease,
		visibility 0s linear 0s;
}
html.ps-transition-active,
html.ps-transition-active body { overflow: hidden; }
html.ps-transition-nonblocking,
html.ps-transition-nonblocking body,
html.ps-transition-failed-open,
html.ps-transition-failed-open body { overflow: visible; }
.ps-page-transition__loader {
	position: relative;
	z-index: 3;
	display: grid;
	gap: clamp(1.25rem, 4vw, 1.75rem);
	place-items: center;
	justify-items: center;
	padding-inline: 1rem;
}

.ps-page-transition__spinner {
	--ps-spinner-size: clamp(3rem, 12vw, 3.5rem);
	--ps-spinner-bar-width: 3px;
	--ps-spinner-bar-height: 16px;
	--ps-spinner-orbit-x: 6px;
	--ps-spinner-orbit-y: -16px;
	position: relative;
	display: flex;
	width: var(--ps-spinner-size);
	height: var(--ps-spinner-size);
	align-items: center;
	justify-content: center;
}

.ps-page-transition__spinner-bar {
	position: absolute;
	width: var(--ps-spinner-bar-width);
	height: var(--ps-spinner-bar-height);
	border-radius: 1px;
	background: var(--ps-color-cyan);
	box-shadow: 0 0 .45rem rgb(33 246 255 / 35%);
	transform: rotate(var(--ps-spinner-rotate)) translateX(var(--ps-spinner-orbit-x)) translateY(var(--ps-spinner-orbit-y));
	animation: ps-circular-bars 1.5s ease-in-out infinite;
}

@keyframes ps-circular-bars {
	0% {
		opacity: 1;
		transform: rotate(var(--ps-spinner-rotate)) translateX(var(--ps-spinner-orbit-x)) translateY(var(--ps-spinner-orbit-y)) scale(1);
	}
	70% {
		opacity: 0;
		transform: rotate(calc(var(--ps-spinner-rotate) - 40deg)) translateX(var(--ps-spinner-orbit-x)) translateY(var(--ps-spinner-orbit-y)) scale(.9);
	}
	100% {
		opacity: 1;
		transform: rotate(var(--ps-spinner-rotate)) translateX(var(--ps-spinner-orbit-x)) translateY(var(--ps-spinner-orbit-y)) scale(1);
	}
}

.ps-page-transition.is-loader-active .ps-page-transition__spinner {
	filter: drop-shadow(0 0 .65rem rgb(33 246 255 / 28%));
}

.ps-page-transition__mark-wrap {
	position: relative;
	z-index: 3;
	display: grid;
	place-items: center;
	margin: 0;
	padding-inline: 1rem;
}

.ps-page-transition__mark-glow {
	position: absolute;
	inset: -55% -30%;
	border-radius: 50%;
	pointer-events: none;
	background:
		radial-gradient(ellipse 78% 58% at 50% 50%, rgb(33 246 255 / 48%), transparent 68%),
		radial-gradient(ellipse 58% 44% at 24% 58%, rgb(139 92 255 / 42%), transparent 72%),
		radial-gradient(ellipse 52% 40% at 76% 40%, rgb(255 43 214 / 34%), transparent 74%);
	filter: blur(1.35rem);
	opacity: .88;
	animation: ps-transition-mark-glow 5.2s ease-in-out infinite alternate;
}

.ps-page-transition__mark {
	position: relative;
	z-index: 2;
	margin: 0;
	color: var(--ps-color-paper);
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(1.35rem, 4.5vw, 2.4rem);
	font-weight: 900;
	line-height: 1;
	letter-spacing: -.04em;
	text-align: center;
	text-shadow:
		0 0 .45rem rgb(33 246 255 / 55%),
		0 0 1.1rem rgb(33 246 255 / 38%),
		0 0 2.2rem rgb(139 92 255 / 30%),
		0 0 3.6rem rgb(255 43 214 / 22%);
	white-space: nowrap;
}

@keyframes ps-transition-mark-glow {
	0% {
		opacity: .72;
		transform: scale(.94) rotate(-2deg);
		filter: blur(1.2rem) hue-rotate(-8deg);
	}
	50% {
		opacity: .98;
		transform: scale(1.08) rotate(3deg);
		filter: blur(1.65rem) hue-rotate(14deg);
	}
	100% {
		opacity: .8;
		transform: scale(1.02) rotate(-1deg);
		filter: blur(1.45rem) hue-rotate(-10deg);
	}
}
.ps-transition-debug {
	position: fixed;
	right: 1rem;
	bottom: 1rem;
	z-index: calc(var(--ps-z-transition) + 1);
	width: min(32rem, calc(100vw - 2rem));
	max-height: calc(100vh - 2rem);
	margin: 0;
	padding: 1rem;
	overflow: auto;
	border: 1px solid rgb(33 246 255 / 45%);
	border-radius: .75rem;
	background: rgb(5 5 7 / 94%);
	box-shadow: 0 1rem 3rem rgb(0 0 0 / 55%);
	color: var(--ps-color-paper);
	font: 500 .78rem/1.5 ui-monospace, SFMono-Regular, Consolas, monospace;
	white-space: pre-wrap;
	pointer-events: none;
}
*:focus-visible { outline: 3px solid #c8ff3d; outline-offset: 4px; }
.wp-site-blocks { position: relative; z-index: 1; overflow: clip; }
.ps-section { position: relative; padding-block: var(--ps-section-space); }
.ps-eyebrow { color: #21f6ff; font-size: .78rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.ps-glow { text-shadow: 0 0 1.2rem rgb(33 246 255 / 35%), 0 0 2.8rem rgb(255 43 214 / 20%); }
.wp-element-button { color: #050507; }

/*
 * Animate UI button system (ported to native CSS).
 * Clean shadcn-style surfaces with subtle hover/tap scale — no shimmer or gradients.
 */
:where(
	.wp-element-button,
	.wp-block-woocommerce-product-button .wp-block-button__link,
	.wc-block-components-button:not(.is-link),
	.wc-block-cart__submit-button,
	.wc-block-components-checkout-place-order-button,
	.wc-block-mini-cart__footer-cart,
	.wc-block-mini-cart__footer-checkout,
	.wc-block-components-totals-coupon__button,
	.single_add_to_cart_button,
	.woocommerce a.button:not(.remove),
	.woocommerce button.button,
	.woocommerce input.button,
	.ps-product-sticky-bar__button
) {
	display: inline-flex;
	min-height: 2.5rem;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	padding: .5rem 1rem;
	border: 1px solid transparent;
	border-radius: var(--ps-btn-radius);
	font-size: .875rem;
	font-weight: 500;
	line-height: 1.25;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
	box-shadow: none;
	filter: none;
	transition:
		background-color var(--ps-button-motion) var(--ps-btn-ease),
		border-color var(--ps-button-motion) var(--ps-btn-ease),
		color var(--ps-button-motion) var(--ps-btn-ease),
		opacity var(--ps-button-motion) ease,
		transform .15s var(--ps-btn-ease);
}

:where(
	.wp-block-button:not(.is-style-outline) > .wp-element-button,
	.wp-block-woocommerce-product-button .wp-block-button__link,
	.wc-block-cart__submit-button,
	.wc-block-components-checkout-place-order-button,
	.wc-block-mini-cart__footer-cart,
	.wc-block-mini-cart__footer-checkout,
	.wc-block-components-totals-coupon__button,
	.single_add_to_cart_button,
	.woocommerce a.button:not(.remove),
	.woocommerce button.button,
	.woocommerce input.button,
	.ps-product-sticky-bar__button
) {
	background: var(--ps-color-paper);
	color: var(--ps-color-void);
}

@media (hover: hover) and (pointer: fine) {
	:where(
		.wp-block-button:not(.is-style-outline) > .wp-element-button,
		.wc-block-cart__submit-button,
		.wc-block-components-checkout-place-order-button,
		.wc-block-mini-cart__footer-cart,
		.wc-block-mini-cart__footer-checkout,
		.wc-block-components-totals-coupon__button,
		.single_add_to_cart_button,
		.woocommerce a.button:not(.remove),
		.woocommerce button.button,
		.woocommerce input.button,
		.ps-product-sticky-bar__button
	):not(:disabled, [aria-disabled="true"], .is-added, .is-loading):hover {
		background: #fff;
		transform: scale(var(--ps-btn-hover-scale));
	}
}

:where(
	.wp-block-button:not(.is-style-outline) > .wp-element-button,
	.wc-block-cart__submit-button,
	.wc-block-components-checkout-place-order-button,
	.wc-block-mini-cart__footer-cart,
	.wc-block-mini-cart__footer-checkout,
	.wc-block-components-totals-coupon__button,
	.single_add_to_cart_button,
	.woocommerce a.button:not(.remove),
	.woocommerce button.button,
	.woocommerce input.button,
	.ps-product-sticky-bar__button
):not(:disabled, [aria-disabled="true"]):active {
	transform: scale(var(--ps-btn-tap-scale));
}

.wp-block-button.is-style-outline > .wp-element-button {
	border-color: rgb(255 255 255 / 18%);
	background: transparent;
	color: var(--ps-color-paper);
}

@media (hover: hover) and (pointer: fine) {
	.wp-block-button.is-style-outline > .wp-element-button:not(:disabled, [aria-disabled="true"]):hover {
		border-color: rgb(255 255 255 / 32%);
		background: rgb(255 255 255 / 6%);
		color: var(--ps-color-paper);
		transform: scale(var(--ps-btn-hover-scale));
	}
}

.wp-block-button.is-style-outline > .wp-element-button:active {
	transform: scale(var(--ps-btn-tap-scale));
}

.wp-block-button.ps-marketing-cta:not(.is-style-outline) > .has-cyan-background-color {
	background: var(--ps-color-cyan) !important;
	color: var(--ps-color-void) !important;
}

@media (hover: hover) and (pointer: fine) {
	.wp-block-button.ps-marketing-cta:not(.is-style-outline) > .has-cyan-background-color:not(:disabled, [aria-disabled="true"]):hover {
		background: #4df8ff !important;
	}
}

.wp-block-button.ps-marketing-cta > .wp-element-button {
	position: relative;
	overflow: visible;
	-webkit-backdrop-filter: none;
	backdrop-filter: none;
	box-shadow: none;
}

:where(
	.wp-block-woocommerce-product-button .wp-block-button__link,
	.ps-product-sticky-bar__button
).is-added,
:where(
	.wp-block-woocommerce-product-button .wp-block-button__link,
	.ps-product-sticky-bar__button
).is-added:hover {
	background: #16a34a !important;
	color: #fff !important;
	transform: none;
}

:where(
	.wp-block-woocommerce-product-button .wp-block-button__link,
	.ps-product-sticky-bar__button
).is-loading {
	opacity: .72;
	pointer-events: none;
}

.wc-block-components-totals-coupon .wc-block-components-panel__button {
	min-height: 44px;
}
.wp-block-navigation__responsive-container-open,
.wc-block-customer-account__link,
.wc-block-mini-cart__button {
	display: inline-grid;
	min-width: 44px;
	min-height: 44px;
	place-items: center;
}

/* Matched account + bag icons in the storefront header. */
.ps-header-actions .wc-block-customer-account__link,
.ps-header-actions .wc-block-mini-cart__button {
	width: 2.75rem;
	height: 2.75rem;
	min-width: 2.75rem;
	min-height: 2.75rem;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--ps-color-paper);
	text-decoration: none;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
	transition:
		transform .22s cubic-bezier(.34, 1.45, .64, 1),
		background-color .28s ease,
		color .28s ease;
}

@media (hover: hover) and (pointer: fine) {
	.ps-header-actions .wc-block-customer-account__link:hover,
	.ps-header-actions .wc-block-mini-cart__button:hover {
		transform: scale(1.06);
		background: rgb(255 255 255 / 6%);
		text-decoration: none;
	}
}

.ps-header-actions .wc-block-customer-account__link:active,
.ps-header-actions .wc-block-mini-cart__button:active {
	transform: scale(.94);
	transition-duration: .12s;
}

.ps-header-actions .wc-block-customer-account__link:focus-visible,
.ps-header-actions .wc-block-mini-cart__button:focus-visible {
	outline: 3px solid var(--ps-color-lime);
	outline-offset: 4px;
}

.ps-header-actions .ps-header-icon__svg,
.ps-header-actions .wc-block-customer-account__link svg,
.ps-header-actions .wc-block-mini-cart__icon {
	display: block;
	width: 1.375rem;
	height: 1.375rem;
	flex-shrink: 0;
}

.ps-header-actions .wc-block-mini-cart__quantity-badge {
	position: relative;
	display: grid;
	place-items: center;
}

.ps-header-actions .wc-block-mini-cart__badge {
	position: absolute;
	top: .2rem;
	right: .15rem;
	min-width: 1.05rem;
	height: 1.05rem;
	padding: 0 .2rem;
	border-radius: 999px;
	background: var(--ps-color-cyan);
	color: var(--ps-color-ink);
	font-size: .625rem;
	font-weight: 700;
	line-height: 1.05rem;
	text-align: center;
}
.ps-announcement {
	border-bottom: 1px solid rgb(139 92 255 / 42%);
	box-shadow: inset 0 -1px 0 rgb(33 246 255 / 8%);
}

/* Animated gallery search, adapted to the native WordPress search block. */
.ps-header-actions { gap: .5rem; align-items: center; }
.ps-header-brand {
	display: flex;
	gap: .75rem;
	align-items: center;
	min-width: 0;
}
.ps-header-bar {
	align-items: center;
}
.ps-header-bar > .ps-header-brand {
	flex: 1 1 auto;
	min-width: 0;
}
.ps-header-bar > .ps-header-actions {
	flex: 0 0 auto;
	margin-left: auto;
}
.ps-header-search {
	position: relative;
	isolation: isolate;
	box-sizing: border-box;
	margin: 0;
	padding: 1px;
	overflow: hidden;
	border-radius: 999px;
	background: rgb(255 255 255 / 14%);
	box-shadow:
		0 0 0 1px rgb(255 255 255 / 8%),
		0 .65rem 1.8rem rgb(0 0 0 / 28%),
		0 0 1.2rem rgb(33 246 255 / 12%);
	transition:
		box-shadow var(--ps-motion-fast) ease,
		transform var(--ps-motion-fast) var(--ps-ease-out);
}
.ps-header-search::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 0;
	width: max(150%, 20rem);
	aspect-ratio: 1;
	background: conic-gradient(
		from 0deg,
		transparent 0deg,
		rgb(33 246 255 / 92%) 52deg,
		rgb(139 92 255 / 86%) 118deg,
		transparent 176deg,
		rgb(255 43 214 / 80%) 246deg,
		rgb(33 246 255 / 88%) 318deg,
		transparent 360deg
	);
	transform: translate(-50%, -50%) rotate(0deg);
	animation: ps-search-orbit 6s linear infinite;
	pointer-events: none;
}
.ps-header-search:hover {
	box-shadow:
		0 0 0 1px rgb(255 255 255 / 12%),
		0 .75rem 2rem rgb(0 0 0 / 32%),
		0 0 1.6rem rgb(33 246 255 / 24%),
		0 0 2.4rem rgb(139 92 255 / 14%);
}
.ps-header-search:focus-within {
	outline: 3px solid var(--ps-color-lime);
	outline-offset: 3px;
	box-shadow:
		0 .75rem 2rem rgb(0 0 0 / 34%),
		0 0 1.8rem rgb(33 246 255 / 30%),
		0 0 2.8rem rgb(139 92 255 / 18%);
}
.ps-header-search .wp-block-search__inside-wrapper {
	position: relative;
	z-index: 1;
	min-height: 44px;
	border: 0;
	border-radius: 999px;
	background:
		linear-gradient(135deg, rgb(255 255 255 / 10%), rgb(255 255 255 / 4%)),
		rgb(5 5 7 / 88%);
	-webkit-backdrop-filter: blur(14px) saturate(145%);
	backdrop-filter: blur(14px) saturate(145%);
	box-shadow:
		inset 0 1px 0 rgb(255 255 255 / 16%),
		inset 0 -1px 0 rgb(0 0 0 / 28%);
	overflow: hidden;
}
.ps-header-search .wp-block-search__input {
	min-width: 0;
	border: 0;
	background: transparent;
	color: var(--ps-color-paper);
	padding: .55rem .9rem;
}
.ps-header-search .wp-block-search__input:focus-visible { outline: 0; }
.ps-header-search .wp-block-search__input::placeholder {
	color: rgb(248 247 255 / 58%);
	transition: color var(--ps-motion-fast) ease;
}
.ps-header-search:focus-within .wp-block-search__input::placeholder { color: rgb(248 247 255 / 76%); }
.ps-header-search .wp-block-search__button {
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--ps-color-paper);
	transition:
		background var(--ps-motion-fast) ease,
		color var(--ps-motion-fast) ease,
		transform var(--ps-motion-fast) var(--ps-ease-out);
}
.ps-header-search .wp-block-search__button:hover {
	background: rgb(255 255 255 / 10%);
	color: var(--ps-color-cyan);
	transform: scale(1.04);
}
.ps-header-search .wp-block-search__button svg { fill: currentColor; }
@keyframes ps-search-orbit {
	to { transform: translate(-50%, -50%) rotate(1turn); }
}
.ps-hero {
	position: relative;
	isolation: isolate;
	display: grid;
	align-items: center;
	overflow: hidden;
	padding-block: clamp(5rem, 8vw, 8rem);
	border-bottom: 1px solid rgb(255 255 255 / 10%);
	background:
		radial-gradient(circle at 76% 44%, rgb(139 92 255 / 18%), transparent 26rem),
		radial-gradient(circle at 92% 18%, rgb(255 43 214 / 12%), transparent 20rem),
		linear-gradient(115deg, #050507 22%, #0a0911 70%, #050507);
}
.ps-hero::after {
	content: "";
	position: absolute;
	pointer-events: none;
}
.ps-hero::after {
	inset: auto 6% 8% auto;
	z-index: -1;
	width: clamp(14rem, 34vw, 34rem);
	height: clamp(14rem, 34vw, 34rem);
	border-radius: 50%;
	background: rgb(33 246 255 / 10%);
	filter: blur(5rem);
}
.ps-hero-layout { position: relative; z-index: 1; width: 100%; gap: clamp(3rem, 7vw, 7rem); }
.ps-hero-copy {
	position: relative;
	isolation: isolate;
	max-width: 42rem;
}
.ps-hero-copy-backdrop {
	position: absolute;
	inset: -10% -14% -6% -20%;
	z-index: 0;
	overflow: visible;
	pointer-events: none;
}
.ps-hero-copy > :not(.ps-hero-copy-backdrop) {
	position: relative;
	z-index: 1;
}
.ps-hero-copy-aura {
	position: absolute;
	top: 4%;
	left: -8%;
	width: min(118%, 30rem);
	height: clamp(11rem, 38vw, 21rem);
	border-radius: 50%;
	background:
		radial-gradient(circle at 34% 42%, rgb(33 246 255 / 30%), transparent 64%),
		radial-gradient(circle at 66% 36%, rgb(139 92 255 / 24%), transparent 58%),
		radial-gradient(circle at 48% 72%, rgb(255 43 214 / 16%), transparent 56%);
	filter: blur(2.75rem);
	opacity: 0.92;
	transform: translateZ(0);
}
.ps-hero-copy-stars {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	opacity: 0.55;
}
.ps-enhanced-motion .ps-hero-copy-aura {
	animation: ps-hero-copy-aura-breathe 14s ease-in-out infinite;
}
.ps-enhanced-motion .ps-hero-copy-stars {
	animation: ps-hero-copy-stars-twinkle 11s ease-in-out infinite;
}
@keyframes ps-hero-copy-aura-breathe {
	0%, 100% {
		opacity: 0.82;
		transform: scale(1);
	}
	50% {
		opacity: 1;
		transform: scale(1.035);
	}
}
@keyframes ps-hero-copy-stars-twinkle {
	0%, 100% { opacity: 0.42; }
	50% { opacity: 0.62; }
}
.ps-hero-copy h1 {
	max-width: 9ch;
	margin-block: .3em .22em;
	letter-spacing: -.055em;
	line-height: .88;
	text-wrap: balance;
	overflow: visible;
}
.ps-hero-wave__track {
	display: inline;
}
.ps-hero-wave__word {
	display: inline-block;
	white-space: nowrap;
}
.ps-hero-wave__char {
	display: inline-block;
}
.ps-hero-wave__char:not(.ps-hero-wave__char--space) {
	opacity: 0;
	animation: ps-hero-wave-reveal-up 1800ms cubic-bezier(.18, .89, .82, 1.04) both;
}
@keyframes ps-hero-wave-reveal-up {
	0% {
		opacity: 0;
		transform: translateY(80%);
	}
	100% {
		opacity: 1;
		transform: translateY(0);
	}
}
.ps-hero-deck { max-width: 29rem; text-wrap: balance; }
.ps-hero-actions { margin-top: clamp(1.5rem, 3vw, 2.5rem); }
.ps-hero-actions .wp-element-button { min-height: 50px; display: inline-flex; align-items: center; }
.ps-hero-proof {
	gap: .7rem 1.25rem;
	margin-top: clamp(1.5rem, 3vw, 2.5rem);
	color: #aaa8b8;
}
.ps-hero-proof p { display: flex; gap: .55rem; align-items: center; margin: 0; }
.ps-hero-proof p::before {
	content: "";
	width: .38rem;
	height: .38rem;
	border-radius: 50%;
	background: #21f6ff;
	box-shadow: 0 0 1rem rgb(33 246 255 / 65%);
}
.ps-hero-products {
	position: relative;
	min-width: 0;
	padding-block: 1.5rem;
}
.ps-hero-carousel {
	--ps-carousel-aura: rgb(33 246 255 / 22%);
	--ps-carousel-spread: clamp(7rem, 22vw, 10rem);
	--ps-carousel-side-scale: .68;
	--ps-carousel-side-angle: 11deg;
	--ps-carousel-side-depth: -100px;
	--ps-carousel-active-depth: 60px;
	position: relative;
	isolation: isolate;
	width: min(100%, 56rem);
	margin-inline: auto;
}
.ps-hero-carousel[data-aura="magenta"] { --ps-carousel-aura: rgb(255 43 214 / 20%); }
.ps-hero-carousel[data-aura="violet"] { --ps-carousel-aura: rgb(139 92 255 / 24%); }
.ps-hero-carousel-stage {
	position: relative;
	height: clamp(17rem, 55vw, 22rem);
	perspective: 1200px;
	transform: translate3d(var(--ps-drag-x, 0), 0, 0);
	transform-style: preserve-3d;
	touch-action: pan-y;
	user-select: none;
	cursor: grab;
	transition: transform var(--ps-motion-fast) var(--ps-ease-out);
}
.ps-hero-carousel.is-dragging .ps-hero-carousel-stage {
	cursor: grabbing;
	transition: none;
}
.ps-hero-carousel-stage::before,
.ps-hero-carousel-stage::after {
	content: "";
	position: absolute;
	pointer-events: none;
}
.ps-hero-carousel-stage::before {
	inset: 16% 12%;
	z-index: -2;
	border-radius: 50%;
	background-color: var(--ps-carousel-aura);
	filter: blur(4rem);
	transition: background-color var(--ps-motion-carousel) var(--ps-ease-gallery);
}
.ps-hero-carousel-stage::after {
	inset: 37% 10% 18%;
	z-index: -1;
	border: 1px solid rgb(255 255 255 / 8%);
	border-radius: 50%;
	transform: rotateX(70deg) rotateZ(-7deg);
	box-shadow: 0 0 3rem rgb(33 246 255 / 6%);
}
.ps-hero-carousel-slides {
	position: absolute;
	inset: 0;
	margin: 0;
	padding: 0;
	list-style: none;
	transform-style: preserve-3d;
}
.ps-hero-carousel-slide {
	position: absolute;
	top: 50%;
	left: 50%;
	width: min(68vw, 20rem);
	margin: 0;
	/* Explicit z-index per role: filters/opacity on the cards disable native
	   3D depth sorting, so paint order must not rely on translateZ. */
	z-index: 0;
	opacity: 0;
	pointer-events: none;
	transform: translate3d(-50%, -50%, -220px) scale(.55);
	transform-style: preserve-3d;
	visibility: hidden;
	transition:
		transform var(--ps-motion-carousel) var(--ps-ease-gallery),
		opacity calc(var(--ps-motion-carousel) - var(--ps-motion-fast)) var(--ps-ease-gallery),
		filter var(--ps-motion-carousel) var(--ps-ease-gallery),
		visibility 0s linear var(--ps-motion-carousel);
}
.ps-hero-carousel-slide[data-position="active"] {
	z-index: 3;
	opacity: 1;
	pointer-events: auto;
	transform: translate3d(-50%, -50%, var(--ps-carousel-active-depth)) scale(1);
	visibility: visible;
	filter:
		drop-shadow(0 2rem 3.5rem rgb(0 0 0 / 52%))
		drop-shadow(0 0 2.25rem var(--ps-carousel-aura));
	transition-delay: 0s;
}
.ps-hero-carousel-slide[data-position="previous"] {
	z-index: 1;
	opacity: .9;
	pointer-events: auto;
	transform:
		translate3d(calc(-50% - var(--ps-carousel-spread)), -47%, var(--ps-carousel-side-depth))
		rotateY(var(--ps-carousel-side-angle))
		scale(var(--ps-carousel-side-scale));
	visibility: visible;
	filter: brightness(.92) saturate(.92) drop-shadow(0 1.25rem 2rem rgb(0 0 0 / 38%));
	transition-delay: 0s;
}
.ps-hero-carousel-slide[data-position="next"] {
	z-index: 2;
	opacity: .92;
	pointer-events: auto;
	transform:
		translate3d(calc(-50% + var(--ps-carousel-spread)), -47%, var(--ps-carousel-side-depth))
		rotateY(calc(-1 * var(--ps-carousel-side-angle)))
		scale(var(--ps-carousel-side-scale));
	visibility: visible;
	filter: brightness(.94) saturate(.95) drop-shadow(0 1.25rem 2rem rgb(0 0 0 / 38%));
	transition-delay: 0s;
}
.ps-hero-carousel-slide[data-position="previous"],
.ps-hero-carousel-slide[data-position="next"] {
	/* Faster departure so the incoming card's layer takeover never lingers
	   over the outgoing artwork. */
	transition-timing-function: cubic-bezier(.3, .85, .25, 1);
}
.ps-hero-carousel-product {
	position: relative;
	display: block;
	overflow: hidden;
	border-radius: 1.25rem;
	outline-offset: .4rem;
}
.ps-hero-carousel.is-transitioning .ps-hero-carousel-slide {
	will-change: transform, opacity, filter;
}
.ps-hero-carousel[data-direction="next"] .ps-hero-carousel-slide.is-arriving .ps-hero-carousel-product {
	animation: ps-carousel-arrive-next var(--ps-motion-carousel) var(--ps-ease-gallery) both;
}
.ps-hero-carousel[data-direction="previous"] .ps-hero-carousel-slide.is-arriving .ps-hero-carousel-product {
	animation: ps-carousel-arrive-previous var(--ps-motion-carousel) var(--ps-ease-gallery) both;
}
.ps-hero-carousel[data-direction="next"] .ps-hero-carousel-slide.is-departing .ps-hero-carousel-product {
	animation: ps-carousel-depart-next var(--ps-motion-carousel) var(--ps-ease-gallery) both;
}
.ps-hero-carousel[data-direction="previous"] .ps-hero-carousel-slide.is-departing .ps-hero-carousel-product {
	animation: ps-carousel-depart-previous var(--ps-motion-carousel) var(--ps-ease-gallery) both;
}
.ps-hero-carousel-image {
	display: block;
	width: 100%;
	height: auto;
	margin: 0;
	border-radius: inherit;
}
.ps-hero-carousel-sheen {
	position: absolute;
	inset: 0;
	pointer-events: none;
	border-radius: inherit;
	background: linear-gradient(110deg, transparent 34%, rgb(33 246 255 / 8%) 43%, rgb(248 247 255 / 18%) 50%, rgb(255 43 214 / 8%) 57%, transparent 66%);
	mix-blend-mode: screen;
	opacity: 0;
	transform: translateX(-135%);
}
.ps-hero-carousel-glints {
	position: absolute;
	inset: 0;
	z-index: 5;
	pointer-events: none;
}
.ps-hero-carousel-glints span {
	position: absolute;
	width: .25rem;
	height: .25rem;
	border-radius: 50%;
	background: var(--ps-color-paper);
	box-shadow: 0 0 1rem var(--ps-color-cyan);
	opacity: .28;
}
.ps-hero-carousel-glints span:nth-child(1) { top: 17%; left: 18%; }
.ps-hero-carousel-glints span:nth-child(2) { top: 29%; right: 12%; width: .18rem; height: .18rem; }
.ps-hero-carousel-glints span:nth-child(3) { right: 24%; bottom: 17%; width: .14rem; height: .14rem; }
.ps-hero-carousel-footer {
	display: flex;
	gap: 1rem 2rem;
	align-items: flex-end;
	justify-content: space-between;
	margin-top: .5rem;
}
.ps-hero-carousel-caption {
	display: grid;
	min-width: 0;
	gap: .15rem;
}
.ps-hero-carousel-caption .ps-eyebrow { margin: 0 0 .15rem; }
.ps-hero-carousel-caption strong {
	max-width: 24ch;
	color: var(--ps-color-paper);
	font-size: clamp(1rem, 1.4vw, 1.3rem);
	line-height: 1.15;
	text-wrap: balance;
}
.ps-hero-carousel-caption > span:not(.ps-eyebrow) { color: #aaa8b8; font-size: .9rem; }
.ps-hero-carousel-caption > a {
	width: fit-content;
	margin-top: .25rem;
	color: var(--ps-color-cyan);
	font-weight: 750;
	text-underline-offset: .25em;
}
.ps-hero-carousel-caption.is-changing {
	animation: ps-carousel-caption-enter calc(var(--ps-motion-base) + var(--ps-motion-fast)) var(--ps-ease-gallery);
}
.ps-hero-carousel-navigation {
	display: flex;
	flex-shrink: 0;
	gap: .2rem;
	align-items: center;
}
.ps-hero-carousel-arrow,
.ps-hero-carousel-dots button {
	display: inline-grid;
	min-width: 44px;
	min-height: 44px;
	padding: 0;
	place-items: center;
	border: 1px solid rgb(255 255 255 / 18%);
	border-radius: 50%;
	background: rgb(5 5 7 / 72%);
	color: var(--ps-color-paper);
	cursor: pointer;
}
.ps-hero-carousel-arrow {
	font: inherit;
	font-size: 1.1rem;
	transition:
		border-color var(--ps-button-motion) ease,
		color var(--ps-button-motion) ease,
		background var(--ps-button-motion) ease;
}
.ps-hero-carousel-arrow:hover {
	border-color: rgb(33 246 255 / 60%);
	background: rgb(33 246 255 / 8%);
	color: var(--ps-color-cyan);
}
.ps-hero-carousel-dots { display: flex; }
.ps-hero-carousel-dots button {
	border-color: transparent;
	background: transparent;
}
.ps-hero-carousel-dots button span {
	width: .38rem;
	height: .38rem;
	border-radius: 50%;
	background: rgb(248 247 255 / 34%);
	transition: background var(--ps-button-motion) ease, box-shadow var(--ps-button-motion) ease, transform var(--ps-button-motion) ease;
}
.ps-hero-carousel-dots button[aria-pressed="true"] span {
	background: var(--ps-color-cyan);
	box-shadow: 0 0 1rem rgb(33 246 255 / 70%);
	transform: scale(1.25);
}
.ps-enhanced-motion .ps-hero-carousel-slides {
	animation: ps-carousel-breathe 10s ease-in-out infinite;
}
.ps-enhanced-motion .ps-hero-carousel-slide[data-position="active"] .ps-hero-carousel-sheen {
	animation: ps-carousel-sheen 8.5s var(--ps-ease-gallery) infinite;
}
.ps-enhanced-motion .ps-hero-carousel-glints span {
	animation: ps-carousel-glint 8s ease-in-out infinite;
}
.ps-enhanced-motion .ps-hero-carousel-glints span:nth-child(2) { animation-delay: -2.7s; animation-duration: 10s; }
.ps-enhanced-motion .ps-hero-carousel-glints span:nth-child(3) { animation-delay: -5.1s; animation-duration: 11s; }
.ps-hero-empty {
	max-width: 28rem;
	padding: 1.5rem;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: 1rem;
	background: rgb(5 5 7 / 74%);
	color: #aaa8b8;
}
@keyframes ps-carousel-breathe {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-.375rem); }
}
@keyframes ps-carousel-sheen {
	0%, 34% { opacity: 0; transform: translateX(-135%); }
	49% { opacity: .55; }
	64%, 100% { opacity: 0; transform: translateX(135%); }
}
@keyframes ps-carousel-glint {
	0%, 100% { opacity: .14; transform: scale(.8); }
	50% { opacity: .45; transform: scale(1.25); }
}
@keyframes ps-carousel-caption-enter {
	from { opacity: .35; transform: translateY(.25rem); }
	to { opacity: 1; transform: none; }
}
@keyframes ps-carousel-arrive-next {
	from { filter: brightness(.94) saturate(.94); transform: translateX(.55rem) rotateZ(.45deg) scale(.975); }
	to { filter: none; transform: none; }
}
@keyframes ps-carousel-arrive-previous {
	from { filter: brightness(.94) saturate(.94); transform: translateX(-.55rem) rotateZ(-.45deg) scale(.975); }
	to { filter: none; transform: none; }
}
@keyframes ps-carousel-depart-next {
	from { transform: none; }
	to { transform: translateX(-.35rem) rotateZ(-.3deg) scale(.985); }
}
@keyframes ps-carousel-depart-previous {
	from { transform: none; }
	to { transform: translateX(.35rem) rotateZ(.3deg) scale(.985); }
}

@media (min-width: 782px) {
	.ps-hero-carousel {
		--ps-carousel-spread: clamp(12rem, 18vw, 15rem);
		--ps-carousel-side-scale: .82;
		--ps-carousel-side-angle: 14deg;
		--ps-carousel-side-depth: -140px;
		--ps-carousel-active-depth: 80px;
	}
	.ps-hero-carousel-stage {
		height: clamp(29rem, 35vw, 34rem);
	}
	.ps-hero-carousel-slide {
		width: clamp(22.5rem, 30vw, 31.25rem);
	}
}
@media (min-width: 1200px) {
	.ps-hero-carousel { --ps-carousel-spread: clamp(15rem, 18vw, 18rem); }
}
.ps-panel {
	border: 0;
	border-left: 2px solid #8b5cff;
	border-radius: 0;
	background: #101016;
	box-shadow: none;
}
.ps-section-heading {
	gap: 1.5rem 3rem;
	margin-bottom: var(--ps-section-heading-space);
}
.ps-section-heading :is(h2, p) { margin-block: 0; }
.ps-text-link a {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
	color: #f8f7ff;
	font-weight: 750;
	text-decoration-color: #21f6ff;
	text-underline-offset: .3em;
}
.ps-collections { border-block: 1px solid rgb(255 255 255 / 8%); }
.ps-collection-summary { flex-shrink: 0; }
.ps-collection-grid {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: clamp(1rem, 2vw, 2rem);
}
.ps-collection-card {
	grid-column: span 4;
	display: flex;
	flex-direction: column;
	min-width: 0;
}
.ps-collection-grid--count-1 .ps-collection-card { grid-column: 3 / span 8; }
.ps-collection-grid--count-2 .ps-collection-card { grid-column: span 6; }
.ps-collection-grid--count-3 {
	grid-template-rows: repeat(2, minmax(14rem, 1fr));
}
.ps-collection-grid--count-3 .ps-collection-card:nth-child(1) {
	grid-column: 1 / span 7;
	grid-row: 1 / span 2;
}
.ps-collection-grid--count-3 .ps-collection-card:nth-child(2) {
	grid-column: 8 / span 5;
	grid-row: 1;
}
.ps-collection-grid--count-3 .ps-collection-card:nth-child(3) {
	grid-column: 8 / span 5;
	grid-row: 2;
}
.ps-collection-grid--count-4 .ps-collection-card:nth-child(1),
.ps-collection-grid--count-5 .ps-collection-card:nth-child(1),
.ps-collection-grid--count-7 .ps-collection-card:nth-child(1),
.ps-collection-grid--count-8 .ps-collection-card:nth-child(1) { grid-column: span 7; }
.ps-collection-grid--count-4 .ps-collection-card:nth-child(2),
.ps-collection-grid--count-5 .ps-collection-card:nth-child(2),
.ps-collection-grid--count-7 .ps-collection-card:nth-child(2),
.ps-collection-grid--count-8 .ps-collection-card:nth-child(2) { grid-column: span 5; }
.ps-collection-grid--count-4 .ps-collection-card:nth-child(3) { grid-column: span 5; }
.ps-collection-grid--count-4 .ps-collection-card:nth-child(4) { grid-column: span 7; }
.ps-collection-grid--count-7 .ps-collection-card:nth-child(6),
.ps-collection-grid--count-7 .ps-collection-card:nth-child(7) { grid-column: span 6; }
.ps-collection-art {
	position: relative;
	display: grid;
	flex: 1;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-radius: 1.2rem;
	background: #101016;
	box-shadow: 0 1.4rem 4rem rgb(0 0 0 / 32%);
}
.ps-collection-grid--count-3 .ps-collection-art,
.ps-collection-grid--count-4 .ps-collection-art,
.ps-collection-grid--count-5 .ps-collection-art,
.ps-collection-grid--count-6-plus .ps-collection-art {
	min-height: clamp(14rem, 22vw, 22rem);
	aspect-ratio: auto;
}
.ps-collection-grid--count-3 .ps-collection-art { min-height: 0; }
.ps-collection-art::after {
	content: "";
	position: absolute;
	inset: 0;
	border: 1px solid rgb(255 255 255 / 16%);
	border-radius: inherit;
	background: linear-gradient(135deg, transparent 55%, rgb(33 246 255 / 12%));
	pointer-events: none;
	transition: background .35s ease, border-color .35s ease;
}
.ps-collection-image {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .55s cubic-bezier(.2, .7, .2, 1), filter .35s ease;
}
.ps-collection-art:hover::after,
.ps-collection-art:focus-visible::after {
	border-color: rgb(33 246 255 / 72%);
	background: linear-gradient(135deg, transparent 30%, rgb(33 246 255 / 18%));
}
.ps-collection-art:hover .ps-collection-image,
.ps-collection-art:focus-visible .ps-collection-image {
	transform: scale(1.035);
	filter: saturate(1.08);
}
.ps-collection-caption { gap: 1rem; margin-top: 1rem; }
.ps-collection-caption :is(h3, p) { margin-block: 0; }
.ps-collection-caption h3 a { color: #f8f7ff; text-decoration: none; }
.ps-catalog-empty {
	padding: clamp(1.5rem, 4vw, 3rem);
	border: 1px solid rgb(255 255 255 / 15%);
	border-left: 3px solid #8b5cff;
	background: #101016;
}
.ps-catalog-empty > :first-child { margin-top: 0; }
.ps-catalog-empty > :last-child { margin-bottom: 0; }
.ps-featured-bento {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: clamp(.75rem, 2vw, 1.5rem);
}
.ps-featured-bento__col {
	display: flex;
	min-width: 0;
	flex-direction: column;
	gap: clamp(.75rem, 2vw, 1.5rem);
}
.ps-featured-bento__cell {
	min-width: 0;
}
.ps-featured-bento__link {
	display: flex;
	height: 100%;
	min-height: 0;
	flex-direction: column;
	overflow: hidden;
	border-radius: 1.5rem;
	border: 1px solid rgb(255 255 255 / 12%);
	background: #101016;
	color: inherit;
	text-decoration: none;
	box-shadow: 0 1rem 2.5rem rgb(0 0 0 / 28%);
	transition:
		border-color .3s ease,
		box-shadow .3s ease,
		transform .3s cubic-bezier(.2, .7, .2, 1);
}
@media (hover: hover) and (pointer: fine) {
	.ps-featured-bento__link:hover {
		border-color: rgb(33 246 255 / 45%);
		box-shadow: 0 1.25rem 3rem rgb(0 0 0 / 36%);
		transform: scale(1.01);
	}
}
.ps-featured-bento__media {
	position: relative;
	flex: 1 1 auto;
	overflow: hidden;
	min-height: 0;
}
.ps-featured-bento__cell--short .ps-featured-bento__media { min-height: 9.5rem; }
.ps-featured-bento__cell--tall .ps-featured-bento__media { min-height: 12.5rem; }
.ps-featured-bento__cell--hero .ps-featured-bento__media { min-height: 14rem; }
.ps-featured-bento__image,
.ps-featured-bento__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	min-height: inherit;
	object-fit: cover;
}
.ps-featured-bento__placeholder {
	background: linear-gradient(135deg, #1a1a24, #101016);
}
.ps-featured-bento__badge {
	position: absolute;
	top: .75rem;
	left: .75rem;
	z-index: 2;
	padding: .25rem .625rem;
	border-radius: 999px;
	background: #ef4444;
	color: #fff;
	font-size: .6875rem;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.ps-featured-bento__meta {
	display: grid;
	gap: .2rem;
	padding: .75rem .9rem .9rem;
}
.ps-featured-bento__title {
	margin: 0;
	overflow: hidden;
	font-size: .875rem;
	font-weight: 650;
	line-height: 1.3;
	letter-spacing: -.02em;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.ps-featured-bento__price {
	color: #f8f7ff;
	font-size: .9375rem;
	font-weight: 700;
	line-height: 1.2;
}
.ps-featured-bento__price del {
	margin-left: .35rem;
	color: rgb(248 247 255 / 52%);
	font-size: .75rem;
	font-weight: 500;
	text-decoration: line-through;
}
.ps-featured-bento__price ins {
	text-decoration: none;
}
.ps-featured-bento .ps-hover-3d img {
	transition: none;
}
.ps-featured-bento .ps-hover-3d {
	flex: 1 1 auto;
	min-height: 0;
}
@media (min-width: 782px) {
	.ps-featured-bento {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
	.ps-featured-bento__cell--short .ps-featured-bento__media { min-height: 11rem; }
	.ps-featured-bento__cell--tall .ps-featured-bento__media { min-height: 15rem; }
	.ps-featured-bento__cell--hero .ps-featured-bento__media { min-height: 18rem; }
}
@media (min-width: 1200px) {
	.ps-featured-bento__cell--short .ps-featured-bento__media { min-height: 12rem; }
	.ps-featured-bento__cell--tall .ps-featured-bento__media { min-height: 17rem; }
	.ps-featured-bento__cell--hero .ps-featured-bento__media { min-height: 21rem; }
}
.ps-product-grid .wc-block-product-template {
	display: grid;
	grid-template-columns: minmax(0, 1fr) !important;
	width: 100%;
	gap: var(--ps-product-row-gap);
	margin-inline: auto;
	padding: 0;
}
.ps-product-grid .wc-block-product,
.ps-product-grid .wp-block-woocommerce-product-template > li {
	position: relative;
	display: flex;
	width: auto !important;
	max-width: none !important;
	height: 100%;
	min-width: 0;
	flex-direction: column;
	overflow: hidden;
	padding: 0;
	border: 1px solid var(--ps-card-border);
	border-radius: var(--ps-card-radius);
	background: var(--ps-card-bg);
	box-shadow: var(--ps-card-shadow);
	transition:
		border-color .3s ease,
		box-shadow .3s ease,
		transform .3s cubic-bezier(.23, 1, .32, 1);
}
@media (hover: hover) and (pointer: fine) {
	.ps-product-grid:not(.ps-product-gallery) .wc-block-product:hover,
	.ps-product-grid:not(.ps-product-gallery) .wp-block-woocommerce-product-template > li:hover {
		border-color: rgb(255 255 255 / 16%);
		box-shadow: var(--ps-card-shadow-hover);
		transform: translateY(-2px);
	}
}
.ps-product-grid .wc-block-product:focus-within,
.ps-product-grid .wp-block-woocommerce-product-template > li:focus-within {
	border-color: rgb(255 255 255 / 22%);
	box-shadow: var(--ps-card-shadow-hover);
}
.ps-product-grid .wp-block-woocommerce-product-image {
	position: relative;
	z-index: 1;
	margin: 0;
}
.ps-product-grid .wp-block-woocommerce-product-image::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 55%, rgb(0 0 0 / 12%));
	opacity: 0;
	transition: opacity .3s ease;
	pointer-events: none;
}
@media (hover: hover) and (pointer: fine) {
	.ps-product-grid:not(.ps-product-gallery) .wc-block-product:hover .wp-block-woocommerce-product-image::after,
	.ps-product-grid:not(.ps-product-gallery) .wp-block-woocommerce-product-template > li:hover .wp-block-woocommerce-product-image::after {
		opacity: 1;
	}
}
.ps-product-grid .wc-block-components-product-image,
.ps-product-grid .wc-block-components-product-image__inner-container,
.ps-product-grid .wc-block-components-product-image a {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	overflow: hidden;
	border-radius: 0;
	background: rgb(255 255 255 / 4%);
}
.ps-product-grid .wc-block-components-product-image img,
.ps-product-grid .wp-block-woocommerce-product-image img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	transition: transform .5s cubic-bezier(.23, 1, .32, 1);
}
@media (hover: hover) and (pointer: fine) {
	.ps-product-grid:not(.ps-product-gallery) .wc-block-product:hover .wc-block-components-product-image img,
	.ps-product-grid:not(.ps-product-gallery) .wp-block-woocommerce-product-template > li:hover .wc-block-components-product-image img {
		transform: scale(1.05);
	}
}

.ps-product-grid .wc-block-components-product-sale-badge,
.ps-product-grid .wc-block-components-product-image .wc-block-components-product-sale-badge {
	position: absolute;
	top: .75rem;
	left: .75rem;
	right: auto;
	z-index: 2;
	margin: 0;
	padding: .25rem .625rem;
	border: 0;
	border-radius: 999px;
	background: #ef4444;
	color: #fff;
	font-size: .75rem;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: .01em;
	text-transform: capitalize;
	box-shadow: 0 1px 2px rgb(0 0 0 / 24%);
}
.ps-product-grid .wp-block-post-title {
	min-height: 0;
	margin: 0;
	padding: var(--ps-card-content-pad) var(--ps-card-content-pad) .35rem;
	font-size: .875rem;
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: -.02em;
}
.ps-product-grid .wp-block-post-title a {
	display: -webkit-box;
	min-height: 0;
	overflow: hidden;
	color: var(--ps-color-paper);
	text-decoration: none;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 1;
}
.ps-product-grid .wp-block-post-title a:hover { color: var(--ps-color-cyan); }
.ps-product-grid .wp-block-woocommerce-product-price {
	min-height: 0;
	margin: 0;
	padding: 0 var(--ps-card-content-pad);
}
.ps-product-grid .wc-block-components-product-price {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: .35rem .5rem;
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -.03em;
}
.ps-product-grid .wc-block-components-product-price del {
	order: 2;
	color: rgb(248 247 255 / 52%);
	font-size: .875rem;
	font-weight: 500;
	text-decoration: line-through;
}
.ps-product-grid .wc-block-components-product-price ins {
	order: 1;
	color: inherit;
	text-decoration: none;
}
.ps-product-grid .wp-block-woocommerce-product-button {
	margin-top: auto;
	padding: .65rem var(--ps-card-content-pad) var(--ps-card-content-pad);
}
.ps-product-grid .wp-block-woocommerce-product-button .wp-block-button__link {
	width: 100%;
	min-height: 2.25rem;
	padding: .45rem .875rem;
	font-size: .8125rem;
}

@media (hover: hover) and (pointer: fine) {
	.ps-product-grid .wp-block-woocommerce-product-button .wp-block-button__link:not(:disabled, [aria-disabled="true"], .is-added, .is-loading):hover {
		background: #fff;
		transform: none;
	}
}
@media (min-width: 782px) and (max-width: 1199px) {
	.ps-product-grid .wc-block-product-template {
		grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
	}
	.ps-product-grid .wc-block-product { grid-column: span 6; }
	.ps-product-grid--count-1 .wc-block-product {
		grid-column: 4 / span 6;
		max-width: 20rem;
		justify-self: center;
	}
	.ps-product-grid--count-2 .wc-block-product {
		grid-column: span 5;
	}
	.ps-product-grid--count-2 .wc-block-product:nth-child(1) {
		grid-column: 1 / span 5;
		justify-self: end;
	}
	.ps-product-grid--count-2 .wc-block-product:nth-child(2) {
		grid-column: 8 / span 5;
		justify-self: start;
	}
	.ps-product-grid .wc-block-product:last-child:nth-child(odd):not(:only-child) {
		grid-column: 4 / span 6;
	}
}
@media (min-width: 1200px) {
	.ps-product-grid .wc-block-product-template {
		grid-template-columns: repeat(12, minmax(0, 1fr)) !important;
	}
	.ps-product-grid .wc-block-product { grid-column: span 4; }
	.ps-product-grid--count-1 .wc-block-product {
		grid-column: 5 / span 4;
		max-width: 18rem;
		justify-self: center;
	}
	.ps-product-grid--count-2 .wc-block-product {
		grid-column: span 4;
	}
	.ps-product-grid--count-2 .wc-block-product:nth-child(1) {
		grid-column: 2 / span 4;
		justify-self: end;
	}
	.ps-product-grid--count-2 .wc-block-product:nth-child(2) {
		grid-column: 8 / span 4;
		justify-self: start;
	}
	.ps-product-grid--count-3 .wc-block-product:nth-child(1) { grid-column: 1 / span 4; }
	.ps-product-grid--count-3 .wc-block-product:nth-child(2) { grid-column: 5 / span 4; }
	.ps-product-grid--count-3 .wc-block-product:nth-child(3) { grid-column: 9 / span 4; }
	.ps-new-grid .wc-block-product-template {
		grid-template-columns: repeat(16, minmax(0, 1fr)) !important;
	}
	.ps-new-grid .wc-block-product { grid-column: span 4; }
	.ps-new-grid .wc-block-product:last-child:nth-child(4n + 1) {
		grid-column: 7 / span 4;
	}
	.ps-new-grid .wc-block-product:nth-last-child(2):nth-child(4n + 1) {
		grid-column: 5 / span 4;
	}
	.ps-new-grid .wc-block-product:nth-last-child(3):nth-child(4n + 1) {
		grid-column: 3 / span 4;
	}
}
.ps-new-arrivals { border-top: 1px solid rgb(255 255 255 / 8%); }
.ps-editorial-comparison {
	overflow: hidden;
	border-top: 1px solid rgb(255 255 255 / 8%);
}
.ps-editorial-heading {
	gap: clamp(2rem, 7vw, 8rem);
	margin-bottom: var(--ps-editorial-heading-space);
}
.ps-editorial-heading h2 {
	max-width: 13ch;
	margin-bottom: 0;
	text-wrap: balance;
}
.ps-editorial-heading p { max-width: 35rem; }
.ps-editorial-pair {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
	gap: clamp(1rem, 3vw, 3rem);
	align-items: end;
}
.ps-editorial-figure { min-width: 0; margin: 0; }
.ps-editorial-figure--illustration { margin-bottom: var(--ps-editorial-offset); }
.ps-editorial-image {
	aspect-ratio: var(--ps-editorial-media-ratio);
	overflow: hidden;
	border: 1px solid rgb(255 255 255 / 15%);
	background: #050507;
}
.ps-editorial-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .7s cubic-bezier(.2, .7, .2, 1), filter .4s ease;
}
.ps-editorial-figure:hover .ps-editorial-image img {
	transform: scale(1.025);
	filter: saturate(1.08);
}
.ps-editorial-figure figcaption {
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: .75rem 1rem;
	align-items: baseline;
	padding-top: 1rem;
	border-top: 1px solid rgb(255 255 255 / 12%);
}
.ps-editorial-figure figcaption span {
	color: #21f6ff;
	font-family: "Psychedelic Display", sans-serif;
}
.ps-editorial-figure figcaption strong { font-size: clamp(1rem, 2vw, 1.35rem); }
.ps-editorial-figure figcaption small { color: #aaa8b8; text-align: right; }
.ps-editorial-caption--compact { grid-template-columns: auto 1fr !important; }
.ps-process-story {
	padding-block: var(--ps-process-space);
	border-top: 1px solid rgb(255 255 255 / 8%);
}
.ps-process-layout { gap: var(--ps-process-gap); }
.ps-process-media figure { margin: 0; }
.ps-process-media img {
	display: block;
	width: 100%;
	aspect-ratio: var(--ps-editorial-media-ratio);
	object-fit: cover;
	object-position: center;
	border: 1px solid rgb(255 255 255 / 15%);
	background: var(--ps-color-void);
}
.ps-process-media figcaption {
	margin-top: .75rem;
	color: #aaa8b8;
	font-size: .875rem;
	letter-spacing: .08em;
	line-height: 1.5;
	text-transform: uppercase;
}
.ps-process-copy h2 { max-width: 9ch; text-wrap: balance; }
.ps-process-copy > p {
	max-width: 32rem;
	line-height: 1.65;
}
.ps-process-proof {
	gap: var(--wp--preset--spacing--20);
	margin-block: var(--wp--preset--spacing--30);
	padding-top: var(--wp--preset--spacing--20);
	border-top: 1px solid rgb(255 255 255 / 12%);
}
.ps-process-proof p {
	margin: 0;
	color: var(--ps-color-paper);
	font-size: .875rem;
	font-weight: 700;
	letter-spacing: .02em;
}
.ps-process-proof p::before {
	content: "";
	display: inline-block;
	width: .45rem;
	height: .45rem;
	margin-right: .55rem;
	border-radius: 50%;
	background: var(--ps-color-cyan);
	box-shadow: 0 0 .75rem rgb(33 246 255 / 35%);
	vertical-align: .05em;
}
.ps-quality-line {
	padding-block: 1.2rem;
	border-block: 1px solid rgb(255 255 255 / 12%);
	background: #0b0b0f;
}
.ps-quality-line .wp-block-group { gap: .8rem 2rem; }
.ps-quality-line p {
	display: flex;
	gap: .7rem;
	align-items: center;
	margin-block: 0;
	color: #f8f7ff;
	font-weight: 750;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.ps-quality-line p::before {
	content: "";
	width: .38rem;
	height: .38rem;
	border-radius: 50%;
	background: #8b5cff;
	box-shadow: 0 0 1rem rgb(139 92 255 / 55%);
}
.ps-quality-line p:nth-child(2n)::before { background: #21f6ff; }
.ps-collector-club {
	isolation: isolate;
	overflow: hidden;
	border-bottom: 1px solid rgb(255 255 255 / 10%);
	background: #101016;
}
.ps-collector-club::before {
	content: "";
	position: absolute;
	inset: 0 auto 0 0;
	width: .35rem;
	background: #ff2bd6;
	box-shadow: 0 0 3rem rgb(255 43 214 / 45%);
}
.ps-collector-club-layout { gap: clamp(2.5rem, 9vw, 10rem); }
.ps-collector-club h2 { max-width: 13ch; text-wrap: balance; }
.ps-collector-club .wp-block-buttons { align-items: stretch; }
.ps-collector-club .wp-block-button,
.ps-collector-club .wp-element-button { width: 100%; }
.ps-collector-club .wp-element-button { justify-content: center; text-align: center; }
.ps-marquee { white-space: nowrap; overflow: hidden; }
.ps-divider { height: 1px; background: linear-gradient(90deg, transparent, #8b5cff, #21f6ff, transparent); }
.ps-footer-nav ul {
	display: grid;
	gap: .65rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ps-footer-nav a {
	display: inline-flex;
	min-height: 44px;
	align-items: center;
	color: var(--ps-color-paper);
	text-decoration: none;
	text-underline-offset: .25em;
}
.ps-footer-nav a:hover { color: var(--ps-color-cyan); text-decoration: underline; }
.screen-reader-text:focus { background: #f8f7ff; color: #050507; padding: 1rem; z-index: 100000; }

/* Progressive atmosphere. Content remains visible until JavaScript opts in. */
.ps-pointer-effects body::before {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	background: radial-gradient(circle 18rem at var(--ps-pointer-x, 50%) var(--ps-pointer-y, 20%), rgb(33 246 255 / 9%), transparent 72%);
}
.ps-enhanced-motion .ps-reveal {
	opacity: 0;
	transform: translateY(1.25rem) scale(.97);
	transition: opacity .55s cubic-bezier(.23, 1, .32, 1) var(--ps-reveal-delay, 0ms), transform .55s cubic-bezier(.23, 1, .32, 1) var(--ps-reveal-delay, 0ms);
}
.ps-enhanced-motion .ps-reveal.ps-is-visible { opacity: 1; transform: none; }
.ps-enhanced-motion .ps-single-product,
.ps-enhanced-motion .ps-single-product.ps-reveal {
	opacity: 1;
	transform: none;
}

/*
 * Living-gallery backdrop layer (dormant).
 * Reserved full-viewport layer behind all content for future FractalForge
 * animated backgrounds. Ships inert: it renders nothing until `.ps-has-backdrop`
 * is added to <body> and media (video/canvas/img) is placed inside `.ps-backdrop`.
 * Content stays above it via the --ps-z-* scale, so enabling it never reflows layout.
 */
.ps-backdrop {
	position: fixed;
	inset: 0;
	z-index: var(--ps-z-backdrop);
	pointer-events: none;
	overflow: hidden;
	opacity: var(--ps-backdrop-opacity);
	transition: opacity var(--ps-motion-slow) var(--ps-ease-out);
}
.ps-backdrop > :is(video, canvas, img) {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.ps-has-backdrop { --ps-backdrop-opacity: 1; }
.ps-has-backdrop .ps-backdrop::after {
	/* Legibility scrim so overlaid text keeps contrast over live artwork. */
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgb(5 5 7 / 55%), rgb(5 5 7 / 82%));
}
@media (prefers-reduced-motion: reduce) {
	.ps-backdrop > video { display: none; }
}

/* Product collections and cards. */
.wp-block-woocommerce-product-template { gap: var(--ps-product-row-gap); }
.wp-block-woocommerce-product-price,
.wc-block-components-product-price { font-weight: 800; }

/* Catalog controls and current mobile filter drawer. */
.ps-catalog-toolbar { margin-block: 1.5rem; }
.ps-shop-layout {
	align-items: flex-start;
}
.ps-shop-sidebar {
	flex: 0 0 22rem;
	width: 22rem;
	max-width: 100%;
	min-width: 0;
	flex-grow: 0;
	align-self: flex-start;
}
.ps-shop-results {
	min-width: 0;
	flex-grow: 1;
}
.ps-product-grid--count-1 .wc-block-product {
	width: 100%;
	max-width: min(18rem, 100%);
	margin-inline: auto;
}
@media (max-width: 781px) {
	.ps-product-grid--count-1 .wc-block-product-template {
		max-width: 18rem;
		margin-inline: auto;
	}
}
.ps-shop-filters {
	box-sizing: border-box;
	width: 100%;
	max-width: 100%;
	padding: 1rem;
	border: 1px solid rgb(255 255 255 / 14%);
	border-radius: 1.25rem;
	background: #101016;
}
.ps-shop-filters.wc-block-product-filters {
	display: block;
}
.ps-shop-filters h2 {
	margin-block: 0 1rem;
	text-wrap: balance;
}
.ps-shop-filters .wc-block-product-filter-checkbox-list__label {
	align-items: flex-start;
	white-space: normal;
	overflow-wrap: anywhere;
}
.ps-shop-filters .wc-block-product-filter-checkbox-list__item {
	min-width: 0;
}
.ps-shop-filters .wc-block-product-filter-price-slider,
.ps-shop-filters .wp-block-woocommerce-product-filter-price {
	max-width: 100%;
}
.ps-shop-filters :is(input, select, .wc-block-product-filter-price-slider__content) {
	max-width: 100%;
	min-width: 0;
}
@media (min-width: 782px) {
	.ps-shop-filters .wc-block-product-filters__open-overlay {
		display: none;
	}
	.ps-shop-filters .wc-block-product-filters__overlay {
		position: static;
		inset: auto;
		display: block;
		background: transparent;
	}
	.ps-shop-filters .wc-block-product-filters__overlay-wrapper,
	.ps-shop-filters .wc-block-product-filters__overlay-dialog {
		position: static;
		width: 100%;
		max-width: none;
		max-height: none;
		height: auto;
		overflow: visible;
		transform: none;
		border: 0;
		padding: 0;
		background: transparent;
		box-shadow: none;
	}
	.ps-shop-filters .wc-block-product-filters__overlay-header {
		display: none;
	}
	.ps-shop-filters .wc-block-product-filters__overlay-content {
		padding: 0;
		overflow: visible;
	}
}
.ps-shop-filters :where(h2, h3) { margin-block: 0 .65rem; }
.ps-shop-filters :where(button, input, select) { font: inherit; }
.ps-shop-filters input[type="range"] { accent-color: #21f6ff; }
.ps-shop-filters .wc-block-product-filters__open-overlay,
.ps-shop-filters .wc-block-product-filters__apply,
.ps-shop-filters .wc-block-product-filters__close-overlay {
	min-height: 44px;
	border-radius: 999px;
}
.wp-block-woocommerce-catalog-sorting select,
.woocommerce-ordering select {
	min-height: 44px;
	padding: .55rem 2.5rem .55rem .8rem;
	border: 1px solid rgb(255 255 255 / 25%);
	border-radius: .65rem;
	background: #101016;
	color: #f8f7ff;
}
.wp-block-query-pagination { margin-top: var(--wp--preset--spacing--40); }
.wp-block-query-pagination a,
.wp-block-query-pagination .current {
	display: inline-grid;
	min-width: 44px;
	min-height: 44px;
	place-items: center;
	border-radius: 999px;
}
.wp-block-query-pagination .current { background: #21f6ff; color: #050507; }

@media (min-width: 1024px) and (min-height: 700px) {
	.ps-shop-sidebar {
		position: sticky;
		top: 1rem;
		align-self: flex-start;
	}
}

/* Forms, notices, account, Cart, Checkout, and confirmation. */
:where(.woocommerce, .wc-block-components-form) input:not([type="checkbox"], [type="radio"], [type="range"]),
:where(.woocommerce, .wc-block-components-form) textarea,
:where(.woocommerce, .wc-block-components-form) select {
	min-height: 44px;
	border: 1px solid rgb(255 255 255 / 25%);
	border-radius: .65rem;
	background: #101016;
	color: #f8f7ff;
}
.wc-block-components-notice-banner,
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	border: 1px solid rgb(33 246 255 / 45%);
	border-radius: .8rem;
	background: #101016;
	color: #f8f7ff;
}
.woocommerce-error { border-color: #ff2bd6; }
.wc-block-cart,
.wc-block-checkout,
.wc-block-order-confirmation-status,
.wc-block-order-confirmation-summary,
.wc-block-order-confirmation-totals-wrapper {
	padding: clamp(1rem, 3vw, 2rem);
	border: 1px solid rgb(255 255 255 / 14%);
	border-radius: 1.25rem;
	background: rgb(255 255 255 / 4%);
}
.wc-block-components-sidebar-layout { gap: clamp(1.5rem, 4vw, 4rem); }
.wc-block-components-totals-wrapper { border-color: rgb(255 255 255 / 14%); }
.wc-block-components-button { min-height: 46px; }
.wp-block-woocommerce-product-details { margin-block: var(--wp--preset--spacing--50); }
.wp-block-woocommerce-product-meta { color: #aaa8b8; font-size: .9rem; }
.ps-single-product-layout { align-items: flex-start; }
.ps-single-product-layout .wp-block-woocommerce-product-image-gallery {
	position: sticky;
	top: 1.5rem;
}
.ps-product-collection-link { margin-bottom: .75rem; }
.ps-product-collection-link .ps-collection-pill a,
.ps-product-collection-link .wp-block-post-terms a {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: .35rem .85rem;
	border: 1px solid rgb(33 246 255 / 28%);
	border-radius: 999px;
	background: rgb(33 246 255 / 8%);
	color: var(--ps-color-cyan);
	font-size: .82rem;
	font-weight: 600;
	letter-spacing: .04em;
	text-decoration: none;
	text-transform: uppercase;
}
.ps-product-collection-link .wp-block-post-terms a:hover,
.ps-product-collection-link .wp-block-post-terms a:focus-visible {
	border-color: rgb(33 246 255 / 55%);
	background: rgb(33 246 255 / 14%);
}
.ps-product-facts {
	margin-block: 1rem 1.25rem;
	padding: .85rem 1rem;
	border: 1px solid rgb(255 255 255 / 10%);
	border-radius: .9rem;
	background: rgb(255 255 255 / 3%);
}
.ps-product-facts__list {
	display: grid;
	gap: .45rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.ps-product-facts__label {
	color: #aaa8b8;
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
}
.ps-product-facts__value {
	color: #f8f7ff;
	font-size: .92rem;
}
.ps-product-purchase-panel {
	margin-block: 1rem 1.25rem;
	padding: 1rem;
	border: 1px solid rgb(255 255 255 / 12%);
	border-radius: 1rem;
	background: rgb(255 255 255 / 4%);
}
.ps-product-policies {
	margin-top: .85rem;
}
.ps-product-policies__label {
	margin: 0 0 .35rem;
	color: #aaa8b8;
	font-size: .78rem;
	font-weight: 600;
	letter-spacing: .06em;
	text-transform: uppercase;
}
.ps-product-policies__links {
	margin: 0;
	color: #d8d6e8;
	font-size: .9rem;
}
.ps-product-policies__links a {
	color: var(--ps-color-cyan);
	text-decoration: none;
}
.ps-product-policies__links a:hover,
.ps-product-policies__links a:focus-visible {
	text-decoration: underline;
}
.ps-related-products { margin-block: var(--wp--preset--spacing--50); }
.ps-related-products .ps-section-heading { margin-bottom: 1.25rem; }
.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--short .ps-featured-bento__media { min-height: 7.5rem; }
.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--tall .ps-featured-bento__media { min-height: 9.5rem; }
.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--hero .ps-featured-bento__media { min-height: 10.5rem; }
@media (min-width: 782px) {
	.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--short .ps-featured-bento__media { min-height: 8.5rem; }
	.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--tall .ps-featured-bento__media { min-height: 11rem; }
	.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--hero .ps-featured-bento__media { min-height: 13rem; }
}
@media (min-width: 1200px) {
	.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--short .ps-featured-bento__media { min-height: 9rem; }
	.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--tall .ps-featured-bento__media { min-height: 12rem; }
	.ps-related-products .ps-featured-bento--related .ps-featured-bento__cell--hero .ps-featured-bento__media { min-height: 14rem; }
}
.ps-product-sticky-bar {
	position: fixed;
	inset-inline: 0;
	bottom: 0;
	z-index: var(--ps-z-overlay);
	padding: .65rem clamp(.75rem, 3vw, 1.25rem) calc(.65rem + env(safe-area-inset-bottom, 0px));
	border-top: 1px solid rgb(255 255 255 / 12%);
	background: rgb(5 5 7 / 94%);
	backdrop-filter: blur(12px);
	transform: translateY(110%);
	transition: transform var(--ps-motion-fast) var(--ps-ease-out);
}
.ps-product-sticky-bar.is-visible { transform: translateY(0); }
.ps-product-sticky-bar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .85rem;
	max-width: 72rem;
	margin-inline: auto;
}
.ps-product-sticky-bar__meta { min-width: 0; flex: 1 1 auto; }
.ps-product-sticky-bar__title {
	overflow: hidden;
	margin: 0;
	color: #f8f7ff;
	font-size: .88rem;
	font-weight: 600;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.ps-product-sticky-bar__price {
	color: var(--ps-color-cyan);
	font-size: .95rem;
	font-weight: 700;
}
.ps-product-sticky-bar__button {
	flex: 0 0 auto;
	min-height: 2.5rem;
	padding: .5rem 1rem;
	border: 0;
	border-radius: var(--ps-btn-radius);
	background: var(--ps-color-paper);
	color: var(--ps-color-void);
	font-size: .875rem;
	font-weight: 500;
	cursor: pointer;
}
.ps-has-single-product { scroll-padding-bottom: calc(5.5rem + env(safe-area-inset-bottom, 0px)); }

/* Laptop rhythm: preserve the approved desktop composition while fitting more
   of each chapter into common 13–16 inch viewport heights. */
@media (min-width: 1024px) and (max-width: 1600px) {
	:root {
		--ps-section-space: clamp(4.6rem, 7.2vw, 6.5rem);
		--ps-section-heading-space: clamp(1.75rem, 3.2vw, 2.8rem);
		--ps-editorial-heading-space: clamp(2.5rem, 4.8vw, 4.8rem);
		--ps-editorial-offset: clamp(0rem, 5.6vw, 5.6rem);
		--ps-process-space: clamp(3.75rem, 5.8vw, 5rem);
		--ps-process-gap: clamp(2rem, 4.8vw, 5.2rem);
		--ps-product-row-gap: clamp(1.75rem, 3.2vw, 3.2rem);
	}
}

@media (min-width: 1280px) and (max-width: 1600px) {
	.ps-hero {
		min-height: clamp(39rem, calc(100svh - 6rem), 46rem) !important;
		padding-block: clamp(4rem, 6.4vw, 6.5rem);
	}
	.ps-hero-layout {
		gap: clamp(2.5rem, 4vw, 4rem);
	}
	.ps-hero-copy {
		padding-left: clamp(.75rem, 1vw, 1rem);
	}
	.ps-hero-copy h1 {
		font-size: clamp(3rem, 8.45vw, 7.5rem) !important;
	}
	.ps-hero-actions,
	.ps-hero-proof {
		margin-top: 1.5rem;
	}
	.ps-hero-products {
		padding-block: .75rem;
	}
	.ps-hero-carousel-stage {
		height: clamp(24rem, 30vw, 29rem);
	}
	.ps-hero-carousel-footer {
		margin-top: .25rem;
	}
}

@media (min-width: 1280px) and (max-width: 1600px) and (max-height: 800px) {
	.ps-hero {
		padding-block: 3rem;
	}
}

@media (max-width: 781px) {
	.ps-section { padding-block: 3rem; }
	.ps-process-story {
		padding-block: 3rem;
	}
	/* Let the header wrap so the search field gets its own full-width row
	   instead of overflowing the nowrap row and being clipped off-screen. */
	.ps-header-bar { flex-wrap: wrap; row-gap: .85rem; }
	.ps-header-actions {
		flex: 1 1 100%;
		order: 3;
		justify-content: space-between;
	}
	.ps-header-search { flex: 1 1 auto; min-width: 0; }
	.ps-header-search .wp-block-search__input { width: 100%; }
	.ps-hero { min-height: 0 !important; padding-block: 4rem 3rem; }
	.ps-hero::after { inset: auto -8rem 2rem auto; }
	.ps-hero-layout { gap: 1.5rem; }
	.ps-hero-copy-backdrop {
		inset: -4% -8% -2% -10%;
	}
	.ps-hero-copy-aura {
		left: -2%;
		width: 104%;
		height: clamp(9rem, 48vw, 14rem);
		filter: blur(1.75rem);
	}
	.ps-hero-copy-stars { opacity: 0.38; }
	.ps-hero-copy h1 { font-size: clamp(3.7rem, 18vw, 6.5rem) !important; }
	.ps-hero-products { padding-block: 1rem; }
	.ps-hero-carousel-footer { flex-wrap: wrap; }
	.ps-hero-carousel-caption { flex: 1 1 14rem; }
	.ps-hero-carousel-navigation { margin-left: auto; }
	.ps-section-heading {
		align-items: flex-start !important;
		flex-direction: column;
		margin-bottom: 1.5rem;
	}
	.ps-collection-grid {
		display: grid;
		grid-template-columns: none;
		grid-template-rows: none;
		grid-auto-columns: min(84vw, 32rem);
		grid-auto-flow: column;
		gap: 1rem;
		margin-inline: 0;
		padding: .25rem 0 1rem;
		overflow-x: auto;
		overscroll-behavior-inline: contain;
		scroll-padding-inline: .25rem;
		scroll-snap-type: inline mandatory;
		scrollbar-width: thin;
	}
	.ps-collection-grid[class*="ps-collection-grid--count-"] .ps-collection-card {
		grid-column: auto;
		grid-row: auto;
		scroll-snap-align: start;
		scroll-snap-stop: normal;
	}
	.ps-collection-grid[class*="ps-collection-grid--count-"] .ps-collection-art {
		min-height: 0;
		aspect-ratio: 4 / 3;
	}
	.ps-collection-caption { margin-top: .75rem; }
	.ps-featured-bento {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.ps-featured-bento__col {
		display: contents;
	}
	.ps-featured-bento__cell--hero .ps-featured-bento__media,
	.ps-featured-bento__cell--tall .ps-featured-bento__media,
	.ps-featured-bento__cell--short .ps-featured-bento__media {
		min-height: 0;
		aspect-ratio: 1;
	}
	.ps-featured-bento__cell:first-child {
		grid-column: 1 / -1;
	}
	.ps-featured-bento__cell:first-child .ps-featured-bento__media {
		aspect-ratio: 16 / 9;
	}
	.ps-site-footer {
		padding-block: 2.5rem !important;
	}
	.ps-site-footer-layout {
		display: grid !important;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 1.25rem 1.5rem;
	}
	.ps-site-footer-brand {
		grid-column: 1 / -1;
	}
	.ps-site-footer-group {
		min-width: 0;
	}
	.ps-site-footer-group h3 {
		margin-block: 0 .35rem;
	}
	.ps-site-footer .ps-footer-nav ul {
		gap: 0;
	}
	.ps-editorial-heading { gap: 1.5rem; margin-bottom: 2.5rem; }
	.ps-editorial-pair { grid-template-columns: 1fr; gap: 2.5rem; }
	.ps-editorial-figure--illustration {
		width: 84%;
		margin: 0 0 0 auto;
	}
	.ps-editorial-figure figcaption {
		grid-template-columns: auto 1fr;
	}
	.ps-editorial-figure figcaption small {
		grid-column: 2;
		text-align: left;
	}
	.ps-process-layout,
	.ps-collector-club-layout { gap: 2.5rem; }
	.ps-quality-line .wp-block-group {
		align-items: flex-start;
		justify-content: flex-start;
	}
	.ps-catalog-toolbar { align-items: stretch !important; flex-direction: column; }
	.ps-shop-sidebar { width: 100%; flex-basis: auto !important; }
	.ps-shop-filters { padding: .8rem; }
	.wc-block-product-filters__overlay { color: #f8f7ff; }
	.wc-block-product-filters__overlay-dialog { background: #050507; }
	.wp-block-woocommerce-product-image-gallery { position: static; }
	.ps-single-product-layout .wp-block-woocommerce-product-image-gallery { position: static; }
	.ps-single-product-purchase { display: flex; flex-direction: column; }
	.ps-product-sticky-bar { display: block; }
	.ps-product-sticky-bar[hidden] { display: block; }
	.wc-block-components-sidebar-layout { display: block; }
	.wc-block-components-sidebar { width: 100%; }
}

@media (min-width: 390px) and (max-width: 781px) {
	.ps-new-grid .wc-block-product-template {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 1rem .75rem;
	}
	.ps-new-grid .wp-block-post-title a {
		-webkit-line-clamp: 3;
	}
	.ps-new-grid .wp-block-woocommerce-product-button .wp-block-button__link {
		font-size: .9rem;
	}
}

@media (max-width: 480px) {
	.ps-hero-carousel-caption {
		justify-items: center;
		text-align: center;
	}
	.ps-hero-carousel-caption strong { max-width: 20ch; }
	.ps-hero-carousel-navigation {
		width: 100%;
		margin-inline: auto;
		flex-wrap: wrap;
		justify-content: center;
	}
}

@media (min-width: 782px) {
	.ps-product-sticky-bar { display: none !important; }
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: .01ms !important;
	}
	.wp-block-button.ps-marketing-cta > .wp-element-button,
	:where(
		.wp-element-button,
		.wp-block-woocommerce-product-button .wp-block-button__link,
		.ps-product-sticky-bar__button
	) {
		transform: none !important;
	}
	.ps-header-search::before { animation: none !important; }
	.ps-page-transition__spinner-bar {
		animation: none !important;
		opacity: .55;
	}
	.ps-page-transition__mark-glow {
		animation: none !important;
		opacity: .85;
		transform: none;
		filter: blur(1.35rem);
	}
	.ps-enhanced-motion .ps-reveal { opacity: 1; transform: none; }
	.ps-hero-carousel {
		--ps-carousel-side-angle: 0deg;
		--ps-carousel-side-depth: 0px;
		--ps-carousel-active-depth: 0px;
	}
	.ps-hero-carousel-slides,
	.ps-hero-carousel-sheen,
	.ps-hero-carousel-glints span,
	.ps-hero-carousel-caption.is-changing { animation: none !important; }
	.ps-hero-carousel-glints { display: none; }
	.ps-hero-copy-aura,
	.ps-hero-copy-stars { animation: none !important; }
	.ps-js .ps-hero-wave__char,
	.ps-hero-wave__char {
		opacity: 1 !important;
		animation: none !important;
		transform: none !important;
	}
	.ps-pointer-effects body::before { display: none; }
}

@media print {
	.ps-page-transition,
	.ps-pointer-effects body::before,
	body > .wp-site-blocks > header,
	body > .wp-site-blocks > footer,
	.ps-shop-filters,
	.wp-block-woocommerce-product-button,
	.wc-block-components-button,
	.woocommerce-breadcrumb { display: none !important; }
	body { background: #fff !important; color: #000 !important; }
	* { box-shadow: none !important; text-shadow: none !important; }
	a { color: #000 !important; text-decoration: underline; }
	.ps-section { padding-block: 1rem; }
}
