/*
 * MADZILLA - WooCommerce storefront styles.
 * Loaded only on shop, product, cart, checkout, account and search views.
 */

/* ===================================================================
   1. Product grid & card
   =================================================================== */

.mdz-products {
	display: grid;
	grid-template-columns: repeat(var(--mdz-cols-mobile, 2), minmax(0, 1fr));
	gap: clamp(16px, 2.4vw, 32px) clamp(10px, 1.6vw, 24px);
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 768px) {
	.mdz-products { grid-template-columns: repeat(var(--mdz-cols-tablet, 2), minmax(0, 1fr)); }
}

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

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

.mdz-card__media {
	position: relative;
	overflow: hidden;
	background: var(--mdz-light);
	margin-bottom: var(--mdz-s3);
}

.mdz-card__media-link { display: block; position: relative; }

.mdz-card__img {
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	transition: opacity 0.5s var(--mdz-ease), transform 0.7s var(--mdz-ease);
}

.mdz-card__img--hover {
	position: absolute;
	inset: 0;
	opacity: 0;
}

@media (hover: hover) {
	.mdz-card:hover .mdz-card__img--hover { opacity: 1; }
	.mdz-card:hover .mdz-card__img--primary { opacity: 0; }
	.mdz-card:not(:has(.mdz-card__img--hover)):hover .mdz-card__img--primary { transform: scale(1.04); opacity: 1; }
}

.mdz-card__badges {
	position: absolute;
	top: var(--mdz-s3);
	left: var(--mdz-s3);
	display: grid;
	gap: 4px;
	justify-items: start;
	pointer-events: none;
	z-index: 2;
}

.mdz-card__actions {
	position: absolute;
	top: var(--mdz-s3);
	right: var(--mdz-s3);
	display: grid;
	gap: 6px;
	z-index: 2;
}

.mdz-card__action,
.mdz-card .mdz-wishlist-btn,
.mdz-card .yith-wcwl-add-to-wishlist a,
.mdz-card .tinv-wishlist a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	border: 1px solid var(--mdz-border);
	background: rgba(var(--mdz-white-rgb), 0.94);
	color: var(--mdz-black);
	cursor: pointer;
	opacity: 0;
	transform: translateX(6px);
	transition: opacity var(--mdz-dur) var(--mdz-ease), transform var(--mdz-dur) var(--mdz-ease), border-color var(--mdz-dur) var(--mdz-ease);
	padding: 0;
	font-size: 0;
}

.mdz-card:hover .mdz-card__action,
.mdz-card:focus-within .mdz-card__action,
.mdz-card:hover .mdz-wishlist-btn,
.mdz-card:focus-within .mdz-wishlist-btn { opacity: 1; transform: none; }

@media (hover: none) {
	.mdz-card__action,
	.mdz-card .mdz-wishlist-btn { opacity: 1; transform: none; }
}

.mdz-card__action:hover,
.mdz-card .mdz-wishlist-btn:hover { border-color: var(--mdz-black); }

.mdz-card__action--wishlist { padding: 0; border: 0; background: none; width: auto; height: auto; }

.mdz-wishlist-btn.is-active { background: var(--mdz-black); color: var(--mdz-white); border-color: var(--mdz-black); }

.mdz-card__cart {
	position: absolute;
	left: var(--mdz-s3);
	right: var(--mdz-s3);
	bottom: var(--mdz-s3);
	opacity: 0;
	transform: translateY(8px);
	transition: opacity var(--mdz-dur) var(--mdz-ease), transform var(--mdz-dur) var(--mdz-ease);
	z-index: 2;
}

@media (hover: hover) and (min-width: 1024px) {
	.mdz-card:hover .mdz-card__cart,
	.mdz-card:focus-within .mdz-card__cart { opacity: 1; transform: none; }
}

@media (max-width: 1023px) {
	.mdz-card__cart { position: static; opacity: 1; transform: none; margin-top: var(--mdz-s2); }
}

.mdz-card__cart .button,
.mdz-card__cart .added_to_cart {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 44px;
	padding: 0 var(--mdz-s4);
	border: 1px solid var(--mdz-black);
	background: var(--mdz-black);
	color: var(--mdz-white);
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-xs);
	font-weight: 600;
	letter-spacing: var(--mdz-nav-track);
	text-transform: var(--mdz-btn-case);
	cursor: pointer;
}
.mdz-card__cart .button:hover { background: var(--mdz-dark); border-color: var(--mdz-dark); }
.mdz-card__cart .added_to_cart { margin-top: 6px; background: transparent; color: var(--mdz-black); }
.mdz-card__cart .button.loading { opacity: 0.7; pointer-events: none; }
.mdz-card__cart .button.added::after { content: ""; }

.mdz-card__body { display: grid; gap: 6px; }

.mdz-card__title { margin: 0; font-size: var(--mdz-t-base); font-weight: 600; line-height: 1.35; letter-spacing: 0; }
.mdz-card__title a::before { content: ""; position: absolute; inset: 0; z-index: 1; }
.mdz-card__title a:hover { color: var(--mdz-mid); }

.mdz-card__price { font-size: var(--mdz-t-base); color: var(--mdz-black); }
.mdz-card__price del { color: var(--mdz-mid); opacity: 0.8; margin-right: 6px; font-weight: 400; }
.mdz-card__price ins { text-decoration: none; font-weight: 600; }
.mdz-card__price .woocommerce-Price-amount { font-variant-numeric: tabular-nums; }

.mdz-card__rating { line-height: 1; }

.mdz-card__swatches { display: flex; flex-wrap: wrap; gap: 5px; margin: 2px 0 0; padding: 0; list-style: none; position: relative; z-index: 2; }
.mdz-card__swatch {
	width: 14px;
	height: 14px;
	border-radius: 999px;
	border: 1px solid var(--mdz-border);
	background: linear-gradient(135deg, var(--mdz-swatch-a) 0 50%, var(--mdz-swatch-b) 50% 100%);
}
.mdz-card__swatch-more { font-size: var(--mdz-t-xs); color: var(--mdz-mid); line-height: 14px; }

.mdz-card__sizes { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 0; padding: 0; list-style: none; }
.mdz-card__size { font-size: var(--mdz-t-xs); color: var(--mdz-mid); letter-spacing: 0.04em; }
.mdz-card__size.is-unavailable { text-decoration: line-through; opacity: 0.45; }

/* ===================================================================
   2. Shop archive
   =================================================================== */

.mdz-shop-head { padding-block: var(--mdz-s3) var(--mdz-s5); max-width: 780px; }
.mdz-shop-head__title { margin: 0 0 var(--mdz-s3); font-size: var(--mdz-t-h1); text-transform: uppercase; }
/* Category description: a bordered box directly under the heading, so the
   copy reads as a deliberate panel rather than a stray paragraph. */
.mdz-shop-head__intro {
	margin-top: var(--mdz-s4);
	padding: var(--mdz-s4) var(--mdz-s5);
	border: 1px solid var(--mdz-border);
	background: var(--mdz-white);
	color: var(--mdz-mid);
	font-size: var(--mdz-t-md);
	line-height: 1.7;
}

.mdz-shop-head__intro > :first-child { margin-top: 0; }
.mdz-shop-head__intro p:last-child { margin-bottom: 0; }

/* The shop-manager-only prompt shown when a category has no description. */
.mdz-shop-head__intro--hint {
	border-style: dashed;
	background: var(--mdz-light);
	font-size: var(--mdz-t-sm);
}

.mdz-subcats { display: flex; flex-wrap: wrap; gap: var(--mdz-s2); margin: var(--mdz-s4) 0 0; padding: 0; list-style: none; }

.mdz-shop-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--mdz-s3);
	padding-block: var(--mdz-s3);
	border-block: 1px solid var(--mdz-border);
	position: sticky;
	top: 0;
	background: var(--mdz-white);
	z-index: 20;
}

.mdz-shop-toolbar__count { margin: 0; font-size: var(--mdz-t-sm); color: var(--mdz-mid); }

@media (min-width: 1024px) {
	.mdz-shop-toolbar__filter { display: none; }
	.mdz-shop-toolbar { position: static; }
}

.mdz-shop-toolbar__sort .woocommerce-ordering { margin: 0; }
.mdz-shop-toolbar__sort select {
	appearance: none;
	border: 1px solid var(--mdz-border);
	background: var(--mdz-white);
	padding: 9px 34px 9px 12px;
	font-family: var(--mdz-font-body);
	font-size: var(--mdz-t-sm);
	color: var(--mdz-black);
	cursor: pointer;
	background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
	background-position: calc(100% - 17px) 55%, calc(100% - 12px) 55%;
	background-size: 5px 5px, 5px 5px;
	background-repeat: no-repeat;
}
.mdz-shop-toolbar__sort select:focus { border-color: var(--mdz-black); outline: none; }

.mdz-active-filters { display: flex; flex-wrap: wrap; gap: var(--mdz-s2); margin: var(--mdz-s4) 0 0; padding: 0; list-style: none; }

.mdz-shop-layout { display: block; padding-block: var(--mdz-s5) var(--mdz-section-y); }

@media (min-width: 1024px) {
	.mdz-shop-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--mdz-s8); }
}

.mdz-shop-rail { display: none; }
@media (min-width: 1024px) {
	.mdz-shop-rail { display: block; align-self: start; position: sticky; top: 24px; max-height: calc(100vh - 48px); overflow-y: auto; padding-right: 8px; }
}

.mdz-load-more { display: flex; justify-content: center; padding-top: var(--mdz-s7); }
.mdz-load-more.is-done { display: none; }

/* ===================================================================
   3. Filters
   =================================================================== */

.mdz-filters { display: grid; gap: var(--mdz-s5); }
.mdz-filters__clear { font-size: var(--mdz-t-sm); }

.mdz-filter-group { border-bottom: 1px solid var(--mdz-border); padding-bottom: var(--mdz-s4); }
.mdz-filter-group:last-child { border-bottom: 0; }

.mdz-filter-group__title { margin: 0; }
.mdz-filter-group__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 0 0 var(--mdz-s3);
	border: 0;
	background: transparent;
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-xs);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--mdz-black);
	cursor: pointer;
}

.mdz-filter-group__icon { position: relative; width: 10px; height: 10px; }
.mdz-filter-group__icon::before,
.mdz-filter-group__icon::after { content: ""; position: absolute; background: currentColor; transition: transform var(--mdz-dur) var(--mdz-ease); }
.mdz-filter-group__icon::before { top: 50%; left: 0; width: 100%; height: 1px; }
.mdz-filter-group__icon::after { left: 50%; top: 0; width: 1px; height: 100%; }
.mdz-filter-group__toggle[aria-expanded="true"] .mdz-filter-group__icon::after { transform: scaleY(0); }

.mdz-filter-group__body[hidden] { display: none; }

.mdz-filter-list { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; max-height: 260px; overflow-y: auto; }

.mdz-filter-item {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: var(--mdz-t-sm);
	color: var(--mdz-dark);
}
.mdz-filter-item__box {
	flex: none;
	width: 15px;
	height: 15px;
	border: 1px solid var(--mdz-border);
	position: relative;
}
.mdz-filter-item.is-active .mdz-filter-item__box { background: var(--mdz-black); border-color: var(--mdz-black); }
.mdz-filter-item.is-active .mdz-filter-item__box::after {
	content: "";
	position: absolute;
	left: 4px;
	top: 1px;
	width: 4px;
	height: 8px;
	border: solid var(--mdz-white);
	border-width: 0 1.5px 1.5px 0;
	transform: rotate(45deg);
}
.mdz-filter-item__count { margin-left: auto; font-size: var(--mdz-t-xs); color: var(--mdz-mid); }
.mdz-filter-item:hover { color: var(--mdz-black); }
.mdz-filter-item.is-active { font-weight: 600; }

.mdz-filter-pills { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.mdz-filter-pill {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	min-height: 34px;
	padding: 0 10px;
	border: 1px solid var(--mdz-border);
	font-size: var(--mdz-t-sm);
	letter-spacing: 0.04em;
}
.mdz-filter-pill:hover { border-color: var(--mdz-black); }
.mdz-filter-pill.is-active { background: var(--mdz-black); border-color: var(--mdz-black); color: var(--mdz-white); }

.mdz-filter-swatches { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.mdz-filter-swatch {
	display: block;
	width: 26px;
	height: 26px;
	border-radius: 999px;
	border: 1px solid var(--mdz-border);
	background: linear-gradient(135deg, var(--mdz-swatch-a) 0 50%, var(--mdz-swatch-b) 50% 100%);
	box-shadow: inset 0 0 0 2px var(--mdz-white);
}
.mdz-filter-swatch.is-active { border-color: var(--mdz-black); box-shadow: inset 0 0 0 2px var(--mdz-white), 0 0 0 1px var(--mdz-black); }

.mdz-filter-price { display: flex; align-items: center; gap: 6px; }
.mdz-filter-price input {
	width: 100%;
	min-width: 0;
	padding: 8px 10px;
	border: 1px solid var(--mdz-border);
	background: var(--mdz-white);
	font: inherit;
	font-size: var(--mdz-t-sm);
}
.mdz-filter-price input:focus { border-color: var(--mdz-black); outline: none; }
.mdz-filter-price__sep { color: var(--mdz-mid); }

.mdz-filter-drawer__body { flex: 1; overflow-y: auto; padding: var(--mdz-s5); }

.mdz-filter-widget { margin-top: var(--mdz-s5); }
.mdz-filter-widget__title { font-size: var(--mdz-t-xs); letter-spacing: 0.12em; text-transform: uppercase; }

/* ===================================================================
   3b. Neutralise WooCommerce's float layout
   -------------------------------------------------------------------
   WooCommerce ships a float-and-percentage grid (div.images 48%,
   div.summary 48%, .col-1/.col-2 48%, account nav 30/68). Those
   selectors outrank plain single-class theme selectors, so they squash
   any CSS grid laid over them. Every rule below is scoped with an extra
   theme class purely to outrank the WooCommerce original.
   =================================================================== */

.woocommerce div.product.mdz-product div.images,
.woocommerce div.product.mdz-product .woocommerce-product-gallery,
.woocommerce div.product.mdz-product .mdz-product__gallery,
.woocommerce div.product.mdz-product div.summary,
.woocommerce div.product.mdz-product .mdz-product__summary {
	float: none;
	width: auto;
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

.mdz-auth .u-columns.col2-set .col-1,
.mdz-auth .u-columns.col2-set .col-2,
.mdz-auth .mdz-auth__grid > .mdz-auth__panel {
	float: none;
	width: auto;
	max-width: none;
	margin: 0;
}

/* Product cards on shop, category and tag archives.
   The loop-start override emits `<ul class="products mdz-products">`, so
   WooCommerce's own card geometry matches:

       .woocommerce ul.products li.product { float: left; width: 22.05%; }

   Inside the theme's CSS grid that percentage resolves against the grid
   CELL, not the row - so a 236px column produced a 52px card. The extra
   `.mdz-products` and `[class*="columns-"]` in the selectors below exist
   only to outrank WooCommerce's originals in woocommerce-layout.css and
   woocommerce-smallscreen.css. */
.woocommerce ul.products.mdz-products li.product,
.woocommerce-page ul.products.mdz-products li.product,
.woocommerce ul.products.mdz-products[class*="columns-"] li.product,
.woocommerce-page ul.products.mdz-products[class*="columns-"] li.product,
.woocommerce ul.products.mdz-products[class*="columns-"] li.product:nth-child(2n),
.woocommerce-page ul.products.mdz-products[class*="columns-"] li.product:nth-child(2n) {
	float: none;
	clear: none;
	width: auto;
	max-width: none;
	margin: 0;
	padding: 0;
}

/* Cross-sells reuse the same loop markup. */
.woocommerce .cart-collaterals .cross-sells ul.products.mdz-products li,
.woocommerce-page .cart-collaterals .cross-sells ul.products.mdz-products li {
	float: none;
	width: auto;
	margin: 0;
}

/* ===================================================================
   3c. Neutralise WooCommerce's clearfix pseudo-elements
   -------------------------------------------------------------------
   WooCommerce contains its float layout with the classic clearfix:

       .woocommerce ul.products::before,
       .woocommerce ul.products::after { content: " "; display: table; }

   That is harmless around floats, but this theme rebuilds those same
   containers as CSS grid and flex - and a generated box on a grid or
   flex container is not decoration, it is a real grid / flex ITEM.
   Two of them, first and last. The visible symptoms were:

     - every product grid started in column two, because ::before
       occupied the first cell;
     - the sign-in and create-account panels sat diagonally, because
       ::before and ::after took two of the four cells;
     - form rows and notices gained phantom rows and gaps.

   The theme uses no float layout anywhere inside WooCommerce markup,
   so the clearfixes have nothing left to clear and are removed on the
   containers the theme owns. The list mirrors WooCommerce's own
   selectors rather than using a wildcard, so third-party markup that
   still relies on floats is untouched.
   =================================================================== */

.woocommerce ul.products::before,
.woocommerce ul.products::after,
.woocommerce-page ul.products::before,
.woocommerce-page ul.products::after,
.woocommerce .products ul::before,
.woocommerce .products ul::after,
.woocommerce .col2-set::before,
.woocommerce .col2-set::after,
.woocommerce-page .col2-set::before,
.woocommerce-page .col2-set::after,
.woocommerce form .form-row::before,
.woocommerce form .form-row::after,
.woocommerce-page form .form-row::before,
.woocommerce-page form .form-row::after,
.woocommerce .woocommerce-billing-fields::before,
.woocommerce .woocommerce-billing-fields::after,
.woocommerce .woocommerce-shipping-fields::before,
.woocommerce .woocommerce-shipping-fields::after,
.woocommerce-page .woocommerce-billing-fields::before,
.woocommerce-page .woocommerce-billing-fields::after,
.woocommerce-page .woocommerce-shipping-fields::before,
.woocommerce-page .woocommerce-shipping-fields::after,
.woocommerce .cart-collaterals::before,
.woocommerce .cart-collaterals::after,
.woocommerce-page .cart-collaterals::before,
.woocommerce-page .cart-collaterals::after,
.woocommerce .cart-collaterals .shipping_calculator::before,
.woocommerce .cart-collaterals .shipping_calculator::after,
.woocommerce-page .cart-collaterals .shipping_calculator::before,
.woocommerce-page .cart-collaterals .shipping_calculator::after,
.woocommerce .woocommerce-pagination ul.page-numbers::before,
.woocommerce .woocommerce-pagination ul.page-numbers::after,
.woocommerce-page .woocommerce-pagination ul.page-numbers::before,
.woocommerce-page .woocommerce-pagination ul.page-numbers::after,
.woocommerce ul.cart_list li::before,
.woocommerce ul.cart_list li::after,
.woocommerce ul.product_list_widget li::before,
.woocommerce ul.product_list_widget li::after,
.woocommerce-page ul.cart_list li::before,
.woocommerce-page ul.cart_list li::after,
.woocommerce-page ul.product_list_widget li::before,
.woocommerce-page ul.product_list_widget li::after,
.woocommerce ul.cart_list li dl::before,
.woocommerce ul.cart_list li dl::after,
.woocommerce ul.product_list_widget li dl::before,
.woocommerce ul.product_list_widget li dl::after,
.woocommerce div.product div.thumbnails::before,
.woocommerce div.product div.thumbnails::after,
.woocommerce-page div.product div.thumbnails::before,
.woocommerce-page div.product div.thumbnails::after,
.woocommerce div.product .woocommerce-tabs ul.tabs::before,
.woocommerce div.product .woocommerce-tabs ul.tabs::after,
.woocommerce-page div.product .woocommerce-tabs ul.tabs::before,
.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,
.woocommerce div.product #reviews .comment::before,
.woocommerce div.product #reviews .comment::after,
.woocommerce-page div.product #reviews .comment::before,
.woocommerce-page div.product #reviews .comment::after,
.woocommerce div.product p.cart::before,
.woocommerce div.product p.cart::after,
.woocommerce div.product form.cart::before,
.woocommerce div.product form.cart::after,
.woocommerce .woocommerce-product-rating::before,
.woocommerce .woocommerce-product-rating::after,
.woocommerce .woocommerce-breadcrumb::before,
.woocommerce .woocommerce-breadcrumb::after,
.woocommerce #reviews #comments .add_review::before,
.woocommerce #reviews #comments .add_review::after,
.woocommerce #reviews #comments ol.commentlist::before,
.woocommerce #reviews #comments ol.commentlist::after,
.woocommerce #reviews #comments ol.commentlist li .comment-text::before,
.woocommerce #reviews #comments ol.commentlist li .comment-text::after,
.woocommerce #review_form #respond::before,
.woocommerce #review_form #respond::after,
.woocommerce .widget_shopping_cart .buttons::before,
.woocommerce .widget_shopping_cart .buttons::after,
.woocommerce.widget_shopping_cart .buttons::before,
.woocommerce.widget_shopping_cart .buttons::after,
.woocommerce ul.order_details::before,
.woocommerce ul.order_details::after,
.woocommerce .woocommerce-widget-layered-nav-list .woocommerce-widget-layered-nav-list__item::before,
.woocommerce .woocommerce-widget-layered-nav-list .woocommerce-widget-layered-nav-list__item::after,
.woocommerce .widget_rating_filter ul li::before,
.woocommerce .widget_rating_filter ul li::after,
.woocommerce-account .addresses .title::before,
.woocommerce-account .addresses .title::after,
.woocommerce-cart .wc-proceed-to-checkout::before,
.woocommerce-cart .wc-proceed-to-checkout::after,
.woocommerce-checkout .wc-proceed-to-checkout::before,
.woocommerce-checkout .wc-proceed-to-checkout::after,
#add_payment_method .wc-proceed-to-checkout::before,
#add_payment_method .wc-proceed-to-checkout::after,
.woocommerce-cart #payment ul.payment_methods::before,
.woocommerce-cart #payment ul.payment_methods::after,
.woocommerce-checkout #payment ul.payment_methods::before,
.woocommerce-checkout #payment ul.payment_methods::after,
#add_payment_method #payment ul.payment_methods::before,
#add_payment_method #payment ul.payment_methods::after,
.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::before,
.woocommerce-cart #payment ul.payment_methods li:not(.woocommerce-notice)::after,
.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::before,
.woocommerce-checkout #payment ul.payment_methods li:not(.woocommerce-notice)::after,
#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::before,
#add_payment_method #payment ul.payment_methods li:not(.woocommerce-notice)::after,
.woocommerce #content table.cart td.actions .coupon::before,
.woocommerce #content table.cart td.actions .coupon::after,
.woocommerce table.cart td.actions .coupon::before,
.woocommerce table.cart td.actions .coupon::after,
.woocommerce-page table.cart td.actions .coupon::before,
.woocommerce-page table.cart td.actions .coupon::after {
	content: none;
	display: none;
}

/* Belt and braces: the same removal keyed off the theme's own classes,
   so these containers stay correct even if a plugin renders them
   outside the `.woocommerce` wrapper the rules above depend on. */
.mdz-auth .col2-set::before,
.mdz-auth .col2-set::after,
.mdz-auth__grid::before,
.mdz-auth__grid::after,
.mdz-auth .form-row::before,
.mdz-auth .form-row::after,
ul.products.mdz-products::before,
ul.products.mdz-products::after,
.mdz-card__swatches::before,
.mdz-card__swatches::after {
	content: none;
	display: none;
}

/* Notices: the theme lays these out as flex, so both generated boxes
   have to go - the icon is drawn by the theme's own markup instead. */
.woocommerce-error::before,
.woocommerce-error::after,
.woocommerce-info::before,
.woocommerce-info::after,
.woocommerce-message::before,
.woocommerce-message::after {
	content: none;
	display: none;
}

/* ===================================================================
   4. Single product
   =================================================================== */

.mdz-product__top { display: grid; gap: var(--mdz-s6); padding-block: var(--mdz-s4) var(--mdz-s8); }

@media (min-width: 1024px) {
	.mdz-product__top { grid-template-columns: minmax(0, 1.15fr) minmax(380px, 0.85fr); gap: clamp(32px, 5vw, 80px); }
}

.mdz-product__summary { display: grid; gap: var(--mdz-s4); align-content: start; }

@media (min-width: 1024px) {
	/* Sticky only. An earlier version added max-height + overflow-y here;
	   because a non-visible overflow on one axis forces the other to
	   compute as auto, that clipped the panel horizontally and cut the
	   product title off mid-word. */
	.mdz-product--sticky .mdz-product__summary {
		position: sticky;
		top: 24px;
		align-self: start;
	}
}

.mdz-product .product_title {
	margin: 0;
	font-size: var(--mdz-t-h2);
	text-transform: uppercase;
	letter-spacing: -0.01em;
}

.mdz-product__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--mdz-s4);
	font-size: var(--mdz-t-xs);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--mdz-mid);
	order: -1;
}
.mdz-product__sku span { color: var(--mdz-dark); }
.mdz-product__stock.is-out-of-stock { color: var(--mdz-black); font-weight: 600; }

.mdz-product .price {
	margin: 0;
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-h4);
	font-weight: 600;
	color: var(--mdz-black);
	font-variant-numeric: tabular-nums;
}
.mdz-product .price del { color: var(--mdz-mid); font-weight: 400; margin-right: 8px; }
.mdz-product .price ins { text-decoration: none; }

.mdz-product .woocommerce-product-details__short-description { color: var(--mdz-mid); max-width: 56ch; }

.mdz-product .woocommerce-product-rating { display: flex; align-items: center; gap: 8px; margin: 0; font-size: var(--mdz-t-sm); }
.mdz-product .woocommerce-product-rating .woocommerce-review-link { color: var(--mdz-mid); text-decoration: underline; text-underline-offset: 2px; }

/* Gallery */
.mdz-product__gallery { position: relative; }

.mdz-product .woocommerce-product-gallery { position: relative; }
.mdz-product .woocommerce-product-gallery__wrapper { margin: 0; }
.mdz-product .woocommerce-product-gallery__image img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; background: var(--mdz-light); }

.mdz-product .woocommerce-product-gallery__trigger {
	position: absolute;
	top: var(--mdz-s3);
	right: var(--mdz-s3);
	z-index: 3;
	width: 38px;
	height: 38px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--mdz-border);
	background: rgba(var(--mdz-white-rgb), 0.94);
	color: var(--mdz-black);
	font-size: 0;
	text-indent: -9999px;
	overflow: hidden;
}
.mdz-product .woocommerce-product-gallery__trigger::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='16.2' y1='16.2' x2='21' y2='21'/%3E%3Cline x1='8' y1='11' x2='14' y2='11'/%3E%3Cline x1='11' y1='8' x2='11' y2='14'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 18px;
}

.mdz-product .flex-control-thumbs {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 6px;
	margin: 6px 0 0;
	padding: 0;
	list-style: none;
}
.mdz-product .flex-control-thumbs li { margin: 0; }
.mdz-product .flex-control-thumbs img {
	width: 100%;
	aspect-ratio: 3 / 4;
	object-fit: cover;
	opacity: 0.55;
	cursor: pointer;
	transition: opacity var(--mdz-dur) var(--mdz-ease);
	background: var(--mdz-light);
}
.mdz-product .flex-control-thumbs img.flex-active,
.mdz-product .flex-control-thumbs img:hover { opacity: 1; }

@media (min-width: 900px) {
	.mdz-product--gallery-thumbs-left .woocommerce-product-gallery {
		display: grid;
		grid-template-columns: 84px minmax(0, 1fr);
		gap: var(--mdz-s3);
		align-items: start;
	}
	.mdz-product--gallery-thumbs-left .woocommerce-product-gallery__wrapper { grid-column: 2; grid-row: 1; }
	.mdz-product--gallery-thumbs-left .flex-control-thumbs {
		grid-column: 1;
		grid-row: 1;
		grid-template-columns: 1fr;
		gap: 6px;
		margin: 0;
	}
	.mdz-product--gallery-thumbs-left .woocommerce-product-gallery__trigger { right: var(--mdz-s3); }
}

@media (min-width: 900px) {
	.mdz-product--gallery-stacked .woocommerce-product-gallery__wrapper {
		display: grid;
		gap: 6px;
	}
	.mdz-product--gallery-stacked .woocommerce-product-gallery__image { display: block !important; opacity: 1 !important; width: 100% !important; float: none !important; }
	.mdz-product--gallery-stacked .flex-control-thumbs { display: none; }
}

/* Variation form + swatches */
.mdz-product form.cart { display: grid; gap: var(--mdz-s4); margin: 0; }
.mdz-product .variations { width: 100%; border: 0; margin: 0; display: grid; gap: var(--mdz-s4); }
.mdz-product .variations tbody,
.mdz-product .variations tr,
.mdz-product .variations th,
.mdz-product .variations td { display: block; width: 100%; padding: 0; border: 0; text-align: left; }
.mdz-product .variations tr { display: grid; gap: 8px; }
.mdz-product .variations th label {
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-xs);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--mdz-black);
}
.mdz-product .variations .reset_variations {
	display: inline-block;
	margin-top: 6px;
	font-size: var(--mdz-t-xs);
	color: var(--mdz-mid);
	text-decoration: underline;
}

.mdz-swatches { display: grid; gap: 6px; }
.mdz-swatches__list { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }

.mdz-swatch {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--mdz-border);
	background: var(--mdz-white);
	color: var(--mdz-black);
	cursor: pointer;
	transition: border-color var(--mdz-dur) var(--mdz-ease), background var(--mdz-dur) var(--mdz-ease), color var(--mdz-dur) var(--mdz-ease);
	padding: 0;
}

.mdz-swatch--button {
	min-width: 52px;
	min-height: 44px;
	padding: 0 12px;
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-sm);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.mdz-swatch--button:hover { border-color: var(--mdz-black); }
.mdz-swatch--button.is-selected { background: var(--mdz-black); border-color: var(--mdz-black); color: var(--mdz-white); }

.mdz-swatch--color {
	width: 36px;
	height: 36px;
	border-radius: 999px;
	padding: 3px;
}
.mdz-swatch__chip {
	display: block;
	width: 100%;
	height: 100%;
	border-radius: 999px;
	background: linear-gradient(135deg, var(--mdz-swatch-a) 0 50%, var(--mdz-swatch-b) 50% 100%);
}
.mdz-swatch--color:hover { border-color: var(--mdz-mid); }
.mdz-swatch--color.is-selected { border-color: var(--mdz-black); border-width: 1px; box-shadow: 0 0 0 1px var(--mdz-black); }

.mdz-swatch--image { width: 56px; height: 72px; padding: 2px; }
.mdz-swatch--image img { width: 100%; height: 100%; object-fit: cover; }
.mdz-swatch--image.is-selected { border-color: var(--mdz-black); box-shadow: 0 0 0 1px var(--mdz-black); }

.mdz-swatch.is-unavailable { opacity: 0.35; }
.mdz-swatch.is-unavailable::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top left, transparent calc(50% - 0.5px), currentColor calc(50% - 0.5px), currentColor calc(50% + 0.5px), transparent calc(50% + 0.5px));
	opacity: 0.6;
}

.mdz-swatches__selected { margin: 0; font-size: var(--mdz-t-sm); color: var(--mdz-mid); min-height: 1.2em; }
.mdz-swatches__selected:empty { display: none; }

.mdz-size-guide {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	justify-self: end;
	margin-bottom: calc(var(--mdz-s3) * -1);
	font-size: var(--mdz-t-sm);
	color: var(--mdz-mid);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.mdz-product__summary > .mdz-size-guide { justify-self: end; }
.mdz-size-guide:hover { color: var(--mdz-black); }

/* Quantity + add to cart */
.mdz-qty {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--mdz-border);
	height: 48px;
}
.mdz-qty__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 100%;
	border: 0;
	background: transparent;
	color: var(--mdz-black);
	cursor: pointer;
}
.mdz-qty__btn:hover { background: var(--mdz-light); }
.mdz-qty .qty {
	width: 44px;
	height: 100%;
	border: 0;
	text-align: center;
	font: inherit;
	font-size: var(--mdz-t-base);
	background: transparent;
	-moz-appearance: textfield;
	appearance: textfield;
}
.mdz-qty .qty::-webkit-outer-spin-button,
.mdz-qty .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.mdz-qty .qty:focus { outline: none; }

.mdz-product form.cart .quantity { display: inline-flex; }

.mdz-product form.cart .single_add_to_cart_button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 52px;
	padding: 0 var(--mdz-s6);
	border: 1px solid var(--mdz-black);
	background: var(--mdz-black);
	color: var(--mdz-white);
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-sm);
	font-weight: 600;
	letter-spacing: var(--mdz-nav-track);
	text-transform: var(--mdz-btn-case);
	cursor: pointer;
	transition: background var(--mdz-dur) var(--mdz-ease);
}
.mdz-product form.cart .single_add_to_cart_button:hover { background: var(--mdz-dark); border-color: var(--mdz-dark); }
.mdz-product form.cart .single_add_to_cart_button.disabled { opacity: 0.35; cursor: not-allowed; }

.mdz-buy-now { min-height: 52px; }

.mdz-product__cart-row { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--mdz-s2); align-items: center; }

.mdz-product .woocommerce-variation-add-to-cart { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--mdz-s2); align-items: center; }
.mdz-product .woocommerce-variation-add-to-cart .mdz-buy-now { grid-column: 1 / -1; }
.mdz-product form.cart:not(.variations_form) { grid-template-columns: 1fr; }
.mdz-product form.cart:not(.variations_form) .quantity { grid-column: 1; }

.mdz-product .woocommerce-variation-price { font-family: var(--mdz-font-head); font-size: var(--mdz-t-h4); font-weight: 600; }
.mdz-product .woocommerce-variation-availability { font-size: var(--mdz-t-sm); color: var(--mdz-mid); }

.mdz-product__wishlist { margin-top: -8px; }
.mdz-wishlist-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	border: 0;
	background: transparent;
	color: var(--mdz-dark);
	cursor: pointer;
	padding: 0;
	font-size: var(--mdz-t-sm);
}
.mdz-wishlist-btn--labelled { min-height: 40px; }
.mdz-wishlist-btn:hover { color: var(--mdz-black); }
.mdz-wishlist-btn.is-active .mdz-icon { fill: currentColor; }

.mdz-assurances { display: grid; gap: 10px; margin: 0; padding: var(--mdz-s4) 0 0; list-style: none; border-top: 1px solid var(--mdz-border); }
.mdz-assurances__item { display: flex; align-items: flex-start; gap: 10px; font-size: var(--mdz-t-sm); color: var(--mdz-mid); }
.mdz-assurances__item .mdz-icon { flex: none; margin-top: 2px; color: var(--mdz-black); }

/* Tabs / accordion */
.mdz-product__bottom { padding-bottom: var(--mdz-section-y); }

.mdz-product-info { margin-bottom: var(--mdz-s8); }
.mdz-product-info__tablist { display: none; gap: var(--mdz-s6); border-bottom: 1px solid var(--mdz-border); }

.mdz-product-info__tab {
	position: relative;
	padding: 0 0 var(--mdz-s4);
	border: 0;
	background: transparent;
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-sm);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--mdz-mid);
	cursor: pointer;
}
.mdz-product-info__tab::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 2px;
	background: var(--mdz-black);
	transform: scaleX(0);
	transition: transform var(--mdz-dur) var(--mdz-ease);
}
.mdz-product-info__tab.is-active { color: var(--mdz-black); }
.mdz-product-info__tab.is-active::after { transform: scaleX(1); }

.mdz-product-info__accordion-trigger {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: var(--mdz-s4) 0;
	border: 0;
	border-bottom: 1px solid var(--mdz-border);
	background: transparent;
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-base);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--mdz-black);
	cursor: pointer;
	text-align: left;
}

.mdz-product-info__icon { position: relative; width: 12px; height: 12px; flex: none; }
.mdz-product-info__icon::before,
.mdz-product-info__icon::after { content: ""; position: absolute; background: currentColor; transition: transform var(--mdz-dur) var(--mdz-ease); }
.mdz-product-info__icon::before { top: 50%; left: 0; width: 100%; height: 1px; }
.mdz-product-info__icon::after { left: 50%; top: 0; width: 1px; height: 100%; }
.mdz-product-info__accordion-trigger[aria-expanded="true"] .mdz-product-info__icon::after { transform: scaleY(0); }

.mdz-product-info__body { padding-block: var(--mdz-s4); max-width: 72ch; color: var(--mdz-dark); }
.mdz-product-info__body[hidden] { display: none; }

@media (min-width: 900px) {
	.mdz-product-info__tablist { display: flex; flex-wrap: wrap; }
	.mdz-product-info__accordion-trigger { display: none; }
	.mdz-product-info__panel[hidden] { display: none; }
	.mdz-product-info__body { padding-block: var(--mdz-s6); }
}

.mdz-product-info .shop_attributes { width: 100%; border-collapse: collapse; }
.mdz-product-info .shop_attributes th,
.mdz-product-info .shop_attributes td {
	padding: 10px 0;
	border-bottom: 1px solid var(--mdz-border);
	text-align: left;
	font-size: var(--mdz-t-sm);
	vertical-align: top;
}
.mdz-product-info .shop_attributes th { width: 200px; font-weight: 600; color: var(--mdz-black); }
.mdz-product-info .shop_attributes td { color: var(--mdz-mid); }
.mdz-product-info .shop_attributes td p { margin: 0; }

/* Reviews */
.mdz-product-info #reviews .commentlist { list-style: none; padding: 0; margin: 0 0 var(--mdz-s6); display: grid; gap: var(--mdz-s5); }
.mdz-product-info #reviews .comment_container { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: var(--mdz-s3); }
.mdz-product-info #reviews .avatar { border-radius: 999px; }
.mdz-product-info #reviews .woocommerce-review__author { font-weight: 600; }
.mdz-product-info #reviews .woocommerce-review__published-date { font-size: var(--mdz-t-xs); color: var(--mdz-mid); }
.mdz-product-info #reviews .woocommerce-review__verified { font-size: var(--mdz-t-xs); letter-spacing: 0.08em; text-transform: uppercase; color: var(--mdz-black); }
.mdz-product-info #review_form input[type="text"],
.mdz-product-info #review_form input[type="email"],
.mdz-product-info #review_form textarea {
	width: 100%;
	padding: 12px var(--mdz-s4);
	border: 1px solid var(--mdz-border);
	font: inherit;
	background: var(--mdz-white);
}
.mdz-product-info #review_form textarea { min-height: 140px; }
.mdz-product-info #review_form .submit {
	min-height: 48px;
	padding: 0 var(--mdz-s6);
	border: 1px solid var(--mdz-black);
	background: var(--mdz-black);
	color: var(--mdz-white);
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-sm);
	letter-spacing: var(--mdz-nav-track);
	text-transform: var(--mdz-btn-case);
	cursor: pointer;
}

/* Star ratings from WooCommerce */
.woocommerce .star-rating {
	font-size: 12px;
	letter-spacing: 2px;
	color: var(--mdz-black);
}

/* Related / upsells */
.related > h2,
.up-sells > h2 {
	font-size: var(--mdz-t-h3);
	text-transform: uppercase;
	margin-bottom: var(--mdz-s5);
}
.related,
.up-sells { padding-top: var(--mdz-s7); }

.mdz-recently-viewed { padding-block: var(--mdz-s7) 0; }
.mdz-recently-viewed .mdz-container { padding-inline: 0; }

/* ===================================================================
   5. Quick view
   =================================================================== */

.mdz-quickview { display: grid; gap: var(--mdz-s5); padding: var(--mdz-s5); }
@media (min-width: 800px) {
	.mdz-quickview { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--mdz-s6); padding: var(--mdz-s6); }
}
.mdz-quickview__stage { background: var(--mdz-light); }
.mdz-quickview__image { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.mdz-quickview__thumbs { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin: 6px 0 0; padding: 0; list-style: none; }
.mdz-quickview__thumb { padding: 0; border: 1px solid transparent; background: none; cursor: pointer; }
.mdz-quickview__thumb img { aspect-ratio: 3 / 4; object-fit: cover; opacity: 0.6; }
.mdz-quickview__thumb.is-active img,
.mdz-quickview__thumb:hover img { opacity: 1; }
.mdz-quickview__body { display: grid; gap: var(--mdz-s3); align-content: start; }
.mdz-quickview__title { margin: 0; font-size: var(--mdz-t-h3); text-transform: uppercase; }
.mdz-quickview__excerpt { color: var(--mdz-mid); font-size: var(--mdz-t-sm); }
.mdz-quickview__full { justify-self: start; }
.mdz-quickview__loading { padding: var(--mdz-s8) var(--mdz-s5); text-align: center; color: var(--mdz-mid); }
.mdz-quickview .price { font-family: var(--mdz-font-head); font-size: var(--mdz-t-h4); font-weight: 600; }
.mdz-quickview form.cart { display: grid; gap: var(--mdz-s3); }
.mdz-quickview .single_add_to_cart_button {
	width: 100%;
	min-height: 48px;
	border: 1px solid var(--mdz-black);
	background: var(--mdz-black);
	color: var(--mdz-white);
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-sm);
	letter-spacing: var(--mdz-nav-track);
	text-transform: var(--mdz-btn-case);
	cursor: pointer;
}

/* ===================================================================
   6. Mini cart
   =================================================================== */

.mdz-mini-cart__content { flex: 1 1 auto; display: flex; flex-direction: column; overflow: hidden; }
.mdz-mini-cart__inner { display: flex; flex-direction: column; height: 100%; min-height: 0; }

.mdz-ship-bar { padding: var(--mdz-s4) var(--mdz-s5); border-bottom: 1px solid var(--mdz-border); flex: none; }
.mdz-ship-bar__text { margin: 0 0 8px; font-size: var(--mdz-t-sm); color: var(--mdz-mid); display: flex; align-items: center; gap: 6px; }
.mdz-ship-bar__text.is-complete { color: var(--mdz-black); font-weight: 600; }
.mdz-ship-bar__track { display: block; height: 3px; background: var(--mdz-border); }
.mdz-ship-bar__fill { display: block; height: 100%; background: var(--mdz-black); transition: width 0.5s var(--mdz-ease); }

.mdz-mini-cart__items {
	flex: 1 1 auto;
	overflow-y: auto;
	overscroll-behavior: contain;
	margin: 0;
	padding: 0;
	list-style: none;
}

.mdz-mini-cart__item {
	position: relative;
	display: grid;
	grid-template-columns: 72px minmax(0, 1fr) 32px;
	gap: var(--mdz-s3);
	padding: var(--mdz-s4) var(--mdz-s5);
	border-bottom: 1px solid var(--mdz-border);
}
.mdz-mini-cart__item.is-busy { opacity: 0.5; pointer-events: none; }

.mdz-mini-cart__media img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; background: var(--mdz-light); }
.mdz-mini-cart__body { display: grid; gap: 6px; align-content: start; min-width: 0; }
.mdz-mini-cart__name { margin: 0; font-size: var(--mdz-t-sm); font-weight: 600; line-height: 1.35; }
.mdz-mini-cart__variation { margin: 0; font-size: var(--mdz-t-xs); color: var(--mdz-mid); }
.mdz-mini-cart__variation p { margin: 0; }
.mdz-mini-cart__row { display: flex; align-items: center; justify-content: space-between; gap: var(--mdz-s2); margin-top: 2px; }
.mdz-mini-cart__qty { display: inline-flex; align-items: center; border: 1px solid var(--mdz-border); height: 32px; }
.mdz-mini-cart__qty .mdz-qty__btn { width: 28px; }
.mdz-mini-cart__qty-value { min-width: 24px; text-align: center; font-size: var(--mdz-t-sm); font-variant-numeric: tabular-nums; }
.mdz-mini-cart__price { font-size: var(--mdz-t-sm); font-variant-numeric: tabular-nums; }
.mdz-mini-cart__price del { color: var(--mdz-mid); }

.mdz-mini-cart__remove {
	align-self: start;
	display: inline-flex;
	padding: 4px;
	border: 0;
	background: transparent;
	color: var(--mdz-mid);
	cursor: pointer;
}
.mdz-mini-cart__remove:hover { color: var(--mdz-black); }

.mdz-mini-cart__foot { flex: none; padding: var(--mdz-s5); border-top: 1px solid var(--mdz-border); background: var(--mdz-white); }
.mdz-mini-cart__subtotal { display: flex; align-items: baseline; justify-content: space-between; font-size: var(--mdz-t-md); margin-bottom: 4px; }
.mdz-mini-cart__subtotal strong { font-family: var(--mdz-font-head); }
.mdz-mini-cart__note { margin: 0 0 var(--mdz-s4); font-size: var(--mdz-t-xs); color: var(--mdz-mid); }
.mdz-mini-cart__actions { display: grid; gap: 8px; }

.mdz-mini-cart__empty { flex: 1; display: grid; align-content: center; justify-items: center; gap: var(--mdz-s2); padding: var(--mdz-s8) var(--mdz-s5); text-align: center; }
.mdz-mini-cart__empty-title { font-family: var(--mdz-font-head); font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; margin: var(--mdz-s2) 0 0; }
.mdz-mini-cart__empty-text { color: var(--mdz-mid); font-size: var(--mdz-t-sm); margin-bottom: var(--mdz-s4); }
.mdz-mini-cart__empty .mdz-btn { width: 100%; }

/* ===================================================================
   7. Cart page
   =================================================================== */

.woocommerce-cart .mdz-main,
.woocommerce-checkout .mdz-main,
.woocommerce-account .mdz-main { padding-block: var(--mdz-s6) var(--mdz-section-y); }

.woocommerce-cart .woocommerce { max-width: var(--mdz-container); margin-inline: auto; padding-inline: var(--mdz-gutter); }

/* page.php already supplies .mdz-container, so the inner wrapper must not add
   a second gutter or a second max-width on top of it. */
.mdz-container .woocommerce { max-width: none; padding-inline: 0; }

.woocommerce-cart table.shop_table {
	width: 100%;
	border-collapse: collapse;
	border: 0;
	margin-bottom: var(--mdz-s6);
}
.woocommerce-cart table.shop_table th {
	padding: 0 var(--mdz-s3) var(--mdz-s3);
	border-bottom: 1px solid var(--mdz-black);
	text-align: left;
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-xs);
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.woocommerce-cart table.shop_table td {
	padding: var(--mdz-s4) var(--mdz-s3);
	border-bottom: 1px solid var(--mdz-border);
	vertical-align: middle;
}
.woocommerce-cart .product-thumbnail img { width: 84px; aspect-ratio: 3 / 4; object-fit: cover; background: var(--mdz-light); }
.woocommerce-cart .product-name a { font-weight: 600; }
.woocommerce-cart .product-remove a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border: 1px solid var(--mdz-border);
	color: var(--mdz-mid);
	font-size: 16px;
	line-height: 1;
}
.woocommerce-cart .product-remove a:hover { border-color: var(--mdz-black); color: var(--mdz-black); }

.woocommerce-cart .coupon { display: flex; gap: 8px; flex-wrap: wrap; }
.woocommerce-cart .coupon input[type="text"] {
	min-height: 46px;
	padding: 0 var(--mdz-s4);
	border: 1px solid var(--mdz-border);
	font: inherit;
}

.woocommerce-cart .cart_totals { max-width: 440px; margin-left: auto; }
.woocommerce-cart .cart_totals h2 { font-size: var(--mdz-t-h4); text-transform: uppercase; }
.woocommerce-cart .cart_totals table { width: 100%; border-collapse: collapse; }
.woocommerce-cart .cart_totals th,
.woocommerce-cart .cart_totals td { padding: 12px 0; border-bottom: 1px solid var(--mdz-border); text-align: left; font-size: var(--mdz-t-base); }
.woocommerce-cart .cart_totals td { text-align: right; }
.woocommerce-cart .wc-proceed-to-checkout { margin-top: var(--mdz-s5); }

@media (max-width: 767px) {
	.woocommerce-cart table.shop_table thead { display: none; }
	.woocommerce-cart table.shop_table tr { display: grid; grid-template-columns: 84px minmax(0, 1fr) auto; gap: var(--mdz-s3); padding: var(--mdz-s4) 0; border-bottom: 1px solid var(--mdz-border); align-items: center; }
	.woocommerce-cart table.shop_table td { display: block; padding: 0; border: 0; }
	.woocommerce-cart table.shop_table td.product-remove { grid-column: 3; grid-row: 1; }
	.woocommerce-cart table.shop_table td.product-thumbnail { grid-column: 1; grid-row: 1 / span 4; }
	.woocommerce-cart table.shop_table td.actions { grid-column: 1 / -1; }
	.woocommerce-cart .cart_totals { max-width: none; }
}

/* Buttons everywhere in WooCommerce */
.woocommerce .button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 var(--mdz-s6);
	border: 1px solid var(--mdz-black);
	border-radius: var(--mdz-radius);
	background: var(--mdz-black);
	color: var(--mdz-white);
	font-family: var(--mdz-font-head);
	font-size: var(--mdz-t-sm);
	font-weight: 600;
	letter-spacing: var(--mdz-nav-track);
	text-transform: var(--mdz-btn-case);
	cursor: pointer;
	transition: background var(--mdz-dur) var(--mdz-ease);
}
.woocommerce .button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover { background: var(--mdz-dark); border-color: var(--mdz-dark); color: var(--mdz-white); }
.woocommerce .button:disabled { opacity: 0.4; }

/*
 * WooCommerce paints its primary ".alt" buttons purple (#a46497) through
 * `.woocommerce button.button.alt`, which outranks the rules above — that is
 * Add to bag, Proceed to checkout and Place order. Match its specificity to
 * take them back to black.
 */
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt,
.woocommerce #respond input#submit.alt {
	background: var(--mdz-black);
	border-color: var(--mdz-black);
	color: var(--mdz-white);
}

.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover,
.woocommerce #respond input#submit.alt:hover {
	background: var(--mdz-dark);
	border-color: var(--mdz-dark);
	color: var(--mdz-white);
}

/* Disabled state, including "please choose an option" on variable products. */
.woocommerce a.button.alt.disabled,
.woocommerce button.button.alt.disabled,
.woocommerce button.button.alt:disabled,
.woocommerce button.button.alt:disabled[disabled],
.woocommerce button.button.alt.wc-variation-selection-needed {
	background: var(--mdz-black);
	border-color: var(--mdz-black);
	color: var(--mdz-white);
	opacity: 0.35;
	cursor: not-allowed;
}

/* Notices */
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
	display: flex;
	align-items: center;
	gap: var(--mdz-s3);
	flex-wrap: wrap;
	margin: 0 0 var(--mdz-s5);
	padding: var(--mdz-s4) var(--mdz-s5);
	border: 1px solid var(--mdz-border);
	border-left: 2px solid var(--mdz-black);
	background: var(--mdz-light);
	list-style: none;
	font-size: var(--mdz-t-sm);
}
.woocommerce-message .button,
.woocommerce-info .button { margin-left: auto; min-height: 40px; }
.woocommerce-error { border-left-color: var(--mdz-dark); }

/* WooCommerce prefixes notices with a glyph from its own icon font, which
   renders as an empty box wherever that font is not loaded. The notice already
   carries a border marker, so drop it. */
.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before { display: none; content: none; }

/* ===================================================================
   8. Checkout
   =================================================================== */

.mdz-checkout__grid { display: grid; gap: var(--mdz-s6); }
@media (min-width: 1024px) {
	.mdz-checkout__grid { grid-template-columns: minmax(0, 1.25fr) minmax(340px, 0.75fr); gap: clamp(32px, 5vw, 72px); align-items: start; }
	.mdz-checkout__aside { position: sticky; top: 24px; }
}

.mdz-checkout__panel h3 { font-size: var(--mdz-t-h4); text-transform: uppercase; margin-bottom: var(--mdz-s4); }

.mdz-checkout .form-row { display: grid; gap: 6px; margin: 0 0 var(--mdz-s4); }
.mdz-checkout .form-row label { font-size: var(--mdz-t-xs); letter-spacing: 0.08em; text-transform: uppercase; color: var(--mdz-mid); }
.mdz-checkout .form-row .required { color: var(--mdz-black); text-decoration: none; }

.mdz-checkout input[type="text"],
.mdz-checkout input[type="email"],
.mdz-checkout input[type="tel"],
.mdz-checkout input[type="password"],
.mdz-checkout textarea,
.mdz-checkout .select2-container .select2-selection--single,
.mdz-checkout select {
	width: 100%;
	min-height: 50px;
	padding: 0 var(--mdz-s4);
	border: 1px solid var(--mdz-border);
	border-radius: var(--mdz-radius);
	background: var(--mdz-white);
	font: inherit;
	font-size: var(--mdz-t-base);
	color: var(--mdz-dark);
}
.mdz-checkout textarea { min-height: 96px; padding-block: 12px; }
.mdz-checkout input:focus,
.mdz-checkout textarea:focus,
.mdz-checkout select:focus { border-color: var(--mdz-black); outline: none; }

.mdz-checkout .select2-container--default .select2-selection--single .select2-selection__rendered { line-height: 48px; padding-left: 0; color: var(--mdz-dark); }
.mdz-checkout .select2-container--default .select2-selection--single .select2-selection__arrow { height: 48px; }

@media (min-width: 640px) {
	.mdz-checkout .form-row-first,
	.mdz-checkout .form-row-last { display: inline-grid; width: calc(50% - 6px); }
	.mdz-checkout .form-row-first { margin-right: 8px; }
}

.mdz-checkout__summary {
	padding: var(--mdz-s5);
	border: 1px solid var(--mdz-border);
	background: var(--mdz-light);
}
.mdz-checkout__summary-title { margin: 0 0 var(--mdz-s4); font-size: var(--mdz-t-xs); letter-spacing: 0.12em; text-transform: uppercase; }
.mdz-checkout__summary table { width: 100%; border-collapse: collapse; }
.mdz-checkout__summary th,
.mdz-checkout__summary td { padding: 10px 0; border-bottom: 1px solid var(--mdz-border); text-align: left; font-size: var(--mdz-t-sm); }
.mdz-checkout__summary td { text-align: right; }
.mdz-checkout__summary .order-total th,
.mdz-checkout__summary .order-total td { font-family: var(--mdz-font-head); font-size: var(--mdz-t-md); font-weight: 700; border-bottom: 0; }
.mdz-checkout__summary .product-name { color: var(--mdz-dark); }

.mdz-checkout #payment { margin-top: var(--mdz-s4); }
.mdz-checkout #payment ul.payment_methods { list-style: none; margin: 0 0 var(--mdz-s4); padding: 0; display: grid; gap: 8px; }
.mdz-checkout #payment ul.payment_methods li { border: 1px solid var(--mdz-border); background: var(--mdz-white); padding: var(--mdz-s4); }
.mdz-checkout #payment div.payment_box { margin-top: var(--mdz-s3); font-size: var(--mdz-t-sm); color: var(--mdz-mid); }
.mdz-checkout #place_order { width: 100%; min-height: 54px; }

.mdz-checkout-focus .mdz-header__nav-bar { display: none; }

/* ===================================================================
   9. My account
   =================================================================== */

.woocommerce-account .woocommerce { max-width: var(--mdz-container); margin-inline: auto; padding-inline: var(--mdz-gutter); }

.woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.woocommerce-account .woocommerce-MyAccount-navigation a {
	display: block;
	padding: 12px var(--mdz-s4);
	border: 1px solid var(--mdz-border);
	font-size: var(--mdz-t-sm);
	letter-spacing: 0.04em;
}
.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a { background: var(--mdz-black); border-color: var(--mdz-black); color: var(--mdz-white); }

/* WooCommerce floats the account nav at 30% / 68% at every width; below the
   breakpoint we want it stacked, so the floats are cleared explicitly. */
.woocommerce-account .woocommerce-MyAccount-navigation,
.woocommerce-account .woocommerce-MyAccount-content {
	float: none;
	width: auto;
	margin-bottom: var(--mdz-s5);
}

@media (min-width: 900px) {
	.woocommerce-account .woocommerce-MyAccount-navigation { float: left; width: 250px; margin-bottom: 0; }
	.woocommerce-account .woocommerce-MyAccount-content { float: right; width: calc(100% - 300px); margin-bottom: 0; }
	.woocommerce-account .woocommerce::after { content: ""; display: table; clear: both; }
}

/* ---- Sign in / Create account ---- */

.mdz-auth { max-width: 980px; margin-inline: auto; padding-block: var(--mdz-s5); }

.mdz-auth__grid { display: grid; gap: var(--mdz-s5); }

@media (min-width: 860px) {
	.mdz-auth--split .mdz-auth__grid {
		grid-template-columns: 1fr 1fr;
		gap: 0;
	}
	/* One hairline between the two panels rather than two stacked borders. */
	.mdz-auth--split .mdz-auth__panel--register {
		border-left: 1px solid var(--mdz-border);
		margin-left: -1px;
	}
}

.mdz-auth__panel { padding: var(--mdz-s6); border: 1px solid var(--mdz-border); }

@media (min-width: 860px) {
	.mdz-auth--split .mdz-auth__panel { padding: var(--mdz-s7); }
}

.mdz-auth__title {
	margin: 0 0 var(--mdz-s2);
	font-size: var(--mdz-t-h4);
	text-transform: uppercase;
	letter-spacing: 0.02em;
}

.mdz-auth__intro { margin: 0 0 var(--mdz-s5); font-size: var(--mdz-t-sm); color: var(--mdz-mid); }
.mdz-auth__note { margin: 0 0 var(--mdz-s4); font-size: var(--mdz-t-sm); color: var(--mdz-mid); }

.mdz-auth .form-row { display: grid; gap: 6px; margin: 0 0 var(--mdz-s4); }
.mdz-auth label { font-size: var(--mdz-t-xs); letter-spacing: 0.08em; text-transform: uppercase; color: var(--mdz-mid); }
.mdz-auth .required { color: var(--mdz-black); text-decoration: none; }

.mdz-auth input[type="text"],
.mdz-auth input[type="email"],
.mdz-auth input[type="password"] {
	width: 100%;
	min-height: 50px;
	padding: 0 var(--mdz-s4);
	border: 1px solid var(--mdz-border);
	border-radius: var(--mdz-radius);
	background: var(--mdz-white);
	font: inherit;
	font-size: var(--mdz-t-base);
	color: var(--mdz-dark);
}
.mdz-auth input:focus { border-color: var(--mdz-black); outline: none; }

.mdz-auth__actions { display: grid; gap: var(--mdz-s4); margin-top: var(--mdz-s5); }
.mdz-auth .woocommerce-form-login__rememberme {
	display: flex;
	align-items: center;
	gap: var(--mdz-s2);
	font-size: var(--mdz-t-sm);
	letter-spacing: 0;
	text-transform: none;
	color: var(--mdz-dark);
	cursor: pointer;
}
.mdz-auth .woocommerce-form-login__rememberme input { width: 16px; height: 16px; accent-color: var(--mdz-black); }

.mdz-auth .lost_password { margin: var(--mdz-s4) 0 0; font-size: var(--mdz-t-sm); }
.mdz-auth .lost_password a { color: var(--mdz-mid); text-decoration: underline; text-underline-offset: 3px; }
.mdz-auth .lost_password a:hover { color: var(--mdz-black); }

/* Social login buttons, styled so plugin output matches the theme. */
.mdz-social-login { margin-bottom: var(--mdz-s5); }
.mdz-social-login__buttons { display: grid; gap: var(--mdz-s2); }

.mdz-social-login__buttons a,
.mdz-social-login__buttons button,
.mdz-social-login__buttons .nsl-button {
	display: flex !important;
	align-items: center;
	justify-content: center;
	gap: var(--mdz-s2);
	width: 100% !important;
	max-width: none !important;
	min-height: 50px;
	margin: 0 !important;
	border-radius: var(--mdz-radius) !important;
	font-family: var(--mdz-font-head) !important;
	font-size: var(--mdz-t-sm) !important;
	font-weight: 600 !important;
	letter-spacing: var(--mdz-nav-track);
	text-transform: var(--mdz-btn-case);
	box-shadow: none !important;
}

/* Google keeps its own mark on white; everything else goes monochrome. */
.mdz-social-login__buttons .nsl-button-google { background: var(--mdz-white) !important; border: 1px solid var(--mdz-border) !important; }
.mdz-social-login__buttons .nsl-button-google span { color: var(--mdz-dark) !important; }
.mdz-social-login__buttons .nsl-button-facebook { background: var(--mdz-black) !important; border: 1px solid var(--mdz-black) !important; }
.mdz-social-login__buttons .nsl-button-facebook span,
.mdz-social-login__buttons .nsl-button-facebook svg { color: var(--mdz-white) !important; fill: var(--mdz-white) !important; }

.mdz-social-login__divider {
	position: relative;
	margin-top: var(--mdz-s5);
	text-align: center;
	font-size: var(--mdz-t-sm);
	color: var(--mdz-mid);
}
.mdz-social-login__divider::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	right: 0;
	height: 1px;
	background: var(--mdz-border);
}
.mdz-social-login__divider span { position: relative; padding: 0 var(--mdz-s4); background: var(--mdz-white); }

.mdz-auth__admin-hint {
	margin-top: var(--mdz-s5);
	padding: var(--mdz-s4);
	border-left: 2px solid var(--mdz-black);
	background: var(--mdz-light);
	font-size: var(--mdz-t-sm);
	color: var(--mdz-mid);
}
.mdz-auth__admin-hint a { color: var(--mdz-black); text-decoration: underline; }

.woocommerce-account form.login,
.woocommerce-account form.register {
	max-width: 420px;
	padding: var(--mdz-s6);
	border: 1px solid var(--mdz-border);
}

/* The theme's own auth template supplies its own frame. */
.mdz-auth form.login,
.mdz-auth form.register { max-width: none; padding: 0; border: 0; }
.woocommerce-account form.login input[type="text"],
.woocommerce-account form.login input[type="password"],
.woocommerce-account form.register input[type="text"],
.woocommerce-account form.register input[type="email"],
.woocommerce-account form.register input[type="password"] {
	width: 100%;
	min-height: 48px;
	padding: 0 var(--mdz-s4);
	border: 1px solid var(--mdz-border);
	font: inherit;
}

/* ===================================================================
   10. Misc WooCommerce resets
   =================================================================== */

.woocommerce .woocommerce-breadcrumb { display: none; }
.woocommerce-store-notice { background: var(--mdz-black); color: var(--mdz-white); }

.woocommerce-result-count,
.woocommerce-ordering { margin: 0; }

.woocommerce-no-products-found { padding-block: var(--mdz-s8); text-align: center; }

.woocommerce-pagination ul { display: flex; gap: 6px; list-style: none; margin: var(--mdz-s7) 0 0; padding: 0; justify-content: center; }
.woocommerce-pagination ul li a,
.woocommerce-pagination ul li span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 42px;
	height: 42px;
	border: 1px solid var(--mdz-border);
	font-size: var(--mdz-t-sm);
}
.woocommerce-pagination ul li span.current { background: var(--mdz-black); border-color: var(--mdz-black); color: var(--mdz-white); }

/* PhotoSwipe overrides so the lightbox matches the palette */
.pswp__bg { background: rgba(var(--mdz-black-rgb), 0.94); }

/* ---------- RTL ---------- */

[dir="rtl"] .mdz-card__badges { left: auto; right: var(--mdz-s3); }
[dir="rtl"] .mdz-card__actions { right: auto; left: var(--mdz-s3); transform: translateX(-6px); }
[dir="rtl"] .mdz-card:hover .mdz-card__action { transform: none; }
[dir="rtl"] .mdz-product .woocommerce-product-gallery__trigger { right: auto; left: var(--mdz-s3); }
[dir="rtl"] .mdz-filter-item__count { margin-left: 0; margin-right: auto; }
[dir="rtl"] .woocommerce-cart .cart_totals { margin-left: 0; margin-right: auto; }
[dir="rtl"] .woocommerce-cart .cart_totals td { text-align: left; }
[dir="rtl"] .mdz-checkout__summary td { text-align: left; }
@media (min-width: 640px) {
	[dir="rtl"] .mdz-checkout .form-row-first { margin-right: 0; margin-left: 8px; }
}
