/*
 * Printcart Stores: shared polish layer (design system, header, menus, footer, product page).
 * Source of truth for the tokens: docs/DESIGN-SYSTEM.md. Children override tokens (colours, fonts, logo), not this file.
 * Behaviour that needs script (sticky state, menu keys, sticky add-to-cart bar, newsletter states) lives in the
 * printcart-stores-blocks plugin and only toggles the classes styled here.
 */

/* ---------- tokens ---------- */
:root {
	--cs-space-1: 4px;
	--cs-space-2: 8px;
	--cs-space-3: 12px;
	--cs-space-4: 16px;
	--cs-space-5: 24px;
	--cs-space-6: 32px;
	--cs-space-7: 48px;
	--cs-space-8: 64px;
	/* radius scale (soft): mirrored in theme.json settings.custom.radius */
	--cs-r-xs: 6px; /* thumbs, swatches, small badges */
	--cs-r-sm: 10px; /* buttons, inputs, tabs, small panels */
	--cs-r-md: 16px; /* product cards, images, info panels */
	--cs-r-lg: 24px; /* inset section cards, hero (18px on phones) */
	--cs-r-pill: 999px;
	--cs-radius: var(--cs-r-md);
	--cs-radius-field: var(--cs-r-sm);
	/* elevation: soft, layered, low opacity (children on dark surfaces swap these for hairlines + glow) */
	--cs-shadow-0: 0 0 0 1px rgba(17, 17, 17, 0.06);
	--cs-shadow-1: 0 1px 2px rgba(17, 17, 17, 0.06), 0 2px 8px rgba(17, 17, 17, 0.05);
	--cs-shadow-2: 0 2px 4px rgba(17, 17, 17, 0.05), 0 12px 28px rgba(17, 17, 17, 0.1);
	--cs-shadow-3: 0 4px 8px rgba(17, 17, 17, 0.06), 0 24px 48px rgba(17, 17, 17, 0.14);
	/* hairlines (the form field border stays --cs-field-border: 3.45:1, WCAG 1.4.11) */
	--cs-line: rgba(17, 17, 17, 0.08);
	--cs-line-strong: rgba(17, 17, 17, 0.14);
	/* motion: 200ms at most, off under prefers-reduced-motion */
	--cs-ease: cubic-bezier(0.2, 0.7, 0.2, 1);
	--cs-dur: 180ms;
	/* type rhythm */
	--cs-track-caps: 0.08em;
	--cs-track-nav: 0.06em;
	--cs-track-button: 0.04em;
	/* spacing rhythm: statement inset for the hero and inset section cards */
	--cs-inset-statement: clamp(16px, 2.1vw, 30px);
	--cs-section-y: clamp(56px, 6vw, 96px);
	/* colour roles children map to their palette */
	--cs-accent: var(--wp--preset--color--primary-dark, #0e7fa3);
	--cs-plate: var(--wp--preset--color--tertiary, #f8f9f9);
	--cs-product-title: inherit;
	--cs-badge-bg: var(--wp--preset--color--accent-orange, #ffa63e);
	--cs-badge-fg: #1a1a1a; /* 8.9:1 on #ffa63e; white was 1.95:1 */
	--cs-ring: var(--wp--preset--color--primary-dark, #0e7fa3);
	--cs-ring-gap: #fff;
	--cs-field-border: #8a8a8a;
	--cs-target: 44px;
	--cs-gutter: 16px;
	--cs-ratio-card: 1 / 1;
	--cs-ratio-hero: 16 / 9;
	--cs-ratio-post: 16 / 10;
	--cs-topbar-h: 50px;
	--cs-header-h: 96px;
	--cs-fs-meta: clamp(0.8125rem, 0.79rem + 0.1vw, 0.875rem);
	--cs-fs-body: clamp(0.9375rem, 0.91rem + 0.15vw, 1rem);
}

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

/* ---------- focus ring: 2 px, offset, readable on light and dark ---------- */
/* !important on the outline only: plugin CSS often sets outline: 0 on :focus and a visible ring is a hard requirement */
:is(a, button, input, select, textarea, summary, [tabindex], [role="button"]):focus-visible {
	outline: 2px solid var(--cs-ring) !important;
	outline-offset: 2px !important;
	box-shadow: 0 0 0 4px var(--cs-ring-gap);
}

.printcart-footer,
.printcart-topbar,
.wp-block-navigation__responsive-container.is-menu-open.is-menu-open {
	--cs-ring: #fff;
	--cs-ring-gap: #1a1a1a;
}

.printcart-topbar {
	--cs-ring-gap: #333;
}

.wp-block-navigation__responsive-container.is-menu-open.is-menu-open {
	--cs-ring: var(--wp--preset--color--primary-dark, #0e7fa3);
	--cs-ring-gap: #fff;
}

/* ---------- buttons: size, states ---------- */
.wp-element-button,
.wp-block-button__link,
.wc-block-components-button:not(.is-link),
.button,
button.single_add_to_cart_button,
input[type="submit"] {
	min-height: var(--cs-target);
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--cs-space-2);
	font-size: var(--cs-fs-body);
	line-height: 1.2;
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.wp-element-button:active,
.wp-block-button__link:active,
.button:active {
	transform: translateY(1px);
}

.wp-element-button:disabled,
.wp-element-button[aria-disabled="true"],
.button:disabled,
.button.disabled,
.wp-block-button__link[aria-disabled="true"] {
	opacity: 0.55;
	cursor: not-allowed;
	transform: none;
}

.wp-element-button.is-loading,
.button.loading,
.button.is-loading {
	position: relative;
	color: transparent !important;
	pointer-events: none;
}

.wp-element-button.is-loading::after,
.button.loading::after,
.button.is-loading::after {
	content: "";
	position: absolute;
	inset: 50% auto auto 50%;
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	border: 2px solid #fff;
	border-right-color: transparent;
	border-radius: 50%;
	animation: cs-spin 0.7s linear infinite;
}

@keyframes cs-spin {
	to { transform: rotate(360deg); }
}

/* ---------- form fields ---------- */
:where(input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="number"], input[type="password"], input[type="search"], select, textarea) {
	min-height: var(--cs-target);
	box-sizing: border-box;
	padding: var(--cs-space-2) var(--cs-space-3);
	font-size: max(16px, 1em);
	font-family: inherit;
	color: var(--wp--preset--color--contrast, #444);
	background: #fff;
	border: 1px solid var(--cs-field-border);
	border-radius: var(--cs-radius-field);
}

:where(textarea) {
	min-height: 120px;
}

:where(input, select, textarea):focus {
	border-color: var(--cs-ring);
}

:where(input, select, textarea)[aria-invalid="true"],
.cs-field-error :where(input) {
	border-color: #b3261e;
	box-shadow: inset 0 0 0 1px #b3261e;
}

::placeholder {
	color: #6b6b6b;
	opacity: 1;
}

/* ---------- card + image ratios ---------- */
.wc-block-components-product-image img,
.wp-block-post-featured-image img {
	object-fit: cover;
}

/* ---------- header: static (st-uxfix-043) ----------
   The header (top bar + promo banner + menu bar) scrolls away with the page and never comes back on scroll up/down: a sticky
   block that tall covered the screen on phones and laptops. Overlay headers (position: absolute on the home hero) stay as the child sets them. */
html body header.wp-block-template-part {
	position: relative;
	z-index: 50;
}

html body header.wp-block-template-part .wp-block-site-logo img {
	transition: none;
}

/* mini-cart: count badge and total */
.wc-block-mini-cart__button {
	position: relative;
	min-width: var(--cs-target);
	min-height: var(--cs-target);
	gap: var(--cs-space-2);
	align-items: center;
	justify-content: center;
}

.wc-block-mini-cart__badge {
	min-width: 20px;
	height: 20px;
	padding: 0 5px;
	box-sizing: border-box;
	border-radius: 10px;
	background: var(--wp--preset--color--accent-red, #c4281c);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 20px;
	text-align: center;
}

.wc-block-mini-cart__amount {
	font-size: var(--cs-fs-body);
	font-weight: 600;
	white-space: nowrap;
}

.wp-block-search__button,
.wp-block-navigation__responsive-container-open,
.wp-block-navigation__responsive-container-close {
	min-width: var(--cs-target);
	min-height: var(--cs-target);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

/* ---------- top-level menu: current item, targets ---------- */
.printcart-header .wp-block-navigation__container > .wp-block-navigation-item > a,
.printcart-header .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
	min-height: var(--cs-target);
	display: inline-flex;
	align-items: center;
}

.wp-block-navigation .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content,
.wp-block-navigation .wp-block-navigation-item.cs-current-branch > .wp-block-navigation-item__content {
	box-shadow: inset 0 -3px 0 var(--wp--preset--color--primary-dark, #0e7fa3);
	font-weight: 700;
}

.wp-block-navigation .wp-block-navigation-submenu__toggle {
	min-width: 24px;
	min-height: 24px;
	padding: 0;
	margin-left: 2px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.wp-block-navigation .wp-block-navigation-submenu__toggle svg {
	width: 12px;
	height: 12px;
	transition: transform 0.15s ease;
}

.wp-block-navigation .wp-block-navigation-submenu__toggle[aria-expanded="true"] svg {
	transform: rotate(180deg);
}

/* ---------- dropdowns + mega panel ---------- */
.wp-block-navigation .wp-block-navigation__submenu-container {
	box-shadow: var(--cs-shadow-2);
	border: 1px solid var(--wp--preset--color--border, #e9e9e9);
}

.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: var(--cs-space-2) var(--cs-space-4);
	min-height: 36px;
	display: flex;
	align-items: center;
}

/* hover intent: open after 150 ms, close after 250 ms, so a diagonal move to the panel does not drop it.
   Keyboard focus and aria-expanded open at once: a delayed visibility would make Tab skip the links inside. */
@media (min-width: 782px) {
	.wp-block-navigation:not(.has-modal-open) .wp-block-navigation__submenu-container {
		transition: opacity 0.15s ease 0.25s, visibility 0s linear 0.4s;
	}

	.wp-block-navigation:not(.has-modal-open) .has-child:hover > .wp-block-navigation__submenu-container {
		transition: opacity 0.15s ease 0.15s, visibility 0s linear 0.15s;
	}

	/* core sets aria-expanded on mouseenter too, so only a panel opened without the pointer opens instantly */
	.wp-block-navigation:not(.has-modal-open) .has-child:not(:hover):focus-within > .wp-block-navigation__submenu-container,
	.wp-block-navigation:not(.has-modal-open) .has-child:not(:hover) .wp-block-navigation-submenu__toggle[aria-expanded="true"] ~ .wp-block-navigation__submenu-container {
		transition: opacity 0.1s ease 0s, visibility 0s linear 0s;
	}

	/* panel aligned to the content container, at least as wide as its columns need */
	.wp-block-navigation.wp-block-navigation .has-printcart-mega:hover > .wp-block-navigation__submenu-container,
	.wp-block-navigation.wp-block-navigation .has-printcart-mega:focus-within > .wp-block-navigation__submenu-container,
	.wp-block-navigation.wp-block-navigation .has-printcart-mega .wp-block-navigation-submenu__toggle[aria-expanded="true"] ~ .wp-block-navigation__submenu-container {
		width: min(var(--printcart-mega-width, 720px), var(--wp--style--global--wide-size, 1140px), calc(100vw - 2 * var(--cs-gutter)));
		min-width: min(var(--printcart-mega-width, 720px), calc(100vw - 2 * var(--cs-gutter)));
	}
}

/* Nested menu (3 levels) shown as a multi-column panel: each 2nd-level item is a column with its heading on top and its
   children listed under it. Core lays a menu item out as a flex row and the shadow above belongs to the outer panel only, so
   without this the 3rd-level lists render as separate floating boxes beside the heading (fix-livebugs-1). Children set the
   grid itself; this is the shared column rule and works with or without it. */
@media (min-width: 600px) {
	.wp-block-navigation:not(.has-modal-open) .wp-block-navigation__container > .wp-block-navigation-submenu:not(.has-printcart-mega) > .wp-block-navigation__submenu-container > .wp-block-navigation-submenu {
		display: block;
		min-width: 0;
	}

	.wp-block-navigation:not(.has-modal-open) .wp-block-navigation__container > .wp-block-navigation-submenu:not(.has-printcart-mega) > .wp-block-navigation__submenu-container > .wp-block-navigation-submenu > .wp-block-navigation__submenu-container {
		position: static;
		display: flex;
		flex-direction: column;
		box-shadow: none;
		border: 0;
		background: transparent;
	}
}

/* default placement: centred under the header container (a child may still place it, this has no specificity) */
@media (min-width: 782px) {
	:where(.printcart-header) {
		position: relative;
	}

	:where(.printcart-header .wp-block-group, .printcart-header .wp-block-navigation, .printcart-header .wp-block-navigation__responsive-container, .printcart-header .wp-block-navigation__responsive-dialog, .printcart-header .wp-block-navigation__responsive-container-content, .printcart-header .wp-block-navigation__container, .printcart-header .has-printcart-mega) {
		position: static;
	}

	:where(.printcart-header .has-printcart-mega > .wp-block-navigation__submenu-container) {
		left: 0;
		right: 0;
		margin-inline: auto;
		top: 100%;
	}
}

.printcart-mega-menu {
	padding: var(--cs-space-5) var(--cs-space-5) var(--cs-space-4);
}

.printcart-mega-menu .wp-block-columns {
	flex-wrap: wrap !important;
	gap: var(--cs-space-5) var(--cs-space-6);
}

.printcart-mega-menu .wp-block-column {
	flex: 1 1 200px !important;
	min-width: 200px;
}

.printcart-mega-menu :is(h2, h3, h4, h5) {
	margin: 0 0 var(--cs-space-3);
	padding-bottom: var(--cs-space-2);
	border-bottom: 2px solid var(--wp--preset--color--primary, #25bce9);
	font-size: var(--cs-fs-meta);
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	line-height: 1.3;
}

.printcart-mega-menu :is(ul, ol) {
	margin: 0;
	padding: 0;
	list-style: none;
}

.printcart-mega-menu a {
	display: flex;
	align-items: center;
	min-height: 32px;
	padding: 4px 0;
	font-size: var(--cs-fs-body);
	line-height: 1.35;
	text-decoration: none;
	text-wrap: balance;
}

.printcart-mega-menu a:hover {
	text-decoration: underline;
}

.printcart-mega-menu img {
	image-rendering: auto;
	border-radius: var(--cs-radius);
}

.printcart-mega-menu p {
	font-size: var(--cs-fs-body);
	line-height: 1.6;
}

/* ---------- mobile drawer: accordion levels ---------- */
.wp-block-navigation__responsive-container.is-menu-open {
	padding: var(--cs-space-4);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	position: absolute;
	top: var(--cs-space-2);
	right: var(--cs-space-2);
	border: 1px solid var(--wp--preset--color--border, #e9e9e9);
	border-radius: 50%;
	background: #fff;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: var(--cs-space-8);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	width: 100%;
	gap: 0;
	align-items: stretch;
}

html body .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
html body .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	align-items: stretch !important;
	justify-content: flex-start !important;
	text-align: left;
}

html body .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	display: flex;
	flex-direction: row !important;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-start;
	width: 100%;
	border-bottom: 1px solid var(--wp--preset--color--border, #e9e9e9);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	flex: 1 1 0;
	min-height: var(--cs-target);
	display: flex;
	align-items: center;
	font-size: 1.0625rem;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.has-child > .wp-block-navigation-submenu__toggle.wp-block-navigation-submenu__toggle {
	display: inline-flex;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	min-width: var(--cs-target);
	min-height: var(--cs-target);
	margin: 0;
	background: transparent;
	border: 0;
	color: inherit;
}

html body .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item > .wp-block-navigation-item__content {
	flex: 1 1 0;
	min-width: 0;
	justify-content: flex-start;
	text-align: left;
	padding-left: var(--cs-space-3);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content,
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.cs-current-branch > .wp-block-navigation-item__content {
	box-shadow: inset 4px 0 0 var(--wp--preset--color--primary-dark, #0e7fa3);
	padding-left: var(--cs-space-3);
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle svg {
	width: 16px;
	height: 16px;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container {
	display: none;
	flex: 0 0 100%;
	position: static;
	width: 100%;
	min-width: 0;
	border: 0;
	box-shadow: none;
	padding: 0 0 var(--cs-space-2) var(--cs-space-4);
	background: transparent;
	opacity: 1;
	visibility: visible;
	height: auto;
	overflow: visible;
}

.wp-block-navigation__responsive-container.is-menu-open .cs-open > .wp-block-navigation__submenu-container.wp-block-navigation__submenu-container.wp-block-navigation__submenu-container {
	display: block;
}

.wp-block-navigation__responsive-container.is-menu-open .cs-dup {
	display: none;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item {
	border-bottom: 0;
}

.wp-block-navigation__responsive-container.is-menu-open .has-printcart-mega .printcart-mega-menu {
	padding: var(--cs-space-2) 0;
}

.wp-block-navigation__responsive-container.is-menu-open .has-printcart-mega .printcart-mega-menu img {
	display: none;
}

.wp-block-navigation__responsive-container.is-menu-open .printcart-mega-menu .wp-block-column {
	flex-basis: 100% !important;
	min-width: 0;
}

/* ---------- footer ---------- */
.printcart-footer {
	font-size: var(--cs-fs-body);
}

.printcart-footer .wp-block-columns {
	gap: var(--cs-space-6);
}

.printcart-footer :is(h2, h3, h4, h5) {
	margin: 0 0 var(--cs-space-4);
	padding-bottom: var(--cs-space-3);
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	line-height: 1.3;
	text-transform: uppercase;
	color: #f2f2f2;
	border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}

.printcart-footer .wp-block-column > * + :is(h2, h3, h4, h5) {
	margin-top: var(--cs-space-6);
}

.printcart-footer .wp-block-navigation__container {
	gap: 0;
}

.printcart-footer .wp-block-navigation a,
.printcart-footer .wp-block-list a,
.printcart-footer .wp-block-navigation-item__content {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	padding: 4px 0;
	font-size: 0.9375rem;
	line-height: 1.4;
	color: #e4e4e4;
}

.printcart-footer p,
.printcart-footer li {
	font-size: 0.9375rem;
	line-height: 1.65;
	color: #b8b8b8;
}

.printcart-footer a {
	color: #e4e4e4;
}

.printcart-footer a:hover {
	color: #fff;
}

/* contact, social and payment rows share one rhythm */
.printcart-footer .wp-block-list {
	list-style: none;
	margin: var(--cs-space-4) 0;
	padding: 0;
}

.printcart-footer .wp-block-list li {
	margin: 0 0 var(--cs-space-2);
}

.printcart-footer .wp-block-social-links {
	margin-top: var(--cs-space-4);
	gap: var(--cs-space-2);
}

.printcart-footer .wp-block-social-links .wp-social-link a {
	min-width: 36px;
	min-height: 36px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.printcart-footer .wp-block-image {
	margin: var(--cs-space-4) 0 0;
}

.printcart-footer .wp-block-image img {
	max-width: 100%;
	height: auto;
}

/* newsletter */
.printcart-footer .wp-block-search__inside-wrapper {
	gap: var(--cs-space-2);
	flex-wrap: nowrap;
	border: 0;
	padding: 0;
}

.printcart-footer .wp-block-search__input {
	flex: 1 1 auto;
	min-width: 0;
	background: #fff;
	color: #1a1a1a;
	border: 1px solid #fff;
}

.printcart-footer .wp-block-search__button {
	flex: 0 0 auto;
	min-height: var(--cs-target);
	margin: 0;
	background: var(--wp--preset--color--primary-dark, #0e7fa3);
	color: #fff;
	border: 0;
	padding: 0 var(--cs-space-4);
	font-weight: 600;
}

.printcart-footer .wp-block-search__button:hover {
	background: #fff;
	color: #1a1a1a;
}

.cs-newsletter-msg {
	margin: var(--cs-space-2) 0 0;
	font-size: var(--cs-fs-meta);
	line-height: 1.4;
	min-height: 1.4em;
}

.cs-newsletter-msg.is-error {
	color: #ffb4ab;
}

.cs-newsletter-msg.is-success {
	color: #9be3b8;
}

.cs-newsletter.is-error .wp-block-search__input {
	border-color: #ffb4ab;
	box-shadow: 0 0 0 2px #ffb4ab;
}

.cs-newsletter.is-success .wp-block-search__input {
	border-color: #9be3b8;
	box-shadow: 0 0 0 2px #9be3b8;
}

/* copyright bar */
.printcart-footer > .wp-block-separator {
	margin: var(--cs-space-6) 0 var(--cs-space-4);
	opacity: 1;
}

.printcart-footer > p:last-child,
.printcart-footer [class*="__bottom"] p {
	font-size: var(--cs-fs-meta);
	color: #b8b8b8;
	text-align: center;
	margin: 0;
}

/* ---------- product detail ---------- */
.single-product main h1.wp-block-post-title {
	font-size: clamp(1.625rem, 1.3rem + 1.4vw, 2.25rem);
	font-weight: 600;
	line-height: 1.2;
	margin-bottom: var(--cs-space-2);
}

.single-product main .wc-block-components-product-rating {
	margin: 0 0 var(--cs-space-3);
	font-size: var(--cs-fs-meta);
}

.single-product main .wp-block-woocommerce-product-price,
.single-product main .wc-block-components-product-price {
	font-size: clamp(1.375rem, 1.2rem + 0.8vw, 1.75rem);
	font-weight: 700;
	line-height: 1.2;
	margin: 0 0 var(--cs-space-4);
}

.single-product main .wc-block-components-product-price del {
	font-size: 0.7em;
	font-weight: 400;
	opacity: 0.7;
}

.single-product main .wp-block-post-excerpt__excerpt {
	font-size: var(--cs-fs-body);
	line-height: 1.65;
	margin: 0 0 var(--cs-space-4);
}

.single-product main p.stock,
.single-product main .stock {
	display: inline-flex;
	align-items: center;
	gap: var(--cs-space-2);
	margin: 0 0 var(--cs-space-4);
	font-size: var(--cs-fs-meta);
	font-weight: 600;
	color: #1b6e46;
}

.single-product main p.stock::before,
.single-product main .stock::before {
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: currentColor;
}

.single-product main .out-of-stock {
	color: #b3261e;
}

.single-product main form.cart .quantity input.qty {
	width: 72px;
	text-align: center;
}

/* gallery */
.wc-block-product-gallery .wc-block-product-gallery-large-image img {
	cursor: zoom-in;
	object-fit: contain;
	background: #fff;
}

/* small sources are shown at their natural proportion, never stretched to the slot */
.wc-block-product-gallery .wc-block-woocommerce-product-gallery-large-image__image {
	width: auto;
	height: 100%;
	max-width: min(100%, var(--cs-img-w, 100%));
	margin-inline: auto;
}

.wc-block-product-gallery-thumbnails__thumbnail__image {
	border: 2px solid transparent;
	cursor: pointer;
	transition: border-color 0.15s ease;
}

.wc-block-product-gallery-thumbnails__thumbnail__image--is-active,
.wc-block-product-gallery-thumbnails__thumbnail__image:hover {
	border-color: var(--wp--preset--color--primary-dark, #0e7fa3);
}

.wc-block-product-gallery-large-image-next-previous button,
.wc-block-product-gallery-large-image-next-previous__button {
	min-width: var(--cs-target);
	min-height: var(--cs-target);
}

.wc-block-product-gallery-large-image {
	touch-action: pan-y pinch-zoom;
}

/* designer products: Start Design is the primary action, Add to cart the secondary */
form.cart .nbdesign-button,
form.cart a.nbdesign-button.button.alt {
	min-height: var(--cs-target);
	padding: 0 var(--cs-space-6);
	background: var(--wp--preset--color--primary-dark, #0e7fa3);
	color: #fff;
	border: 2px solid var(--wp--preset--color--primary-dark, #0e7fa3);
	font-weight: 700;
	text-transform: uppercase;
	text-decoration: none;
}

form.cart .nbdesign-button:hover {
	background: var(--wp--preset--color--contrast, #444);
	border-color: var(--wp--preset--color--contrast, #444);
	color: #fff;
}

form.cart:has(.nbdesign-button) .single_add_to_cart_button {
	background: transparent;
	color: var(--wp--preset--color--primary-dark, #0e7fa3);
	border: 2px solid var(--wp--preset--color--primary-dark, #0e7fa3);
}

form.cart:has(.nbdesign-button) .single_add_to_cart_button:hover {
	background: var(--wp--preset--color--primary-dark, #0e7fa3);
	color: #fff;
}

/* tabs */
html body .wp-block-woocommerce-product-details ul.tabs.wc-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cs-space-1);
	margin: 0 0 var(--cs-space-5);
	padding: 0;
	border-bottom: 1px solid var(--wp--preset--color--border, #e9e9e9);
	list-style: none;
}

html body .wp-block-woocommerce-product-details ul.tabs.wc-tabs li {
	margin: 0 0 -1px;
	border: 0;
	background: transparent;
}

html body .wp-block-woocommerce-product-details ul.tabs.wc-tabs li a {
	display: flex;
	align-items: center;
	min-height: var(--cs-target);
	padding: 0 var(--cs-space-5);
	font-size: var(--cs-fs-body);
	font-weight: 600;
	text-decoration: none;
	color: #555;
	border-bottom: 3px solid transparent;
}

html body .wp-block-woocommerce-product-details ul.tabs.wc-tabs li.active a,
html body .wp-block-woocommerce-product-details ul.tabs.wc-tabs li a:hover {
	color: var(--wp--preset--color--primary-dark, #0e7fa3);
	border-bottom-color: var(--wp--preset--color--primary-dark, #0e7fa3);
}

.wp-block-woocommerce-product-details .woocommerce-Tabs-panel {
	font-size: var(--cs-fs-body);
	line-height: 1.7;
	max-width: 75ch;
}

/* trust row pattern */
.cs-trust {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: var(--cs-space-3);
	margin: var(--cs-space-5) 0 0;
	padding: var(--cs-space-4);
	border: 1px solid var(--wp--preset--color--border, #e9e9e9);
	background: var(--wp--preset--color--tertiary, #f8f9f9);
}

.cs-trust p {
	margin: 0;
	font-size: var(--cs-fs-meta);
	line-height: 1.4;
}

.cs-trust strong {
	display: block;
	font-size: var(--cs-fs-body);
	color: var(--wp--preset--color--contrast, #444);
}

/* related products */
.single-product main .wp-block-woocommerce-product-collection:not(.ps-mini-products) .wc-block-components-product-image img {
	aspect-ratio: var(--cs-ratio-card);
	object-fit: cover;
	width: 100%;
	height: auto;
}

.single-product main .wp-block-woocommerce-product-collection:not(.ps-mini-products) .wp-block-post-title {
	font-size: var(--cs-fs-body);
	line-height: 1.35;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.single-product main .wp-block-heading:is(h2, h3) {
	margin-top: var(--cs-space-7);
}

/* ---------- sticky add-to-cart / Start Design bar (mobile only; created by the plugin script) ---------- */
.cs-sticky-atc {
	display: none;
}

@media (max-width: 781px) {
	:root {
		--cs-topbar-h: 0px;
	}

	.cs-sticky-atc {
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: 60;
		display: flex;
		align-items: center;
		gap: var(--cs-space-3);
		padding: var(--cs-space-2) var(--cs-gutter) calc(var(--cs-space-2) + env(safe-area-inset-bottom, 0px));
		background: #fff;
		border-top: 1px solid var(--wp--preset--color--border, #e9e9e9);
		box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.12);
		transform: translateY(110%);
		transition: transform 0.2s ease;
	}

	.cs-sticky-atc.is-visible {
		transform: translateY(0);
	}

	.cs-sticky-atc__price {
		flex: 0 1 auto;
		font-size: 1.125rem;
		font-weight: 700;
		line-height: 1.1;
		color: var(--wp--preset--color--primary-dark, #0e7fa3);
	}

	.cs-sticky-atc__price small {
		display: block;
		font-size: 0.75rem;
		font-weight: 400;
		color: #555;
	}

	.cs-sticky-atc .cs-sticky-atc__btn {
		flex: 1 1 auto;
		min-height: 48px;
		border: 0;
		background: var(--wp--preset--color--primary-dark, #0e7fa3);
		color: #fff;
		font-weight: 700;
		text-transform: uppercase;
		font-size: var(--cs-fs-body);
	}

	body.single-product {
		padding-bottom: 72px;
	}

	body.single-product form.cart .nbdesign-button,
	body.single-product form.cart .single_add_to_cart_button {
		width: 100%;
	}

	/* header + footer: gutters, targets */
	html body .printcart-topbar,
	html body .printcart-header,
	html body .printcart-footer,
	html body [class*="footer__bottom"],
	html body [class*="footer-bottom"] {
		padding-left: var(--cs-gutter);
		padding-right: var(--cs-gutter);
		box-sizing: border-box;
	}

	.printcart-footer .wp-block-navigation a,
	.printcart-footer .wp-block-list a,
	.printcart-footer .wp-block-navigation-item__content {
		min-height: var(--cs-target);
	}

	.printcart-footer .wp-block-columns {
		gap: var(--cs-space-6);
	}

	.printcart-footer .wp-block-social-links .wp-social-link a {
		min-width: var(--cs-target);
		min-height: var(--cs-target);
	}

	.wc-block-mini-cart__amount {
		display: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.cs-sticky-atc,
	.wp-block-navigation .wp-block-navigation__submenu-container {
		transition: none !important;
	}
}

/* ======================================================================
 * Part 2 (polish-shared-1b): printing options, designer flow, blog, shop, cart / checkout / account / 404 / search
 * ====================================================================== */

/* ---------- printing options (Printcart): grouped fields, swatches, summary, tables ---------- */
.nbo-wrapper {
	margin: var(--cs-space-5) 0;
	font-size: var(--cs-fs-body);
	color: var(--wp--preset--color--contrast, #444);
}

.nbo-wrapper .nbo-fields-wrapper {
	display: grid;
	gap: var(--cs-space-3);
}

.nbo-wrapper .nbd-option-field {
	margin: 0;
	border: 1px solid #e0e0e0;
	border-radius: var(--cs-radius-field);
	background: #fff;
	overflow: hidden;
}

.nbo-wrapper .nbd-field-header {
	padding: var(--cs-space-2) var(--cs-space-4);
	background: #f5f5f5;
	border-bottom: 1px solid #e0e0e0;
}

.nbo-wrapper .nbd-field-header label {
	display: block;
	margin: 0;
	font-size: var(--cs-fs-body);
	font-weight: 700;
	line-height: 1.4;
	text-transform: capitalize;
	color: inherit;
}

.nbo-wrapper .nbd-required {
	color: #b3261e;
}

.nbo-wrapper .nbd-field-content {
	padding: var(--cs-space-4);
}

/* help text under a field: small, muted, never hidden */
.nbo-wrapper .nbd-field-content small,
.nbo-wrapper .nbd-field-content .nbd-field-description,
.nbo-wrapper .nbd-field-content .nbo-description {
	display: block;
	margin-top: var(--cs-space-2);
	font-size: var(--cs-fs-meta);
	line-height: 1.5;
	color: #595959;
}

.nbo-wrapper .nbd-field-content select,
.nbo-wrapper .nbd-field-content input[type="text"],
.nbo-wrapper .nbd-field-content input[type="number"],
.nbo-wrapper .nbd-field-content textarea {
	width: 100%;
	max-width: 100%;
}

/* swatches: >= 36 px (hit area 44 with the gap), selected ring, keyboard focus */
.nbo-wrapper .nbd-swatch-wrap {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	gap: var(--cs-space-3);
}

.nbo-wrapper .nbd-swatch-wrap input[type="radio"] {
	display: block;
	position: absolute;
	width: 1px;
	height: 1px;
	margin: 0;
	opacity: 0;
	pointer-events: none;
}

.nbo-wrapper .nbd-swatch {
	box-sizing: border-box;
	width: 40px;
	height: 40px;
	margin: 0;
	border: 2px solid rgba(0, 0, 0, 0.25);
	cursor: pointer;
	transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.nbo-wrapper .nbd-swatch:hover {
	transform: scale(1.06);
}

.nbo-wrapper .nbd-swatch-wrap input[type="radio"]:checked + .nbd-swatch {
	border-color: #fff;
	box-shadow: 0 0 0 2px var(--cs-ring), 0 0 0 4px #fff, 0 0 0 5px rgba(0, 0, 0, 0.2);
}

.nbo-wrapper .nbd-swatch-wrap input[type="radio"]:focus-visible + .nbd-swatch {
	outline: 2px solid var(--cs-ring) !important;
	outline-offset: 4px !important;
}

/* "Clear selection" is a text link, not a button */
.nbo-wrapper .nbo-clear-option-wrap {
	margin: 0;
	text-align: right;
}

.nbo-wrapper .nbo-clear-option-wrap .button,
.nbo-wrapper .nbo-clear-option-wrap .nbd-button {
	display: inline-flex;
	min-height: 32px;
	padding: 0 var(--cs-space-1);
	background: none !important;
	border: 0 !important;
	box-shadow: none;
	color: var(--cs-ring) !important;
	font-size: var(--cs-fs-meta);
	font-weight: 500;
	text-transform: none;
	text-decoration: underline !important;
	text-underline-offset: 3px;
}

.nbo-wrapper .nbo-clear-option-wrap .button:hover {
	text-decoration-thickness: 2px;
}

/* live total: stable box, tabular figures, no jump while the price updates */
.nbo-wrapper:not(:has(.nbo-price-matrix)) .nbo-summary-wrapper {
	min-height: 10.5rem;
}

.nbo-wrapper .nbo-summary-title,
.nbo-wrapper .nbo-table-pricing-title {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: 0;
	padding: var(--cs-space-2) var(--cs-space-4);
	background: #f5f5f5;
	border: 1px solid #e0e0e0;
	font-size: var(--cs-fs-body);
}

.nbo-wrapper table.nbo-summary-table,
.nbo-wrapper table.nbo-table-pricing {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
	font-size: var(--cs-fs-body);
}

.nbo-wrapper .nbo-summary-table td,
.nbo-wrapper .nbo-table-pricing td,
.nbo-wrapper .nbo-table-pricing th {
	padding: var(--cs-space-2) var(--cs-space-4);
	border: 0;
	border-bottom: 1px solid #ececec;
	background: none;
	vertical-align: middle;
}

.nbo-wrapper .nbo-summary-table td:last-child {
	text-align: right;
	white-space: nowrap;
}

.nbo-wrapper .nbo-summary-table tr.nbo-final-price td {
	padding-block: var(--cs-space-3);
	background: #f5f5f5;
	font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.25rem);
	font-weight: 700;
	color: var(--wp--preset--color--primary-dark, #0e7fa3);
}

/* quantity-break table: scrolls sideways on small screens, current tier highlighted */
.nbo-wrapper .nbo-table-pricing-wrap {
	overflow-x: auto;
	margin-top: var(--cs-space-4);
	-webkit-overflow-scrolling: touch;
}

.nbo-wrapper .nbo-table-pricing th {
	text-align: left;
	background: #f5f5f5;
	font-size: var(--cs-fs-meta);
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.nbo-wrapper .nbo-table-pricing tr.nbo-bold td {
	background: color-mix(in srgb, var(--cs-ring) 10%, #fff);
	font-weight: 700;
	box-shadow: inset 3px 0 0 var(--cs-ring);
}

/* price matrix */
.nbo-wrapper .nbo-price-matrix {
	overflow-x: auto;
	margin: var(--cs-space-3) 0;
	-webkit-overflow-scrolling: touch;
}

.nbo-wrapper .nbo-price-matrix table {
	width: 100%;
	min-width: 360px;
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
}

.nbo-wrapper .nbo-price-matrix th,
.nbo-wrapper .nbo-price-matrix td {
	min-width: 88px;
	height: var(--cs-target);
	padding: var(--cs-space-2) var(--cs-space-3);
	border: 1px solid #e0e0e0;
	text-align: center;
	font-size: var(--cs-fs-body);
}

.nbo-wrapper .nbo-price-matrix th {
	background: #f5f5f5;
	font-weight: 700;
}

.nbo-wrapper .nbo-price-matrix td[ng-click] {
	cursor: pointer;
	transition: background-color 0.15s ease;
}

.nbo-wrapper .nbo-price-matrix td[ng-click]:hover {
	background: #f0f0f0;
}

.nbo-wrapper .nbo-price-matrix td.selected {
	background: color-mix(in srgb, var(--cs-ring) 12%, #fff) !important;
	box-shadow: inset 0 0 0 2px var(--cs-ring) !important;
	font-weight: 700;
}

.nbo-wrapper .nbo-price-matrix td.selected span {
	color: var(--wp--preset--color--contrast, #222) !important;
}

.nbo-wrapper [tabindex]:focus-visible {
	outline: 2px solid var(--cs-ring) !important;
	outline-offset: -2px !important;
}

.nbo-wrapper .nbo-invalid,
.nbo-wrapper .nbd-invalid-form,
.nbo-wrapper .nbd-field-content .nbd-error {
	color: #b3261e;
	font-size: var(--cs-fs-meta);
}

/* ---------- Online Designer flow ---------- */
.nbd-action-wrap {
	display: inline-block;
	margin: 0 var(--cs-space-3) var(--cs-space-3) 0;
}

form.cart .nbdesign-button.upload-design,
.nbd-action-wrap .nbdesign-button.upload-design,
.nbd-action-wrap .nbdesign-button#useTemplate {
	background: transparent;
	color: var(--wp--preset--color--primary-dark, #0e7fa3);
	border: 2px solid var(--wp--preset--color--primary-dark, #0e7fa3);
}

form.cart .nbdesign-button.upload-design:hover,
.nbd-action-wrap .nbdesign-button#useTemplate:hover {
	background: var(--wp--preset--color--primary-dark, #0e7fa3);
	color: #fff;
}

form.cart .nbdesign-button,
.nbd-action-wrap .nbdesign-button {
	display: inline-flex;
	box-sizing: border-box;
	align-items: center;
	justify-content: center;
	gap: var(--cs-space-2);
	line-height: 1.2;
}

.nbd-action-wrap .nbdesign-button svg {
	flex: none;
	width: 20px;
	height: 20px;
}

/* the designer is opening: spinner on the button, text kept in the accessibility tree */
.nbdesign-button.cs-opening {
	position: relative;
	pointer-events: none;
	color: transparent !important;
}

.nbdesign-button.cs-opening svg {
	visibility: hidden;
}

.nbdesign-button.cs-opening::after {
	content: "";
	position: absolute;
	inset: 50% auto auto 50%;
	width: 18px;
	height: 18px;
	margin: -9px 0 0 -9px;
	border: 2px solid #fff;
	border-right-color: transparent;
	border-radius: 50%;
	animation: cs-spin 0.7s linear infinite;
}

.cs-designer-status {
	display: none;
	margin: 0 0 var(--cs-space-3);
	font-size: var(--cs-fs-meta);
	font-weight: 600;
	color: var(--cs-ring);
}

.cs-designer-status.is-active {
	display: block;
}

/* the returned artwork */
#nbdesigner-preview-title {
	display: flex;
	align-items: center;
	gap: var(--cs-space-2);
	margin: var(--cs-space-4) 0 var(--cs-space-2);
	font-size: var(--cs-fs-body);
	font-weight: 700;
	text-transform: none;
}

#nbdesigner-preview-title::before {
	content: "";
	flex: none;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: #1b6e46 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='2' d='M5 10.5l3.2 3.2L15 7'/%3E%3C/svg%3E") center / 100% no-repeat;
}

#nbdesigner_frontend_area,
#nbdesigner_upload_preview {
	display: flex;
	flex-wrap: wrap;
	gap: var(--cs-space-3);
	margin: 0 0 var(--cs-space-4);
}

#nbdesigner_frontend_area:not(:empty) {
	padding: var(--cs-space-3);
	background: #f5f5f5;
	border: 1px solid #e0e0e0;
	border-radius: var(--cs-radius-field);
}

#nbdesigner_frontend_area .img-con {
	width: 132px;
	height: 132px;
	padding: var(--cs-space-2);
	background: #fff;
	border: 1px solid #d5d5d5;
	box-shadow: var(--cs-shadow-1);
	border-radius: var(--cs-radius-field);
	cursor: pointer;
}

#nbdesigner_frontend_area .img-con img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

#nbdesigner_frontend_area .img-con:focus-visible {
	outline: 2px solid var(--cs-ring) !important;
	outline-offset: 2px !important;
}

/* design thumbnail + option breakdown in the cart, checkout and mini-cart */
.nbd-cart-item-design {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--cs-space-2) var(--cs-space-3);
	margin: var(--cs-space-2) 0;
	padding: var(--cs-space-2);
	background: #f5f5f5;
	border-radius: var(--cs-radius-field);
}

.nbd-cart-item-design p {
	flex: 1 0 100%;
	margin: 0;
	font-size: var(--cs-fs-meta);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

.nbd-cart-item-design p .remove {
	margin-left: var(--cs-space-2);
	font-weight: 400;
	text-transform: none;
	letter-spacing: 0;
	text-decoration: underline;
}

.nbd-cart-item-design img.nbd_cart_item_design_preview {
	width: 72px;
	height: 72px;
	object-fit: contain;
	background: #fff;
	border: 1px solid #d5d5d5;
	border-radius: var(--cs-radius-field);
}

.nbd-cart-item-design br {
	display: none;
}

.nbd-cart-item-design a.nbd-edit-design.button {
	min-height: 32px;
	padding: 0 var(--cs-space-1);
	background: none;
	border: 0;
	color: var(--cs-ring);
	font-size: var(--cs-fs-meta);
	font-weight: 500;
	text-transform: none;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.wc-block-components-product-details {
	font-size: var(--cs-fs-meta);
	line-height: 1.5;
}

/* notice after add-to-cart / errors */
.wc-block-components-notice-banner,
.woocommerce-message,
.woocommerce-error,
.woocommerce-info {
	padding: var(--cs-space-3) var(--cs-space-4);
	font-size: var(--cs-fs-body);
	line-height: 1.5;
	border-radius: var(--cs-radius-field);
}

.wc-block-components-notice-banner .wc-forward,
.wc-block-components-notice-banner .wp-element-button {
	min-height: 36px;
	font-weight: 700;
}

/* ---------- blog ---------- */
body.blog main .wp-block-post-featured-image,
body.archive:not(.woocommerce) main .wp-block-post-featured-image,
body.search main .wp-block-post-featured-image {
	aspect-ratio: var(--cs-ratio-post);
	overflow: hidden;
}

body.blog main .wp-block-post-featured-image img,
body.archive:not(.woocommerce) main .wp-block-post-featured-image img,
body.search main .wp-block-post-featured-image img {
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	aspect-ratio: var(--cs-ratio-post) !important;
	object-fit: cover;
}

body.blog main .wp-block-post-title,
body.archive:not(.woocommerce) main .wp-block-post-title,
body.search main .wp-block-post-title {
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	line-height: 1.3;
}

main .wp-block-post-excerpt__excerpt,
main .wp-block-post-date,
main .wp-block-post-author-name,
main .wp-block-post-terms {
	font-size: var(--cs-fs-meta);
}

main .wp-block-post-excerpt__excerpt {
	font-size: var(--cs-fs-body);
	line-height: 1.65;
	color: #555;
}

main .wp-block-post-date,
main .wp-block-post-author-name,
main .wp-block-post-terms {
	color: #595959;
}

/* single post: reading measure 60-75 ch, heading scale, meta */
.single-post main .cs-post-content > *,
.single-post main .wp-block-post-content > * {
	max-width: 68ch;
	margin-inline: auto;
}

.single-post main .wp-block-post-content > .alignwide,
.single-post main .wp-block-post-content > .alignfull {
	max-width: none;
}

.single-post main .wp-block-post-content {
	font-size: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
	line-height: 1.75;
}

.single-post main .wp-block-post-content h2 { font-size: clamp(1.5rem, 1.3rem + 0.9vw, 2rem); margin-top: 2em; line-height: 1.25; }
.single-post main .wp-block-post-content h3 { font-size: clamp(1.25rem, 1.15rem + 0.5vw, 1.5rem); margin-top: 1.6em; line-height: 1.3; }

.single-post main .wp-block-post-content p {
	margin-block: 0 1.2em;
}

.single-post main .wp-block-post-content img {
	height: auto;
}

.cs-post-meta,
body main.wp-block-group.is-layout-constrained > .cs-post-meta {
	justify-content: flex-start;
	font-size: var(--cs-fs-meta);
	max-width: 68ch;
	margin: var(--cs-space-4) auto var(--cs-space-5);
	gap: var(--cs-space-2) var(--cs-space-4);
	color: #595959;
}

.single-post main > .wp-block-post-featured-image {
	margin-inline: auto;
}

.cs-related-posts {
	margin-top: var(--cs-space-8);
	padding-top: var(--cs-space-6);
	border-top: 1px solid #e0e0e0;
}

.cs-related-posts .wp-block-post-title {
	margin: var(--cs-space-2) 0;
	font-size: var(--cs-fs-body);
	line-height: 1.35;
}

.cs-related-posts .wp-block-post-featured-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* comments + form */
.cs-comments,
body main.wp-block-group.is-layout-constrained > .cs-comments,
body main.wp-block-group.is-layout-constrained > .cs-related-posts {
	font-size: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
	max-width: 68ch;
	margin: var(--cs-space-7) auto 0;
}

.cs-comments .wp-block-comments-title,
.cs-comments .comment-reply-title {
	margin: 0 0 var(--cs-space-4);
	font-size: clamp(1.25rem, 1.15rem + 0.5vw, 1.5rem);
}

.cs-comment {
	padding: var(--cs-space-4) 0;
	border-bottom: 1px solid #e0e0e0;
	gap: var(--cs-space-3);
}

.cs-comment .avatar {
	border-radius: 50%;
}

.cs-comments .comment-form {
	display: grid;
	gap: var(--cs-space-3);
}

.cs-comments .comment-form p {
	margin: 0;
}

.cs-comments .comment-form label {
	display: block;
	margin-bottom: var(--cs-space-1);
	font-size: var(--cs-fs-meta);
	font-weight: 600;
}

.cs-comments .comment-form textarea,
.cs-comments .comment-form input[type="text"],
.cs-comments .comment-form input[type="email"],
.cs-comments .comment-form input[type="url"] {
	width: 100%;
}

.cs-comments .comment-form-cookies-consent {
	display: flex;
	align-items: center;
	gap: var(--cs-space-2);
}

.cs-comments .comment-form-cookies-consent input {
	width: 20px;
	height: 20px;
}

.cs-comments .comment-form-cookies-consent label {
	margin: 0;
	font-weight: 400;
}

/* sidebar + pagination */
.wp-block-query-pagination {
	gap: var(--cs-space-2);
	margin-top: var(--cs-space-6);
	font-size: var(--cs-fs-body);
}

.wp-block-query-pagination .page-numbers,
.wp-block-query-pagination-next,
.wp-block-query-pagination-previous {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: var(--cs-target);
	min-height: var(--cs-target);
	padding: 0 var(--cs-space-3);
	box-sizing: border-box;
	text-decoration: none;
}

.wp-block-query-pagination .page-numbers.current {
	background: var(--wp--preset--color--primary-dark, #0e7fa3);
	color: #fff;
}

.wp-block-query-pagination .page-numbers:not(.current):hover,
.wp-block-query-pagination-next:hover,
.wp-block-query-pagination-previous:hover {
	background: #f0f0f0;
}

.wp-block-categories-list li,
.wp-block-latest-posts li,
.wp-block-archives-list li {
	padding-block: var(--cs-space-2);
	font-size: var(--cs-fs-body);
}

.wp-block-categories-list a,
.wp-block-latest-posts a,
.wp-block-archives-list a {
	display: inline-block;
	min-height: 24px;
}

/* ---------- shop / category ---------- */
.woocommerce-result-count,
.wp-block-woocommerce-product-results-count {
	font-size: var(--cs-fs-meta);
	color: #595959;
}

.wc-block-catalog-sorting select,
.woocommerce-ordering select {
	min-width: 220px;
	padding-right: var(--cs-space-6);
}

.wp-block-woocommerce-product-template .wc-block-components-product-rating,
.wc-block-product .wc-block-components-product-rating {
	justify-content: center;
	margin: 0 0 var(--cs-space-1);
	font-size: var(--cs-fs-meta);
}

/* the add-to-cart / choose options button is always visible, never hover-only (also on touch) */
.wp-block-woocommerce-product-template .ps-hover-action,
.ps-products--shop .ps-hover-action {
	opacity: 1 !important;
}

.wp-block-woocommerce-product-template .wp-block-woocommerce-product-button .wp-element-button,
.wp-block-woocommerce-product-template .wp-block-woocommerce-product-button .wc-block-components-product-button__button {
	min-height: 40px;
	padding: 0 var(--cs-space-4);
	font-size: var(--cs-fs-meta);
	font-weight: 700;
}

/* WooCommerce core product filters (sidebar) */
.cs-shop-filters,
.cs-shop-filters * {
	min-width: 0;
	max-width: 100%;
	box-sizing: border-box;
}

.cs-shop-filters {
	margin-bottom: var(--cs-space-6);
	--wc-product-filters-text-color: var(--wp--preset--color--contrast, #444);
}

.cs-shop-filters .cs-filter-title {
	margin: 0 0 var(--cs-space-3);
}

.cs-shop-filters .cs-filter-heading {
	margin: var(--cs-space-4) 0 var(--cs-space-2);
	padding-bottom: var(--cs-space-2);
	border-bottom: 1px solid #e0e0e0;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.cs-shop-filters .wc-block-product-filter-checkbox-list__label,
.cs-shop-filters label {
	font-size: var(--cs-fs-body);
}

.cs-shop-filters .wc-block-product-filter-checkbox-list__item {
	min-height: 32px;
}

.cs-shop-filters .wc-block-product-filters__open-overlay,
.cs-shop-filters .wc-block-product-filters__close-overlay {
	min-height: var(--cs-target);
	min-width: var(--cs-target);
}

/* empty states: no results, empty shop, 404, empty cart */
.wc-block-product-template ~ .wp-block-group .wp-block-heading,
.wp-block-query-no-results h2,
.woocommerce-no-products-found,
.cart-empty,
.wc-block-cart__empty-cart__title {
	text-align: center;
}

main .wp-block-query-no-results,
body.error404 main,
.woocommerce-info.woocommerce-no-products-found {
	max-width: 640px;
	margin-inline: auto;
}

body.error404 main {
	padding-block: var(--cs-space-8);
	text-align: center;
}

body.error404 main h2 {
	font-size: clamp(1.75rem, 1.4rem + 1.5vw, 2.5rem);
}

body.error404 main .wp-block-search__inside-wrapper {
	max-width: 480px;
	margin-inline: auto;
}

.wp-block-search__inside-wrapper {
	gap: var(--cs-space-2);
}

.wp-block-search__input {
	min-height: var(--cs-target);
}

.wp-block-search__button {
	min-height: var(--cs-target);
	min-width: var(--cs-target);
}

/* ---------- cart / checkout / account ---------- */
.wc-block-cart,
.wc-block-checkout {
	font-size: var(--cs-fs-body);
}

.wc-block-cart .wc-block-cart-items__header th,
.wc-block-cart .wc-block-components-sidebar .wc-block-components-totals-wrapper .wc-block-components-title,
.wc-block-cart__totals-title {
	font-size: var(--cs-fs-meta);
	letter-spacing: 0.04em;
}

.wc-block-cart-items__row {
	vertical-align: top;
}

.wc-block-cart-item__image img {
	width: 80px;
	height: 80px;
	object-fit: cover;
}

.wc-block-components-product-name {
	font-weight: 700;
	line-height: 1.35;
	text-decoration: none;
}

.wc-block-components-product-name:hover {
	text-decoration: underline;
}

.wc-block-components-quantity-selector {
	min-height: var(--cs-target);
}

.wc-block-components-quantity-selector__button {
	min-width: var(--cs-target);
	min-height: var(--cs-target);
}

.wc-block-cart-item__remove-link {
	min-width: var(--cs-target);
	min-height: var(--cs-target);
}

.wc-block-components-sidebar,
.wc-block-cart__sidebar {
	align-self: start;
}

.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font-size: 1.25rem;
	font-weight: 700;
}

.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
	min-height: 52px;
	font-weight: 700;
	text-transform: uppercase;
}

.wc-block-components-text-input input,
.wc-block-components-select .wc-blocks-components-select__select,
.wc-block-components-form .wc-block-components-text-input input {
	min-height: 52px;
	font-size: max(16px, 1em);
}

.wc-block-checkout__sidebar .wc-block-components-order-summary-item__image img {
	object-fit: cover;
}

.woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
	border: 1px solid #e0e0e0;
}

.woocommerce-MyAccount-navigation li a {
	display: flex;
	align-items: center;
	min-height: var(--cs-target);
	padding: 0 var(--cs-space-4);
	border-bottom: 1px solid #ececec;
	text-decoration: none;
	font-weight: 600;
}

.woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-MyAccount-navigation li a:hover {
	background: #f5f5f5;
	color: var(--wp--preset--color--primary-dark, #0e7fa3);
}

.woocommerce-account .woocommerce-form-login,
.woocommerce-account .woocommerce-form-register,
.woocommerce-account .u-column1,
.woocommerce-account .u-column2 {
	box-sizing: border-box;
	padding: var(--cs-space-5);
	border: 1px solid #e0e0e0;
	border-radius: var(--cs-radius-field);
}

/* the login/register form sits inside its column box: one frame, not a box in a box (and no sideways overflow at 390px) */
.woocommerce-account .u-column1 .woocommerce-form-login,
.woocommerce-account .u-column2 .woocommerce-form-register {
	padding: 0;
	border: 0;
	margin-bottom: 0;
}

.woocommerce-account table.shop_table,
.woocommerce table.shop_table {
	width: 100%;
	border-collapse: collapse;
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	padding: var(--cs-space-3);
	border: 0;
	border-bottom: 1px solid #ececec;
	text-align: left;
}

@media (max-width: 781px) {
	.nbo-wrapper .nbo-clear-option-wrap {
		text-align: left;
	}

	.nbo-wrapper:not(:has(.nbo-price-matrix)) .nbo-summary-wrapper {
		min-height: 9rem;
	}

	.wc-block-product-filters .wc-block-product-filters__open-overlay {
		width: 100%;
		justify-content: center;
	}

	.cs-comments .comment-form-cookies-consent input {
		width: 24px;
		height: 24px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nbo-wrapper .nbd-swatch,
	.nbdesign-button.cs-opening::after {
		transition: none;
		animation-duration: 2s;
	}
}

/* WooCommerce forms (account, classic checkout, coupon): 16 px text and 44 px targets.
   The body prefix outranks woocommerce-blocktheme.css (.woocommerce-page form .form-row input.input-text), which loads later. */
body .woocommerce form .input-text,
body.woocommerce-page form .input-text,
body .woocommerce form .form-row input.input-text,
body.woocommerce-page form .form-row input.input-text,
body .woocommerce form .form-row select,
body .woocommerce form .form-row textarea {
	min-height: var(--cs-target);
	padding: var(--cs-space-2) var(--cs-space-3);
	font-size: max(16px, 1em);
	font-family: inherit;
	box-sizing: border-box;
}

.woocommerce form .form-row label {
	font-size: var(--cs-fs-meta);
	font-weight: 600;
}

.woocommerce form .form-row input[type="checkbox"] {
	width: 20px;
	height: 20px;
}

/* ---------- st-uxfix-042: hero text never touches the screen edge or runs past it ---------- */
/* Children give the slide content 0 side padding below their wide-screen breakpoint (1100-1140px), so on a tablet the
   text sat on the left edge. A gutter on every slider, beaten only by a child's wide-screen rule. */
@media (max-width: 1199px) {
	html .printcart-slider .printcart-slide .printcart-slide__content {
		box-sizing: border-box;
		padding-left: max(20px, var(--cs-gutter));
		padding-right: max(20px, var(--cs-gutter));
	}
}

html .printcart-slider .printcart-slide__heading,
html .printcart-slider .printcart-slide__text {
	max-width: 100%;
	overflow-wrap: break-word;
}

/* Phones: a smaller heading that fits ("CUSTOM T-SHIRT PRINTING" in 2 lines at 320-430px), text kept readable over
   the picture, the button never wider than the screen. */
@media (max-width: 600px) {
	html .printcart-slider .printcart-slide__heading {
		font-size: clamp(1.625rem, 8vw, 2.25rem);
		line-height: 1.15;
		text-shadow: 0 1px 14px rgba(0, 0, 0, 0.55);
	}

	html .printcart-slider .printcart-slide__text {
		max-width: 100%;
		margin-right: 0;
		font-size: clamp(0.9375rem, 4vw, 1.0625rem);
		line-height: 1.4;
		text-shadow: 0 1px 10px rgba(0, 0, 0, 0.6);
	}

	html .printcart-slider .printcart-slide__button {
		max-width: 100%;
		box-sizing: border-box;
	}
}

/* The children's two-column "Shopping" panel is 460-730px wide and hangs from its menu item, so at 1024px it ended up to
   70px past the right edge (a hidden panel still makes the page scroll sideways). Below 1280px it spans the header row. */
@media (min-width: 600px) and (max-width: 1279px) {
	html body .ps-header .ps-main-nav.ps-main-nav.ps-main-nav .wp-block-navigation__container > .wp-block-navigation-submenu:has(.wp-block-navigation-submenu) {
		position: static;
	}

	html body .ps-header .ps-main-nav.ps-main-nav.ps-main-nav .wp-block-navigation__container > .wp-block-navigation-submenu:has(.wp-block-navigation-submenu) > .wp-block-navigation__submenu-container {
		left: 15px;
		right: 15px;
		width: auto;
		min-width: 0;
		max-width: calc(100vw - 30px);
		box-sizing: border-box;
	}
}

/* ---------- shop sidebar product lists (Best seller, Featured...) st-uxfix-043 ----------
   Small square image on the left, title (2 lines max) and price left-aligned next to it, one compact row with a divider. */
.ps-mini-products .wp-block-woocommerce-product-template,
.ps-mini-products ul.wc-block-product-template {
	display: block;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ps-mini-products li.wc-block-product {
	margin: 0;
	padding: 0;
	border: 0;
	text-align: left;
}

.ps-mini-products li.wc-block-product + li.wc-block-product .ps-mini-product {
	padding-top: 12px;
	border-top: 1px solid var(--wp--preset--color--border, #e0e0e0);
}

.ps-mini-products .ps-mini-product {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: flex-start;
	gap: 12px;
	margin: 0 0 12px;
	text-align: left;
}

.ps-mini-products .ps-mini-product .wc-block-components-product-image {
	flex: 0 0 68px;
	width: 68px;
	height: 68px;
	margin: 0;
}

.ps-mini-products .ps-mini-product .wc-block-components-product-image img {
	display: block;
	width: 68px !important;
	height: 68px !important;
	max-width: none;
	aspect-ratio: 1 / 1;
	object-fit: cover;
}

.ps-mini-products .ps-mini-product > .wp-block-group {
	flex: 1 1 0;
	min-width: 0;
	margin: 0;
	text-align: left;
}

.ps-mini-products .ps-mini-product .wp-block-post-title {
	display: -webkit-box !important;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	max-height: 2.7em;
	overflow: hidden;
	margin: 0 0 4px;
	padding: 0;
	font-size: 14px;
	line-height: 1.35;
	text-align: left;
	text-overflow: ellipsis;
}

.ps-mini-products .ps-mini-product .wp-block-woocommerce-product-price,
.ps-mini-products .ps-mini-product .wc-block-components-product-price {
	margin: 0;
	padding: 0;
	font-size: 14px;
	line-height: 1.3;
	text-align: left;
	justify-content: flex-start;
}

.ps-mini-products .ps-mini-product .wc-block-components-product-price del {
	margin-right: 6px;
	font-weight: 400;
	opacity: 0.65;
}

.ps-mini-products .ps-mini-product .wc-block-components-product-price ins {
	font-weight: 700;
	text-decoration: none;
}

/* ---------- Product Tabs: the large first card is filled by its picture (st-uxfix-043) ----------
   The block drew a small thumbnail (max 80% / 360px) on a tall card, so two thirds of it were an empty grey gradient. On wide screens the
   picture now takes the whole area above the title, price and button (cover); on phones the card is a normal one (square picture). */
.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__media img {
	max-width: 100% !important;
	width: 100%;
	margin: 0 !important;
	object-fit: cover;
}

@media (min-width: 782px) {
	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		padding: 0 0 24px;
		overflow: hidden;
	}

	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__media {
		position: relative;
		flex: 1 1 auto;
		width: 100%;
		min-height: 320px;
		margin: 0 0 16px;
	}

	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__media > a {
		position: static;
		display: block;
	}

	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__media img {
		position: absolute;
		inset: 0;
		height: 100% !important;
		aspect-ratio: auto !important;
	}

	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__badge {
		z-index: 1;
	}

	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__title,
	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__price,
	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__button {
		align-self: center;
		padding-inline: 16px;
	}
}

@media (max-width: 781px) {
	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child {
		padding: 0 0 16px;
	}

	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__media img {
		height: auto !important;
		aspect-ratio: 1 / 1 !important;
	}
}

/* tablets: a 4:3 crop keeps a small original sharp (the square crop upscaled a 768x461 file 1.6x) */
@media (min-width: 601px) and (max-width: 781px) {
	.wp-block-printcart-product-tabs .is-feature .printcart-ptabs__item:first-child .printcart-ptabs__media img {
		aspect-ratio: 4 / 3 !important;
	}
}

/* ---------- recent-post carousels: landscape picture on phones (st-uxfix-043) ----------
   The square crop of a landscape thumbnail drew a 154px high file at 388px (2.5x, soft). 16:9 keeps the card compact and the picture sharp. */
@media (max-width: 781px) {
	.ps-carousel--posts .wp-block-post-featured-image img,
	.ps-works__grid .wp-block-post-featured-image img {
		aspect-ratio: 16 / 9 !important;
	}
}

/* Query-loop cards: the picture fills the card even when the plugin of an older install limited it to the width of its file (st-uxfix-043). */
.wp-block-post-template .wp-block-post-featured-image img {
	max-width: 100% !important;
	width: 100%;
}

/* =====================================================================
   Visual polish 0.4.4: rounded corners, elevation, product cards, buttons, header, inset bands.
   Radius, elevation, borders, type rhythm, states and motion only: no grid, column count, section order,
   content or menu changes. Tokens are at the top of this file; children map colours and swap the shadows.
   !important only where WooCommerce block / plugin CSS sets a hard 0 radius or colour.
   ===================================================================== */

/* ---------- buttons ---------- */
.wp-element-button,
.wp-block-button__link,
.wc-block-components-button:not(.is-link),
.woocommerce .button,
.printcart-slide__button,
.single_add_to_cart_button {
	border-radius: var(--cs-r-sm) !important;
	letter-spacing: var(--cs-track-button);
	transition: background-color var(--cs-dur) var(--cs-ease), color var(--cs-dur) var(--cs-ease), border-color var(--cs-dur) var(--cs-ease),
		box-shadow var(--cs-dur) var(--cs-ease), transform var(--cs-dur) var(--cs-ease);
}

.wp-element-button:hover,
.wp-block-button__link:hover,
.single_add_to_cart_button:hover,
.printcart-slide__button:hover {
	box-shadow: var(--cs-shadow-2);
	transform: translateY(-1px);
}

.wp-element-button:active,
.wp-block-button__link:active,
.single_add_to_cart_button:active {
	transform: translateY(0);
	box-shadow: var(--cs-shadow-1);
}

/* outline "Read more": one pill everywhere (was 20px in gift, square elsewhere) */
.is-style-outline .wp-block-button__link,
.ps-button-outline .wp-block-button__link {
	border-radius: var(--cs-r-pill) !important;
}

.single_add_to_cart_button {
	min-height: 48px;
	padding-inline: 28px !important;
}

/* ---------- section headings ---------- */
.ps-section h2.ps-headline,
.ps-section > h2.wp-block-heading {
	letter-spacing: var(--cs-track-caps);
	font-weight: 500;
}

.ps-divider {
	opacity: 0.6;
}

/* ---------- product card: grid, carousel, tabs ---------- */
li.wc-block-product {
	border-radius: var(--cs-r-md);
}

li.wc-block-product .wc-block-components-product-image {
	border-radius: var(--cs-r-md);
	overflow: hidden;
	background: var(--cs-plate);
	box-shadow: var(--cs-shadow-0);
	transition: box-shadow var(--cs-dur) var(--cs-ease), transform var(--cs-dur) var(--cs-ease);
}

li.wc-block-product .wc-block-components-product-image img {
	transition: transform 200ms var(--cs-ease);
}

li.wc-block-product:hover .wc-block-components-product-image {
	box-shadow: var(--cs-shadow-2);
}

li.wc-block-product:hover .wc-block-components-product-image img {
	transform: scale(1.03);
}

li.wc-block-product .wp-block-post-title {
	font-weight: 500;
	letter-spacing: 0.005em;
}

li.wc-block-product .wp-block-post-title a {
	text-decoration: none;
	color: var(--cs-product-title);
}

/* price: current price strong, old price quiet */
.wc-block-components-product-price ins,
.wc-block-components-product-price > .amount {
	font-weight: 700;
	text-decoration: none;
}

.wc-block-components-product-price del {
	opacity: 0.55;
	font-weight: 400;
	margin-right: 6px;
}

/* SALE: circle with white/orange text (1.95:1) -> soft pill with dark ink (8.9:1) */
.wc-block-components-product-sale-badge,
.onsale,
.printcart-ptabs__item .onsale,
.printcart-ptabs__item [class*="sale"] {
	border-radius: var(--cs-r-pill) !important;
	background: var(--cs-badge-bg) !important;
	color: var(--cs-badge-fg) !important;
	border: 0 !important;
	font-size: 11px !important;
	font-weight: 700 !important;
	letter-spacing: var(--cs-track-caps);
	text-transform: uppercase;
	padding: 5px 10px !important;
	min-width: 0 !important;
	min-height: 0 !important;
	line-height: 1.2 !important;
	box-shadow: var(--cs-shadow-1);
}

.wc-block-components-product-sale-badge span,
.wc-block-components-product-sale-badge * {
	color: inherit !important;
}

/* Product Tabs: feature card + pill tabs */
.printcart-ptabs__panel.is-feature {
	border-radius: var(--cs-r-md);
	overflow: hidden;
}

.printcart-ptabs__tab {
	border-radius: var(--cs-r-pill) !important;
	letter-spacing: var(--cs-track-nav);
	transition: background-color var(--cs-dur) var(--cs-ease), color var(--cs-dur) var(--cs-ease), border-color var(--cs-dur) var(--cs-ease);
}

/* arrows: square grey -> round */
.printcart-carousel__prev,
.printcart-carousel__next,
.printcart-slider__prev,
.printcart-slider__next {
	border-radius: 50% !important;
	box-shadow: var(--cs-shadow-1);
	transition: background-color var(--cs-dur) var(--cs-ease), transform var(--cs-dur) var(--cs-ease);
}

.printcart-slider__prev,
.printcart-slider__next {
	background: rgba(17, 17, 17, 0.4) !important;
}

.printcart-slider__prev:hover,
.printcart-slider__next:hover {
	background: rgba(17, 17, 17, 0.65) !important;
}

.printcart-slider__toggle {
	border-radius: var(--cs-r-pill) !important;
}

/* ---------- hero = inset statement card ---------- */
.ps-hero.printcart-slider {
	margin-inline: var(--cs-inset-statement) !important;
	width: auto !important;
	max-width: none !important;
	border-radius: 0 0 var(--cs-r-lg) var(--cs-r-lg);
	overflow: hidden;
	isolation: isolate;
}

.ps-hero.printcart-slider .printcart-slider__prev {
	left: 24px !important;
}

.ps-hero.printcart-slider .printcart-slider__next {
	right: 24px !important;
}

/* legibility vignette instead of a heavier image */
.ps-hero .swiper-slide::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(90deg, rgba(10, 12, 16, 0.28) 0%, rgba(10, 12, 16, 0) 55%);
}

/* ---------- dark / coloured full-width bands -> inset rounded cards (footer is global chrome, exempt) ---------- */
.ps-features,
.wp-block-cover.ps-section.ps-blog,
.wp-block-cover.ps-section.ps-capabilities,
.wp-block-cover.ps-section.ps-testimonial {
	margin-inline: var(--cs-inset-statement) !important;
	width: auto !important;
	max-width: none !important;
	border-radius: var(--cs-r-lg);
	overflow: hidden;
}

.ps-features {
	margin-top: var(--cs-inset-statement) !important;
}

.ps-step,
.ps-plan,
.ps-tcards > .wp-block-column {
	border-radius: var(--cs-r-md);
	box-shadow: var(--cs-shadow-1);
	transition: box-shadow var(--cs-dur) var(--cs-ease), transform var(--cs-dur) var(--cs-ease);
}

.ps-step:hover,
.ps-plan:hover {
	box-shadow: var(--cs-shadow-2);
	transform: translateY(-2px);
}

.ps-works img {
	border-radius: var(--cs-r-md);
}

/* ---------- header ---------- */
.ps-header .wp-block-navigation-item__content {
	letter-spacing: var(--cs-track-nav);
	position: relative;
}

.ps-header .wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -6px;
	height: 2px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--cs-dur) var(--cs-ease);
}

.ps-header .wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover::after,
.ps-header .wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:focus-visible::after {
	transform: scaleX(1);
}

.ps-header .wp-block-navigation__submenu-container {
	border-radius: var(--cs-r-md) !important;
	box-shadow: var(--cs-shadow-3) !important;
	border: 1px solid var(--cs-line) !important;
	overflow: hidden;
}

/* header floating over the hero: glass (the only backdrop-filter on the site, a ~96px strip) */
body.home .ps-header.has-header-background-color {
	-webkit-backdrop-filter: saturate(140%) blur(10px);
	backdrop-filter: saturate(140%) blur(10px);
}

.wc-block-mini-cart__amount {
	font-variant-numeric: tabular-nums;
}

/* ---------- forms / inputs ---------- */
input[type="text"],
input[type="email"],
input[type="search"],
input[type="tel"],
input[type="number"],
input[type="password"],
select,
textarea,
.wc-block-components-text-input input,
.wp-block-search__input,
input.qty {
	border-radius: var(--cs-radius-field) !important;
	transition: border-color var(--cs-dur) var(--cs-ease), box-shadow var(--cs-dur) var(--cs-ease);
}

input:focus-visible,
select:focus-visible,
textarea:focus-visible {
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--cs-accent) 18%, transparent);
}

/* ---------- product page ---------- */
.wc-block-product-gallery-large-image,
.wc-block-product-gallery-large-image__container,
.wp-block-woocommerce-product-gallery-large-image {
	border-radius: var(--cs-r-md);
	overflow: hidden;
}

.wc-block-woocommerce-product-gallery-large-image__image {
	border-radius: var(--cs-r-md) !important;
}

.wc-block-product-gallery-thumbnails__thumbnail,
.wc-block-product-gallery-thumbnails__thumbnail__image {
	border-radius: var(--cs-r-xs) !important;
	overflow: hidden;
}

.ps-promo-box {
	border-radius: var(--cs-r-md) !important;
	overflow: hidden;
	box-shadow: var(--cs-shadow-2);
}

.single-product .ps-page-title {
	border-bottom: 1px solid var(--cs-line);
}

.cs-trust {
	border-radius: var(--cs-r-md) !important;
	border: 1px solid var(--cs-line) !important;
	box-shadow: var(--cs-shadow-1);
}

.ps-mini-product img,
.ps-mini-products img {
	border-radius: var(--cs-r-xs);
}

.single-product a.compare,
.single-product .woosc-btn,
.single-product button[class*="compare"] {
	border-radius: var(--cs-r-sm) !important;
}

/* ---------- cart / checkout (WooCommerce blocks; Fluid Checkout is not loaded on the demos) ---------- */
.wc-block-cart .wc-block-components-sidebar,
.wc-block-checkout__sidebar {
	border-radius: var(--cs-r-md);
}

.wc-block-components-panel,
.wc-block-components-radio-control-accordion-option,
.wc-block-components-radio-control__option {
	border-radius: var(--cs-r-sm);
}

.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
	min-height: 52px;
}

/* Fluid Checkout, if a demo enables it: same tokens */
:root {
	--fluidtheme--color--primary: var(--cs-accent);
	--fluidtheme--field--border-radius: var(--cs-r-sm);
	--fluidtheme--button--border-radius: var(--cs-r-sm);
}

/* ---------- footer: contrast already passes, hover + joined newsletter field only ---------- */
footer.wp-block-template-part a {
	transition: color var(--cs-dur) var(--cs-ease);
}

footer.wp-block-template-part a:hover,
footer.wp-block-template-part .wp-block-navigation-item__content:hover {
	color: #fff;
}

footer .wp-block-search__inside-wrapper {
	border-radius: var(--cs-r-sm);
	overflow: hidden;
}

footer .wp-block-search__input {
	border-radius: var(--cs-r-sm) 0 0 var(--cs-r-sm) !important;
}

footer .wp-block-search__button {
	border-radius: 0 var(--cs-r-sm) var(--cs-r-sm) 0 !important;
	transform: none !important;
	box-shadow: none !important;
}

footer img[src*="pay"],
footer img[src*="visa"] {
	border-radius: var(--cs-r-xs);
}

.ps-footer__bottom {
	border-top: 1px solid rgba(255, 255, 255, 0.06);
}

/* ---------- motion safety ---------- */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		transition-duration: 0ms !important;
		animation-duration: 0ms !important;
	}

	li.wc-block-product:hover .wc-block-components-product-image img,
	.wp-element-button:hover,
	.wp-block-button__link:hover,
	.single_add_to_cart_button:hover,
	.ps-step:hover,
	.ps-plan:hover {
		transform: none !important;
	}
}

/* ---------- phones ---------- */
@media (max-width: 781px) {
	:root {
		--cs-inset-statement: 16px;
		--cs-r-lg: 18px;
	}
}
