/**
 * WooCommerce styling.
 *
 * Approach: style Woo's own markup rather than replacing it. Woo classes
 * are stable across versions, so this survives updates far better than
 * template overrides do.
 */

/* --- Product grid ------------------------------------------------------ */

/*
 * PREMIUM SPACING
 *
 * 3 columns by default, not 4. Fewer products per row reads as "curated,"
 * not "crammed" - the single biggest lever for a premium feel (see Zappos,
 * Mr Porter, COS). Generous row gap gives each product room to breathe.
 */
.woocommerce ul.products {
	display: grid;
	grid-template-columns: repeat(var(--mc-grid-cols, 3), minmax(0, 1fr));
	gap: var(--mc-space-16) var(--mc-space-10);
	margin: 0;
	padding: 0;
	list-style: none;
}

.woocommerce ul.products.columns-2 { --mc-grid-cols: 2; }
.woocommerce ul.products.columns-3 { --mc-grid-cols: 3; }
/* Even if Woo asks for 4, hold at 3 on the widest screens for the airy look. */
.woocommerce ul.products.columns-4 { --mc-grid-cols: 3; }

.woocommerce ul.products li.product {
	width: auto !important;   /* neutralises Woo's inline float widths */
	margin: 0 !important;
	float: none !important;
	clear: none !important;
}

@media (max-width: 1024px) {
	.woocommerce ul.products {
		--mc-grid-cols: 2 !important;
		gap: var(--mc-space-12) var(--mc-space-8);
	}
}

@media (max-width: 767px) {
	.woocommerce ul.products {
		--mc-grid-cols: 2 !important;
		gap: var(--mc-space-8) var(--mc-space-4);
	}
}

/* --- Product card ------------------------------------------------------ */

.mc-card { position: relative; display: flex; flex-direction: column; }

/*
 * Fixed aspect ratio. The catalogue mixes 700x875 portrait and 700x467
 * landscape source images; without this, card heights jump and the page
 * shifts as images load (poor CLS).
 */
.mc-card__media {
	position: relative;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	margin-bottom: var(--mc-space-5);
	background: var(--mc-paper-alt);
	border-radius: var(--mc-radius);
}

.mc-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	transition: transform 400ms var(--mc-ease);
}

.mc-card:hover .mc-card__media img { transform: scale(1.03); }

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

/*
 * Related/upsell products may use Woo's default card markup (not our
 * content-product.php), so their <img> isn't wrapped in .mc-card__media.
 * Give those images the same 4:5 framing so no beige gap shows under a
 * short image.
 */
/*
 * Plain Woo cards (no .mc-card__media wrapper) get the 4:5 framing directly on
 * the image. The .mc-card__media img case is already handled above.
 */
.woocommerce ul.products li.product > a > img,
.woocommerce ul.products li.product > img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: center;
	width: 100%;
	height: auto;
	border-radius: var(--mc-radius);
	background: var(--mc-paper-alt);
	display: block;
	margin-bottom: var(--mc-space-4);
}

.mc-card__body { display: flex; flex-direction: column; gap: var(--mc-space-2); }

.mc-card__title {
	margin: 0;
	font-size: var(--mc-text-base);
	font-weight: 400;
	line-height: 1.45;
	letter-spacing: 0;
	color: var(--mc-ink-soft);
}

.mc-card a { text-decoration: none; }

/*
 * Make the whole card clickable while keeping one real link for
 * accessibility and for crawlers.
 */
.mc-card .woocommerce-LoopProduct-link::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

/* Add-to-cart must sit above the overlay to stay clickable. */
.mc-card .button,
.mc-card .add_to_cart_button { position: relative; z-index: 2; }

.mc-card__stock.is-out {
	margin: 0;
	color: var(--mc-nubuk);
	font-size: var(--mc-text-sm);
}

/* --- Price ------------------------------------------------------------- */

.woocommerce .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price,
.woocommerce ul.products li.product .price {
	margin: 0;
	color: var(--mc-ink) !important;   /* beat Fusion/Elementor yellow */
	font-size: var(--mc-text-base);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}
.woocommerce .price .amount,
.woocommerce .price bdi { color: inherit !important; }

.woocommerce .price del {
	margin-right: var(--mc-space-2);
	color: var(--mc-nubuk);
	font-weight: 400;
	text-decoration-thickness: 1px;
}

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

/*
 * Woo prints "Original price was: X. Current price is: Y." for screen
 * readers. Visually redundant next to the struck-through price, so hide
 * it visually but keep it available to assistive technology.
 */
.woocommerce .price .screen-reader-text { position: absolute !important; }

/* --- Sale badge -------------------------------------------------------- */

.woocommerce span.onsale {
	position: absolute;
	top: var(--mc-space-3);
	left: var(--mc-space-3);
	z-index: 2;
	min-height: 0;
	min-width: 0;
	margin: 0;
	padding: var(--mc-space-1) var(--mc-space-3);
	border-radius: var(--mc-radius);
	background: var(--mc-badge);
	color: var(--mc-white);
	font-size: var(--mc-text-xs);
	font-weight: 600;
	letter-spacing: var(--mc-tracking-wide);
	line-height: 1.6;
	text-transform: uppercase;
}

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

.woocommerce div.product {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	gap: var(--mc-space-12);
	align-items: start;
}

.woocommerce div.product .woocommerce-product-gallery {
	grid-column: 1;
	min-width: 0;   /* let grid child shrink instead of forcing overflow */
	width: 100% !important;
	max-width: 100% !important;
	margin: 0 !important;
	float: none !important;
}
.woocommerce div.product .woocommerce-product-gallery__wrapper { margin: 0; }
.woocommerce div.product .summary {
	grid-column: 2;
	min-width: 0;   /* critical: stops the summary column pushing past viewport */
	width: auto !important;
	margin: 0 !important;
	float: none !important;
}

/* Size picker must never exceed its column. */
.mc-size-field,
.mc-size-pills,
.mc-size-legend,
.mc-size-status { max-width: 100%; }
.mc-size-pills { box-sizing: border-box; }

/* Tabs and related products span the full width below the two columns. */
.woocommerce div.product .woocommerce-tabs,
.woocommerce div.product .related,
.woocommerce div.product .upsells {
	grid-column: 1 / -1;
	margin-top: var(--mc-space-16);
}

/*
 * Related products grid — force a clean 4-up (2-up mobile) grid that starts at
 * column 1. Woo's default float layout was leaving the first cell empty and
 * pushing cards right. Explicit grid + auto-flow fixes the "pushed" gap.
 */
/*
 * Related/upsells sit in <section class="related products"> which is a SIBLING
 * of div.product (WooCommerce closes div.product before printing related), so a
 * `div.product .related` selector never matched — that's why related fell back
 * to the 3-col shop grid. Target the section directly.
 */
.woocommerce .related.products ul.products,
.woocommerce .upsells.products ul.products,
.related.products ul.products,
.upsells.products ul.products {
	display: grid !important;
	grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
	--mc-grid-cols: 4 !important;
	gap: 2.5rem 2rem !important;
	grid-auto-flow: row;
}
.woocommerce .related.products ul.products li.product,
.woocommerce .upsells.products ul.products li.product,
.related.products ul.products li.product,
.upsells.products ul.products li.product {
	width: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	float: none !important;
	clear: none !important;
}

@media (max-width: 899px) {
	.woocommerce .related.products ul.products,
	.woocommerce .upsells.products ul.products,
	.related.products ul.products,
	.upsells.products ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		--mc-grid-cols: 2 !important;
	}
}

@media (max-width: 899px) {
	.woocommerce div.product {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--mc-space-8);
	}
	.woocommerce div.product .woocommerce-product-gallery,
	.woocommerce div.product .summary { grid-column: 1; }
}

.woocommerce div.product .product_title {
	margin-bottom: var(--mc-space-3);
	font-size: var(--mc-text-3xl);
}

.woocommerce div.product .summary .price { font-size: var(--mc-text-2xl); }

/* --- Variation swatches ------------------------------------------------
 * Variation Swatches for WooCommerce renders the size buttons. Styling
 * only - never remove woocommerce_template_loop_add_to_cart or the
 * swatches disappear.
 */

.woocommerce div.product form.cart .variations {
	width: 100%;
	margin-bottom: var(--mc-space-4);
	border: 0;
}

.woocommerce div.product form.cart .variations th,
.woocommerce div.product form.cart .variations td {
	display: block;
	padding: 0;
	text-align: left;
}

.woocommerce div.product form.cart .variations label {
	display: block;
	margin-bottom: var(--mc-space-2);
	font-size: var(--mc-text-sm);
	font-weight: 600;
}

.woocommerce div.product form.cart .button { width: 100%; padding-block: var(--mc-space-4); }

.woocommerce div.product form.cart div.quantity { margin-bottom: var(--mc-space-3); }

/* --- Trust blocks ------------------------------------------------------ */

.mc-trust {
	margin-top: var(--mc-space-6);
	border-top: 1px solid var(--mc-line);
}

.mc-trust__item { border-bottom: 1px solid var(--mc-line); }

.mc-trust__summary {
	padding: var(--mc-space-4) var(--mc-space-8) var(--mc-space-4) 0;
	position: relative;
	font-size: var(--mc-text-sm);
	font-weight: 600;
	cursor: pointer;
	list-style: none;
}

.mc-trust__summary::-webkit-details-marker { display: none; }

.mc-trust__summary::after {
	content: "+";
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	font-size: var(--mc-text-lg);
	font-weight: 400;
	color: var(--mc-nubuk);
}

.mc-trust__item[open] .mc-trust__summary::after { content: "\2212"; }

.mc-trust__body {
	padding-bottom: var(--mc-space-4);
	color: var(--mc-ink-soft);
	font-size: var(--mc-text-sm);
}

.mc-trust__body p:last-child { margin-bottom: 0; }

/* --- Tabs -------------------------------------------------------------- */

.woocommerce div.product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--mc-space-6);
	margin: 0 0 var(--mc-space-6);
	padding: 0 0 var(--mc-space-3);
	border-bottom: 1px solid var(--mc-line);
	list-style: none;
}

.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after {
	display: none; /* removes Woo's legacy rounded-tab decoration */
}

.woocommerce div.product .woocommerce-tabs ul.tabs li {
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	border-radius: 0;
}

.woocommerce div.product .woocommerce-tabs ul.tabs li a {
	padding: 0;
	font-size: var(--mc-text-sm);
	font-weight: 600;
	color: var(--mc-nubuk);
}

.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { color: var(--mc-ink); }

/* --- Notices ----------------------------------------------------------- */

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	margin-bottom: var(--mc-space-6);
	padding: var(--mc-space-4);
	border: 0;
	border-left: 3px solid var(--mc-ink);
	border-radius: var(--mc-radius);
	background: var(--mc-paper-alt);
	font-size: var(--mc-text-sm);
}

.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before { display: none; }

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

/* --- Catalogue toolbar ------------------------------------------------- */

.woocommerce .woocommerce-result-count,
.woocommerce .woocommerce-ordering {
	margin-bottom: var(--mc-space-6);
	font-size: var(--mc-text-sm);
	color: var(--mc-nubuk);
}

.woocommerce .woocommerce-ordering select { width: auto; }

/* --- Shop layout with filter sidebar ----------------------------------- */

.mc-shop {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: var(--mc-space-12);
	align-items: start;
}

.mc-shop__main { min-width: 0; }

/* Sticky filter on desktop so it stays in view while scrolling products. */
.mc-shop__filters {
	position: sticky;
	top: 88px;
}

.mc-filter__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	margin-bottom: var(--mc-space-4);
}

.mc-filter__title { margin: 0; font-size: var(--mc-text-lg); }

.mc-filter__clear {
	font-size: var(--mc-text-sm);
	color: var(--mc-nubuk);
	text-decoration: underline;
}

.mc-filter__group {
	padding-block: var(--mc-space-4);
	border-top: 1px solid var(--mc-line);
}

.mc-filter__group-title {
	margin: 0 0 var(--mc-space-3);
	font-size: var(--mc-text-sm);
	font-weight: 600;
}

/* Categories */
.mc-filter__cats { display: flex; flex-direction: column; gap: 2px; }

.mc-filter__cats a {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--mc-space-2);
	padding-block: var(--mc-space-2);
	font-size: var(--mc-text-sm);
	text-decoration: none;
}

.mc-filter__cats a:hover { color: var(--mc-cordovan); }
.mc-filter__cats a.is-active { font-weight: 600; }

.mc-filter__count {
	color: var(--mc-nubuk);
	font-size: var(--mc-text-xs);
	font-variant-numeric: tabular-nums;
}

/* Checkbox options (size / colour) */
.mc-filter__options {
	display: flex;
	flex-direction: column;
	gap: var(--mc-space-1);
	max-height: 240px;
	overflow-y: auto;
}

/* Size is compact - lay out as a wrapping grid of small boxes. */
.mc-filter__group--size .mc-filter__options {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--mc-space-2);
	max-height: none;
}

.mc-filter__group--size .mc-filter__opt {
	justify-content: center;
	padding: var(--mc-space-2);
	border: 1px solid var(--mc-line);
	border-radius: var(--mc-radius);
	text-align: center;
}

.mc-filter__group--size .mc-filter__opt input {
	/*
	 * Visually hidden but still clickable/toggleable. display:none can stop the
	 * wrapping <label> from toggling the box in some browsers, which is exactly
	 * why the size filter did nothing on submit. This keeps it in the DOM and
	 * clickable while invisible.
	 */
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	pointer-events: none;
}

/* Whole box is the click target, and shows the checked state. */
.mc-filter__group--size .mc-filter__opt {
	position: relative;
	user-select: none;
}

.mc-filter__group--size .mc-filter__opt:has(input:checked) {
	background: var(--mc-ink);
	border-color: var(--mc-ink);
	color: var(--mc-white);
}

.mc-filter__opt {
	display: flex;
	align-items: center;
	gap: var(--mc-space-2);
	font-size: var(--mc-text-sm);
	cursor: pointer;
}

.mc-filter__opt input { accent-color: var(--mc-ink); }

/* Price */
.mc-filter__price {
	display: flex;
	align-items: center;
	gap: var(--mc-space-2);
}

.mc-filter__price input { padding: var(--mc-space-2); }
.mc-filter__price-sep { color: var(--mc-nubuk); }

.mc-filter__submit { margin-top: var(--mc-space-6); }

/* --- Mobile: filter becomes a collapsible block ------------------------ */

@media (max-width: 1024px) {
	.mc-shop {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--mc-space-8);
	}
	.mc-shop__filters {
		position: static;
	}
	/* On mobile the size grid can be wider */
	.mc-filter__group--size .mc-filter__options {
		grid-template-columns: repeat(4, 1fr);
	}
}

/* Shop content marker - no visual, just a hook target */
.mc-shop-content { display: contents; }

/* --- Card colour swatches (premium cue) --------------------------------- */

.mc-card__swatches {
	display: flex;
	align-items: center;
	gap: var(--mc-space-2);
	margin-top: var(--mc-space-1);
}

.mc-swatch {
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--sw, #ccc);
	box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12);
	display: inline-block;
}

.mc-swatch__more {
	font-size: var(--mc-text-xs);
	color: var(--mc-nubuk);
	font-variant-numeric: tabular-nums;
}

/* --- Card rating -------------------------------------------------------- */

.mc-card .star-rating,
.woocommerce .products .star-rating {
	margin-top: var(--mc-space-1);
	font-size: 12px;
	color: var(--mc-ink);
}

/* --- Result count + ordering bar: premium, quiet ------------------------ */

.woocommerce-result-count {
	margin: 0;
	color: var(--mc-nubuk);
	font-size: var(--mc-text-sm);
}

.woocommerce-ordering select,
.mc-shop .woocommerce-ordering select {
	padding: var(--mc-space-2) var(--mc-space-4);
	border: 1px solid var(--mc-line);
	border-radius: var(--mc-radius);
	background: var(--mc-paper);
	font-family: inherit;
	font-size: var(--mc-text-sm);
}

/* Give the bar above products room to breathe. */
.woocommerce-products-header,
.mc-shop__main > .woocommerce-result-count,
.mc-shop__main form.woocommerce-ordering {
	margin-bottom: var(--mc-space-8);
}

/* --- Shop page title: larger, more air ---------------------------------- */

.woocommerce-products-header__title,
.mc-main--shop .page-title {
	font-size: var(--mc-text-4xl);
	font-weight: 500;
	margin-bottom: var(--mc-space-8);
}

/* -----------------------------------------------------------------------
 * Add-to-cart button colour override
 *
 * WooCommerce core ships a lilac (#a46497) for button.alt, and the single
 * variable-product add-to-cart button carries .alt with high specificity,
 * so it slips past the base button rule. Pin it to the brand ink explicitly.
 * Also covers the disabled state (shown while no size is chosen) so it reads
 * as "waiting" rather than a broken lilac.
 * -------------------------------------------------------------------- */

.woocommerce div.product form.cart .button,
.woocommerce div.product form.cart button.single_add_to_cart_button,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt {
	background: var(--mc-ink) !important;
	border-color: var(--mc-ink) !important;
	color: var(--mc-white) !important;
}

.woocommerce div.product form.cart .button:hover,
.woocommerce div.product form.cart button.single_add_to_cart_button:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover {
	background: var(--mc-cordovan) !important;
	border-color: var(--mc-cordovan) !important;
	color: var(--mc-white) !important;
}

/* Disabled add-to-cart (no variation chosen yet) - muted, not lilac. */
.woocommerce div.product form.cart button.single_add_to_cart_button.disabled,
.woocommerce div.product form.cart button.single_add_to_cart_button:disabled {
	background: var(--mc-nubuk);
	border-color: var(--mc-nubuk);
	color: var(--mc-white);
	opacity: 1;
	cursor: not-allowed;
}

/* -----------------------------------------------------------------------
 * Variation swatches (woo-variation-swatches) - premium restyle
 *
 * Replaces the plugin's default look (and its red-X sold-out state) with the
 * compact pill design we approved in preview:
 *   - available: clean pill, ink border on hover
 *   - selected:  solid ink
 *   - sold out (.disabled): muted with a thin diagonal, NOT an aggressive X
 *
 * Targets the plugin's own classes so it survives plugin updates (we only
 * add CSS, never touch plugin files).
 * -------------------------------------------------------------------- */

/* Wrapper: flex row of pills, drop the plugin's rigid grid. */
.woocommerce div.product .variable-items-wrapper.button-variable-items-wrapper {
	display: flex !important;
	flex-wrap: wrap;
	gap: 0.55rem;
	margin: 0 0 var(--mc-space-3);
	padding: 0;
}

/* Base pill. */
.woocommerce div.product .button-variable-items-wrapper .variable-item.button-variable-item {
	min-width: 54px;
	margin: 0 !important;
	padding: 0 !important;
	border: 1px solid var(--mc-line) !important;
	border-radius: 6px !important;
	background: var(--mc-paper) !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: border-color var(--mc-duration) var(--mc-ease),
		background var(--mc-duration) var(--mc-ease);
	overflow: hidden;
	position: relative;
}

.woocommerce div.product .button-variable-item .variable-item-contents {
	padding: 8px 11px;
	margin: 0;
}
.woocommerce div.product .button-variable-item .variable-item-span-button {
	font-size: var(--mc-text-sm);
	font-weight: 600;
	line-height: 1.1;
	color: var(--mc-ink);
}

/* Hover on available pills. */
.woocommerce div.product .button-variable-item:not(.disabled):hover {
	border-color: var(--mc-ink) !important;
}

/* Selected pill: solid ink. */
.woocommerce div.product .button-variable-item.selected,
.woocommerce div.product .button-variable-item[aria-checked="true"] {
	background: var(--mc-ink) !important;
	border-color: var(--mc-ink) !important;
}
.woocommerce div.product .button-variable-item.selected .variable-item-span-button,
.woocommerce div.product .button-variable-item[aria-checked="true"] .variable-item-span-button {
	color: var(--mc-white) !important;
}

/* Sold out: muted + thin diagonal, replacing the plugin's red X. */
.woocommerce div.product .button-variable-item.disabled {
	cursor: not-allowed;
	background: var(--mc-paper-alt) !important;
	border-color: var(--mc-line) !important;
	opacity: 1 !important;
}
.woocommerce div.product .button-variable-item.disabled .variable-item-span-button {
	color: var(--mc-nubuk) !important;
}
/* Kill the plugin's default cross/blur, draw our own thin diagonal. */
.woocommerce div.product .button-variable-item.disabled::before,
.woocommerce div.product .button-variable-item.disabled::after {
	content: "" !important;
	position: absolute;
	inset: 0;
	background: none !important;
	border: 0 !important;
}
.woocommerce div.product .button-variable-item.disabled::after {
	background: linear-gradient(
		to top left,
		transparent calc(50% - 0.5px),
		var(--mc-nubuk) 50%,
		transparent calc(50% + 0.5px)
	) !important;
	opacity: 0.5;
}

/* -----------------------------------------------------------------------
 * Custom size picker (our variable.php) — premium pills
 * Hides the native Woo select (kept for mechanics) and the swatches plugin
 * output; shows our pills with three stock states.
 * -------------------------------------------------------------------- */

/* Hide the real select + any swatches plugin output; JS drives them. */
.mc-size-native { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.mc-variations-form .variable-items-wrapper { display: none !important; }

.mc-size-field { margin-bottom: var(--mc-space-5); }

.mc-size-field__label {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	font-size: var(--mc-text-sm);
	color: var(--mc-nubuk);
	margin-bottom: var(--mc-space-3);
}
.mc-size-field__help { color: var(--mc-ink); text-decoration: underline; font-size: var(--mc-text-xs); }

.mc-size-pills {
	display: flex;
	flex-wrap: wrap;
	gap: 0.55rem;
	margin-bottom: var(--mc-space-3);
}

.mc-size-pill {
	position: relative;
	min-width: 54px;
	padding: 8px 11px;
	border: 1px solid var(--mc-line);
	border-radius: 6px;
	background: var(--mc-paper);
	cursor: pointer;
	text-align: center;
	font-family: inherit;
	transition: border-color var(--mc-duration) var(--mc-ease),
		background var(--mc-duration) var(--mc-ease);
}
.mc-size-pill__num { display: block; font-size: var(--mc-text-sm); font-weight: 600; line-height: 1.1; color: var(--mc-ink); }
.mc-size-pill__len { display: block; font-size: 0.6rem; color: var(--mc-nubuk); }

.mc-size-pill--available:hover { border-color: var(--mc-ink); }

.mc-size-pill.is-selected { background: var(--mc-ink); border-color: var(--mc-ink); }
.mc-size-pill.is-selected .mc-size-pill__num { color: var(--mc-white); }
.mc-size-pill.is-selected .mc-size-pill__len { color: #cfc8c0; }

/* Sold out: muted + thin diagonal, no red X. */
.mc-size-pill--soldout {
	cursor: not-allowed;
	background: var(--mc-paper-alt);
	overflow: hidden;
}
.mc-size-pill--soldout .mc-size-pill__num,
.mc-size-pill--soldout .mc-size-pill__len { color: var(--mc-nubuk); }
.mc-size-pill--soldout::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(
		to top left,
		transparent calc(50% - 0.5px),
		var(--mc-nubuk) 50%,
		transparent calc(50% + 0.5px)
	);
	opacity: 0.5;
}

/* Last pair: subtle warning dot. */
.mc-size-pill__dot {
	position: absolute;
	top: -4px;
	right: -4px;
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: var(--mc-warning);
	border: 2px solid var(--mc-paper);
}

.mc-size-legend {
	display: flex;
	gap: 1.1rem;
	flex-wrap: wrap;
	margin-bottom: var(--mc-space-3);
	font-size: 0.72rem;
	color: var(--mc-nubuk);
}
.mc-size-legend span { display: inline-flex; align-items: center; gap: 0.4rem; }
.mc-lg { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
.mc-lg--av { border: 1px solid var(--mc-line); }
.mc-lg--out { background: var(--mc-paper-alt); border: 1px solid var(--mc-line); position: relative; overflow: hidden; }
.mc-lg--out::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top left, transparent 45%, var(--mc-nubuk) 50%, transparent 55%); }
.mc-lg--last { background: var(--mc-warning); border-radius: 50%; }

.mc-size-status { font-size: 0.83rem; margin: 0 0 var(--mc-space-4); min-height: 1.2em; color: var(--mc-nubuk); }
.mc-size-status.is-ok { color: var(--mc-ink-soft); }
.mc-size-status.is-last { color: var(--mc-warning); font-weight: 500; }
