/*
 * Aurelle — WooCommerce layer
 * Only enqueued on WooCommerce pages (see inc/enqueue.php).
 * Part 1 covers shared shop chrome. Catalogue, single product and
 * checkout refinements arrive in later parts.
 */

/* Product loop — Woo's own grid classes are replaced by our grid */
.woocommerce ul.products,
ul.products {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--space-sm);
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce ul.products::before,
.woocommerce ul.products::after {
	content: none;
}

.woocommerce ul.products li.product,
ul.products li.product {
	display: flex;
	width: 100%;
	margin: 0;
	float: none;
	clear: none;
}

@media (min-width: 768px) {
	.woocommerce ul.products,
	ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: var(--space-md);
	}
}

@media (min-width: 1024px) {
	.woocommerce ul.products,
	ul.products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* Result count + ordering */
.woocommerce-shop-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	margin-bottom: var(--space-md);
	flex-wrap: wrap;
}

.woocommerce .woocommerce-result-count {
	margin: 0;
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.woocommerce .woocommerce-ordering select {
	min-width: 200px;
}

/* Messages */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	border: var(--border-hairline);
	border-left: 3px solid var(--color-accent);
	background-color: var(--color-surface);
	border-radius: var(--radius-md);
	padding: var(--space-sm) var(--space-md);
	margin-bottom: var(--space-md);
	font-size: var(--fs-small);
	list-style: none;
}

.woocommerce-error {
	border-left-color: var(--color-error);
}

/* Woo buttons inherit the theme button system */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--tap-target);
	padding: 0.75rem 1.5rem;
	border: 1px solid var(--color-primary);
	border-radius: var(--radius-md);
	background-color: var(--color-primary);
	color: var(--color-inverse-text);
	font-family: var(--font-button);
	font-size: var(--fs-button);
	font-weight: var(--fw-medium);
	line-height: 1.2;
	text-transform: none;
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--color-inverse-text);
}

.woocommerce .price {
	font-family: var(--font-price);
	color: var(--color-text);
}

.woocommerce .price del {
	color: var(--color-muted-text);
	opacity: 1;
}

.woocommerce .price ins {
	text-decoration: none;
	color: var(--color-sale);
}

/* Cart / account tables */
.woocommerce table.shop_table {
	border: var(--border-hairline);
	border-radius: var(--radius-md);
	border-collapse: collapse;
	width: 100%;
	background-color: var(--color-surface);
}

.woocommerce table.shop_table th,
.woocommerce table.shop_table td {
	padding: var(--space-xs);
	border-bottom: var(--border-hairline);
	font-size: var(--fs-small);
}

/* Tables scroll instead of pushing the page sideways on small screens */
.woocommerce-cart-form,
.woocommerce-order-details,
.woocommerce-account .woocommerce-MyAccount-content .shop_table {
	overflow-x: auto;
}

.woocommerce-form__label-for-checkbox {
	display: flex;
	align-items: flex-start;
	gap: var(--space-2xs);
}

/* My Account */
.woocommerce-account .woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0 0 var(--space-md);
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs);
}

.woocommerce-account .woocommerce-MyAccount-navigation a {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 var(--space-sm);
	border: var(--border-hairline);
	border-radius: var(--radius-pill);
	background-color: var(--color-surface);
	font-size: var(--fs-small);
}

.woocommerce-account .woocommerce-MyAccount-navigation .is-active a {
	background-color: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--color-inverse-text);
}

@media (min-width: 1024px) {
	.woocommerce-account .woocommerce-MyAccount-navigation {
		float: left;
		width: 24%;
	}

	.woocommerce-account .woocommerce-MyAccount-navigation ul {
		flex-direction: column;
	}

	.woocommerce-account .woocommerce-MyAccount-content {
		float: right;
		width: 72%;
	}
}

/* ===============================================================
 * Shop / catalogue — Part 2
 * Loaded on shop views only. Mobile first; the sidebar appears at
 * 1024px, below which the same markup is a slide-over drawer.
 * =============================================================== */

.shop-hero {
	padding-block: var(--space-lg) var(--space-md);
	max-width: 44ch;
}

.shop-hero__title {
	font-size: var(--fs-h1);
	line-height: var(--lh-tight);
	letter-spacing: var(--ls-tight);
	margin: 0;
}

.shop-hero__subtitle {
	margin: var(--space-2xs) 0 0;
	color: var(--color-muted-text);
}

/* --- Category rail ------------------------------------------- */

.shop-categories {
	margin-bottom: var(--space-md);
	border-bottom: var(--border-hairline);
}

.shop-categories__list {
	display: flex;
	gap: var(--space-2xs);
	list-style: none;
	margin: 0;
	padding: 0 0 var(--space-sm);
	overflow-x: auto;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.shop-categories__list::-webkit-scrollbar {
	display: none;
}

.shop-categories__list li {
	flex: 0 0 auto;
}

/* --- Layout --------------------------------------------------- */

.shop-layout {
	display: grid;
	gap: var(--space-lg);
	padding-bottom: var(--space-2xl);
}

.shop-results {
	min-width: 0;
}

/* --- Toolbar -------------------------------------------------- */

.shop-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	flex-wrap: wrap;
	padding-bottom: var(--space-md);
}

.shop-toolbar__count {
	margin: 0;
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.shop-toolbar__controls {
	display: flex;
	align-items: center;
	gap: var(--space-2xs);
	margin-left: auto;
}

.shop-toolbar__filter {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3xs);
}

.shop-toolbar__badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: var(--radius-pill);
	background-color: var(--color-accent);
	color: var(--color-inverse-text);
	font-size: 0.6875rem;
	line-height: 1;
}

.shop-sort {
	display: flex;
	align-items: center;
	gap: var(--space-3xs);
}

.shop-sort__label {
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.shop-sort__select {
	width: auto;
	min-height: var(--tap-target);
	padding: 0.45rem 2rem 0.45rem 0.75rem;
	font-size: var(--fs-small);
}

/* The submit button is only needed when JS has not taken over. */
.shop-sort.has-auto-submit .shop-sort__submit {
	display: none;
}

/* --- Filters: drawer on small screens ------------------------- */

.shop-filters-overlay {
	position: fixed;
	inset: 0;
	background-color: rgba(20, 32, 27, 0.45);
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--duration) var(--ease), visibility var(--duration);
	z-index: var(--z-overlay);
}

.shop-filters-overlay.is-active {
	opacity: 1;
	visibility: visible;
}

.shop-filters {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	width: min(88vw, 380px);
	display: flex;
	flex-direction: column;
	background-color: var(--color-surface);
	transform: translateX(100%);
	transition: transform 240ms var(--ease);
	z-index: var(--z-drawer);
	overscroll-behavior: contain;
}

.shop-filters.is-active {
	transform: translateX(0);
}

.shop-filters__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	min-height: 60px;
	padding: var(--space-2xs) var(--space-sm) var(--space-2xs) var(--space-md);
	border-bottom: var(--border-hairline);
}

.shop-filters__title {
	font-family: var(--font-heading);
	font-size: 1.125rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	margin: 0;
}

.shop-filters__form {
	display: flex;
	flex-direction: column;
	flex: 1;
	min-height: 0;
}

.shop-filters__body {
	flex: 1;
	overflow-y: auto;
	padding: var(--space-md);
	display: grid;
	gap: var(--space-lg);
}

.shop-filters__actions {
	display: grid;
	gap: var(--space-2xs);
	padding: var(--space-sm) var(--space-md) calc(var(--space-sm) + env(safe-area-inset-bottom, 0px));
	border-top: var(--border-hairline);
	background-color: var(--color-surface-alt);
}

.filter-group {
	border: 0;
	margin: 0;
	padding: 0;
}

.filter-group__title {
	padding: 0;
	margin-bottom: var(--space-2xs);
	font-size: var(--fs-small);
	font-weight: var(--fw-medium);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.filter-group__options {
	display: grid;
	gap: 2px;
}

.filter-option {
	display: flex;
	align-items: center;
	gap: var(--space-2xs);
	min-height: 40px;
	font-size: var(--fs-small);
	cursor: pointer;
}

.filter-option input {
	width: 18px;
	height: 18px;
	min-height: 0;
	margin: 0;
	accent-color: var(--color-accent);
	flex: 0 0 auto;
}

.filter-option__count {
	margin-left: auto;
	color: var(--color-muted-text);
	font-size: var(--fs-tiny);
}

.filter-price {
	display: flex;
	align-items: center;
	gap: var(--space-2xs);
}

.filter-price__field {
	flex: 1;
	min-width: 0;
}

.filter-price__dash {
	color: var(--color-muted-text);
}

/* --- Product card: catalogue refinements ---------------------- */

.product-card__category {
	margin: 0 0 2px;
	font-size: var(--fs-tiny);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-muted-text);
}

.product-card__placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	color: var(--color-border-strong);
}

.product-card__media img {
	transition: transform 400ms var(--ease);
}

.badge--best-seller {
	background-color: var(--color-primary);
}

/* --- Empty state ---------------------------------------------- */

.shop-empty {
	padding: var(--space-2xl) var(--space-md);
	text-align: center;
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
}

.shop-empty__title {
	font-family: var(--font-heading);
	font-size: var(--fs-h3);
	margin: 0 0 var(--space-3xs);
}

.shop-empty__text {
	margin: 0 0 var(--space-md);
	color: var(--color-muted-text);
}

/* --- Pagination ----------------------------------------------- */

.woocommerce-pagination {
	padding-top: var(--space-xl);
}

.woocommerce-pagination ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--space-3xs);
	list-style: none;
	margin: 0;
	padding: 0;
}

.woocommerce-pagination a,
.woocommerce-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: var(--tap-target);
	height: var(--tap-target);
	padding: 0 var(--space-2xs);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
	font-size: var(--fs-small);
}

.woocommerce-pagination .current {
	background-color: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--color-inverse-text);
}

/* --- Tablet up ------------------------------------------------ */

@media (min-width: 768px) {
	.shop-hero {
		padding-block: var(--space-md) var(--space-md);
	}

	.shop-sort__select {
		font-size: var(--fs-body);
	}
}

/* --- Desktop: filters become a column, cards reveal on hover --- */

@media (min-width: 1024px) {
	.shop-layout {
		grid-template-columns: 250px minmax(0, 1fr);
		gap: var(--space-2xl);
	}

	.shop-filters {
		position: sticky;
		top: calc(var(--header-height) + var(--space-md));
		right: auto;
		bottom: auto;
		width: auto;
		max-height: calc(100vh - var(--header-height) - var(--space-xl));
		transform: none;
		background: none;
		z-index: 1;
	}

	.shop-filters__head {
		display: none;
	}

	.shop-filters__body {
		padding: 0;
	}

	.shop-toolbar__filter {
		display: none;
	}

	.shop-filters-overlay {
		display: none;
	}

	.shop-filters__actions {
		padding: var(--space-sm) 0 0;
		border-top: 0;
		background: none;
	}

	.product-card__media img {
		will-change: transform;
	}

	.product-card:hover .product-card__media img {
		transform: scale(1.04);
	}

	.product-card__wishlist,
	.product-card__actions {
		opacity: 0;
		transition: opacity var(--duration) var(--ease);
	}

	.product-card:hover .product-card__wishlist,
	.product-card:focus-within .product-card__wishlist,
	.product-card:hover .product-card__actions,
	.product-card:focus-within .product-card__actions {
		opacity: 1;
	}
}

/* Touch devices never hover: keep the controls visible. */
@media (hover: none) {
	.product-card__wishlist,
	.product-card__actions {
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.product-card:hover .product-card__media img {
		transform: none;
	}
}

/* The results column is narrower than the page, so it steps up to four
   columns at 1280 rather than 1024. */
@media (min-width: 1024px) {
	.shop-results ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 1280px) {
	.shop-results ul.products {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* ===============================================================
 * Part 3 — filter chips, quick view, product page
 * =============================================================== */

/* --- Active filter chips -------------------------------------- */

.active-filters {
	padding-bottom: var(--space-md);
}

.active-filters__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-3xs);
	list-style: none;
	margin: 0;
	padding: 0;
}

.chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 34px;
	padding: 0 var(--space-2xs);
	border: var(--border-hairline);
	border-radius: var(--radius-pill);
	background-color: var(--color-surface);
	font-size: var(--fs-tiny);
	line-height: 1;
}

.chip:hover {
	border-color: var(--color-primary);
	color: var(--color-text);
}

.chip__group {
	color: var(--color-muted-text);
}

.chip__remove {
	font-size: 1rem;
	line-height: 1;
	color: var(--color-muted-text);
}

.chip--clear {
	background: none;
	border-style: dashed;
}

/* --- Quick view ------------------------------------------------ */

.quick-view {
	position: fixed;
	inset: 0;
	z-index: var(--z-drawer);
	display: flex;
	align-items: flex-end;
	justify-content: center;
}

.quick-view[hidden] {
	display: none;
}

.quick-view__overlay {
	position: absolute;
	inset: 0;
	background-color: rgba(20, 32, 27, 0.5);
}

.quick-view__dialog {
	position: relative;
	width: 100%;
	max-height: 90vh;
	overflow-y: auto;
	overscroll-behavior: contain;
	background-color: var(--color-surface);
	border-radius: var(--radius-md) var(--radius-md) 0 0;
	padding: var(--space-lg) var(--space-md) calc(var(--space-lg) + env(safe-area-inset-bottom, 0px));
}

.quick-view__close {
	position: absolute;
	top: var(--space-2xs);
	right: var(--space-2xs);
	z-index: 1;
}

.quick-view__grid {
	display: grid;
	gap: var(--space-md);
}

.quick-view__media {
	aspect-ratio: 3 / 4;
	max-height: 40vh;
	background-color: var(--color-surface-alt);
	border-radius: var(--radius-md);
	overflow: hidden;
}

.quick-view__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.quick-view__title {
	font-size: var(--fs-h3);
	margin: 0 0 var(--space-3xs);
}

.quick-view__price {
	font-size: 1.125rem;
	margin-block: var(--space-2xs);
}

.quick-view__price del {
	color: var(--color-muted-text);
	margin-right: var(--space-3xs);
}

.quick-view__price ins {
	color: var(--color-sale);
	text-decoration: none;
}

.quick-view__excerpt {
	color: var(--color-muted-text);
	font-size: var(--fs-small);
}

.quick-view__actions {
	display: grid;
	gap: var(--space-2xs);
	margin-top: var(--space-md);
}

.quick-view__loading {
	margin: 0;
	color: var(--color-muted-text);
}

/* --- Product page ---------------------------------------------- */

.product-brand {
	margin: 0 0 var(--space-3xs);
	font-size: var(--fs-small);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-muted-text);
}

.product-notes {
	list-style: none;
	margin: var(--space-md) 0 0;
	padding: var(--space-sm) 0 0;
	border-top: var(--border-hairline);
	display: grid;
	gap: var(--space-2xs);
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.product-notes li {
	display: flex;
	align-items: center;
	gap: var(--space-2xs);
}

.product-notes svg {
	flex: 0 0 auto;
	stroke: currentColor;
	fill: none;
}

.product-single__wishlist {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3xs);
	margin-top: var(--space-2xs);
	width: 100%;
	justify-content: center;
}

.product-single__wishlist svg {
	stroke: currentColor;
	fill: none;
}

.product-single__wishlist.is-active svg {
	fill: var(--color-sale);
	stroke: var(--color-sale);
}

.product-sections {
	margin-top: var(--space-xl);
	border-top: var(--border-hairline);
}

.product-section {
	border-bottom: var(--border-hairline);
}

.product-section__heading {
	margin: 0;
	font-size: var(--fs-body);
}

.product-section__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	width: 100%;
	min-height: 56px;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font-family: var(--font-heading);
	font-size: 1.0625rem;
	cursor: pointer;
	text-align: left;
}

.product-section__toggle svg {
	flex: 0 0 auto;
	stroke: currentColor;
	fill: none;
	transition: transform var(--duration) var(--ease);
}

.product-section__toggle[aria-expanded="true"] svg {
	transform: rotate(180deg);
}

.product-section__panel {
	display: none;
	padding-bottom: var(--space-md);
}

.product-section__panel.is-open {
	display: block;
}

/* --- Sticky add to cart ---------------------------------------- */

.sticky-atc {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: var(--z-header);
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	padding: var(--space-2xs) var(--space-sm) calc(var(--space-2xs) + env(safe-area-inset-bottom, 0px));
	background-color: var(--color-surface);
	border-top: var(--border-hairline);
	box-shadow: var(--shadow-overlay);
}

.sticky-atc[hidden] {
	display: none;
}

.sticky-atc__info {
	min-width: 0;
}

.sticky-atc__title {
	margin: 0;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.sticky-atc__price {
	margin: 0;
	font-size: var(--fs-small);
	font-weight: var(--fw-medium);
}

.sticky-atc .btn {
	margin-left: auto;
	flex: 0 0 auto;
}

@media (min-width: 640px) {
	.quick-view {
		align-items: center;
		padding: var(--space-md);
	}

	.quick-view__dialog {
		max-width: 720px;
		border-radius: var(--radius-md);
		padding: var(--space-xl);
	}

	.quick-view__grid {
		grid-template-columns: minmax(0, 260px) minmax(0, 1fr);
		gap: var(--space-lg);
		align-items: start;
	}

	.quick-view__media {
		max-height: none;
	}

	.quick-view__actions {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1024px) {
	.sticky-atc {
		display: none;
	}

	.product-section__panel {
		display: block;
	}

	.product-single__wishlist {
		width: auto;
	}
}

/* --- Single product layout ------------------------------------- */

.product-single {
	padding-block: var(--space-sm) var(--space-xl);
}

.product-single__grid {
	display: grid;
	gap: var(--space-lg);
}

.product-single__media {
	position: relative;
	min-width: 0;
}

.product-gallery__main {
	aspect-ratio: 3 / 4;
	background-color: var(--color-surface-alt);
	border-radius: var(--radius-md);
	overflow: hidden;
}

.product-gallery__main img,
.woocommerce-product-gallery__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.product-gallery__thumbs {
	display: flex;
	gap: var(--space-2xs);
	margin-top: var(--space-2xs);
	overflow-x: auto;
	scrollbar-width: none;
}

.product-gallery__thumbs::-webkit-scrollbar {
	display: none;
}

.product-gallery__thumb {
	flex: 0 0 76px;
	width: 76px;
	aspect-ratio: 3 / 4;
	padding: 0;
	border: 1px solid var(--color-border);
	border-radius: var(--radius-sm);
	background-color: var(--color-surface-alt);
	overflow: hidden;
	cursor: pointer;
}

.product-gallery__thumb[aria-current="true"] {
	border-color: var(--color-primary);
}

.product-gallery__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.product-single__summary .product_title {
	font-size: var(--fs-h2);
	margin: 0 0 var(--space-2xs);
}

.product-single__summary .price {
	font-size: 1.375rem;
	display: flex;
	align-items: baseline;
	gap: var(--space-2xs);
	margin-block: var(--space-2xs) var(--space-sm);
}

.product-single__summary .price del {
	color: var(--color-muted-text);
	font-size: 1rem;
}

.product-single__summary .price ins {
	color: var(--color-sale);
	text-decoration: none;
}

.product-single__summary .woocommerce-product-details__short-description {
	color: var(--color-muted-text);
}

.product-variants {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-3xs);
	margin-block: var(--space-sm);
}

.product-variant {
	min-height: var(--tap-target);
	padding: 0 var(--space-sm);
	border: 1px solid var(--color-border-strong);
	border-radius: var(--radius-md);
	background: none;
	font-family: var(--font-body);
	font-size: var(--fs-small);
	cursor: pointer;
}

.product-variant[aria-pressed="true"] {
	border-color: var(--color-primary);
	background-color: var(--color-primary);
	color: var(--color-inverse-text);
}

.product-single__summary form.cart {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2xs);
	margin-block: var(--space-sm);
}

.quantity {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--color-border-strong);
	border-radius: var(--radius-md);
	overflow: hidden;
}

.quantity button {
	width: var(--tap-target);
	height: var(--tap-target);
	border: 0;
	background: none;
	font-size: 1.125rem;
	cursor: pointer;
	color: inherit;
}

.quantity input {
	width: 48px;
	min-height: var(--tap-target);
	border: 0;
	border-inline: 1px solid var(--color-border);
	border-radius: 0;
	text-align: center;
	padding: 0;
}

.product-single__summary form.cart .btn,
.product-single__summary form.cart button[type="submit"] {
	flex: 1 1 200px;
}

.product-stock {
	font-size: var(--fs-small);
	color: var(--color-accent);
	margin: 0;
}

.product-stock--out {
	color: var(--color-sale);
}

@media (min-width: 900px) {
	.product-single__grid {
		grid-template-columns: minmax(0, 520px) minmax(0, 1fr);
		gap: var(--space-2xl);
		align-items: start;
		max-width: 1120px;
		margin-inline: auto;
	}

	.product-single__media {
		position: sticky;
		top: calc(var(--header-height) + var(--space-md));
	}
}

/* --- Card descriptor and feedback toast ------------------------ */

.product-card__descriptor {
	margin: 2px 0 0;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.toast {
	position: fixed;
	left: 50%;
	bottom: calc(var(--space-lg) + env(safe-area-inset-bottom, 0px));
	transform: translate(-50%, 12px);
	z-index: calc(var(--z-drawer) + 10);
	max-width: min(92vw, 420px);
	padding: var(--space-2xs) var(--space-sm);
	border-radius: var(--radius-pill);
	background-color: var(--color-primary);
	color: var(--color-inverse-text);
	font-size: var(--fs-small);
	box-shadow: var(--shadow-overlay);
	opacity: 0;
	transition: opacity var(--duration) var(--ease), transform var(--duration) var(--ease);
	pointer-events: none;
}

.toast.is-visible {
	opacity: 1;
	transform: translate(-50%, 0);
}

/* ===============================================================
 * Cart, checkout and account — Part 4
 * =============================================================== */

/* --- Confirmation toast --------------------------------------- */

.toast {
	position: fixed;
	left: 50%;
	bottom: calc(var(--space-lg) + env(safe-area-inset-bottom, 0px));
	transform: translate(-50%, 12px);
	max-width: min(92vw, 420px);
	padding: var(--space-2xs) var(--space-md);
	background-color: var(--color-primary);
	color: var(--color-inverse-text);
	border-radius: var(--radius-pill);
	font-size: var(--fs-small);
	box-shadow: var(--shadow-md);
	opacity: 0;
	transition: opacity var(--duration) var(--ease), transform var(--duration) var(--ease);
	z-index: var(--z-toast, 90);
	pointer-events: none;
}

.toast.is-visible {
	opacity: 1;
	transform: translate(-50%, 0);
}

/* --- Free-shipping progress ----------------------------------- */

.shipping-progress {
	padding: var(--space-2xs) 0 var(--space-md);
}

.shipping-progress__label {
	margin: 0 0 var(--space-3xs);
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.shipping-progress__track {
	height: 4px;
	border-radius: var(--radius-pill);
	background-color: var(--color-border);
	overflow: hidden;
}

.shipping-progress__bar {
	display: block;
	height: 100%;
	background-color: var(--color-accent);
	transition: width var(--duration) var(--ease);
}

/* --- Mini-cart drawer ----------------------------------------- */

.mini-cart-overlay {
	position: fixed;
	inset: 0;
	background-color: rgba(20, 32, 27, 0.45);
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--duration) var(--ease), visibility var(--duration);
	z-index: var(--z-overlay);
}

.mini-cart-overlay.is-active {
	opacity: 1;
	visibility: visible;
}

.mini-cart {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	width: min(92vw, 420px);
	display: flex;
	flex-direction: column;
	background-color: var(--color-surface);
	transform: translateX(100%);
	transition: transform 260ms var(--ease);
	z-index: var(--z-drawer);
	overscroll-behavior: contain;
}

.mini-cart.is-active {
	transform: translateX(0);
}

.mini-cart__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 60px;
	padding: var(--space-2xs) var(--space-sm) var(--space-2xs) var(--space-md);
	border-bottom: var(--border-hairline);
}

.mini-cart__title {
	font-family: var(--font-heading);
	font-size: 1.125rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	margin: 0;
}

.mini-cart__inner {
	display: flex;
	flex-direction: column;
	flex: 1;
	min-height: 0;
}

.mini-cart__body {
	flex: 1;
	overflow-y: auto;
	padding: var(--space-md);
}

.mini-cart__items {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--space-md);
}

.mini-cart__item {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr) auto;
	gap: var(--space-2xs);
	align-items: start;
}

.mini-cart__media {
	display: block;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	border-radius: var(--radius-sm);
	background-color: var(--color-surface-alt);
}

.mini-cart__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.mini-cart__name {
	margin: 0 0 2px;
	font-size: var(--fs-small);
	line-height: var(--lh-snug);
}

.mini-cart__meta {
	margin: 0;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
}

.mini-cart__remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: var(--radius-pill);
	color: var(--color-muted-text);
}

.mini-cart__remove:hover {
	color: var(--color-text);
	background-color: var(--color-surface-alt);
}

.mini-cart__foot {
	display: grid;
	gap: var(--space-2xs);
	padding: var(--space-md) var(--space-md) calc(var(--space-md) + env(safe-area-inset-bottom, 0px));
	border-top: var(--border-hairline);
	background-color: var(--color-surface-alt);
}

.mini-cart__subtotal {
	display: flex;
	justify-content: space-between;
	margin: 0;
	font-family: var(--font-price);
	font-size: 1.0625rem;
}

.mini-cart__note {
	margin: 0 0 var(--space-3xs);
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
}

/* --- Empty states --------------------------------------------- */

.empty-state {
	padding: var(--space-2xl) var(--space-md);
	text-align: center;
}

.empty-state--compact {
	padding: var(--space-xl) var(--space-sm);
}

.empty-state__title {
	font-family: var(--font-heading);
	font-size: var(--fs-h3);
	margin: 0 0 var(--space-3xs);
}

.empty-state__text {
	margin: 0 0 var(--space-md);
	color: var(--color-muted-text);
}

/* --- Quantity stepper ----------------------------------------- */

.quantity.has-stepper {
	display: inline-flex;
	align-items: center;
	border: var(--border-hairline);
	border-radius: var(--radius-pill);
	overflow: hidden;
	background-color: var(--color-surface);
}

.quantity.has-stepper input.qty {
	width: 48px;
	min-height: 44px;
	border: 0;
	border-radius: 0;
	text-align: center;
	padding: 0;
	background: none;
	-moz-appearance: textfield;
}

.quantity.has-stepper input.qty::-webkit-outer-spin-button,
.quantity.has-stepper input.qty::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.qty-step {
	width: 44px;
	height: 44px;
	border: 0;
	background: none;
	font-size: 1.125rem;
	line-height: 1;
	color: var(--color-text);
	cursor: pointer;
}

.qty-step:hover {
	background-color: var(--color-surface-alt);
}

/* --- Cart page ------------------------------------------------- */

.woocommerce-cart-form__contents {
	width: 100%;
	border-collapse: collapse;
}

.woocommerce-cart-form__contents thead {
	display: none;
}

.woocommerce-cart-form__cart-item {
	display: grid;
	grid-template-columns: 88px minmax(0, 1fr);
	grid-template-areas:
		"media details"
		"media actions";
	gap: var(--space-2xs) var(--space-sm);
	padding: var(--space-md) 0;
	border-bottom: var(--border-hairline);
}

.woocommerce-cart-form__cart-item td {
	padding: 0;
	border: 0;
}

.woocommerce-cart-form__cart-item .product-thumbnail {
	grid-area: media;
}

.woocommerce-cart-form__cart-item .product-thumbnail img {
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border-radius: var(--radius-sm);
	background-color: var(--color-surface-alt);
}

.woocommerce-cart-form__cart-item .product-name {
	grid-area: details;
	font-size: var(--fs-small);
}

.cart-item__brand {
	display: block;
	font-size: var(--fs-tiny);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-muted-text);
}

.woocommerce-cart-form__cart-item .product-price {
	display: none;
}

.woocommerce-cart-form__cart-item .product-quantity,
.woocommerce-cart-form__cart-item .product-subtotal,
.woocommerce-cart-form__cart-item .product-remove {
	grid-area: actions;
	display: inline-flex;
	align-items: center;
	gap: var(--space-2xs);
}

.woocommerce-cart-form__cart-item .product-subtotal {
	font-family: var(--font-price);
	margin-left: var(--space-2xs);
}

.woocommerce-cart-form__cart-item .product-remove a {
	color: var(--color-muted-text);
	font-size: var(--fs-tiny);
	text-decoration: underline;
}

.cart-collaterals,
.cart_totals {
	margin-top: var(--space-lg);
}

.cart_totals table {
	width: 100%;
	border-collapse: collapse;
}

.cart_totals th,
.cart_totals td {
	padding: var(--space-2xs) 0;
	border-bottom: var(--border-hairline);
	text-align: left;
	font-weight: var(--fw-regular);
}

.cart_totals td {
	text-align: right;
	font-family: var(--font-price);
}

.cart_totals .order-total td,
.cart_totals .order-total th {
	border-bottom: 0;
	font-size: 1.125rem;
}

.coupon {
	display: flex;
	gap: var(--space-2xs);
	flex-wrap: wrap;
	padding-block: var(--space-md);
}

.coupon input {
	flex: 1 1 180px;
	min-width: 0;
}

.saved-items {
	padding-top: var(--space-xl);
	border-top: var(--border-hairline);
	margin-top: var(--space-xl);
}

.saved-items__title {
	font-size: var(--fs-h4);
	margin: 0 0 var(--space-md);
}

.saved-items__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--space-md);
}

.saved-items__item {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr) auto;
	gap: var(--space-sm);
	align-items: center;
}

.saved-items__media img {
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	border-radius: var(--radius-sm);
}

.saved-items__name,
.saved-items__price {
	margin: 0;
	font-size: var(--fs-small);
}

.saved-items__price {
	color: var(--color-muted-text);
}

/* --- Checkout -------------------------------------------------- */

.checkout-layout {
	display: grid;
	gap: var(--space-xl);
	padding-bottom: var(--space-2xl);
}

.checkout-login-prompt {
	padding: var(--space-2xs) var(--space-sm);
	background-color: var(--color-surface-alt);
	border-radius: var(--radius-sm);
	font-size: var(--fs-small);
}

.woocommerce-checkout h3 {
	font-size: var(--fs-h4);
	margin: var(--space-lg) 0 var(--space-2xs);
}

.woocommerce-checkout .form-row {
	margin-bottom: var(--space-2xs);
}

.woocommerce-checkout label {
	display: block;
	font-size: var(--fs-small);
	margin-bottom: 4px;
}

.woocommerce-checkout .woocommerce-checkout-review-order {
	padding: var(--space-md);
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
}

.woocommerce-checkout-review-order-table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--fs-small);
}

.woocommerce-checkout-review-order-table th,
.woocommerce-checkout-review-order-table td {
	padding: var(--space-3xs) 0;
	text-align: left;
	border-bottom: var(--border-hairline);
	font-weight: var(--fw-regular);
}

.woocommerce-checkout-review-order-table td {
	text-align: right;
	font-family: var(--font-price);
}

.wc_payment_methods {
	list-style: none;
	margin: var(--space-md) 0 0;
	padding: 0;
	display: grid;
	gap: var(--space-3xs);
}

.wc_payment_method label {
	display: inline-flex;
	align-items: center;
	gap: var(--space-2xs);
	min-height: var(--tap-target);
	cursor: pointer;
}

.woocommerce-terms-and-conditions-wrapper {
	margin-top: var(--space-md);
	font-size: var(--fs-small);
}

/* Sticky mobile total */
.checkout-sticky {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	display: none;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	padding: var(--space-2xs) var(--gutter) calc(var(--space-2xs) + env(safe-area-inset-bottom, 0px));
	background-color: var(--color-surface);
	border-top: var(--border-hairline);
	z-index: 40;
}

.woocommerce-checkout .checkout-sticky {
	display: flex;
}

.woocommerce-order-received .checkout-sticky,
.woocommerce-checkout.woocommerce-order-received .checkout-sticky {
	display: none;
}

.checkout-sticky__total {
	display: flex;
	flex-direction: column;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
}

.checkout-sticky__total strong {
	font-family: var(--font-price);
	font-size: 1.0625rem;
	color: var(--color-text);
}

/* --- Order confirmation ---------------------------------------- */

.woocommerce-order {
	display: grid;
	gap: var(--space-lg);
	padding-bottom: var(--space-2xl);
}

.woocommerce-order-overview {
	list-style: none;
	margin: 0;
	padding: var(--space-md);
	display: grid;
	gap: var(--space-2xs);
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
}

.woocommerce-order-overview li {
	display: flex;
	justify-content: space-between;
	gap: var(--space-sm);
	font-size: var(--fs-small);
}

.woocommerce-order-overview strong {
	font-family: var(--font-price);
}

/* --- My Account ------------------------------------------------ */

.woocommerce-account .woocommerce {
	display: grid;
	gap: var(--space-lg);
	padding-bottom: var(--space-2xl);
}

.woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: var(--space-3xs);
	overflow-x: auto;
	scrollbar-width: none;
}

.woocommerce-MyAccount-navigation ul::-webkit-scrollbar {
	display: none;
}

.woocommerce-MyAccount-navigation li {
	flex: 0 0 auto;
}

.woocommerce-MyAccount-navigation a {
	display: inline-flex;
	align-items: center;
	min-height: var(--tap-target);
	padding: 0 var(--space-sm);
	border: var(--border-hairline);
	border-radius: var(--radius-pill);
	font-size: var(--fs-small);
	white-space: nowrap;
}

.woocommerce-MyAccount-navigation .is-active a {
	background-color: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--color-inverse-text);
}

.account-summary {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--space-2xs);
	margin-bottom: var(--space-lg);
}

.account-summary__card {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: var(--space-md) var(--space-sm);
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
	text-align: center;
}

.account-summary__value {
	font-family: var(--font-heading);
	font-size: 1.5rem;
	line-height: 1;
}

.account-summary__label {
	font-size: var(--fs-tiny);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-muted-text);
}

.woocommerce-orders-table,
.woocommerce-table--order-details {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--fs-small);
}

.woocommerce-orders-table th,
.woocommerce-orders-table td,
.woocommerce-table--order-details th,
.woocommerce-table--order-details td {
	padding: var(--space-2xs) var(--space-3xs);
	border-bottom: var(--border-hairline);
	text-align: left;
	font-weight: var(--fw-regular);
}

/* --- Desktop --------------------------------------------------- */

@media (min-width: 768px) {
	.woocommerce-cart-form__cart-item {
		grid-template-columns: 96px minmax(0, 1fr) auto;
		grid-template-areas: "media details actions";
		align-items: center;
	}

	.cart-collaterals {
		display: flex;
		justify-content: flex-end;
	}

	.cart_totals {
		width: min(420px, 100%);
	}

	.checkout-sticky,
	.woocommerce-checkout .checkout-sticky {
		display: none;
	}
}

@media (min-width: 1024px) {
	/* WooCommerce prints one form containing the details, the heading and
	   the review; the grid is applied to the form so the review sits in
	   its own column without moving any markup. */
	form.checkout {
		display: grid;
		grid-template-columns: minmax(0, 1fr) 380px;
		gap: 0 var(--space-2xl);
		align-items: start;
	}

	form.checkout #customer_details {
		grid-column: 1;
		grid-row: 1 / span 2;
	}

	form.checkout #order_review_heading {
		grid-column: 2;
		grid-row: 1;
		margin-top: 0;
	}

	form.checkout #order_review {
		grid-column: 2;
		grid-row: 2;
	}

	.woocommerce-checkout .woocommerce-checkout-review-order {
		position: sticky;
		top: calc(var(--header-height) + var(--space-md));
	}

	.woocommerce-account .woocommerce {
		grid-template-columns: 220px minmax(0, 1fr);
		gap: var(--space-2xl);
	}

	.woocommerce-MyAccount-navigation ul {
		flex-direction: column;
		gap: 2px;
		overflow: visible;
	}

	.woocommerce-MyAccount-navigation a {
		width: 100%;
		border: 0;
		border-radius: var(--radius-sm);
	}
}

/* ===============================================================
 * Discovery, professional and offers — Part 5
 * =============================================================== */

/* --- Brand hub -------------------------------------------------- */

.brand-search {
	display: flex;
	gap: var(--space-2xs);
	max-width: 420px;
}

.brand-search input {
	flex: 1;
	min-width: 0;
}

.brand-groups {
	display: grid;
	gap: var(--space-xl);
}

.brand-group__letter {
	font-family: var(--font-heading);
	font-size: 1.25rem;
	letter-spacing: 0.12em;
	padding-bottom: var(--space-3xs);
	margin: 0 0 var(--space-md);
	border-bottom: var(--border-hairline);
}

/* --- Term archive header ---------------------------------------- */

.term-header {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	flex-wrap: wrap;
	padding-bottom: var(--space-md);
}

.term-header__media {
	width: 96px;
	flex: 0 0 auto;
}

.term-header__media img {
	width: 100%;
	height: auto;
}

.term-header__meta {
	display: flex;
	align-items: baseline;
	gap: var(--space-sm);
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.term-header__count {
	margin: 0;
}

.term-header__link {
	text-decoration: underline;
}

.related-terms {
	padding-top: var(--space-xl);
	margin-top: var(--space-xl);
	border-top: var(--border-hairline);
}

.related-terms .pill-list {
	margin-top: var(--space-sm);
}

/* --- Routine ----------------------------------------------------- */

.routine {
	padding-top: var(--space-xl);
	margin-top: var(--space-xl);
	border-top: var(--border-hairline);
}

.routine__steps {
	list-style: none;
	margin: var(--space-md) 0 0;
	padding: 0;
	display: grid;
	gap: var(--space-2xs);
	counter-reset: routine;
}

.routine-step__link {
	display: block;
	height: 100%;
	padding: var(--space-md);
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
	transition: border-color var(--duration) var(--ease);
}

.routine-step__link:hover {
	border-color: var(--color-border-strong);
}

.routine-step__number {
	display: block;
	font-size: var(--fs-tiny);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--color-accent);
}

.routine-step__title {
	display: block;
	font-family: var(--font-heading);
	font-size: 1.125rem;
	margin: 2px 0 4px;
}

.routine-step__text {
	display: block;
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

/* --- Professional ------------------------------------------------ */

.pro-intro {
	max-width: 62ch;
}

.pro-intro__note {
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.pro-points {
	list-style: none;
	margin: var(--space-lg) 0;
	padding: 0;
	display: grid;
	gap: var(--space-2xs);
}

.pro-point {
	padding: var(--space-md);
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
}

.pro-point__title {
	font-size: 1.0625rem;
	margin: 0 0 4px;
}

.pro-point__text {
	margin: 0;
	font-size: var(--fs-small);
	color: var(--color-muted-text);
}

.pro-form {
	padding-top: var(--space-xl);
	margin-top: var(--space-xl);
	border-top: var(--border-hairline);
}

.pro-form__grid {
	display: grid;
	gap: var(--space-2xs);
	margin: var(--space-md) 0;
}

.pro-form__note {
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
	max-width: 60ch;
}

.form-row__optional {
	color: var(--color-muted-text);
	font-size: var(--fs-tiny);
}

/* Professional price, only ever rendered for approved accounts */
.price-pro {
	display: block;
	margin-top: 2px;
	font-family: var(--font-price);
	font-size: var(--fs-small);
	color: var(--color-accent);
}

.price-pro__label {
	font-family: var(--font-body);
	font-size: var(--fs-tiny);
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--color-muted-text);
}

.notice--success {
	border-left: 3px solid var(--color-accent);
}

.notice--error {
	border-left: 3px solid var(--color-sale, #a6412f);
}

@media (min-width: 640px) {
	.routine__steps {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.pro-points {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.pro-form__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.form-row--wide {
		grid-column: 1 / -1;
	}
}

@media (min-width: 1024px) {
	.routine__steps {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}

	.pro-points {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* ===============================================================
 * Carrito — diseño de dos columnas (cart.php)
 * Replica el layout aprobado: artículos a la izquierda, cupón y
 * resumen a la derecha. El cálculo de importes sigue siendo de
 * WooCommerce; esto solo distribuye su propia salida.
 * =============================================================== */

.cart-layout {
	display: grid;
	gap: var(--space-xl);
	padding-bottom: var(--space-2xl);
}

.cart-main {
	min-width: 0;
}

.cart-item__links {
	display: block;
	margin-top: 2px;
}

.cart-item__links a {
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.cart-item__links a:hover {
	color: var(--color-text);
}

.cart-item__unit,
.cart-item__variation {
	display: block;
	margin: 2px 0 0;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
}

.cart-aside {
	display: grid;
	align-content: start;
	gap: var(--space-sm);
	padding: var(--space-md);
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
}

.cart-aside__title {
	font-size: 1.0625rem;
	margin: 0;
}

.cart-aside__note {
	margin: 0;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
}

.cart-aside .cart-collaterals {
	display: block;
	margin: 0;
}

.cart-aside .cart_totals {
	width: 100%;
	margin: 0;
}

/* El calculador de envío nativo de WooCommerce, cuando está activado en
   Ajustes → Envío, se presenta como el mismo bloque plegable del resto
   del sitio. */
.woocommerce-shipping-calculator {
	margin-top: var(--space-2xs);
	font-size: var(--fs-small);
}

.woocommerce-shipping-calculator .shipping-calculator-button {
	color: var(--color-accent);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.shipping-calculator-form {
	display: grid;
	gap: var(--space-2xs);
	padding: var(--space-sm);
	margin-top: var(--space-2xs);
	background-color: var(--color-surface-alt);
	border-radius: var(--radius-sm);
}

.shipping-calculator-form p {
	margin: 0;
}

.shipping-calculator-form .button {
	justify-self: start;
}

@media (min-width: 1024px) {
	.cart-layout {
		grid-template-columns: minmax(0, 1fr) 340px;
	}

	.cart-aside {
		position: sticky;
		top: calc(var(--header-height) + var(--space-md));
	}
}

/* ===============================================================
 * Mi cuenta: acceso, registro, direcciones, datos
 * WooCommerce genera estas pantallas con sus propias plantillas
 * (login, register, direcciones, editar cuenta) sin que el tema las
 * sobrescriba; sin este bloque se verían con el aspecto por defecto
 * de WooCommerce. Esto las viste con el mismo lenguaje visual que el
 * resto del sitio.
 * =============================================================== */

/* El botón genérico que WooCommerce imprime en estos formularios. */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--tap-target);
	padding: 0 var(--space-md);
	border: 1px solid var(--color-primary);
	border-radius: var(--radius-pill);
	background-color: var(--color-primary);
	color: var(--color-inverse-text);
	font-family: var(--font-button);
	font-size: var(--fs-small);
	letter-spacing: 0.02em;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--duration) var(--ease), color var(--duration) var(--ease);
}

.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover {
	background-color: var(--color-surface);
	color: var(--color-primary);
}

.woocommerce a.button.woocommerce-button--secondary,
.woocommerce a.add_to_cart_button.added {
	background-color: transparent;
	color: var(--color-primary);
}

/* Filas de formulario genéricas: login, registro, direcciones, cuenta. */
.woocommerce form .form-row {
	margin: 0 0 var(--space-sm);
}

.woocommerce form .form-row label {
	display: block;
	margin-bottom: 4px;
	font-size: var(--fs-small);
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row select,
.woocommerce form .form-row textarea {
	width: 100%;
}

.woocommerce-privacy-policy-text {
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
	margin-top: var(--space-2xs);
}

/* Acceso y registro: una sola columna en móvil, dos en escritorio. */
.woocommerce-account .col2-set,
.woocommerce-page .col2-set {
	display: grid;
	gap: var(--space-xl);
	max-width: 640px;
	margin: 0 auto;
	padding-block: var(--space-lg);
}

.woocommerce-account .col2-set .col-1,
.woocommerce-account .col2-set .col-2,
.woocommerce-page .col2-set .col-1,
.woocommerce-page .col2-set .col-2 {
	padding: var(--space-lg);
	background-color: var(--color-surface);
	border: var(--border-hairline);
	border-radius: var(--radius-md);
}

.woocommerce-form-login__rememberme {
	display: flex;
	align-items: center;
	gap: var(--space-3xs);
	margin: var(--space-2xs) 0;
	font-size: var(--fs-small);
}

.woocommerce-LostPassword,
.lost_reset_password {
	max-width: 420px;
	margin: 0 auto;
	padding-block: var(--space-lg);
}

/* Editar cuenta y direcciones, dentro del panel de Mi cuenta. */
.woocommerce-EditAccountForm,
.woocommerce-address-fields,
.woocommerce-Addresses {
	max-width: 560px;
}

.woocommerce-Addresses {
	display: grid;
	gap: var(--space-md);
	max-width: none;
}

@media (min-width: 640px) {
	.woocommerce-Addresses {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.woocommerce-Address-title {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	margin-bottom: var(--space-2xs);
}

.woocommerce-Address-title h3 {
	margin: 0;
	font-size: 1.0625rem;
}

address {
	font-style: normal;
	line-height: 1.6;
}

@media (min-width: 768px) {
	.woocommerce-account .col2-set,
	.woocommerce-page .col2-set {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* Estado del pedido: una insignia, igual que las del catálogo. */
.woocommerce-orders-table__cell-order-status mark,
.order-status {
	display: inline-flex;
	align-items: center;
	padding: 2px 10px;
	border-radius: var(--radius-pill);
	background-color: var(--color-surface-alt);
	color: var(--color-text);
	font-size: var(--fs-tiny);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	background: var(--color-surface-alt) !important;
}

/* Direcciones de facturación y envío en el detalle de un pedido. */
.woocommerce-customer-details {
	display: grid;
	gap: var(--space-md);
	margin-top: var(--space-md);
}

@media (min-width: 640px) {
	.woocommerce-customer-details {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

.woocommerce-column--billing-address,
.woocommerce-column--shipping-address {
	padding: var(--space-md);
	background-color: var(--color-surface-alt);
	border-radius: var(--radius-md);
}


/* --- Single product: normal image size, badge, size buttons (1.7.3) --- */

.product-single__media {
	max-width: 520px;
	width: 100%;
	margin-inline: auto;
}

.product-single__media .woocommerce-product-gallery,
.product-single__media .woocommerce-product-gallery__wrapper {
	width: 100% !important;
	float: none !important;
	margin: 0;
}

.product-single__media .woocommerce-product-gallery__image,
.product-single__media .woocommerce-product-gallery__image--placeholder {
	aspect-ratio: 1 / 1;
	max-height: 520px;
	background-color: var(--color-surface-alt);
	border-radius: var(--radius-md);
	overflow: hidden;
}

.product-single__media .woocommerce-product-gallery__image img {
	width: 100%;
	height: 100%;
	max-height: 520px;
	object-fit: contain;
}

.product-single__badge {
	position: absolute;
	top: var(--space-xs);
	left: var(--space-xs);
	z-index: 2;
}

/* Size selector: the dropdown becomes buttons (assets/js/product-variants.js). */
.variations_form .variations { border: 0; margin: 0 0 var(--space-xs); width: 100%; }
.variations_form .variations th,
.variations_form .variations td { display: block; padding: 0; text-align: left; }
.variations_form .variations .label { margin-bottom: var(--space-3xs); font-size: var(--fs-small); }
.variations_form .reset_variations { display: none !important; }
.variations_form .variations select.is-hidden-by-buttons {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}

.product-variant:hover:not([aria-pressed="true"]):not(:disabled) { border-color: var(--color-primary); }
.product-variant:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.product-variant:disabled { opacity: .4; text-decoration: line-through; cursor: not-allowed; }
.product-variants { margin-top: 0; }


/* --- Single product: gallery with thumbnails, rating row (1.7.4) --- */

.product-gallery__main {
	aspect-ratio: 1 / 1;
	max-height: 520px;
}

.product-gallery__main img {
	object-fit: contain;
	display: block;
	padding: var(--space-xs);
	box-sizing: border-box;
}

.product-gallery__thumbs {
	gap: var(--space-2xs);
	margin-top: var(--space-xs);
}

.product-gallery__thumb {
	flex: 0 0 80px;
	width: 80px;
	aspect-ratio: 1 / 1;
	transition: border-color .15s;
}

.product-gallery__thumb:hover { border-color: var(--color-border-strong); }
.product-gallery__thumb:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }

.product-gallery__thumb img {
	object-fit: contain;
	padding: 4px;
	box-sizing: border-box;
}

.product-gallery__thumb[aria-current="true"] {
	border-width: 2px;
	border-color: var(--color-primary);
}

.product-single__rating {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	margin: 0 0 var(--space-2xs);
	color: inherit;
	text-decoration: none;
}

.product-single__rating .star-rating svg { width: 14px; height: 14px; }

.product-single__summary .woocommerce-product-details__short-description {
	max-width: 52ch;
	line-height: 1.6;
	margin-bottom: var(--space-sm);
}

.product-single__summary .woocommerce-product-details__short-description p { margin: 0; }

/* --- Product cards: compact, equal height, more per row (1.7.5) --- */

/* More, smaller cards per row */
.grid--products,
.woocommerce ul.products,
ul.products {
	gap: var(--space-sm);
}

@media (min-width: 1024px) {
	.grid--products { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (min-width: 1280px) {
	.grid--products { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.woocommerce ul.products,
	ul.products { grid-template-columns: repeat(5, minmax(0, 1fr)); }
	.shop-results ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (min-width: 1600px) {
	.shop-results ul.products { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

/* Square image, whole product visible, not cropped */
.product-card__figure {
	position: relative;
}

.product-card__media {
	aspect-ratio: 1 / 1;
	background-color: var(--color-surface);
}

.product-card__media img {
	object-fit: contain;
	padding: var(--space-xs);
	box-sizing: border-box;
}

.product-card__placeholder svg {
	width: 40%;
	height: 40%;
}

/* Compact text block, same rhythm in every card */
.product-card__body {
	padding: var(--space-xs);
	gap: 2px;
}

.product-card__title {
	font-size: var(--fs-small);
	line-height: 1.35;
	min-height: calc(1.35em * 2);
}

.product-card__descriptor { display: none; }

.product-card__price {
	font-size: var(--fs-small);
	padding-top: var(--space-3xs);
}

/* Buttons sit on the bottom of the image instead of adding blank space */
.product-card__actions {
	position: absolute;
	left: var(--space-2xs);
	right: var(--space-2xs);
	bottom: var(--space-2xs);
	padding: 0;
	display: grid;
	gap: var(--space-3xs);
}

.product-card__actions .btn {
	min-height: 36px;
	padding-block: 0;
	font-size: var(--fs-small);
}

/* Quick view only where there is room and a mouse */
@media (hover: none), (max-width: 767px) {
	.product-card__quick { display: none; }
}

@media (min-width: 768px) {
	.product-card__body { padding: var(--space-xs); }
	.product-card__title { font-size: var(--fs-small); }
}

/* --- Product cards: buttons below the price, small heart top-right (1.7.6) --- */

.product-card__actions {
	position: static;
	opacity: 1;
	margin-top: auto;
	padding: 0 var(--space-xs) var(--space-xs);
	display: grid;
	gap: var(--space-3xs);
}

.product-card__quick { display: inline-flex; }

.product-card__actions .btn {
	min-height: 34px;
	font-size: var(--fs-small);
}

.product-card__figure .product-card__wishlist {
	position: absolute;
	top: var(--space-2xs);
	right: var(--space-2xs);
	left: auto;
	bottom: auto;
	width: 30px;
	height: 30px;
	padding: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	opacity: 1;
	z-index: 3;
}

.product-card__wishlist svg {
	width: 16px;
	height: 16px;
}

/* --- Category cards: whole picture visible, smaller, 6 per row (1.7.8) --- */

.category-card:not(.category-card--concern) .category-card__media {
	background-color: var(--color-surface);
}

.category-card:not(.category-card--concern) .category-card__media img {
	object-fit: contain;
	padding: var(--space-sm);
	box-sizing: border-box;
	display: block;
}

@media (min-width: 1024px) {
	.grid--categories { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

@media (min-width: 1280px) {
	.grid--categories { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

.category-card__title { line-height: 1.3; }

/* "(IVA incl.)" beside prices */
.woocommerce-price-suffix {
	margin-left: 0.35em;
	font-size: 0.72rem;
	font-weight: 400;
	letter-spacing: 0.02em;
	color: var(--color-muted-text);
	white-space: nowrap;
}

.product-card .woocommerce-price-suffix,
.quick-view__price .woocommerce-price-suffix {
	font-size: 0.68rem;
}

/* ===============================================================
 * Money breakdown: mini cart and checkout summary
 * =============================================================== */

/* Mini cart: per-product lines */
.mini-cart__breakdown {
	margin: var(--space-3xs) 0 0;
	display: grid;
	gap: 2px;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
}

.mini-cart__breakdown > div,
.mini-cart__totals > div {
	display: flex;
	justify-content: space-between;
	gap: var(--space-2xs);
}

.mini-cart__breakdown dt,
.mini-cart__breakdown dd,
.mini-cart__totals dt,
.mini-cart__totals dd {
	margin: 0;
}

.mini-cart__breakdown dd {
	font-family: var(--font-price);
	color: var(--color-text);
}

.mini-cart__breakdown-total {
	margin-top: 2px;
	padding-top: 2px;
	border-top: var(--border-hairline);
	font-weight: var(--fw-medium);
	color: var(--color-text);
}

/* Mini cart: footer totals */
.mini-cart__totals {
	margin: 0;
	display: grid;
	gap: 4px;
	font-size: var(--fs-small);
}

.mini-cart__totals dd {
	font-family: var(--font-price);
}

.mini-cart__totals-grand {
	margin-top: 4px;
	padding-top: 6px;
	border-top: var(--border-hairline);
	font-size: 1.0625rem;
	font-weight: var(--fw-medium);
}

/* Checkout summary */
.review-line__detail {
	display: block;
	margin-top: 2px;
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
	font-family: var(--font-body);
}

.woocommerce-checkout-review-order-table .order-total th,
.woocommerce-checkout-review-order-table .order-total td {
	border-bottom: 0;
	border-top: 1.5px solid var(--color-primary);
	padding-top: var(--space-2xs);
	font-size: 1.125rem;
	font-weight: var(--fw-medium);
}

.woocommerce-checkout-review-order-table .review-summary td {
	padding-top: var(--space-2xs);
	text-align: left;
	border-bottom: 0;
	font-family: var(--font-body);
	font-size: var(--fs-tiny);
	color: var(--color-muted-text);
}
