/*
 * APS Theme: WooCommerce pages (shop, category pages, product page, cart, checkout, account).
 *
 * Loaded after main.css on every WooCommerce page (assets.php). The look is the approved one: light pages, the
 * hero band of the inner pages, white cards with big soft shadows, pill buttons with the blue gradient.
 *
 * Markup comes from WooCommerce itself (no template file is overridden). Selectors start with
 * body.woocommerce-page, body.woocommerce, #content.aps-shop--single or .aps-shop so they win against the
 * WooCommerce stylesheets (which have #content rules) and the Elementor kit without !important. The one
 * !important in the file is marked (the checkout country field). Tokens come from main.css.
 *
 * What replaced the legacy "Additional CSS" rules: audit/PAGE_BUILD_shop.md.
 */

/* The card values (radius, line, shadows, gold, muted text) are defined once, in components/product-card.css, which
   loads before this file on every page that loads it. */
:root {
	--shop-radius: var(--pc-radius);
	--shop-radius-lg: 28px;
	--shop-line: var(--pc-line);
	--shop-field: #cddbe6;
	--shop-muted: var(--pc-muted);
	--shop-card: var(--pc-shadow);
	--shop-card-hover: var(--pc-shadow-hover);
	--shop-card-big: 0 1px 2px rgba(16, 47, 65, 0.05), 0 24px 60px rgba(16, 47, 65, 0.1);
	--shop-btn-shadow: var(--pc-btn-shadow);
	--shop-btn-shadow-hover: var(--pc-btn-shadow-hover);
	--shop-gold: var(--pc-gold);
}

/* The legacy Additional CSS (account buttons and menu) still reads Elementor kit variables. The kit defines them
   on the body while Elementor is active; these copies (same values) keep those rules working once it is removed. */
:root {
	--e-global-color-primary: #292e35;
	--e-global-color-secondary: #56ccf2;
	--e-global-color-text: #a8adb8;
	--e-global-color-accent: #126cac;
	--e-global-color-3364412: #ffffff;
	--e-global-color-43e0a46: #e4e7ed;
	--e-global-color-f8d742f: #eef3f9;
	--e-global-typography-8be053e-font-family: Cairo;
	--e-global-typography-8be053e-font-size: 16px;
	--e-global-typography-8be053e-font-weight: 600;
}

/* WooCommerce's own colours (purple by default) follow the theme. */
body.woocommerce-page:not(.aps-gate-page) {
	--wc-primary: var(--accent);
	--woocommerce: var(--accent);
	--wc-form-border-color: var(--shop-field);
	--wc-form-border-radius: 14px;
	--wc-form-border-width: 1.5px;
	--wc-red: #b42318;
	--wc-green: #0b7a3f;
}

/* ======================================================================
   Page frame (shop, category pages, product page): main.aps-page > hero + .container.aps-shop__body
   ====================================================================== */

.aps-shop .aps-hero--shop h1 { font-size: clamp(2rem, 1.2rem + 3vw, 3.2rem); }
.aps-shop .aps-hero--shop .aps-lead p { margin: 0 0 10px; color: var(--c-text); }
.aps-shop .aps-hero--shop .aps-lead p:last-child { margin-bottom: 0; }
.aps-shop .aps-hero--single { padding-bottom: 96px; }
.aps-shop .aps-hero--single .breadcrumb { margin-bottom: 0; }
.aps-shop .aps-hero--single .breadcrumb__current { display: block; max-width: min(52ch, 62vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.aps-shop .aps-shop__body { position: relative; z-index: 1; margin-top: -64px; padding-bottom: 72px; }
#content.aps-shop--single .aps-shop__body { margin-top: -64px; padding-bottom: 80px; }
/* The stock archive header is empty now (title and description are in the hero). */
.aps-shop .woocommerce-products-header { margin: 0; }
.aps-shop--shop .aps-shop__body { padding-bottom: 56px; }

/* ======================================================================
   Shared UI: buttons, badges, price, stars, notices, fields
   ====================================================================== */

/* Pill buttons with the blue gradient. The selector list has no ID on purpose: :is() takes the specificity of its
   most specific item, so one ID in the list would make every rule after it (card button, product page, cart and
   checkout buttons) lose against this one. The review form button, which WooCommerce styles with IDs, has its own rule. */
body.woocommerce-page:not(.aps-gate-page) :is(
	.aps-shop a.button,
	.aps-shop button.button,
	.aps-shop input.button,
	.aps-shop .single_add_to_cart_button,
	.woocommerce-cart .wc-block-components-button:not(.is-link),
	.woocommerce-checkout .wc-block-components-button:not(.is-link),
	.woocommerce-cart .wp-block-button__link,
	.woocommerce-account .woocommerce-button,
	.woocommerce-account .woocommerce-Button,
	.woocommerce-account .woocommerce-MyAccount-content a.button,
	.woocommerce-account .woocommerce-form-login__submit,
	.woocommerce-account .woocommerce-form-register__submit,
	.woocommerce-account .woocommerce-ResetPassword button
) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	box-sizing: border-box;
	width: auto;
	min-width: 0;
	min-height: 46px;
	margin: 0;
	padding: 10px 26px;
	border: 0;
	border-radius: 999px;
	background: var(--grad-cta);
	box-shadow: var(--shop-btn-shadow);
	color: #fff;
	font-family: inherit;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0;
	text-align: center;
	text-decoration: none;
	text-shadow: none;
	white-space: normal;
	cursor: pointer;
	transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease), filter 0.2s var(--ease);
}
body.woocommerce-page:not(.aps-gate-page) :is(
	.aps-shop a.button,
	.aps-shop button.button,
	.aps-shop input.button,
	.aps-shop .single_add_to_cart_button,
	.woocommerce-cart .wc-block-components-button:not(.is-link),
	.woocommerce-checkout .wc-block-components-button:not(.is-link),
	.woocommerce-cart .wp-block-button__link,
	.woocommerce-account .woocommerce-button,
	.woocommerce-account .woocommerce-Button,
	.woocommerce-account .woocommerce-MyAccount-content a.button,
	.woocommerce-account .woocommerce-form-login__submit,
	.woocommerce-account .woocommerce-form-register__submit,
	.woocommerce-account .woocommerce-ResetPassword button
):is(:hover, :focus-visible):not(:is(.disabled, :disabled, [aria-disabled="true"])) {
	background: var(--grad-cta);
	box-shadow: var(--shop-btn-shadow-hover);
	color: #fff;
	filter: brightness(1.03);
	transform: translateY(-1px);
}
/* The review form button: WooCommerce styles it through IDs (#respond input#submit), so this rule needs IDs too. */
body.woocommerce-page:not(.aps-gate-page) .aps-shop #review_form #respond .form-submit input {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: auto;
	min-width: 0;
	min-height: 46px;
	margin: 0;
	padding: 10px 26px;
	border: 0;
	border-radius: 999px;
	background: var(--grad-cta);
	box-shadow: var(--shop-btn-shadow);
	color: #fff;
	font-family: inherit;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.2;
	text-shadow: none;
	cursor: pointer;
	transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease), filter 0.2s var(--ease);
}
body.woocommerce-page:not(.aps-gate-page) .aps-shop #review_form #respond .form-submit input:is(:hover, :focus-visible) {
	background: var(--grad-cta);
	box-shadow: var(--shop-btn-shadow-hover);
	color: #fff;
	filter: brightness(1.03);
	transform: translateY(-1px);
}
body.woocommerce-page:not(.aps-gate-page) :is(
	.aps-shop a.button,
	.aps-shop button.button,
	.aps-shop .single_add_to_cart_button,
	.woocommerce-cart .wc-block-components-button:not(.is-link),
	.woocommerce-checkout .wc-block-components-button:not(.is-link)
):is(.disabled, :disabled, [aria-disabled="true"]) {
	box-shadow: none;
	filter: none;
	opacity: 0.55;
	transform: none;
	cursor: not-allowed;
}
/* WooCommerce's spinner and check mark sit inside the button. */
body.woocommerce.woocommerce-page:not(.aps-gate-page) .aps-shop a.button.loading,
body.woocommerce.woocommerce-page:not(.aps-gate-page) .aps-shop button.button.loading { padding-right: 46px; opacity: 0.7; }
body.woocommerce-page:not(.aps-gate-page) .aps-shop a.button.added::after { margin-left: 4px; position: static; }

/* The "View cart" link after an add to cart in a product list is styled with the card (components/product-card.css). */

/* Sale badge: a small pill, not WooCommerce's round disc. */
body.woocommerce-page:not(.aps-gate-page) .aps-shop span.onsale {
	top: 14px;
	right: auto;
	left: 14px;
	z-index: 3;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 5px 13px;
	border-radius: 999px;
	background: #fff1d6;
	box-shadow: 0 4px 12px rgba(138, 75, 0, 0.18);
	color: #7a4200;
	font-size: 12px;
	font-weight: 800;
	line-height: 1.3;
	letter-spacing: 0.03em;
	text-transform: uppercase;
}

/* Stars. */
body.woocommerce-page:not(.aps-gate-page) .star-rating::before { color: var(--pc-star-empty); }
body.woocommerce-page:not(.aps-gate-page) .star-rating span::before { color: var(--shop-gold); }

/* Prices. */
body.woocommerce-page:not(.aps-gate-page) .aps-shop .price { color: var(--c-primary); font-weight: 800; }
body.woocommerce-page:not(.aps-gate-page) .aps-shop .price del { color: var(--shop-muted); font-weight: 500; opacity: 1; }
body.woocommerce-page:not(.aps-gate-page) .aps-shop .price ins { background: none; color: var(--c-primary); text-decoration: none; }

/* Notices (added to cart, errors, information). */
body.woocommerce-page:not(.aps-gate-page) :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 18px;
	margin: 0 0 22px;
	padding: 15px 22px 15px 56px;
	border: 1px solid var(--shop-line);
	border-left: 4px solid var(--accent);
	border-radius: 16px;
	background: #fff;
	box-shadow: var(--shop-card);
	color: var(--c-ink);
	font-size: 15px;
	line-height: 1.55;
	list-style: none;
}
body.woocommerce-page:not(.aps-gate-page) :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::before {
	top: 50%;
	left: 20px;
	color: var(--accent);
	transform: translateY(-50%);
}
body.woocommerce-page:not(.aps-gate-page) :is(.woocommerce-message, .woocommerce-info, .woocommerce-error)::after { content: none; display: none; }
body.woocommerce-page:not(.aps-gate-page) .woocommerce-error { border-left-color: #b42318; }
body.woocommerce-page:not(.aps-gate-page) .woocommerce-error::before { color: #b42318; }
body.woocommerce-page:not(.aps-gate-page) .aps-shop .woocommerce-message a.button.wc-forward { order: 2; margin-left: auto; min-height: 40px; padding: 8px 20px; float: none; }
body.woocommerce-page:not(.aps-gate-page) .woocommerce-error li { margin: 0; }

/* Text fields. */
body.woocommerce-page:not(.aps-gate-page) :is(
	.aps-shop input.input-text,
	.aps-shop textarea,
	.aps-shop select,
	.woocommerce-account input.input-text,
	.woocommerce-account select,
	.woocommerce-account textarea
) {
	box-sizing: border-box;
	min-height: 48px;
	padding: 11px 16px;
	border: 1.5px solid var(--shop-field);
	border-radius: 14px;
	background-color: #fff;
	box-shadow: none;
	color: var(--c-ink);
	font-family: inherit;
	font-size: 16px;
	line-height: 1.4;
	transition: border-color 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
body.woocommerce-page:not(.aps-gate-page) :is(
	.aps-shop input.input-text,
	.aps-shop textarea,
	.aps-shop select,
	.woocommerce-account input.input-text,
	.woocommerce-account select,
	.woocommerce-account textarea
):focus {
	border-color: var(--accent);
	box-shadow: 0 0 0 4px rgba(12, 131, 200, 0.16);
	outline: 0;
}
body.woocommerce-page:not(.aps-gate-page) .aps-shop textarea { min-height: 120px; }

/* ======================================================================
   Category filter row, toolbar, pagination
   ====================================================================== */

.aps-shop .aps-filters { margin: 0 0 34px; }
.aps-shop .aps-filters__list { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px 12px; margin: 0; padding: 0; list-style: none; }
.aps-shop .aps-filters__list li { margin: 0; }
.aps-shop .aps-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	padding: 9px 20px;
	border: 1px solid var(--shop-line);
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.92);
	box-shadow: 0 2px 6px rgba(16, 47, 65, 0.06);
	color: var(--c-ink);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.25;
	text-align: center;
	text-decoration: none;
	transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease), background 0.18s var(--ease), color 0.18s var(--ease);
}
.aps-shop .aps-pill:hover { background: #fff; box-shadow: 0 8px 18px rgba(16, 47, 65, 0.12); color: var(--deep); transform: translateY(-2px); }
.aps-shop .aps-pill__count { color: var(--shop-muted); font-weight: 600; }
.aps-shop .aps-pill.is-active { border-color: transparent; background: var(--grad-cta); box-shadow: var(--shop-btn-shadow); color: #fff; }
.aps-shop .aps-pill.is-active .aps-pill__count { color: rgba(255, 255, 255, 0.9); }

.aps-shop .aps-shop-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; margin: 0 0 24px; }
.aps-shop .aps-shop-toolbar .woocommerce-result-count { float: none; margin: 0; color: var(--shop-muted); font-size: 15px; font-weight: 600; }
.aps-shop .aps-shop-toolbar .woocommerce-ordering { float: none; margin: 0; }
body.woocommerce-page:not(.aps-gate-page) .aps-shop .woocommerce-ordering select {
	min-width: 230px;
	padding-right: 44px;
	border-radius: 999px;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

body.woocommerce .aps-shop nav.woocommerce-pagination { margin: 40px 0 0; text-align: center; }
body.woocommerce .aps-shop nav.woocommerce-pagination ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	border: 0;
	white-space: normal;
}
body.woocommerce .aps-shop nav.woocommerce-pagination ul li { margin: 0; padding: 0; border: 0; float: none; overflow: visible; }
/* Direct children only: the "Next" link holds a span with the arrow, which must stay a plain glyph (as a descendant it became a second circle inside the pill and made "Next" taller than the numbers). */
body.woocommerce .aps-shop nav.woocommerce-pagination ul li > :is(a, span) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-width: 44px;
	height: 44px;
	min-height: 44px;
	padding: 0 14px;
	border: 1px solid var(--shop-line);
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 2px 6px rgba(16, 47, 65, 0.06);
	color: var(--c-ink);
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	text-decoration: none;
	transition: transform 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
body.woocommerce .aps-shop nav.woocommerce-pagination ul li a:is(:hover, :focus-visible) { background: #fff; box-shadow: 0 8px 18px rgba(16, 47, 65, 0.12); color: var(--deep); transform: translateY(-2px); }
body.woocommerce .aps-shop nav.woocommerce-pagination ul li span.current { border-color: transparent; background: var(--grad-cta); box-shadow: var(--shop-btn-shadow); color: #fff; }
body.woocommerce .aps-shop nav.woocommerce-pagination ul li span.dots { border-color: transparent; background: none; box-shadow: none; }

/* ======================================================================
   Product list and product card: the grid, the card, its title, price, stars, button and the "View cart" link are all in
   components/product-card.css (one card for the shop, the categories, the search, the weekly section, the related products,
   the home page and the empty cart). Nothing about the card is styled in this file.
   ====================================================================== */

/* ======================================================================
   Shop page extras: feature tiles and "Peptides Of The Week!"
   Selectors start with .aps-page .aps-shop-tiles so they win against the page kit rules for links and
   paragraphs inside .aps-section.
   ====================================================================== */

.aps-page .aps-shop-tiles { padding-block: 64px; }
.aps-page .aps-shop-weekly { padding-block: 72px 80px; }
.aps-page .aps-shop-weekly .aps-section__head { margin-bottom: 36px; }
.aps-page .aps-title__accent {
	background: var(--grad-cta);
	-webkit-background-clip: text;
	background-clip: text;
	color: var(--accent);
	-webkit-text-fill-color: transparent;
}

.aps-page .aps-shop-tiles .aps-promo-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-template-rows: repeat(2, minmax(300px, auto));
	gap: 22px;
}
.aps-page .aps-shop-tiles .aps-promo {
	--tone: #2d9be0;
	--tone-soft: #bfe3fa;
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: 300px;
	padding: 28px 28px 0;
	overflow: hidden;
	isolation: isolate;
	border: 1px solid var(--shop-line);
	border-radius: var(--shop-radius-lg);
	background: #fff;
	box-shadow: var(--shop-card);
	transition: transform 0.22s var(--ease), box-shadow 0.22s var(--ease);
}
.aps-page .aps-shop-tiles .aps-promo:hover { box-shadow: var(--shop-card-hover); transform: translateY(-3px); }
.aps-page .aps-shop-tiles .aps-promo::before {
	content: "";
	position: absolute;
	right: -20%;
	bottom: -26%;
	z-index: -1;
	width: 84%;
	aspect-ratio: 1;
	border-radius: 50%;
	background: radial-gradient(closest-side, var(--tone-soft) 0%, var(--tone-soft) 50%, rgba(255, 255, 255, 0) 100%);
}
.aps-page .aps-shop-tiles .aps-promo:first-child { grid-row: 1 / span 2; }
.aps-page .aps-shop-tiles .aps-promo--amber { --tone: #f59e0b; --tone-soft: #ffe0a3; }
.aps-page .aps-shop-tiles .aps-promo--green { --tone: #16a34a; --tone-soft: #bdeccb; }
.aps-page .aps-shop-tiles .aps-promo--violet { --tone: #7c6cf0; --tone-soft: #d8d2fc; }
.aps-page .aps-shop-tiles .aps-promo--rose { --tone: #e8447a; --tone-soft: #ffcddc; }
/* The body is a flex item, so z-index works without position. It must not be positioned: the "Learn More" link
   stretches over the whole tile (the ::before below) and needs the tile as its containing block. */
.aps-page .aps-shop-tiles .aps-promo__body { z-index: 2; max-width: 62%; padding-bottom: 28px; }
.aps-page .aps-shop-tiles .aps-promo:first-child .aps-promo__body { max-width: 100%; }
.aps-page .aps-shop-tiles .aps-promo__badge {
	display: inline-block;
	margin: 0 0 16px;
	padding: 5px 14px;
	border-radius: 999px;
	background: var(--tone-soft);
	color: var(--c-ink);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.04em;
	line-height: 1.3;
}
.aps-page .aps-shop-tiles .aps-promo__title { margin: 0 0 6px; color: var(--c-ink); font-size: 1.6rem; font-weight: 800; line-height: 1.2; }
.aps-page .aps-shop-tiles .aps-promo__text { margin: 0 0 18px; color: var(--c-text); font-size: 15px; line-height: 1.55; }
.aps-page .aps-shop-tiles .aps-promo__link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 9px 22px;
	border-radius: 999px;
	background: var(--grad-cta);
	box-shadow: var(--shop-btn-shadow);
	color: #fff;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.2;
	text-decoration: none;
	transition: transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.aps-page .aps-shop-tiles .aps-promo__link::before { content: ""; position: absolute; inset: 0; z-index: 1; }
.aps-page .aps-shop-tiles .aps-promo__link::after { content: "\2192"; font-size: 16px; line-height: 1; transition: transform 0.2s var(--ease); }
/* No transform on the link: it would become the containing block of the stretched ::before and shrink it. */
.aps-page .aps-shop-tiles .aps-promo__link:hover { box-shadow: var(--shop-btn-shadow-hover); color: #fff; }
.aps-page .aps-shop-tiles .aps-promo__link:hover::after { transform: translateX(3px); }
.aps-page .aps-shop-tiles .aps-promo__media {
	position: absolute;
	right: 9%;
	bottom: -10%;
	z-index: 1;
	display: block;
	height: 100%;
	aspect-ratio: 220 / 470;
	transform: rotate(12deg);
	transform-origin: 50% 60%;
}
.aps-page .aps-shop-tiles .aps-promo:first-child .aps-promo__media { right: auto; bottom: -5%; left: 50%; height: 72%; transform: translateX(-50%) rotate(10deg); }
.aps-page .aps-shop-tiles .aps-promo__img { display: block; width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 18px 22px rgba(16, 47, 65, 0.28)); }

/* ======================================================================
   Single product
   ====================================================================== */

/* The product is a two column grid: gallery card and summary card, then tabs and related products full width. */
body.woocommerce #content.aps-shop--single div.product {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1.04fr) minmax(0, 1fr);
	grid-template-areas:
		"gallery summary"
		"tabs tabs"
		"more more";
	align-items: start;
	gap: 30px;
}
body.woocommerce #content.aps-shop--single div.product > .woocommerce-product-gallery { grid-area: gallery; }
body.woocommerce #content.aps-shop--single div.product > .summary { grid-area: summary; }
body.woocommerce #content.aps-shop--single div.product > .woocommerce-tabs { grid-area: tabs; }
body.woocommerce #content.aps-shop--single div.product > :is(.aps-related-products-section, .related, .upsells) { grid-column: 1 / -1; }
body.woocommerce #content.aps-shop--single div.product > .onsale { position: absolute; z-index: 5; top: 18px; left: 18px; }

body.woocommerce #content.aps-shop--single div.product > .woocommerce-product-gallery,
body.woocommerce #content.aps-shop--single div.product > .summary,
body.woocommerce #content.aps-shop--single div.product > .woocommerce-tabs {
	float: none;
	width: auto;
	margin: 0;
	border: 1px solid var(--shop-line);
	border-radius: var(--shop-radius-lg);
	background: #fff;
	box-shadow: var(--shop-card-big);
}

/* Gallery */
body.woocommerce #content.aps-shop--single div.product > .woocommerce-product-gallery { padding: 22px; }
/* A tall photo must not take over the page on wide screens: it keeps its ratio, is centred and is never taller than 520px. */
body.woocommerce #content.aps-shop--single .woocommerce-product-gallery__image img { display: block; width: auto; max-width: 100%; max-height: 520px; margin-inline: auto; border-radius: 18px; object-fit: contain; }
body.woocommerce #content.aps-shop--single div.product div.images .woocommerce-product-gallery__trigger {
	top: 14px;
	right: 14px;
	padding: 4px;
	box-shadow: 0 6px 16px rgba(16, 47, 65, 0.18);
}
/* 44px target: the magnifier is drawn with two pseudo elements placed from the corner, moved 4px with the padding. */
body.woocommerce #content.aps-shop--single div.product div.images .woocommerce-product-gallery__trigger::before { top: 13px; left: 13px; }
body.woocommerce #content.aps-shop--single div.product div.images .woocommerce-product-gallery__trigger::after { top: 23px; left: 26px; }
body.woocommerce #content.aps-shop--single div.product div.images .flex-control-thumbs {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 10px;
	margin: 14px 0 0;
}
body.woocommerce #content.aps-shop--single div.product div.images .flex-control-thumbs li { float: none; width: auto; }
body.woocommerce #content.aps-shop--single div.product div.images .flex-control-thumbs li img {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	border: 2px solid transparent;
	border-radius: 14px;
	background: #fff;
	object-fit: contain;
	opacity: 0.65;
	transition: opacity 0.18s var(--ease), border-color 0.18s var(--ease);
}
body.woocommerce #content.aps-shop--single div.product div.images .flex-control-thumbs li img:is(.flex-active, :hover) { border-color: var(--accent); opacity: 1; }

/* Summary */
body.woocommerce #content.aps-shop--single div.product > .summary { padding: clamp(24px, 3.4vw, 40px); }
body.woocommerce #content.aps-shop--single .summary .product_title {
	margin: 0 0 14px;
	color: var(--c-ink);
	font-size: clamp(1.55rem, 1.1rem + 1.5vw, 2.2rem);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.01em;
	text-wrap: balance;
}
body.woocommerce #content.aps-shop--single .summary .woocommerce-product-rating { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0 0 14px; line-height: 1.4; }
body.woocommerce #content.aps-shop--single .summary .woocommerce-product-rating .star-rating { float: none; margin: 0; }
body.woocommerce #content.aps-shop--single .summary .woocommerce-review-link { color: var(--accent); font-size: 14px; font-weight: 600; text-decoration: none; }
body.woocommerce #content.aps-shop--single .summary .woocommerce-review-link:hover { color: var(--deep); text-decoration: underline; text-underline-offset: 3px; }
body.woocommerce #content.aps-shop--single .summary p.price,
body.woocommerce #content.aps-shop--single .summary span.price {
	margin: 0 0 16px;
	color: var(--c-primary);
	font-size: clamp(1.6rem, 1.3rem + 1vw, 2rem);
	font-weight: 800;
	line-height: 1.2;
}
body.woocommerce #content.aps-shop--single .summary .woocommerce-product-details__short-description { margin: 0 0 18px; color: var(--c-text); font-size: 16px; line-height: 1.7; }
body.woocommerce #content.aps-shop--single .summary .woocommerce-product-details__short-description p { margin: 0 0 10px; }
body.woocommerce #content.aps-shop--single .summary .woocommerce-product-details__short-description > :last-child { margin-bottom: 0; }
body.woocommerce #content.aps-shop--single .summary p.stock { margin: 0 0 12px; font-size: 14px; font-weight: 700; }
body.woocommerce #content.aps-shop--single .summary .stock.in-stock { color: #0b7a3f; }
body.woocommerce #content.aps-shop--single .summary .stock.out-of-stock { color: #b42318; }

/* The research specifications box of APS Core (woocommerce_single_product_summary, 25): kept as the plugin prints it. */
body.woocommerce #content.aps-shop--single .summary .aps-research-spec { margin: 20px 0; border-radius: 18px; box-shadow: none; }
body.woocommerce #content.aps-shop--single .aps-research-spec .aps-research-spec__title,
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel .aps-research-spec .aps-research-spec__title { margin: 0 0 10px; color: var(--c-ink); font-size: 1.05rem; font-weight: 800; line-height: 1.3; letter-spacing: 0; }
body.woocommerce #content.aps-shop--single .aps-research-spec__table tr:is(:nth-child(odd), :hover) > :is(th, td) { background: none; }
body.woocommerce #content.aps-shop--single .aps-research-spec__table :is(th, td) { padding-block: 7px; }

/* Add to cart form: variations, quantity, button. */
body.woocommerce #content.aps-shop--single .summary form.cart { margin: 22px 0 0; }
body.woocommerce #content.aps-shop--single .summary form.cart:not(.variations_form),
body.woocommerce #content.aps-shop--single .summary .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 12px;
}
body.woocommerce #content.aps-shop--single .summary form.cart::before,
body.woocommerce #content.aps-shop--single .summary form.cart::after { content: none; display: none; }
/* The bulk offer notice (a snippet) takes a full row above the quantity and the button. */
body.woocommerce #content.aps-shop--single .summary form.cart .aps-product-inline-note { flex: 0 0 100%; margin-top: 0; }

body.woocommerce #content.aps-shop--single .summary form.cart .variations,
body.woocommerce #content.aps-shop--single .summary form.cart .variations :is(tbody, tr, th, td) { display: block; width: 100%; margin: 0; padding: 0; border: 0; background: none; }
body.woocommerce #content.aps-shop--single .summary form.cart .variations { margin-bottom: 8px; }
body.woocommerce #content.aps-shop--single .summary form.cart .variations tr { margin-bottom: 16px; }
body.woocommerce #content.aps-shop--single .summary form.cart .variations label { display: inline-block; margin: 0 2px 10px 0; color: var(--c-ink); font-size: 15px; font-weight: 800; line-height: 1.3; }
body.woocommerce #content.aps-shop--single .summary form.cart .variations .woo-selected-variation-item-name { color: var(--deep); font-weight: 700; }
body.woocommerce #content.aps-shop--single .summary form.cart .variations select { width: 100%; max-width: 100%; }

/* Variation swatches (the plugin reads these variables): rounded chips, one selected. */
body.woocommerce #content.aps-shop--single .variable-items-wrapper { gap: 10px; }
body.woocommerce #content.aps-shop--single .variable-items-wrapper .variable-item:not(.radio-variable-item) {
	--wvs-item-box-shadow: 0 0 0 1.5px var(--shop-field);
	--wvs-hover-item-box-shadow: 0 0 0 2px var(--accent);
	--wvs-selected-item-box-shadow: 0 8px 18px rgba(8, 113, 179, 0.3);
	--wvs-selected-item-background-color: var(--accent);
	--wvs-selected-item-text-color: #fff;
	--wvs-item-text-color: var(--c-ink);
	--wvs-hover-item-text-color: var(--deep);
	min-width: 64px;
	min-height: 46px;
	margin: 0;
	border-radius: 14px;
	font-size: 15px;
	font-weight: 700;
}
body.woocommerce #content.aps-shop--single .variable-items-wrapper.wvs-style-squared .variable-item:not(.radio-variable-item) { border-radius: 14px; }
body.woocommerce #content.aps-shop--single .variable-items-wrapper .variable-item.button-variable-item.selected:not(.no-stock) { background: var(--grad-cta); color: #fff; }
body.woocommerce #content.aps-shop--single .variable-items-wrapper .variable-item.button-variable-item.selected .variable-item-span { color: #fff; }
body.woocommerce #content.aps-shop--single .variable-items-wrapper .variable-item.button-variable-item .variable-item-span { padding: 0 18px; }
/* "Clear" sits on the label row, so it does not add a row of its own while it is hidden. */
body.woocommerce #content.aps-shop--single .summary form.cart .variations td.value { position: relative; }
body.woocommerce #content.aps-shop--single .summary form.cart .reset_variations { position: absolute; top: -34px; right: 0; margin: 0; color: var(--accent); font-size: 13px; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
body.woocommerce #content.aps-shop--single .summary form.cart .woocommerce-variation { margin: 0; color: var(--c-text); font-size: 15px; }
body.woocommerce #content.aps-shop--single .summary form.cart .woocommerce-variation:has(*) { margin-bottom: 14px; }
body.woocommerce #content.aps-shop--single .summary form.cart .woocommerce-variation-price .price { margin: 0 0 8px; font-size: 1.5rem; }

/* Quantity and the add to cart button. */
body.woocommerce #content.aps-shop--single .summary form.cart div.quantity { float: none; margin: 0; }
body.woocommerce #content.aps-shop--single .summary form.cart .quantity .qty {
	box-sizing: border-box;
	width: 96px;
	height: 52px;
	min-height: 52px;
	padding: 8px 10px;
	border: 1.5px solid var(--shop-field);
	border-radius: 999px;
	background: #fff;
	color: var(--c-ink);
	font-size: 17px;
	font-weight: 700;
	text-align: center;
}
body.woocommerce #content.aps-shop--single .summary form.cart .single_add_to_cart_button { flex: 1 1 220px; float: none; min-height: 52px; margin: 0; font-size: 16px; }

body.woocommerce #content.aps-shop--single .summary .product_meta { display: grid; gap: 4px; margin: 24px 0 0; padding: 18px 0 0; border-top: 1px solid var(--shop-line); color: var(--shop-muted); font-size: 14px; line-height: 1.6; }
body.woocommerce #content.aps-shop--single .summary .product_meta > span { display: block; width: 100%; }
body.woocommerce #content.aps-shop--single .summary .product_meta a { color: var(--accent); font-weight: 600; text-decoration: none; }
body.woocommerce #content.aps-shop--single .summary .product_meta a:hover { color: var(--deep); text-decoration: underline; text-underline-offset: 3px; }

/* Tabs */
body.woocommerce #content.aps-shop--single div.product > .woocommerce-tabs { padding: clamp(22px, 3.4vw, 40px); }
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 28px;
	padding: 0;
	overflow: visible;
	list-style: none;
}
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs::before,
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs::after,
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs li::before,
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs li::after { content: none; display: none; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs li { margin: 0; padding: 0; border: 0; border-radius: 999px; background: none; box-shadow: none; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs li a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 9px 22px;
	border-radius: 999px;
	background: #eef5fa;
	color: var(--deep);
	font-size: 15px;
	font-weight: 700;
	text-decoration: none;
	transition: background 0.18s var(--ease), color 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs li a:hover { background: #e1eef8; color: var(--accent); }
body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs li.active a { background: var(--grad-cta); box-shadow: var(--shop-btn-shadow); color: #fff; }

body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel { margin: 0; padding: 0; color: var(--c-text); font-size: 17px; line-height: 1.75; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel > h2:first-child { margin: 0 0 18px; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel :is(h2, h3, h4) { color: var(--c-ink); font-weight: 800; line-height: 1.3; letter-spacing: -0.01em; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel h2 { margin: 44px 0 14px; font-size: 1.5rem; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel h3 { margin: 32px 0 12px; font-size: 1.25rem; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel p { margin: 0 0 16px; color: var(--c-text); }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel :is(ul, ol) { margin: 0 0 20px; padding-left: 22px; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel li { margin: 0 0 8px; padding-left: 4px; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel li::marker { color: var(--accent); }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel strong { color: var(--c-ink); }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel a:hover { color: var(--deep); }
body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel > :last-child { margin-bottom: 0; }

/* Additional information table */
body.woocommerce #content.aps-shop--single table.shop_attributes { margin: 0; border: 0; border-collapse: collapse; font-size: 16px; }
body.woocommerce #content.aps-shop--single table.shop_attributes :is(th, td) { padding: 14px 16px; border: 0; border-bottom: 1px solid var(--shop-line); background: none; color: var(--c-text); font-style: normal; line-height: 1.5; vertical-align: top; }
body.woocommerce #content.aps-shop--single table.shop_attributes th { width: 30%; color: var(--c-ink); font-weight: 700; text-align: left; }
body.woocommerce #content.aps-shop--single table.shop_attributes td p { margin: 0; padding: 0; }
body.woocommerce #content.aps-shop--single table.shop_attributes tr:nth-child(even) :is(th, td) { background: #f7fafc; }

/* Reviews */
body.woocommerce #content.aps-shop--single #reviews .woocommerce-Reviews-title { margin: 0 0 22px; font-size: 1.4rem; }
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist { margin: 0 0 34px; padding: 0; list-style: none; }
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist li { margin: 0 0 14px; padding: 0; }
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist li .comment-text {
	margin: 0;
	padding: 18px 22px 4px;
	border: 1px solid var(--shop-line);
	border-radius: 18px;
	background: #f8fbfd;
}
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist li .comment-text .star-rating { float: none; margin: 0 0 8px; }
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist li .comment-text p.meta { margin: 0 0 8px; color: var(--shop-muted); font-size: 14px; }
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist li .comment-text p.meta strong { color: var(--c-ink); }
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist ul.children { margin: 12px 0 0 28px; padding: 0; list-style: none; }
body.woocommerce #content.aps-shop--single #reviews #comments ol.commentlist ul.children .comment-text { background: #fff; }
body.woocommerce #content.aps-shop--single #reviews :is(.comment-reply-title, .cr-single-product-review .comment-reply-title) { display: block; margin: 0 0 12px; color: var(--c-ink); font-size: 1.25rem; font-weight: 800; }
body.woocommerce #content.aps-shop--single #reviews .comment-form :is(p, .comment-form-rating) { margin: 0 0 16px; }
body.woocommerce #content.aps-shop--single #reviews .comment-form label { display: block; margin: 0 0 6px; color: var(--c-ink); font-size: 15px; font-weight: 700; line-height: 1.4; }
body.woocommerce #content.aps-shop--single #reviews .comment-form :is(input[type="text"], input[type="email"], textarea, select) { width: 100%; }
body.woocommerce #content.aps-shop--single #reviews .comment-form .comment-form-cookies-consent label { display: inline; font-weight: 500; }
body.woocommerce #content.aps-shop--single #reviews .comment-form p.stars a { color: var(--shop-gold); }
body.woocommerce #content.aps-shop--single #reviews .aps-review-points-note { padding: 12px 16px; border-radius: 14px; background: #eef5fa; color: var(--c-ink); font-size: 14px; }

/* Related products: the section of the "APS Related Products" snippet. Its cards are styled with the one product card
   (components/product-card.css, section 10 neutralises the CSS of the old widget); only the section and its heading are here. */
body.woocommerce #content.aps-shop--single .aps-related-products-section { margin: 14px 0 0; }
body.woocommerce #content.aps-shop--single .aps-related-products-heading {
	margin: 0 0 30px;
	color: var(--c-ink);
	font-size: clamp(1.6rem, 1.15rem + 1.8vw, 2.2rem);
	font-weight: 800;
	line-height: 1.2;
	letter-spacing: -0.015em;
	text-align: center;
}
body.woocommerce #content.aps-shop--single .aps-related-products-heading::after { content: ""; display: block; width: 48px; height: 4px; margin: 16px auto 0; border-radius: 99px; background: linear-gradient(90deg, #126cac, #56ccf2); }

/* ======================================================================
   Cart and checkout pages (ordinary pages with a WooCommerce block): the title band, then cards.
   page.php prints main.site-main > .page-header > h1.entry-title, then .page-content with the block.
   ====================================================================== */

body.woocommerce-cart:not([class*="elementor-page-"]) .site-main,
body.woocommerce-checkout:not([class*="elementor-page-"]) .site-main,
body.woocommerce-account:not(.aps-gate-page):not([class*="elementor-page-"]) .site-main {
	display: flow-root;
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	font-family: Cairo, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
}
body.woocommerce-cart .page-header,
body.woocommerce-checkout .page-header,
body.woocommerce-account:not(.aps-gate-page) .page-header {
	position: relative;
	margin-top: calc(-1 * var(--header-block));
	padding: calc(var(--header-block) + 40px) var(--gutter) 100px;
	background:
		radial-gradient(60% 90% at 88% 0%, rgba(86, 204, 242, 0.32), transparent 70%),
		radial-gradient(50% 70% at 0% 45%, rgba(18, 108, 172, 0.1), transparent 70%),
		linear-gradient(180deg, #e3f0fa 0%, #f1f7fc 62%, #fff 100%);
	text-align: center;
}
body.woocommerce-cart .page-header .entry-title,
body.woocommerce-checkout .page-header .entry-title,
body.woocommerce-account:not(.aps-gate-page) .page-header .entry-title {
	display: block;
	width: auto;
	max-width: 880px;
	margin: 0 auto;
	padding: 0;
	color: var(--c-ink);
	font-size: clamp(2.1rem, 1.3rem + 3.4vw, 3.4rem);
	font-weight: 800;
	line-height: 1.12;
	letter-spacing: -0.02em;
}
body.woocommerce-cart .page-header .entry-title::after,
body.woocommerce-checkout .page-header .entry-title::after,
body.woocommerce-account:not(.aps-gate-page) .page-header .entry-title::after {
	content: "";
	display: block;
	width: 56px;
	height: 4px;
	margin: 20px auto 0;
	border-radius: 99px;
	background: linear-gradient(90deg, #126cac, #56ccf2);
}
body.woocommerce-cart .page-content,
body.woocommerce-checkout .page-content,
body.woocommerce-account:not(.aps-gate-page) .page-content {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: calc(var(--container) + var(--gutter) * 2);
	margin: -64px auto 0;
	padding: 0 var(--gutter) 80px;
	color: var(--c-ink);
}

/* The blocks: items and form on the left, summary on the right, each in a white card. */
body.woocommerce-cart .wp-block-woocommerce-cart,
body.woocommerce-checkout .wp-block-woocommerce-checkout { margin: 0; color: var(--c-ink); font-size: 16px; }
body.woocommerce-cart .wc-block-components-sidebar-layout,
body.woocommerce-checkout .wc-block-components-sidebar-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(300px, 390px);
	gap: 28px;
	align-items: start;
	margin: 0;
}
body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-main,
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-main,
body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-sidebar,
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-sidebar { width: auto; min-width: 0; margin: 0; }
body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-main,
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-main {
	padding: 26px clamp(18px, 3vw, 36px) 30px;
	border: 1px solid var(--shop-line);
	border-radius: var(--shop-radius-lg);
	background: #fff;
	box-shadow: var(--shop-card-big);
}
body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-sidebar,
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-sidebar {
	box-sizing: border-box;
	padding: 26px clamp(18px, 2.4vw, 30px) 30px;
	border: 1px solid var(--shop-line);
	border-radius: var(--shop-radius-lg);
	background: #fff;
	box-shadow: var(--shop-card-big);
}
body.woocommerce-cart :is(h2, h3).wc-block-components-title,
body.woocommerce-cart .wc-block-cart__totals-title,
body.woocommerce-checkout .wc-block-components-checkout-step__title,
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title-text {
	margin: 0;
	color: var(--c-ink);
	font-size: 1.3rem;
	font-weight: 800;
	line-height: 1.3;
	text-transform: none;
	letter-spacing: -0.01em;
}
body.woocommerce-cart .wc-block-cart__totals-title { padding: 0 0 14px; border-bottom: 1px solid var(--shop-line); }

/* Cart items */
body.woocommerce-cart table.wc-block-cart-items { margin: 0; border: 0; font-size: 16px; }
body.woocommerce-cart table.wc-block-cart-items :is(th, td) { border: 0; background: none; color: var(--c-ink); vertical-align: top; }
body.woocommerce-cart table.wc-block-cart-items th { padding: 0 0 12px; border-bottom: 1px solid var(--shop-line); color: var(--shop-muted); font-size: 13px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row { border-bottom: 1px solid var(--shop-line); }
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row:last-child { border-bottom: 0; }
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__image img { border: 1px solid var(--shop-line); border-radius: 14px; background: #fff; }
body.woocommerce-cart .wc-block-cart-items .wc-block-components-product-name { color: var(--c-ink); font-size: 16px; font-weight: 700; text-decoration: none; }
body.woocommerce-cart .wc-block-cart-items .wc-block-components-product-name:hover { color: var(--deep); text-decoration: underline; text-underline-offset: 3px; }
body.woocommerce-cart .wc-block-cart-items .wc-block-components-product-metadata { color: var(--c-text); font-size: 14px; line-height: 1.5; }
body.woocommerce-cart .wc-block-cart-items :is(.wc-block-components-product-price, .wc-block-formatted-money-amount) { color: var(--c-primary); font-weight: 800; }
body.woocommerce-cart .wc-block-cart-item__remove-link { color: var(--shop-muted); font-size: 13px; text-decoration: underline; text-underline-offset: 3px; }
body.woocommerce-cart .wc-block-cart-item__remove-link:hover { color: #b42318; }
body.woocommerce-cart .wc-block-components-quantity-selector { border: 1.5px solid var(--shop-field); border-radius: 999px; background: #fff; box-shadow: none; overflow: hidden; }
body.woocommerce-cart .wc-block-components-quantity-selector::after { border: 0; }
body.woocommerce-cart .wc-block-components-quantity-selector__input { color: var(--c-ink); font-weight: 700; }
body.woocommerce-cart .wc-block-components-quantity-selector__button { min-width: 36px; background: transparent; box-shadow: none; color: var(--deep); }
body.woocommerce-cart .wc-block-components-quantity-selector__button:hover { background: #eef5fa; color: var(--deep); transform: none; }

/* Empty cart: the heading of WooCommerce's "New in store" block (its product cards are the one product card, components/product-card.css). */
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block h2 { color: var(--c-ink); font-weight: 800; letter-spacing: -0.01em; }

/* Totals (cart sidebar, checkout summary) */
body.woocommerce-cart .wc-block-components-totals-wrapper,
body.woocommerce-checkout .wc-block-components-totals-wrapper { border-color: var(--shop-line); }
body.woocommerce-cart .wc-block-components-totals-item__label,
body.woocommerce-checkout .wc-block-components-totals-item__label { color: var(--c-text); font-weight: 600; }
body.woocommerce-cart .wc-block-components-totals-item__value,
body.woocommerce-checkout .wc-block-components-totals-item__value { color: var(--c-ink); font-weight: 700; }
body.woocommerce-cart .wc-block-components-totals-footer-item,
body.woocommerce-checkout .wc-block-components-totals-footer-item { font-size: 1.25rem; }
body.woocommerce-cart .wc-block-components-totals-footer-item :is(.wc-block-components-totals-item__label, .wc-block-components-totals-item__value),
body.woocommerce-checkout .wc-block-components-totals-footer-item :is(.wc-block-components-totals-item__label, .wc-block-components-totals-item__value) { color: var(--c-ink); font-size: 1.25rem; font-weight: 800; }
body.woocommerce-cart .wc-block-components-panel__button,
body.woocommerce-checkout .wc-block-components-panel__button { color: var(--c-ink); font-weight: 700; }
body.woocommerce-cart .wc-block-components-panel__button:hover,
body.woocommerce-checkout .wc-block-components-panel__button:hover { background: none; color: var(--deep); transform: none; }
body.woocommerce-cart .wc-block-cart__submit-container { padding-top: 6px; }
body.woocommerce-cart.woocommerce-page:not(.aps-gate-page) .wc-block-cart__submit-container .wc-block-cart__submit-button.wc-block-components-button { width: 100%; min-height: 54px; font-size: 16px; }

/* Checkout form */
body.woocommerce-checkout .wc-block-components-checkout-step { margin: 0 0 8px; }
body.woocommerce-checkout .wc-block-components-checkout-step__heading { margin: 0 0 18px; }
body.woocommerce-checkout .wc-block-components-checkout-step__description { color: var(--shop-muted); font-size: 14px; }
body.woocommerce-checkout .wc-block-components-form .wc-block-components-text-input :is(input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], input[type="url"]),
body.woocommerce-checkout .wc-block-components-form .wc-block-components-textarea,
body.woocommerce-checkout .wc-block-components-form .wc-blocks-components-select .wc-blocks-components-select__select {
	border: 1.5px solid var(--shop-field);
	border-radius: 14px;
	background-color: #fff;
	color: var(--c-ink);
	font-family: inherit;
	font-size: 16px;
	box-shadow: none;
}
body.woocommerce-checkout .wc-block-components-form .wc-block-components-text-input :is(input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="password"], input[type="url"]):focus,
body.woocommerce-checkout .wc-block-components-form .wc-block-components-textarea:focus,
body.woocommerce-checkout .wc-block-components-form .wc-blocks-components-select .wc-blocks-components-select__select:focus {
	border-color: var(--accent);
	box-shadow: 0 0 0 4px rgba(12, 131, 200, 0.16);
	outline: 0;
}
body.woocommerce-checkout .wc-block-components-text-input label,
body.woocommerce-checkout .wc-blocks-components-select__label { color: var(--shop-muted); }
/* Existing checkout rule, kept as it was (the country is not asked): see the legacy Additional CSS. !important on purpose. */
.wc-block-components-address-form__country { display: none !important; }

body.woocommerce-checkout .wc-block-components-radio-control__option,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option { border-color: var(--shop-field); border-radius: 16px; }
body.woocommerce-checkout .wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control__option-checked,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option--checked { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
body.woocommerce-checkout .wc-block-components-radio-control-accordion-content { color: var(--c-text); font-size: 15px; line-height: 1.6; }
body.woocommerce-checkout .wc-block-components-checkbox__label { color: var(--c-ink); font-size: 15px; }
/* Checkboxes (the research confirmation is one): a clear frame in every state, with or without the Elementor kit. */
body.woocommerce-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"] {
	border: 1.5px solid #6b8294;
	border-radius: 6px;
	background-color: #fff;
}
body.woocommerce-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type="checkbox"]:focus-visible { outline: 3px solid var(--c-sky); outline-offset: 2px; }
body.woocommerce-checkout .wc-block-checkout__order-fields .wc-block-components-checkbox { margin-top: 14px; }
body.woocommerce-checkout .wc-block-checkout__terms { color: var(--c-text); font-size: 14px; }
body.woocommerce-checkout .wc-block-checkout__terms a { color: var(--accent); }
body.woocommerce-checkout .wc-block-checkout__actions { padding-top: 8px; }
body.woocommerce-checkout.woocommerce-page:not(.aps-gate-page) .wc-block-checkout__actions .wc-block-components-checkout-place-order-button.wc-block-components-button { width: 100%; min-height: 54px; font-size: 16px; }
body.woocommerce-checkout .wc-block-components-checkout-order-summary__title { padding: 0 0 12px; }
/* The sidebar is already a card: no second frame around the summary. */
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block { border: 0; border-radius: 0; }
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-totals-block { border-color: var(--shop-line); }
body.woocommerce-checkout .wc-block-components-order-summary-item__image img { border: 1px solid var(--shop-line); border-radius: 12px; background: #fff; }
body.woocommerce-checkout .wc-block-components-product-name { color: var(--c-ink); font-weight: 700; }

/* ======================================================================
   Account: login and registration forms (the pages of the account itself are styled by APS Core)
   ====================================================================== */

body.woocommerce-account:not(.logged-in):not(.aps-gate-page) .woocommerce form.woocommerce-form {
	border: 1px solid var(--shop-line);
	border-radius: var(--shop-radius);
	background: #fff;
	box-shadow: var(--shop-card);
}
body.woocommerce-account:not(.logged-in):not(.aps-gate-page) .woocommerce h2 { color: var(--c-ink); font-size: 1.5rem; font-weight: 800; }
body.woocommerce-account:not(.aps-gate-page) .woocommerce label { color: var(--c-ink); font-size: 15px; font-weight: 700; }
/* Login row: the button first, then "Remember me" beside it with a gap (they used to touch). */
body.woocommerce-account:not(.aps-gate-page) .woocommerce-form-login p.form-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; }
body.woocommerce-account:not(.aps-gate-page) .woocommerce-form-login__submit { order: -1; float: none; margin: 0; }
body.woocommerce-account:not(.aps-gate-page) .woocommerce-form-login__rememberme { display: inline-flex; align-items: center; gap: 8px; margin: 0; line-height: 1.4; }
body.woocommerce-account:not(.aps-gate-page) .woocommerce a { color: var(--accent); }

/* ======================================================================
   Narrow screens
   ====================================================================== */

@media (max-width: 1100px) {
	.aps-page .aps-shop-tiles .aps-promo__body { max-width: 66%; }
}
@media (max-width: 1024px) {
	.aps-page .aps-shop-tiles .aps-promo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: none; }
	.aps-page .aps-shop-tiles .aps-promo:first-child { grid-row: auto; grid-column: 1 / -1; min-height: 340px; }
	.aps-page .aps-shop-tiles .aps-promo:first-child .aps-promo__body { max-width: 62%; }
	.aps-page .aps-shop-tiles .aps-promo:first-child .aps-promo__media { right: 9%; left: auto; bottom: -10%; height: 100%; transform: rotate(12deg); }
}
@media (max-width: 900px) {
	body.woocommerce-cart .wc-block-components-sidebar-layout,
	body.woocommerce-checkout .wc-block-components-sidebar-layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 720px) {
	body.woocommerce #content.aps-shop--single div.product { grid-template-columns: minmax(0, 1fr); grid-template-areas: "gallery" "summary" "tabs" "more"; }
	body.woocommerce #content.aps-shop--single div.product > .woocommerce-product-gallery { justify-self: center; width: min(100%, 460px); }
}
@media (max-width: 782px) {
	.aps-page .aps-shop-tiles .aps-promo-grid { grid-template-columns: minmax(0, 1fr); }
	.aps-page .aps-shop-tiles .aps-promo,
	.aps-page .aps-shop-tiles .aps-promo:first-child { min-height: 330px; }
	.aps-page .aps-shop-tiles .aps-promo__body,
	.aps-page .aps-shop-tiles .aps-promo:first-child .aps-promo__body { max-width: 64%; }
	.aps-page .aps-shop-tiles .aps-promo__media,
	.aps-page .aps-shop-tiles .aps-promo:first-child .aps-promo__media { right: 9%; left: auto; bottom: -10%; height: 100%; transform: rotate(12deg); }
	.aps-shop .aps-shop-toolbar { justify-content: center; }
	body.woocommerce-cart .wc-block-components-sidebar-layout,
	body.woocommerce-checkout .wc-block-components-sidebar-layout { gap: 20px; }
}
@media (max-width: 767px) {
	body.woocommerce-checkout .wc-block-checkout__actions_row { justify-content: stretch; }
	.aps-shop .aps-hero--single { padding-bottom: 84px; }
	.aps-shop .aps-shop__body,
	#content.aps-shop--single .aps-shop__body { margin-top: -56px; padding-bottom: 56px; }
	body.woocommerce #content.aps-shop--single div.product > .woocommerce-product-gallery { padding: 14px; }
	body.woocommerce #content.aps-shop--single div.product > .woocommerce-tabs { padding: 20px 18px; }
	body.woocommerce #content.aps-shop--single .woocommerce-tabs .panel { font-size: 16px; }
	body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs { gap: 8px; margin-bottom: 22px; }
	body.woocommerce #content.aps-shop--single .woocommerce-tabs ul.tabs li a { padding: 8px 16px; font-size: 14px; }
	body.woocommerce-cart .page-header,
	body.woocommerce-checkout .page-header,
	body.woocommerce-account:not(.aps-gate-page) .page-header { padding-bottom: 88px; }
	body.woocommerce-cart .page-content,
	body.woocommerce-checkout .page-content,
	body.woocommerce-account:not(.aps-gate-page) .page-content { margin-top: -56px; padding-bottom: 56px; }
}
@media (max-width: 640px) {
	.aps-shop .aps-filters { margin-inline: calc(var(--gutter) * -1); }
	.aps-shop .aps-filters__list {
		flex-wrap: nowrap;
		justify-content: flex-start;
		padding: 4px var(--gutter) 14px;
		overflow-x: auto;
		scroll-snap-type: x proximity;
		scroll-padding-inline: var(--gutter);
		-webkit-overflow-scrolling: touch;
	}
	.aps-shop .aps-filters__list li { flex: 0 0 auto; scroll-snap-align: start; }
	/* The category you are in comes first, so it is never hidden off screen. */
	.aps-shop .aps-filters__list li:has(> .is-active) { order: -1; }
	.aps-shop .aps-pill { white-space: nowrap; }
}
@media (max-width: 480px) {
	.aps-shop .aps-filters__list { justify-content: flex-start; }
	body.woocommerce #content.aps-shop--single div.product > .summary form.cart .single_add_to_cart_button { flex-basis: 100%; }
}

@media (prefers-reduced-motion: reduce) {
	.aps-page .aps-shop-tiles .aps-promo,
	.aps-shop .aps-pill { transition: none; }
	.aps-page .aps-shop-tiles .aps-promo:hover,
	.aps-shop .aps-pill:hover { transform: none; }
}

/* Login captcha ("Prove your humanity", plugin markup div.humanity with an input named brute_num). It used to get its pill from the
   Elementor kit rules; with Elementor off it needs its own: the question and the small answer field on one line. */
.woocommerce-account div.humanity { display: flex; flex-wrap: nowrap; align-items: center; gap: 0 4px; white-space: nowrap; }
.woocommerce-account div.humanity input[name="brute_num"] { width: 54px; max-width: 54px; min-width: 0; height: 36px; padding: 4px 10px; border: 1px solid #d5dbe3; border-radius: 999px; background: #f3f6fa; color: #1a2b3c; font-size: 16px; }
.woocommerce-account div.humanity input[name="brute_num"]:focus-visible { outline: 2px solid #0c83c8; outline-offset: 2px; }
