/* ==========================================================
   D2S Theme — shop.css
   Loads ONLY on shop/category/tag archive pages.
   ========================================================== */

.d2s-shop-page {
	/* Archive pages start immediately below the D2S header.
	   The page title is intentionally hidden, so its former vertical
	   breathing room only created an unnecessary blank band. */
	padding: 10px 0 60px;
}

.d2s-shop-header {
	margin: 0 0 10px;
}

/* Hide WooCommerce's "Showing X–Y of Z results" count everywhere
   the D2S archive toolbar is used (desktop + mobile). */
.d2s-shop-result-count {
	display: none !important;
}

.d2s-shop-title {
	font-size: 23px;
	font-weight: 700;
	letter-spacing: -0.2px;
	margin: 0 0 6px;
	color: var(--d2s-color-text);
}

/* "Shop this category" subcategory pills now render INSIDE the
   filter bar's own scrolling row (template-parts/shop/subcategory-row.php,
   included from template-parts/filters/filter-bar.php) and are
   styled entirely by .d2s-filterbar-pill in product-filters.css —
   no separate wrapper/arrows/CSS needed here any more. */

.d2s-shop-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	padding: 12px 16px;
	background: linear-gradient(180deg, #fbfdfc 0%, #fff 100%);
	border: 1px solid var(--d2s-color-border);
	border-radius: 14px;
	margin-bottom: 20px;
	font-size: 13px;
	color: var(--d2s-color-text-muted);
	box-shadow: 0 3px 12px rgba(19, 45, 42, 0.06);
}

/* Compact variant — result count + grid/list toggle only, sitting
   just under the new Temu-style filter bar (template-parts/filters/
   filter-bar.php). The filter bar already has its own bottom border,
   so this drops the boxed card look (border/background/shadow) and
   tightens the margin to keep the whole header→toolbar→grid stack
   close together instead of leaving a tall gap above the products. */
/* Marketplace-style quick filter pills (All Products / Best Selling /
   New Arrivals / On Sale) — sit on the left of the toolbar, sort
   dropdown stays on the right. Horizontally scrollable so it never
   wraps awkwardly against the sort control on narrow screens. */
.d2s-shop-quick-pills {
	display: flex;
	align-items: center;
	gap: 8px;
	flex: 1 1 auto;
	min-width: 0;
	overflow-x: auto;
	scrollbar-width: none;
	-ms-overflow-style: none;
	-webkit-overflow-scrolling: touch;
}
.d2s-shop-quick-pills::-webkit-scrollbar {
	display: none;
}

.d2s-shop-quick-pill {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	white-space: nowrap;
	height: 38px;
	padding: 0 18px;
	border-radius: 999px;
	border: 1px solid var(--d2s-color-border);
	background: #fff;
	color: var(--d2s-color-text);
	font-size: 12.5px;
	font-weight: 700;
	text-decoration: none;
	transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
.d2s-shop-quick-pill:hover {
	border-color: var(--d2s-color-primary);
	color: var(--d2s-color-primary);
}
.d2s-shop-quick-pill.is-active {
	background: var(--d2s-color-primary);
	border-color: var(--d2s-color-primary);
	color: #fff;
	box-shadow: 0 3px 10px rgba(8, 83, 76, 0.22);
}

@media (max-width: 1024px) {
	.d2s-shop-quick-pills {
		order: 1;
		flex: 1 1 100%;
	}
	.d2s-filters-toolbar-actions {
		order: 2;
	}
}

/* Custom-styled sort dropdown — the raw browser <select> read as
   generic; this hides its native chrome and draws our own chevron
   and border/hover states so it matches the rest of the marketplace
   chrome instead of looking like an unstyled form control. */
.d2s-shop-ordering {
	display: flex;
	align-items: center;
}
/* WooCommerce wraps woocommerce_catalog_ordering() output in its own
   <form class="woocommerce-ordering">, which ships with a default
   float + bottom margin (WooCommerce's own frontend stylesheet). That
   invisible margin box was making this flex item taller than the pills/
   view-toggle next to it, so align-items:center on the row centered the
   whole (select + margin) box instead of just the visible select —
   the select rendered visually shifted upward relative to everything
   else in the same row even though its own height matched. Neutralize
   WooCommerce's float/margin so this wrapper's box is exactly the
   select's own size and centers flush with its siblings. */
.d2s-shop-ordering .woocommerce-ordering {
	float: none;
	margin: 0;
	display: flex;
	align-items: center;
}
.d2s-shop-ordering select {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	box-sizing: border-box;
	height: 38px;
	margin: 0;
	line-height: 1;
	vertical-align: middle;
	border: 1px solid var(--d2s-color-border);
	border-radius: 999px;
	padding: 0 34px 0 16px;
	font-size: 12.5px;
	font-weight: 700;
	color: var(--d2s-color-text);
	background-color: #fff;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6 9l6 6 6-6' stroke='%2308534C' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	cursor: pointer;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.d2s-shop-ordering select:hover {
	border-color: var(--d2s-color-primary);
}
.d2s-shop-ordering select:focus {
	outline: none;
	border-color: var(--d2s-color-primary);
	box-shadow: 0 0 0 3px rgba(8, 83, 76, 0.12);
}

/* ---------- Grid / List view toggle ---------- */
.d2s-shop-view-toggle {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	flex-shrink: 0;
	height: 38px;
	gap: 3px;
	padding: 0 4px;
	border: 1px solid var(--d2s-color-border);
	border-radius: 999px;
	background: #fff;
}
.d2s-view-toggle-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border: none;
	border-radius: 999px;
	background: transparent;
	color: var(--d2s-color-text-muted);
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease;
}
.d2s-view-toggle-btn:hover {
	color: var(--d2s-color-primary);
}
.d2s-view-toggle-btn.is-active {
	background: var(--d2s-color-primary);
	color: #fff;
}
@media (max-width: 600px) {
	/* List view is a desktop/tablet convenience — on narrow phones the
	   grid is already effectively a single dense column, so the toggle
	   just adds toolbar clutter without a real layout choice to offer. */
	.d2s-shop-view-toggle {
		display: none;
	}
}

/* ---------- Product grid ---------- */
.d2s-product-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(var(--d2s-cols-desktop, 4), 1fr);
	gap: 8px;
}

@media (max-width: 1024px) {
	.d2s-product-grid {
		grid-template-columns: repeat(var(--d2s-cols-mobile, 2), 1fr);
		gap: 8px;
	}
}

/* ---------- Shop/category/search listing grid ---------- */
.d2s-shop-page .d2s-product-grid {
	grid-template-columns: repeat(var(--d2s-cols-desktop, 4), 1fr);
	gap: 10px;
}
@media (max-width: 1024px) {
	.d2s-shop-page .d2s-product-grid {
		grid-template-columns: repeat(var(--d2s-cols-mobile, 2), 1fr);
		gap: 8px;
	}
}

/* ---------- List view (toggled via JS, .d2s-view-list on .d2s-product-grid) ---------- */
.d2s-shop-page .d2s-product-grid.d2s-view-list {
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.d2s-shop-page .d2s-product-grid.d2s-view-list .d2s-product-card {
	flex-direction: row;
	align-items: stretch;
}
.d2s-shop-page .d2s-product-grid.d2s-view-list .d2s-card-media {
	width: 200px;
	flex: 0 0 200px;
}
.d2s-shop-page .d2s-product-grid.d2s-view-list .d2s-card-body {
	flex: 1 1 auto;
	padding: 14px 18px !important;
	justify-content: center;
}
.d2s-shop-page .d2s-product-grid.d2s-view-list .d2s-card-title {
	-webkit-line-clamp: 2;
	font-size: 15px !important;
}
@media (max-width: 700px) {
	.d2s-shop-page .d2s-product-grid.d2s-view-list .d2s-card-media {
		width: 120px;
		flex: 0 0 120px;
	}
}

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






.d2s-card-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.4s ease;
}

.d2s-product-card:hover .d2s-card-media img {
	transform: scale(1.06);
}







/* ---------- Premium star rating (real data — average + review count) ---------- */




.d2s-star {
	position: relative;
	width: 13px;
	height: 13px;
	display: inline-block;
}

.d2s-star-bg,
.d2s-star-fill svg {
	width: 13px;
	height: 13px;
	display: block;
}

.d2s-star-bg path {
	fill: #E2E2E2;
}

.d2s-star-fill {
	position: absolute;
	top: 0;
	left: 0;
	height: 100%;
	overflow: hidden;
	white-space: nowrap;
}

.d2s-star-fill svg path {
	fill: #F5A623;
}





/* ---------- Price — big, bold, premium D2S hierarchy ---------- */


.d2s-card-price .price {
	display: flex;
	align-items: baseline;
	gap: 8px;
	flex-wrap: wrap;
}

.d2s-card-price .woocommerce-Price-amount,
.d2s-card-price bdi,
.d2s-card-price > .amount {
	font-size: 19px;
	font-weight: 700;
	color: #0F1111;
	letter-spacing: -0.2px;
	word-spacing: -0.2em;
}

/* Tightens the "$ 170" gap some WooCommerce currency-position
   settings introduce between the symbol and the number — D2S keeps
   spacing compact and consistent. */


.d2s-card-price ins {
	text-decoration: none;
}

/* The current/sale price uses the D2S deal accent to make a discounted
   price pop against the crossed-out original — a plain product's price
   (no sale) stays neutral black since there's nothing to draw the eye to. */
.d2s-card-price ins .woocommerce-Price-amount {
	color: #D5001C;
}

.d2s-card-price del {
	order: 2;
	font-weight: 400;
	font-size: 12.5px;
}

.d2s-card-price del .woocommerce-Price-amount {
	font-size: 12.5px;
	font-weight: 400;
	color: #8B8B8B;
	text-decoration: line-through;
	word-spacing: -0.15em;
}



.d2s-card-actions .button,
.d2s-card-actions a.add_to_cart_button {
	display: block;
	width: 100%;
	text-align: center;
	padding: 10px 10px;
	font-size: 13px;
	font-weight: 700;
	border-radius: 24px;
	background: var(--d2s-color-primary);
	color: #fff;
	border: none;
	cursor: pointer;
	letter-spacing: 0.1px;
	transition: background 0.2s ease, transform 0.15s ease;
}

.d2s-card-actions .button:hover {
	background: var(--d2s-color-accent);
	transform: translateY(-1px);
}

/* ---------- Hover image swap ---------- */






/* ---------- Native WooCommerce sale badge ----------
   D2S presents sale information beside the price instead. */
.d2s-card-media span.onsale { display: none !important; }

/* ---------- Stock urgency ---------- */


/* ---------- Quick View button ---------- */




@media (max-width: 1024px) {
	/* Always visible on touch devices — no hover state to reveal it */
	.d2s-quick-view-btn {
		display: none;
	}
}

/* ---------- Quick View modal ---------- */
.d2s-quick-view-modal {
	position: fixed;
	inset: 0;
	z-index: 999;
	display: none;
}



.d2s-quick-view-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.5);
}



@media (max-width: 1024px) {
	.d2s-quick-view-panel {
		grid-template-columns: 1fr;
		margin: 0;
		max-height: 100vh;
		height: 100vh;
		border-radius: 0;
	}
}







.d2s-qv-media img {
	width: 100%;
	border-radius: var(--d2s-radius);
}







.d2s-qv-add-to-cart,
.d2s-qv-view-product {
	display: inline-block;
	padding: 10px 20px;
	background: var(--d2s-color-primary);
	color: #fff;
	border-radius: var(--d2s-radius);
	font-weight: 600;
	margin-right: 10px;
}

.d2s-qv-add-to-cart:hover,
.d2s-qv-view-product:hover {
	background: var(--d2s-color-accent);
}



body.d2s-quick-view-locked {
	overflow: hidden;
}

/* ---------- Premium badges (stacked, top-left) ---------- */












/* ---------- Compare checkbox ---------- */


.d2s-card-wishlist-btn {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 3;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: #fff;
	border: none;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #6B6B6B;
	cursor: pointer;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
	transition: color 0.15s ease, transform 0.15s ease;
}

.d2s-card-wishlist-btn:hover {
	transform: scale(1.08);
}



.d2s-card-wishlist-btn.is-active svg {
	fill: #E53935;
}



.d2s-compare-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.9);
	color: var(--d2s-color-text-muted);
}

.d2s-compare-toggle input:checked + .d2s-compare-icon {
	background: var(--d2s-color-primary);
	color: #fff;
}

/* ---------- Color swatches ---------- */




/* ---------- Compare bar (floating, bottom) ---------- */
.d2s-compare-bar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 500;
	background: var(--d2s-color-primary);
	color: #fff;
	box-shadow: 0 -6px 18px rgba(0, 0, 0, 0.15);
}

.d2s-compare-bar-inner {
	max-width: var(--d2s-container-width);
	margin: 0 auto;
	padding: 12px 20px;
	display: flex;
	align-items: center;
	gap: 16px;
}

.d2s-compare-bar-label {
	font-size: 13px;
	font-weight: 700;
	white-space: nowrap;
}

.d2s-compare-bar-items {
	flex: 1;
}

.d2s-compare-view-btn {
	background: var(--d2s-color-gold);
	color: #1A1A1A;
	border: none;
	padding: 9px 18px;
	border-radius: var(--d2s-radius);
	font-weight: 700;
	font-size: 13px;
	cursor: pointer;
	white-space: nowrap;
}

.d2s-compare-clear-btn {
	background: none;
	border: 1px solid rgba(255, 255, 255, 0.4);
	color: #fff;
	padding: 9px 14px;
	border-radius: var(--d2s-radius);
	font-size: 13px;
	cursor: pointer;
	white-space: nowrap;
}

/* ---------- Compare modal/table ---------- */
.d2s-compare-panel {
	position: relative;
	max-width: 900px;
	margin: 5vh auto;
	background: #fff;
	border-radius: 10px;
	padding: 24px;
	max-height: 90vh;
	overflow: auto;
}

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

.d2s-compare-table th,
.d2s-compare-table td {
	border: 1px solid var(--d2s-color-border);
	padding: 10px 14px;
	text-align: center;
	font-size: 13px;
	vertical-align: top;
}

.d2s-compare-table th {
	min-width: 160px;
}

.d2s-compare-table img {
	width: 80px;
	height: 80px;
	object-fit: cover;
	border-radius: var(--d2s-radius);
	margin: 6px auto;
}

.d2s-compare-name {
	font-weight: 600;
	font-size: 12px;
}

.d2s-compare-remove {
	background: none;
	border: none;
	font-size: 16px;
	color: var(--d2s-color-text-muted);
	cursor: pointer;
}

.d2s-compare-view-link {
	color: var(--d2s-color-primary);
	font-weight: 600;
	text-decoration: underline;
}

/* ---------- Duplicate price/button defense ----------
   Some plugins (bulk-pricing tier boxes, etc.) hook onto
   woocommerce_after_shop_loop_item and re-render their own price/
   add-to-cart markup — which duplicates ours. Hide any .price or
   add-to-cart element in the card EXCEPT the ones inside our own
   named wrappers, regardless of which plugin/hook caused it. */
.d2s-product-card .price {
	display: none;
}

.d2s-product-card .d2s-card-price .price {
	display: flex;
}

.d2s-product-card .add_to_cart_button,
.d2s-product-card a.button.product_type_simple,
.d2s-product-card a.button.product_type_variable {
	display: none;
}

.d2s-product-card .d2s-card-actions .add_to_cart_button {
	display: block;
}

/* ---------- Marketplace "See More Products" — v1.30.416 ---------- */
.d2s-shop-pagination.d2s-load-more-wrap,
.d2s-marketplace-pagination.d2s-load-more-wrap {
	margin: 24px 0 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
	width: 100%;
	box-sizing: border-box;
}


.d2s-marketplace-pagination .d2s-see-more-products {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 272px;
	height: 58px;
	padding: 0 7px 0 22px;
	box-sizing: border-box;
	border: 1px solid #074a44;
	border-radius: 999px;
	background: #08534C;
	color: #ffffff;
	font-size: 15px;
	font-weight: 750;
	letter-spacing: .005em;
	line-height: 1;
	text-decoration: none !important;
	box-shadow: 0 5px 14px rgba(8, 83, 76, .18);
	overflow: hidden;
	transition: background-color .16s ease, border-color .16s ease, color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.d2s-marketplace-pagination .d2s-see-more-products:hover {
	border-color: #0b6a60;
	background: #0b6a60;
	color: #ffffff;
	box-shadow: 0 8px 20px rgba(8, 83, 76, .24);
	transform: translateY(-1px);
}

.d2s-marketplace-pagination .d2s-see-more-products:active {
	transform: translateY(0);
	box-shadow: 0 3px 9px rgba(8, 83, 76, .10);
}

.d2s-marketplace-pagination .d2s-see-more-products:focus-visible {
	outline: 2px solid rgba(245, 193, 58, .75);
	outline-offset: 3px;
}

.d2s-marketplace-pagination .d2s-see-more-label {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 10px 0 0;
	white-space: nowrap;
}

.d2s-marketplace-pagination .d2s-see-more-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	flex: 0 0 44px;
	border: 0;
	border-radius: 50%;
	background: #f5c13a;
	color: #08534C;
	box-shadow: 0 2px 6px rgba(245, 193, 58, .22);
}

.d2s-marketplace-pagination .d2s-see-more-icon svg {
	display: block;
	width: 19px;
	height: 19px;
	stroke-width: 2.2;
	transition: transform .18s ease;
}

.d2s-marketplace-pagination .d2s-see-more-products:hover .d2s-see-more-icon svg {
	transform: translateY(2px);
}

.d2s-marketplace-pagination .d2s-see-more-products.is-loading {
	cursor: wait;
	pointer-events: none;
	border-color: #074a44;
	background: #08534C;
	box-shadow: 0 3px 9px rgba(8, 83, 76, .07);
	transform: none;
}

.d2s-marketplace-pagination .d2s-see-more-products.is-loading .d2s-see-more-icon {
	background: #f5c13a;
}

.d2s-marketplace-pagination .d2s-see-more-spinner {
	display: block;
	width: 18px;
	height: 18px;
	box-sizing: border-box;
	border: 2px solid rgba(8, 83, 76, .22);
	border-top-color: #08534C;
	border-radius: 50%;
	animation: d2s-see-more-spin .62s linear infinite;
}

@media (max-width: 640px) {
	.d2s-shop-pagination.d2s-load-more-wrap,
	.d2s-marketplace-pagination.d2s-load-more-wrap {
		gap: 10px;
		margin: 20px 0 10px;
	}


	.d2s-marketplace-pagination .d2s-see-more-products {
		min-width: 236px;
		height: 54px;
		padding-left: 18px;
		font-size: 14px;
	}

	.d2s-marketplace-pagination .d2s-see-more-icon {
		width: 40px;
		height: 40px;
		flex-basis: 40px;
	}

	.d2s-marketplace-pagination .d2s-see-more-icon svg {
		width: 18px;
		height: 18px;
	}
}

/* ---------- Marketplace Pagination ---------- */
.d2s-shop-pagination {
	margin-top: 24px;
	margin-bottom: 12px;
	display: flex;
	justify-content: center;
	width: 100%;
}

.d2s-marketplace-pagination .page-numbers {
	list-style: none;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 0;
	margin: 0;
	flex-wrap: wrap;
}

.d2s-marketplace-pagination .page-numbers li {
	margin: 0;
	padding: 0;
	list-style: none;
}

.d2s-marketplace-pagination .page-numbers li > a:not(.d2s-page-nav),
.d2s-marketplace-pagination .page-numbers li > span:not(.d2s-page-nav) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 10px;
	box-sizing: border-box;
	border: 1px solid #e2e8e5;
	border-radius: 10px;
	background: #fff;
	color: #16433f;
	font-size: 14px;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	box-shadow: 0 2px 8px rgba(15, 55, 50, 0.06);
	transition: border-color .18s ease, background-color .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease;
}

.d2s-marketplace-pagination .page-numbers li > a:not(.d2s-page-nav):hover {
	border-color: #0b6b5a;
	color: #0b6b5a;
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(15, 55, 50, 0.10);
}

.d2s-marketplace-pagination .page-numbers li > .current {
	background: #0b6b5a !important;
	border-color: #0b6b5a !important;
	color: #fff !important;
	box-shadow: 0 4px 12px rgba(11, 107, 90, 0.18);
}

.d2s-marketplace-pagination .page-numbers li > .dots {
	min-width: 28px;
	padding: 0 3px;
	border-color: transparent;
	background: transparent;
	box-shadow: none;
	color: #7b8885;
}

.d2s-marketplace-pagination .d2s-page-nav {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-width: 102px;
	height: 40px;
	padding: 0 14px;
	box-sizing: border-box;
	border: 1px solid #0b6b5a !important;
	border-radius: 11px !important;
	background: #0b6b5a !important;
	color: #fff !important;
	font-size: 13px;
	font-weight: 650;
	line-height: 1;
	text-decoration: none !important;
	box-shadow: 0 3px 10px rgba(11, 107, 90, 0.14);
	transition: background-color .18s ease, transform .18s ease, box-shadow .18s ease;
}

/* Prevent generic theme/WooCommerce span/button styles from turning the
 * arrow and label inside Previous/Next into separate mini-buttons. */
.d2s-marketplace-pagination .d2s-page-nav > span {
	display: inline !important;
	min-width: 0 !important;
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	color: inherit !important;
	font: inherit !important;
	line-height: inherit !important;
}

.d2s-marketplace-pagination .d2s-page-nav > span[aria-hidden="true"] {
	font-size: 15px !important;
	line-height: 1 !important;
}

/* Reset nested spans so legacy/global button styles cannot split the Previous/Next control. */
.d2s-marketplace-pagination .d2s-page-nav > span {
	display: inline !important;
	width: auto !important;
	min-width: 0 !important;
	height: auto !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	color: inherit !important;
}

.d2s-marketplace-pagination .d2s-page-nav:hover {
	background: #095f51;
	color: #fff;
	transform: translateY(-1px);
	box-shadow: 0 6px 15px rgba(11, 107, 90, 0.20);
}

.d2s-marketplace-pagination .d2s-page-nav.is-disabled {
	background: #f3f6f5 !important;
	border-color: #e1e8e5 !important;
	color: #a2aeab !important;
	box-shadow: none !important;
	cursor: default;
	transform: none !important;
	pointer-events: none;
}

@media (max-width: 640px) {
	.d2s-shop-pagination {
		margin-top: 24px;
		margin-bottom: 32px;
	}

	.d2s-marketplace-pagination .page-numbers {
		gap: 6px;
	}

	.d2s-marketplace-pagination .page-numbers li > a:not(.d2s-page-nav),
	.d2s-marketplace-pagination .page-numbers li > span:not(.d2s-page-nav) {
		min-width: 38px;
		height: 38px;
		border-radius: 10px;
		font-size: 13px;
	}

	.d2s-marketplace-pagination .d2s-page-nav {
		min-width: 44px;
		width: 44px;
		height: 38px;
		padding: 0;
		gap: 0;
	}

	.d2s-marketplace-pagination .d2s-page-nav span:not([aria-hidden]) {
		display: none;
	}
}

.d2s-search-no-results {
	padding: 60px 0;
	text-align: center;
	color: var(--d2s-color-text-muted);
	font-size: 15px;
}

.d2s-shop-title span {
	color: var(--d2s-color-primary);
}


/* ==========================================================
   D2S Product Card — 1.24.6 premium marketplace polish
   Shared by Shop, Category, Search, Homepage product sections
   and Related Products. No third-party UI library required.
   ========================================================== */



.d2s-card-media-link {
	position: absolute;
	inset: 0;
	display: block;
	overflow: hidden;
}
.d2s-card-media-link > img:first-child {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .45s cubic-bezier(.2,.65,.25,1);
}
.d2s-product-card:hover .d2s-card-media-link > img:first-child {
	transform: scale(1.028);
}
.d2s-card-hover-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity .22s ease;
  z-index: 1;
  transform: none !important;
}
.d2s-product-card:hover .d2s-card-hover-image {
  opacity: 1;
}

/* Top controls */





.d2s-compare-toggle {
  position: static;
  top: 48px;
  right: 10px;
  z-index: 3;
  cursor: pointer;
}
.d2s-compare-toggle input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}

/* Compact, controlled badge stack */







/* Body / typography */




.d2s-card-verified {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	width: fit-content;
	font-size: 10.5px;
	font-weight: 650;
	color: var(--d2s-color-primary);
	background: #EEF8F5;
	border: 1px solid #D8ECE7;
	border-radius: 999px;
	padding: 4px 7px;
}
.d2s-card-verified svg { width: 13px; height: 13px; }

/* Rating */






/* ==========================================================
   PRICE HIERARCHY
   Sale/current = prominent red.
   Original = small, muted, struck through.
   Regular product = single neutral price.
   ========================================================== */


/* Non-sale products stay neutral instead of looking discounted. */


.d2s-card-wc-price { display: inline-flex; align-items: baseline; gap: 7px; flex-wrap: wrap; }
.d2s-card-wc-price .price { display: inline-flex; align-items: baseline; gap: 7px; flex-wrap: wrap; margin: 0; }
.d2s-card-wc-price ins { text-decoration: none; }
.d2s-card-price .woocommerce-Price-currencySymbol {
  margin-right: 0;
}


/* Discovery / commercial metadata */

.d2s-card-bulk-info span + span { padding-left: 6px; border-left: 1px solid #D8E2DF; }


.d2s-swatch {
  width: 19px;
  height: 19px;
  border-radius: 50%;
  border: 2px solid #fff;
  background: #eee;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 8px;
  font-weight: 700;
  color: var(--d2s-color-text-muted);
  text-transform: uppercase;
  flex-shrink: 0;
  box-shadow: 0 0 0 1px #D4DCDA;
}
.d2s-swatch:hover { box-shadow: 0 0 0 2px var(--d2s-color-primary); }
.d2s-card-stock-status,
.d2s-card-shipping-line {
	display: inline-flex; align-items: center; gap: 5px;
	font-size: 10.5px; font-weight: 600; color: #53635F;
}
.d2s-stock-dot { width: 6px; height: 6px; border-radius: 50%; background: #2E8B57; }

.d2s-card-shipping-line svg { width: 14px; height: 14px; }

.d2s-card-stock-urgency span { font-size: 8px; margin-right: 4px; }

/* CTA */



.d2s-card-actions .added_to_cart { display: none !important; }

/* Quick View */
.d2s-quick-view-btn {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 12px;
  background: rgba(255,255,255,.96);
  color: #18312E;
  border: 1px solid rgba(15,23,42,.08);
  border-radius: 10px;
  padding: 9px 12px;
  font-size: 11.5px;
  font-weight: 650;
  cursor: pointer;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.15s ease, transform 0.15s ease;
  z-index: 3;
  box-shadow: 0 8px 18px rgba(15,23,42,.10);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
}
.d2s-quick-view-btn svg { width: 15px; height: 15px; }
.d2s-quick-view-btn:hover { background: var(--d2s-color-primary); color: #fff; }

/* Floating quick-add-to-cart icon on the card image. */
.d2s-card-quick-add-media {
	position: absolute;
	right: 10px;
	bottom: 10px;
	z-index: 4;
}
.d2s-card-quick-add-media .added_to_cart { display: none !important; }
.d2s-card-quick-add-media a.button,
.d2s-card-quick-add-media a.add_to_cart_button,
.d2s-card-quick-add-media a.product_type_simple {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--d2s-color-primary);
	color: #fff;
	font-size: 0;
	line-height: 0;
	box-shadow: 0 4px 10px rgba(15,23,42,.22);
	transition: transform 0.15s ease, background 0.15s ease;
}
.d2s-card-quick-add-media a.button::before,
.d2s-card-quick-add-media a.add_to_cart_button::before,
.d2s-card-quick-add-media a.product_type_simple::before {
	content: "";
	display: block;
	width: 16px;
	height: 16px;
	background-color: #fff;
	-webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 4h2l2.4 12.4a2 2 0 0 0 2 1.6h7.6a2 2 0 0 0 2-1.6L21 8H6'/><circle cx='9' cy='20' r='1.4' fill='black' stroke='none'/><circle cx='17' cy='20' r='1.4' fill='black' stroke='none'/></svg>");
	mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 4h2l2.4 12.4a2 2 0 0 0 2 1.6h7.6a2 2 0 0 0 2-1.6L21 8H6'/><circle cx='9' cy='20' r='1.4' fill='black' stroke='none'/><circle cx='17' cy='20' r='1.4' fill='black' stroke='none'/></svg>");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}
.d2s-card-quick-add-media a.button:hover,
.d2s-card-quick-add-media a.add_to_cart_button:hover,
.d2s-card-quick-add-media a.product_type_simple:hover {
	background: #0F5E4E;
	transform: scale(1.06);
}
.d2s-card-quick-add-media a.loading {
	opacity: 0.7;
	pointer-events: none;
}
@media (max-width: 520px) {
	.d2s-card-quick-add-media a.button,
	.d2s-card-quick-add-media a.add_to_cart_button,
	.d2s-card-quick-add-media a.product_type_simple {
		width: 32px;
		height: 32px;
	}
}

/* Hide only stray native output; the D2S card owns its price/CTA markup. */
.d2s-product-card > .d2s-card-body > .price { display: none; }
.d2s-product-card > .d2s-card-body > .add_to_cart_button,
.d2s-product-card > .d2s-card-body > a.button.product_type_simple,
.d2s-product-card > .d2s-card-body > a.button.product_type_variable { display: none !important; }

@media (max-width: 1024px) {
	.d2s-product-card { border-radius: 13px; }
	
	
	
	
	.d2s-card-wishlist-btn, .d2s-compare-icon { width: 33px; height: 33px; }
	
	.d2s-card-badges { top: 8px; left: 8px; }
	.d2s-badge { font-size: 9.5px; padding: 6px 7px; }
}
@media (max-width: 520px) {
	.d2s-product-grid { gap: 5px; }
	
	.d2s-product-card:hover { transform: none; box-shadow: 0 1px 6px rgba(15,23,42,.05); }
	
	
	
	
	
	
	.d2s-card-savings { font-size: 9px; padding: 3px 5px; }
	.d2s-card-rating-number, .d2s-card-rating-count { font-size: 10.5px; }
	.d2s-star, .d2s-star-bg, .d2s-star-fill svg { width: 12px; height: 12px; }
	
	.d2s-card-actions .button,
	.d2s-card-actions a.add_to_cart_button,
	.d2s-card-actions a.product_type_variable { min-height: 36px; border-radius: 9px; font-size: 11.5px; padding: 8px; }
	.d2s-quick-view-btn { display: none; }
}
@media (prefers-reduced-motion: reduce) {
	.d2s-product-card, .d2s-product-card *, .d2s-card-media img { transition: none !important; }
}

/* ==========================================================
   D2S Product Card — final premium polish v1.24.7
   Price hierarchy + non-overlapping media controls.
   Keep this block last: it intentionally normalizes older
   card rules in this stylesheet without changing functionality.
   ========================================================== */

.d2s-card-media-tools .d2s-card-wishlist-btn,
.d2s-card-media-tools .d2s-compare-toggle {
	position: relative !important;
	top: auto !important;
	right: auto !important;
	left: auto !important;
	bottom: auto !important;
	margin: 0 !important;
	flex: 0 0 auto;
}
.d2s-card-media-tools .d2s-card-wishlist-btn {
	width: 38px;
	height: 38px;
	border-radius: 50%;
	border: 1px solid rgba(8,83,76,.08);
	background: rgba(255,255,255,.97);
	color: #53605D;
	box-shadow: 0 5px 16px rgba(15,23,42,.12);
}
.d2s-card-media-tools .d2s-compare-toggle {
	display: block;
	cursor: pointer;
}
.d2s-card-media-tools .d2s-compare-icon {
	width: 38px;
	height: 38px;
	border-radius: 50%;
	border: 1px solid rgba(8,83,76,.08);
	background: rgba(255,255,255,.97);
	box-shadow: 0 5px 16px rgba(15,23,42,.12);
	color: #53605D;
}
.d2s-card-media-tools .d2s-card-wishlist-btn svg,
.d2s-card-media-tools .d2s-compare-icon svg {
	width: 17px;
	height: 17px;
}
.d2s-card-media-tools .d2s-card-wishlist-btn:hover,
.d2s-card-media-tools .d2s-compare-toggle:hover .d2s-compare-icon {
	transform: translateY(-1px);
	color: var(--d2s-color-primary);
	box-shadow: 0 7px 18px rgba(8,83,76,.16);
}
.d2s-card-media-tools .d2s-card-wishlist-btn.is-active {
	color: #D92D20;
}




.d2s-card-current-price,
.d2s-card-wc-price ins .woocommerce-Price-amount,
.d2s-card-wc-price ins bdi {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.2px;
  color: #C91D2B;
  line-height: 1.15;
}
.d2s-card-price > .d2s-card-current-price:only-child {
  color: #121918;
  font-weight: 700;
}


/* The previous dollar-savings pill is intentionally superseded by
   the cleaner percentage-off marker beside the original price. */
.d2s-card-savings {
  display: none !important;
  align-items: center;
  padding: 4px 7px;
  border-radius: 6px;
  background: #FFF0F0;
  color: #C51F2D;
  font-size: 10px;
  font-weight: 700;
  white-space: nowrap;
  line-height: 1.2;
}

@media (max-width: 1024px) {
	.d2s-card-media-tools {
  top: 8px;
  right: 8px;
  gap: 6px;
}
	.d2s-card-media-tools .d2s-card-wishlist-btn,
	.d2s-card-media-tools .d2s-compare-icon { width: 34px; height: 34px; }
	
	.d2s-card-current-price,
	.d2s-card-wc-price ins .woocommerce-Price-amount,
	.d2s-card-wc-price ins bdi {
  font-size: 18px;
}
}
@media (max-width: 520px) {
	
	.d2s-card-media-tools .d2s-card-wishlist-btn,
	.d2s-card-media-tools .d2s-compare-icon { width: 32px; height: 32px; }
	.d2s-card-media-tools .d2s-card-wishlist-btn svg,
	.d2s-card-media-tools .d2s-compare-icon svg { width: 15px; height: 15px; }
	
	.d2s-card-current-price,
	.d2s-card-wc-price ins .woocommerce-Price-amount,
	.d2s-card-wc-price ins bdi {
  font-size: 17px;
}
	.d2s-card-original-price,
	.d2s-card-wc-price del,
	.d2s-card-wc-price del .woocommerce-Price-amount,
	.d2s-card-wc-price del bdi {
  font-size: 10.5px;
}
	
}


/* ---------- Final price-weight correction v1.24.9 ----------
   Keep product prices refined and medium-weight rather than heavy/bold.
   This final override intentionally wins over earlier compatibility rules.
*/

.d2s-product-card .d2s-card-price .d2s-card-current-price {
	color: #121918;
}


@media (max-width: 520px) {
	.d2s-product-card .d2s-card-price .d2s-card-current-price,
	.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
	.d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
	.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol {
		font-size: 16px !important;
		font-weight: 700 !important;
	}
}


/* ---------- Final sale-price row refinement v1.25.0 ----------
   Desired order: current/sale price -> original price -> percentage badge.
   Sale price is red; regular price stays neutral.
*/


.d2s-product-card .d2s-card-price .d2s-card-original-price {
	order: 2 !important;
}


/* ---------- Product title final refinement v1.25.1 ----------
   Compact single-line marketplace title with ellipsis.
   Keeps card heights consistent and lets the price row start at the same height.
*/


@media (max-width: 520px) {
	
}

/* ==========================================================
   D2S 1.26.0 — MARKETPLACE PRODUCT CARD
   Presentation-layer redesign. Existing WooCommerce/D2S data,
   hooks and actions remain authoritative; this block changes
   visual hierarchy only.
   ========================================================== */




.d2s-card-media::after {
  content: '';
  position: absolute;
  inset: auto 0 0;
  height: 30%;
  background: linear-gradient(to top, rgba(7,26,23,.16), transparent);
  pointer-events: none;
  z-index: 2;
  opacity: .55;
  transition: opacity .2s ease;
}
.d2s-product-card:hover .d2s-card-media::after { opacity: .72; }

/* Marketplace utility rail: compact, non-circular controls. */
.d2s-card-media-tools {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 8;
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: stretch;
}
.d2s-card-wishlist-btn,
.d2s-compare-icon {
  width: 32px;
  height: 32px;
  border: 1px solid rgba(255,255,255,.68);
  background: rgba(255,255,255,.90);
  box-shadow: 0 6px 16px rgba(7,26,23,.12);
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
  border-radius: 10px;
  color: #24413C;
}
.d2s-card-wishlist-btn svg,
.d2s-compare-icon svg {
  width: 16px;
  height: 16px;
}
.d2s-card-wishlist-btn:hover,
.d2s-compare-toggle:hover .d2s-compare-icon {
  color: var(--d2s-color-primary);
  transform: translateY(-1px);
}
.d2s-card-wishlist-btn.is-active {
  color: #C92835;
}

/* v1.30.327 — Badge redesign. Each badge now has
   its own shape/weight instead of every badge being the same rounded
   pill: Sale and Best Selling are pointed "price-tag" flags (the real
   attention-grabbers), everything else is a quiet compact chip so it
   doesn't compete with them. Font weight kept moderate (600-650, not
   800) per approved preview — bold-but-not-shouty. */
.d2s-card-badges {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 8;
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: flex-start;
}
.d2s-badge {
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: .01em;
  line-height: 1;
  color: #fff;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.d2s-badge svg,
.d2s-badge::before {
  flex-shrink: 0;
}

/* Sale / discount — red price-tag flag, pointed right edge. */
.d2s-badge-sale {
  background: #CC0C39;
  padding: 5px 11px 5px 9px;
  clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 50%, calc(100% - 7px) 100%, 0 100%);
  box-shadow: 0 2px 6px rgba(204,12,57,.25);
  font-size: 10px;
  font-weight: 650;
}

/* Best Selling — same tag family as Sale, warm amber instead of red. */
.d2s-badge-bestseller {
  background: #C9781A;
  color: #fff;
  padding: 5px 11px 5px 9px;
  clip-path: polygon(0 0, calc(100% - 7px) 0, 100% 50%, calc(100% - 7px) 100%, 0 100%);
  box-shadow: 0 2px 6px rgba(201,120,26,.25);
}

/* Most Viewed / Trending — compact dark chips, quiet by design. */
.d2s-badge-most-viewed,
.d2s-badge-trending {
  background: #1A1A1A;
  padding: 4px 8px;
  border-radius: 3px;
}
.d2s-badge-trending {
  background: #8A5324;
}

/* New — small outlined chip, not a deal signal so it stays quiet. */
.d2s-badge-new {
  background: #fff;
  color: #08534C;
  border: 1px solid #08534C;
  padding: 3px 8px;
  border-radius: 3px;
}

/* Free Shipping — outline chip with icon. */
.d2s-badge-shipping {
  background: rgba(255,255,255,.95);
  color: #0A6D61;
  border: 1px solid #D6EEE4;
  padding: 3px 8px 3px 6px;
  border-radius: 3px;
  box-shadow: 0 1px 4px rgba(15,23,42,.06);
}

/* Icon-only pseudo-element per badge type — no PHP/markup change needed. */
.d2s-badge-most-viewed::before,
.d2s-badge-trending::before,
.d2s-badge-shipping::before {
  content: "";
  display: block;
  width: 9px;
  height: 9px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}
.d2s-badge-most-viewed::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M2.5 12s3.4-6 9.5-6 9.5 6 9.5 6-3.4 6-9.5 6-9.5-6-9.5-6Z' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='12' r='2.7' fill='none' stroke='black' stroke-width='2'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M2.5 12s3.4-6 9.5-6 9.5 6 9.5 6-3.4 6-9.5 6-9.5-6-9.5-6Z' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='12' r='2.7' fill='none' stroke='black' stroke-width='2'/></svg>");
}
.d2s-badge-trending::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2c1 4-3 5-3 9a3 3 0 0 0 6 0c0-1-1-2-1-3 1 1 3 3 3 6a6 6 0 1 1-12 0c0-5 4-7 4-9 0-1 1-2 3-3z'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2c1 4-3 5-3 9a3 3 0 0 0 6 0c0-1-1-2-1-3 1 1 3 3 3 6a6 6 0 1 1-12 0c0-5 4-7 4-9 0-1 1-2 3-3z'/></svg>");
}
.d2s-badge-shipping::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><rect x='1' y='3' width='15' height='13' rx='1' fill='none' stroke='black' stroke-width='1.7'/><path d='M16 8h4l3 3v5h-7V8z' fill='none' stroke='black' stroke-width='1.7'/><circle cx='5.5' cy='18.5' r='2.5' fill='none' stroke='black' stroke-width='1.7'/><circle cx='18.5' cy='18.5' r='2.5' fill='none' stroke='black' stroke-width='1.7'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><rect x='1' y='3' width='15' height='13' rx='1' fill='none' stroke='black' stroke-width='1.7'/><path d='M16 8h4l3 3v5h-7V8z' fill='none' stroke='black' stroke-width='1.7'/><circle cx='5.5' cy='18.5' r='2.5' fill='none' stroke='black' stroke-width='1.7'/><circle cx='18.5' cy='18.5' r='2.5' fill='none' stroke='black' stroke-width='1.7'/></svg>");
}

/* ---------- Rotating card ticker: one line under the
   price that auto-slides between a few real facts (badge, sold count,
   free shipping, low stock) every ~2.4s. Markup is a single empty div
   with data-items/data-icons JSON — assets/js/card-ticker.js renders
   and rotates it; CSS here only handles the slide animation + icons,
   so there's nothing to see if JS hasn't run yet (no layout jump). ---------- */
.d2s-card-ticker {
  position: relative;
  height: 18px;
  overflow: hidden;
  margin-top: -3px;
  /* No explicit order previously = flex default (0), which put it
     BEFORE the title (order:1) instead of after the price — this is
     what made "Most Viewed"/"X sold" appear above the product title.
     Same order value as price(3): ties break by DOM order, and the
     ticker markup already sits right after price in content-product.php.
     Negative margin-top pulls it in closer under the price — the
     card-body flex gap (5px) already adds spacing between every row,
     so without this the price→ticker gap reads noticeably bigger than
     the tight title→price gap above it. */
  order: 4;
}
.d2s-card-ticker:empty {
  display: none;
}
.d2s-card-ticker .d2s-ticker-line {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 600;
  line-height: 18px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: transform .38s cubic-bezier(.4,0,.2,1), opacity .38s ease;
}
.d2s-card-ticker .d2s-ticker-line.d2s-ticker-next {
  transform: translateY(100%);
  opacity: 0;
}
.d2s-card-ticker .d2s-ticker-icon {
  width: 11px;
  height: 11px;
  flex-shrink: 0;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
}
/* Refined marketplace ticker: semantic mini-icons, one consistent red
   treatment, no pills/backgrounds. This keeps the line closer to the
   clean metadata treatment used by major marketplaces. */
.d2s-ticker-line {
  color: #D5001C;
}
.d2s-ticker-line .d2s-ticker-icon {
  width: 12px;
  height: 12px;
  opacity: .95;
}
.d2s-ticker-line[data-icon="eye"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/><circle cx='12' cy='12' r='2.5' fill='none' stroke='black' stroke-width='2'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/><circle cx='12' cy='12' r='2.5' fill='none' stroke='black' stroke-width='2'/></svg>");
}
.d2s-ticker-line[data-icon="flame"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M13.5 3.5c.5 3-1 4.6-2.6 6.2-1.3 1.3-2.4 2.4-2.4 4.5a3.5 3.5 0 0 0 7 0c0-1.4-.5-2.7-1.5-4.1 2.8 1.5 4.5 4.1 4.5 6.6A6.5 6.5 0 0 1 12 23a7.5 7.5 0 0 1-7.5-7.5c0-3.7 2.1-6.4 5.1-9.1-.1 2.1.5 3.5 1.6 4.5.8-.9 1.6-2.1 2.3-3.3.8-1.4.8-2.8 0-4.1Z' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M13.5 3.5c.5 3-1 4.6-2.6 6.2-1.3 1.3-2.4 2.4-2.4 4.5a3.5 3.5 0 0 0 7 0c0-1.4-.5-2.7-1.5-4.1 2.8 1.5 4.5 4.1 4.5 6.6A6.5 6.5 0 0 1 12 23a7.5 7.5 0 0 1-7.5-7.5c0-3.7 2.1-6.4 5.1-9.1-.1 2.1.5 3.5 1.6 4.5.8-.9 1.6-2.1 2.3-3.3.8-1.4.8-2.8 0-4.1Z' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'/></svg>");
}
.d2s-ticker-line[data-icon="crown"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m3 7 4.5 4L12 5l4.5 6L21 7l-2 12H5L3 7Z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/><path d='M5 16h14' fill='none' stroke='black' stroke-width='2'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m3 7 4.5 4L12 5l4.5 6L21 7l-2 12H5L3 7Z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/><path d='M5 16h14' fill='none' stroke='black' stroke-width='2'/></svg>");
}
.d2s-ticker-line[data-icon="spark"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m12 2 1.8 6.2L20 10l-6.2 1.8L12 18l-1.8-6.2L4 10l6.2-1.8L12 2Z' fill='none' stroke='black' stroke-width='1.9' stroke-linejoin='round'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m12 2 1.8 6.2L20 10l-6.2 1.8L12 18l-1.8-6.2L4 10l6.2-1.8L12 2Z' fill='none' stroke='black' stroke-width='1.9' stroke-linejoin='round'/></svg>");
}
.d2s-ticker-line[data-icon="bulk"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 24 24\'><path d=\'M3 18l5-5 4 2 7-8\' fill=\'none\' stroke=\'black\' stroke-width=\'1.9\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/><path d=\'M16 7h3v3\' fill=\'none\' stroke=\'black\' stroke-width=\'1.9\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 24 24\'><path d=\'M3 18l5-5 4 2 7-8\' fill=\'none\' stroke=\'black\' stroke-width=\'1.9\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/><path d=\'M16 7h3v3\' fill=\'none\' stroke=\'black\' stroke-width=\'1.9\' stroke-linecap=\'round\' stroke-linejoin=\'round\'/></svg>");
}
.d2s-ticker-line[data-icon="sold"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M3 5h2l2.2 10.2a2 2 0 0 0 2 1.6h7.7a2 2 0 0 0 1.9-1.4L21 9H7' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/><circle cx='10' cy='20' r='1.3' fill='black'/><circle cx='18' cy='20' r='1.3' fill='black'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M3 5h2l2.2 10.2a2 2 0 0 0 2 1.6h7.7a2 2 0 0 0 1.9-1.4L21 9H7' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/><circle cx='10' cy='20' r='1.3' fill='black'/><circle cx='18' cy='20' r='1.3' fill='black'/></svg>");
}
.d2s-ticker-line[data-icon="stock"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 3 22 20H2L12 3Z' fill='none' stroke='black' stroke-width='1.9' stroke-linejoin='round'/><path d='M12 9v5' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round'/><circle cx='12' cy='17' r='1' fill='black'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 3 22 20H2L12 3Z' fill='none' stroke='black' stroke-width='1.9' stroke-linejoin='round'/><path d='M12 9v5' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round'/><circle cx='12' cy='17' r='1' fill='black'/></svg>");
}
.d2s-ticker-line[data-icon="views"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='9' cy='8' r='3' fill='none' stroke='black' stroke-width='1.8'/><path d='M3.5 19c.5-3.2 2.4-5 5.5-5s5 1.8 5.5 5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'/><path d='M16 5.5a2.5 2.5 0 0 1 0 5M16 14c2.2.4 3.7 2 4.2 4.5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='9' cy='8' r='3' fill='none' stroke='black' stroke-width='1.8'/><path d='M3.5 19c.5-3.2 2.4-5 5.5-5s5 1.8 5.5 5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'/><path d='M16 5.5a2.5 2.5 0 0 1 0 5M16 14c2.2.4 3.7 2 4.2 4.5' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'/></svg>");
}
.d2s-ticker-line[data-icon="coupon"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M4 4h16v5a2 2 0 0 0 0 4v5H4v-5a2 2 0 0 0 0-4V4Z' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'/><path d='M9 8h6M9 16h6' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M4 4h16v5a2 2 0 0 0 0 4v5H4v-5a2 2 0 0 0 0-4V4Z' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'/><path d='M9 8h6M9 16h6' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round'/></svg>");
}
.d2s-ticker-line[data-icon="ship"] .d2s-ticker-icon {
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M3 6h11v10H3zM14 10h4l3 3v3h-7z' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'/><circle cx='7' cy='18' r='2' fill='none' stroke='black' stroke-width='1.8'/><circle cx='18' cy='18' r='2' fill='none' stroke='black' stroke-width='1.8'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M3 6h11v10H3zM14 10h4l3 3v3h-7z' fill='none' stroke='black' stroke-width='1.8' stroke-linejoin='round'/><circle cx='7' cy='18' r='2' fill='none' stroke='black' stroke-width='1.8'/><circle cx='18' cy='18' r='2' fill='none' stroke='black' stroke-width='1.8'/></svg>");
}
@media (prefers-reduced-motion: reduce) {
  .d2s-card-ticker .d2s-ticker-line { transition: none; }
}
@media (max-width: 520px) {
  .d2s-card-ticker {
    height: 16px;
    margin-top: -4px;
  }
  .d2s-card-ticker .d2s-ticker-line {
    font-size: 11.5px;
    line-height: 16px;
  }
  .d2s-card-ticker .d2s-ticker-icon {
    width: 11px;
    height: 11px;
  }
}

/* Real marketplace metadata sits on the image, not in the body. */
.d2s-card-marketplace-rail {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 10px;
  z-index: 7;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 7px;
  pointer-events: none;
}
.d2s-marketplace-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 25px;
  padding: 4px 8px;
  border-radius: 7px;
  font-size: 9.5px;
  font-weight: 650;
  line-height: 1;
  box-shadow: 0 5px 14px rgba(7,26,23,.12);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.d2s-marketplace-chip svg { width: 13px; height: 13px; flex: 0 0 auto; }
.d2s-marketplace-chip--verified { background: rgba(234,248,244,.94); color: #086457; }
.d2s-marketplace-chip--shipping { margin-left: auto; background: rgba(255,255,255,.93); color: #355B54; }

/* Body is deliberately separated from the image: this removes the
   "one white WooCommerce box" appearance and creates a marketplace card. */


.d2s-card-title {
  font-size: 13.5px !important;
  font-weight: 400 !important;
  color: #16211F;
  margin: 0;
  line-height: 1.35 !important;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  letter-spacing: -0.08px;
  font-family: var(--d2s-font-base);
  min-height: 18px !important;
  max-width: 100%;
}
.d2s-card-title-link:hover .d2s-card-title {
  color: #086B5D;
}

.d2s-card-rating-stars {
  display: inline-flex;
  gap: 1px;
  flex-shrink: 0;
}
.d2s-star, .d2s-star-bg, .d2s-star-fill svg {
  width: 11px;
  height: 11px;
}
.d2s-card-rating-number {
  font-size: 11px;
  font-weight: 600;
  color: #273D38;
}
.d2s-card-rating-count {
  font-size: 10.5px;
  color: #778581;
}

/* Rating + "X sold" share one row. If a card has neither real
   reviews nor real sales yet, both children render nothing and this
   collapses to nothing too — no empty gap on a brand-new listing. */
.d2s-card-social-proof {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  order: 3;
  margin: 1px 0 0;
}
.d2s-card-social-proof:empty {
  display: none;
}
.d2s-card-sold {
  font-size: 10.5px;
  font-weight: 600;
  color: #5C6D67;
  white-space: nowrap;
}
/* Separator dot only when sold-count follows a visible rating link. */
.d2s-card-rating + .d2s-card-sold::before {
  content: "\00B7";
  margin-right: 6px;
  color: #B7C2BE;
  font-weight: 700;
}

/* v1.30.397 — Marketplace card hierarchy: price first, then real social proof.
   Keeps the information-rich marketplace pattern without turning the card into a dense data block. */
.d2s-card-social-proof {
  min-height: 17px;
  padding-top: 0;
}
.d2s-card-rating,
.d2s-card-sold {
  line-height: 1.1;
}
.d2s-card-sold {
  color: #687873;
}


.d2s-product-card .d2s-card-price .d2s-card-current-price,
.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol {
  font-size: 17px !important;
  font-weight: 700 !important;
  letter-spacing: -.18px;
  line-height: 1.15;
}
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale {
  color: #C92B38 !important;
}
.d2s-card-original-price,
.d2s-card-wc-price del,
.d2s-card-wc-price del .woocommerce-Price-amount,
.d2s-card-wc-price del bdi {
  font-size: 10.5px !important;
  font-weight: 400 !important;
  color: #8B9692;
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  line-height: 1.15;
  text-decoration-line: line-through;
  text-decoration-color: #8A9290;
}
.d2s-card-discount {
  display: inline-flex;
  align-items: center;
  min-height: 18px;
  padding: 3px 5px;
  border-radius: 4px;
  background: #FDEDEE;
  color: #C92B38;
  font-size: 8.5px;
  font-weight: 650;
  letter-spacing: .03em;
  line-height: 1;
  white-space: nowrap;
}

/* Commercial information is quiet and horizontal, like marketplace
   metadata rather than theme-style feature boxes. */
.d2s-card-bulk-info,
.d2s-card-stock-status,
.d2s-card-shipping-line {
  order: 4;
  font-size: 10px;
  font-weight: 550;
  color: #60716D;
}
.d2s-card-bulk-info {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
  font-size: 10.5px;
  font-weight: 600;
  color: #5B6966;
}
.d2s-card-bulk-label {
  color: #086B5D;
  font-weight: 650;
}
.d2s-card-stock-status { color: #4E6861; }
.d2s-card-shipping-line {
  color: #086B5D;
}
.d2s-card-stock-urgency {
  display: inline-block;
  width: fit-content;
  font-size: 9.5px;
  font-weight: 700;
  color: #B42318;
  background: #FFF1F0;
  padding: 3px 6px;
  border-radius: 6px;
  order: 4;
}
.d2s-card-swatches {
  display: flex;
  gap: 5px;
  margin: 1px 0;
  min-height: 18px;
  order: 4;
}

/* CTA is intentionally understated. The product itself remains the hero. */




@media (max-width: 1024px) {
  .d2s-card-media {
  border-radius: 14px;
}
  
  .d2s-card-title {
  font-size: 12.8px !important;
  min-height: 37px;
}
  .d2s-card-marketplace-rail { left: 8px; right: 8px; bottom: 8px; }
  .d2s-marketplace-chip { min-height: 23px; padding: 4px 7px; font-size: 8.5px; }
  .d2s-marketplace-chip svg { width: 12px; height: 12px; }
}
@media (max-width: 520px) {
  
  
  
  .d2s-card-title {
  font-size: 12px !important;
  line-height: 1.36;
  min-height: 34px;
}
  .d2s-card-rating-number { font-size: 10px; }
  .d2s-card-rating-count { font-size: 9.5px; }
  .d2s-product-card .d2s-card-price .d2s-card-current-price,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol { font-size: 16px !important; }
  .d2s-card-original-price,
  .d2s-card-wc-price del,
  .d2s-card-wc-price del .woocommerce-Price-amount,
  .d2s-card-wc-price del bdi { font-size: 10px !important; }
  .d2s-card-discount {
  font-size: 8px;
  min-height: 18px;
  padding: 3px 5px;
}
  .d2s-card-actions .button,
  .d2s-card-actions a.add_to_cart_button,
  .d2s-card-actions a.product_type_variable { min-height: 34px; font-size: 11px; }
  .d2s-card-media-tools {
  top: 7px;
  right: 7px;
  gap: 5px;
}
  .d2s-card-wishlist-btn, .d2s-compare-icon { width: 30px; height: 30px; border-radius: 9px; }
  .d2s-card-wishlist-btn svg, .d2s-compare-icon svg { width: 15px; height: 15px; }
  .d2s-card-badges { top: 7px; left: 7px; }
  .d2s-badge { font-size: 8.5px; padding: 5px 6px; }
  .d2s-card-marketplace-rail { left: 7px; right: 7px; bottom: 7px; }
  .d2s-marketplace-chip { min-height: 21px; padding: 3px 6px; font-size: 8px; border-radius: 6px; }
}

/* D2S Marketplace — tighter geometry
 * Keep controls circular, but reduce the card shell radius so the grid feels
 * sharper and more editorial than a generic WooCommerce/Shopify card.
 */




/* ==========================================================
   D2S 1.26.4 — FULL CARD BORDER + COMPACT INFO AREA
   Keep the marketplace card tight: one continuous card outline,
   minimal whitespace between image, title, rating and commercial data.
   ========================================================== */

.d2s-product-card:hover {
  box-shadow: 0 8px 22px rgba(8,83,76,.08) !important;
  transform: translateY(-2px);
  border-color: #C9DAD5 !important;
}

.d2s-product-card:hover .d2s-card-media {
  box-shadow: none !important;
}

/* Compact title/label block — no empty band under the image. */





.d2s-card-bulk-info,
.d2s-card-stock-status,
.d2s-card-shipping-line,
.d2s-card-stock-urgency,
.d2s-card-swatches {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}


@media (max-width: 1024px) {
	
	
	.d2s-card-rating { min-height: 14px !important; }
	.d2s-card-price { min-height: 21px !important; }
}

@media (max-width: 520px) {
	
	
	
	
	
	
	
}

/* v1.30.2 — marketplace MOQ placement: rating row when rating exists,
   otherwise directly beneath price. Vendor Core remains the source of truth. */

.d2s-card-rating .d2s-card-moq--inline {
	margin-left: auto;
}



@media (max-width: 520px) {
	
	.d2s-card-moq-icon { font-size: 12px; }
}


/* v1.30.21 — product-card action icons: reveal on hover/focus and first tap on touch. */
@media (hover: hover) and (pointer: fine) {
	.d2s-product-card .d2s-card-media-tools {
		opacity: 0 !important;
		visibility: hidden !important;
		transform: translateY(-4px) !important;
		transition: opacity .18s ease, visibility .18s ease, transform .18s ease !important;
		pointer-events: none !important;
	}

	.d2s-product-card:hover .d2s-card-media-tools,
	.d2s-product-card:focus-within .d2s-card-media-tools {
		opacity: 1 !important;
		visibility: visible !important;
		transform: translateY(0) !important;
		pointer-events: auto !important;
	}

	/* Keep a selected state visible even when the pointer leaves the card. */
	.d2s-product-card .d2s-card-media-tools:has(.d2s-card-wishlist-btn.is-active),
	.d2s-product-card .d2s-card-media-tools:has(.d2s-compare-checkbox:checked) {
		opacity: 1 !important;
		visibility: visible !important;
		transform: translateY(0) !important;
		pointer-events: auto !important;
	}
}

@media (hover: none), (pointer: coarse) {
	/* Mobile/touch: keep compact wishlist/compare icons visible at all times.
	   Product-image taps therefore navigate on the first tap; only the icon
	   hit areas intercept their own actions. */
	.d2s-product-card .d2s-card-media-tools {
		opacity: 1 !important;
		visibility: visible !important;
		transform: none !important;
		pointer-events: none !important;
		transition: none !important;
	}

	.d2s-product-card .d2s-card-media-tools .d2s-card-wishlist-btn,
	.d2s-product-card .d2s-card-media-tools .d2s-compare-toggle {
		pointer-events: auto !important;
	}

	/* v1.30.128 — mobile card actions: plain outline icons, no white/circular background. */
	.d2s-product-card .d2s-card-media-tools .d2s-card-wishlist-btn,
	.d2s-product-card .d2s-card-media-tools .d2s-compare-icon {
		width: 30px !important;
		height: 30px !important;
		border: 1px solid rgba(255,255,255,.82) !important;
		border-radius: 9px !important;
		background: transparent !important;
		box-shadow: none !important;
		backdrop-filter: none !important;
		-webkit-backdrop-filter: none !important;
		color: #ffffff !important;
	}

	.d2s-product-card .d2s-card-media-tools .d2s-card-wishlist-btn svg,
	.d2s-product-card .d2s-card-media-tools .d2s-compare-icon svg {
		width: 18px !important;
		height: 18px !important;
		filter: drop-shadow(0 1px 3px rgba(0,0,0,.55));
	}

	.d2s-product-card .d2s-card-media-tools .d2s-card-wishlist-btn:hover,
	.d2s-product-card .d2s-card-media-tools .d2s-compare-toggle:hover .d2s-compare-icon {
		transform: none !important;
		box-shadow: none !important;
	}

	.d2s-product-card .d2s-card-media-tools .d2s-card-wishlist-btn.is-active {
		color: #ff5263 !important;
		border-color: rgba(255,255,255,.9) !important;
	}

	/* Keep the compare bar visible above the fixed mobile navigation. */
	.d2s-compare-bar {
		left: 10px !important;
		right: 10px !important;
		bottom: calc(68px + env(safe-area-inset-bottom, 0px)) !important;
		border-radius: 12px !important;
		z-index: 1200 !important;
	}
	.d2s-compare-bar-inner {
		padding: 9px 10px !important;
		gap: 8px !important;
		min-width: 0 !important;
	}
	.d2s-compare-bar-label {
		font-size: 11px !important;
		overflow: hidden !important;
		text-overflow: ellipsis !important;
	}
	.d2s-compare-view-btn,
	.d2s-compare-clear-btn {
		padding: 7px 9px !important;
		font-size: 11px !important;
		border-radius: 9px !important;
	}
}

/* =========================================================
   D2S SALE TIMER — v1.30.24
   Compact card countdown; only rendered when a real sale end date exists.
   ========================================================= */


.d2s-product-card .d2s-sale-timer--card[hidden] { display: none !important; }





.d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-unit {
    display: inline-flex;
    align-items: baseline;
    gap: 1px;
}







/* ==========================================================
   D2S v1.30.28 — FINAL PRODUCT CARD SALE PRICE POLISH
   Keep the existing product-card design. No new sale-price pill.
   Sale price = red text. Original = quiet struck-through price.
   Discount = compact red percentage badge.
   ========================================================== */


/* Sale price: plain red price — never a background/pill. */
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale bdi,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-currencySymbol {
  display: inline !important;
  width: auto !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: #CF0E39 !important;
  font-size: 20px !important;
  font-weight: 650 !important;
  line-height: 1 !important;
  letter-spacing: -.15px !important;
}

/* Regular/original price. */


/* Percentage discount — same existing badge, just compact/polished. */


.d2s-product-card .d2s-card-price .d2s-card-discount * {
  color: #FFFFFF !important;
  font-weight: 600 !important;
}

@media (max-width: 520px) {
  

  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-currencySymbol {
    font-size: 18px !important;
    font-weight: 650 !important;
  }

  

  
}


/* ==========================================================
   D2S v1.30.29 — PRODUCT CARD TITLE SIZE REFINEMENT
   Slightly larger marketplace titles; existing layout/ellipsis
   behavior remains unchanged.
   ========================================================== */


@media (max-width: 1024px) {
  
}

@media (max-width: 520px) {
  
}


/* ==========================================================
   D2S v1.30.33 — PRODUCT CARD PREMIUM BREATHING-ROOM PASS
   The previous card pass became too compressed, especially on mobile.
   Keep the same information architecture, but restore comfortable
   marketplace typography, spacing and hierarchy.
   No placeholder bands are introduced for missing data.
   ========================================================== */
.d2s-product-card {
  border: 1px solid #DDE5E2 !important;
  border-radius: 12px !important;
  overflow: hidden !important;
  background: #fff !important;
  display: flex;
  flex-direction: column;
  position: relative;
  transition: transform .24s ease;
  box-shadow: none !important;
  min-width: 0;
  isolation: isolate;
}
.d2s-card-media {
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: #F5F7F6;
  border-radius: 11px 11px 0 0 !important;
  box-shadow: none !important;
  isolation: isolate;
}
.d2s-card-body {
  padding: 11px 10px 12px !important;
  display: flex;
  flex-direction: column;
  gap: 5px !important;
  flex-grow: 1;
  min-width: 0;
  background: transparent;
}
.d2s-card-title-link {
  color: inherit;
  display: block;
  min-width: 0;
  order: 1;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.2 !important;
}

.d2s-card-rating {
  /* v1.30.242: no longer a direct child of .d2s-card-body — it now
     lives inside .d2s-card-social-proof, which owns the flex "order"
     and full-width placement in the card's vertical stack instead. */
  display: flex;
  align-items: center;
  gap: 5px;
  min-height: 17px !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
}

.d2s-product-card .d2s-card-price .d2s-card-current-price,
.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale bdi,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-currencySymbol {
  font-size: 20px !important;
  font-weight: 650 !important;
  line-height: 1.08 !important;
  letter-spacing: -.25px !important;
}
.d2s-product-card .d2s-card-price .d2s-card-original-price,
.d2s-product-card .d2s-card-price .d2s-card-original-price .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-original-price bdi {
  font-size: 11.5px !important;
  font-weight: 400 !important;
  display: inline !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  color: #8A9391 !important;
  line-height: 1.1 !important;
  text-decoration: line-through !important;
}
.d2s-product-card .d2s-card-price .d2s-card-discount {
  font-weight: 650 !important;
  order: 3 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 0 !important;
  height: 21px !important;
  min-height: 21px !important;
  margin: 0 0 0 1px !important;
  padding: 0 7px !important;
  border: 0 !important;
  border-radius: 5px !important;
  background: #CF0E39 !important;
  color: #FFFFFF !important;
  font-size: 8.5px !important;
  line-height: 21px !important;
  letter-spacing: .01em !important;
  white-space: nowrap !important;
  box-shadow: none !important;
  vertical-align: middle !important;
}

/* Sale countdown belongs between the title/rating and commercial price.
   It is content-driven: cards without a sale end date do not reserve space. */





.d2s-card-price {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px !important;
  margin: 2px 0 0 !important;
  min-height: 27px !important;
  line-height: 1 !important;
  margin-top: 5px;
  order: 4 !important;
  padding: 0 !important;
}
.d2s-card-moq:not(.d2s-card-moq--inline) {
  order: 5 !important;
  min-height: 15px;
  margin-top: 0 !important;
}
.d2s-card-swatches,
.d2s-card-stock-status,
.d2s-card-stock-urgency,
.d2s-card-shipping-line { order: 5 !important; }
.d2s-card-actions {
  margin-top: auto !important;
  padding-top: 5px !important;
  order: 6 !important;
}
.d2s-card-moq {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  line-height: 1.3 !important;
  color: #65746F !important;
  white-space: nowrap;
}
.d2s-card-moq-icon {
  font-size: 12px !important;
  line-height: 1;
  color: #0B6B5A !important;
}

@media (max-width: 1024px) {
  .d2s-card-body {
  padding: 10px 9px 11px !important;
  gap: 5px !important;
}
  .d2s-product-card .d2s-card-title {
  min-height: 16px !important;
  font-size: 13.5px !important;
  line-height: 1.34 !important;
}
  .d2s-product-card .d2s-card-price .d2s-card-current-price,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-currencySymbol { font-size: 19px !important; }
}

@media (max-width: 520px) {
  .d2s-product-card {
  border-radius: 12px !important;
  box-shadow: 0 1px 6px rgba(15,23,42,.04);
}
  .d2s-card-media {
  border-radius: 11px 11px 0 0 !important;
  box-shadow: 0 0 0 1px rgba(15,23,42,.045), 0 5px 14px rgba(15,23,42,.04);
}
  .d2s-card-body {
  padding: 10px 9px 10px !important;
  gap: 5px !important;
}
  
  .d2s-card-rating {
  min-height: 15px !important;
  margin-top: 0 !important;
}
  .d2s-card-price {
  gap: 5px !important;
  min-height: 25px !important;
  margin-top: 1px !important;
}
  .d2s-product-card .d2s-card-price .d2s-card-current-price,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-currencySymbol { font-size: 19px !important; }
  .d2s-product-card .d2s-card-price .d2s-card-original-price,
  .d2s-product-card .d2s-card-price .d2s-card-original-price .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-original-price bdi {
  font-size: 10.5px !important;
}
  .d2s-product-card .d2s-card-price .d2s-card-discount {
  height: 20px !important;
  min-height: 20px !important;
  padding: 0 6px !important;
  border-radius: 5px !important;
  font-size: 8.5px !important;
  line-height: 20px !important;
}
  
  .d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-unit b { font-size: 11px !important; }
  /* Seconds add visual noise on a two-column mobile grid; the actual timer
     remains live and precise, while the shopper sees the useful time scale. */
  .d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-seconds,
  .d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-seconds + * { display: none !important; }
  .d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-separator:has(+ .d2s-sale-timer-unit.d2s-sale-timer-seconds) { display: none !important; }
  .d2s-card-moq {
  font-size: 10.5px !important;
}
  .d2s-card-actions {
  padding-top: 4px !important;
}
}


/* ==========================================================
   D2S v1.30.34 — PRODUCT CARD INFORMATION ORDER
   Title (2 lines) → Star rating → Price → MOQ → Sale countdown.
   ========================================================== */









@media (max-width: 520px) {
  
  
  
  .d2s-product-card .d2s-card-moq:not(.d2s-card-moq--inline) {
    min-height: 15px !important;
    font-size: 10.5px !important;
  }
  
}


/* ==========================================================
   D2S v1.30.39 — FINAL PRODUCT CARD CONTENT HIERARCHY
   Title (2 lines) → Rating → Price → Sale timer → MOQ.
   Card countdown shows only numeric D:H:M:S values; no unit letters.
   ========================================================== */
.d2s-product-card .d2s-card-body {
  display: flex !important;
  flex-direction: column !important;
  gap: 5px !important;
}



.d2s-product-card .d2s-card-price {
  display: flex !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  gap: 5px !important;
  min-height: 25px !important;
  margin: 1px 0 0 !important;
  padding: 0 !important;
  order: 2 !important;
}
.d2s-product-card .d2s-card-ticker {
  order: 3 !important;
}
.d2s-product-card .d2s-sale-timer--card {
  display: flex !important;
  align-items: center !important;
  gap: 5px !important;
  margin: 0 !important;
  min-height: 17px !important;
  color: #667085;
  font-size: 11.5px !important;
  line-height: 1.2 !important;
  white-space: nowrap !important;
  order: 4 !important;
}
.d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-label {
  font-weight: 600 !important;
  color: #687772 !important;
  font-size: 11px !important;
}
.d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-clock {
  display: inline-flex !important;
  align-items: center !important;
  gap: 2px !important;
}
.d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-unit b {
  color: #CF0E39 !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  font-variant-numeric: tabular-nums;
  line-height: 1 !important;
}
.d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-unit small {
  color: #7C8798;
  font-size: 8px !important;
  font-weight: 600;
  display: none !important;
}
.d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-separator {
  color: #CF0E39 !important;
  font-size: 10px !important;
  font-weight: 700 !important;
}
.d2s-product-card .d2s-card-moq:not(.d2s-card-moq--inline) {
  order: 5 !important;
  min-height: 15px !important;
  margin: 0 !important;
}
.d2s-product-card .d2s-card-swatches,
.d2s-product-card .d2s-card-stock-status,
.d2s-product-card .d2s-card-stock-urgency,
.d2s-product-card .d2s-card-shipping-line {
  order: 6 !important;
}
.d2s-product-card .d2s-card-actions {
  order: 7 !important;
}
@media (max-width: 520px) {
  .d2s-product-card .d2s-card-title-link,
  .d2s-product-card .d2s-card-title {
  min-height: 36.2px !important;
  max-height: 36.2px !important;
  height: 36.2px !important;
}
  
  .d2s-product-card .d2s-card-rating {
  min-height: 15px !important;
}
  .d2s-product-card .d2s-card-price {
  gap: 4px !important;
  min-height: 25px !important;
}
  .d2s-product-card .d2s-sale-timer--card {
  min-height: 16px !important;
  margin-top: 0 !important;
  font-size: 10.5px !important;
}
  .d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-label,
  .d2s-product-card .d2s-sale-timer--card .d2s-sale-timer-unit b {
    font-size: 10.5px !important;
  }
}


/* ==========================================================
   D2S v1.30.40 — FORCE TRUE TWO-LINE PRODUCT TITLES
   Prevent inherited nowrap/single-line rules from collapsing
   marketplace card titles to one line.
   ========================================================== */
.d2s-product-card .d2s-card-title-link {
  order: 1 !important;
  display: block !important;
  min-height: 37.5px !important;
  max-height: 37.5px !important;
  overflow: hidden !important;
  height: 37.5px !important;
  width: 100% !important;
  white-space: normal !important;
  text-overflow: clip !important;
}
.d2s-product-card .d2s-card-title {
  font-size: 13.5px !important;
  font-weight: 400 !important;
  line-height: 1.34 !important;
  letter-spacing: -.08px !important;
  white-space: normal !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  display: -webkit-box !important;
  max-width: 100%;
  margin: 0 !important;
  padding: 0 !important;
  min-height: 37.5px !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
  max-height: 37.5px !important;
  height: 37.5px !important;
  width: 100% !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
}
@media (max-width: 520px) {
  .d2s-product-card .d2s-card-title-link {
    height: 36.2px !important;
    min-height: 36.2px !important;
    max-height: 36.2px !important;
  }
  .d2s-product-card .d2s-card-title {
  font-size: 13px !important;
  line-height: 1.34 !important;
  min-height: 36.2px !important;
  font-weight: 400 !important;
  height: 36.2px !important;
  max-height: 36.2px !important;
  white-space: normal !important;
  -webkit-line-clamp: 2 !important;
}
}

/* v1.30.100 — Premium outlined product-card CTA
   Keeps the CTA marketplace-focused without the heavy filled-green look. */
.d2s-card-actions .button,
.d2s-card-actions a.add_to_cart_button,
.d2s-card-actions a.product_type_variable {
  width: 100%;
  min-height: 36px;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  padding: 8px 12px;
  border: 1.5px solid var(--d2s-color-primary) !important;
  border-radius: 16px !important;
  background: #fff !important;
  color: var(--d2s-color-primary) !important;
  font-size: 13.5px !important;
  font-weight: 700;
  letter-spacing: .01em;
  transition: background .18s ease, color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .15s ease;
  box-shadow: 0 2px 8px rgba(8,83,76,.06);
}
.d2s-card-actions .button:hover,
.d2s-card-actions a.add_to_cart_button:hover,
.d2s-card-actions a.product_type_variable:hover {
  background: var(--d2s-color-primary) !important;
  border-color: var(--d2s-color-primary) !important;
  transform: translateY(-1px);
  color: #fff !important;
  box-shadow: 0 5px 14px rgba(8,83,76,.14);
}


/* ==========================================================
   D2S v1.30.107 — QUICK VIEW CENTERED OVERLAY POLISH
   Full-width card-media CTA with centered eye icon + label.
   Functionality unchanged; mobile remains hidden as before.
   ========================================================== */





@media (max-width: 1024px) {
	
}

/* ==========================================================
   D2S v1.30.108 — COMPACT QUICK VIEW EYE
   Replace the large centered CTA with a compact eye button.
   Functionality and trigger markup remain unchanged.
   ========================================================== */
.d2s-product-card .d2s-quick-view-btn {
  left: 50% !important;
  right: auto !important;
  top: 50% !important;
  bottom: auto !important;
  width: 42px !important;
  min-height: 42px !important;
  padding: 0 !important;
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0 !important;
  border: 1.5px solid rgba(8,83,76,.34) !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,.96) !important;
  color: var(--d2s-color-primary) !important;
  box-shadow: 0 5px 16px rgba(8,83,76,.18) !important;
  opacity: 0 !important;
  transform: translate(-50%, calc(-50% + 6px)) !important;
  transition: opacity .18s ease, transform .18s ease, box-shadow .18s ease, background .18s ease !important;
  height: 42px !important;
  min-width: 42px !important;
}
.d2s-product-card:hover .d2s-quick-view-btn {
  opacity: 1 !important;
  transform: translate(-50%, -50%) !important;
}
.d2s-product-card .d2s-quick-view-btn svg {
  width: 19px !important;
  height: 19px !important;
  flex: 0 0 19px !important;
}
.d2s-product-card .d2s-quick-view-btn span {
  font-size: 13px !important;
  font-weight: 750 !important;
  line-height: 1 !important;
  display: none !important;
}
.d2s-product-card .d2s-quick-view-btn:hover {
  background: #fff !important;
  color: var(--d2s-color-primary) !important;
  box-shadow: 0 7px 20px rgba(8,83,76,.24) !important;
  transform: translate(-50%, -50%) scale(1.04) !important;
}
@media (max-width: 1024px) {
	.d2s-product-card .d2s-quick-view-btn {
  display: none !important;
}
}

/* ==========================================================
   D2S v1.30.111 — PREMIUM MARKETPLACE QUICK VIEW
   Square gallery + thumbnails + variation-only selectors.
   ========================================================== */
.d2s-quick-view-modal.is-open {
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  box-sizing:border-box;
}
.d2s-quick-view-panel {
  position: relative;
  max-width:1180px;
  margin:0;
  background:#fff;
  border-radius:24px;
  padding:0;
  display:block;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  max-height:min(900px, calc(100vh - 48px));
  overflow-y: auto;
  width:min(1180px, calc(100vw - 48px));
  overflow:hidden;
  border:1px solid rgba(8,83,76,.10);
  box-shadow:0 28px 80px rgba(7,39,36,.28);
  z-index:2;
}
.d2s-quick-view-loading {
  padding:50px;
  text-align: center;
  color: var(--d2s-color-text-muted);
  grid-column: 1 / -1;
  min-height:300px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:15px;
  font-weight:650;
}
.d2s-quick-view-body {
  display:block;
}
.d2s-qv-shell { display:grid; grid-template-columns:minmax(0, 1.02fr) minmax(430px, .98fr); min-height:0; max-height:min(900px, calc(100vh - 48px)); overflow:auto; }
.d2s-qv-left { padding:26px; background:linear-gradient(145deg,#f7faf9,#eef5f3); border-right:1px solid rgba(8,83,76,.08); }
.d2s-qv-right { padding:32px 34px 28px; position:relative; }
.d2s-qv-gallery { display:flex; flex-direction:column; }
.d2s-qv-main-image { position:relative; width:100%; aspect-ratio:1 / 1; flex:none; display:flex; align-items:center; justify-content:center; background:#fff; border:1px solid #e4ece9; border-radius:18px; overflow:hidden; }
.d2s-qv-main-image img { width:100%; height:100%; object-fit:contain; display:block; }
.d2s-qv-image-placeholder { width:100%; aspect-ratio:1 / 1; }
.d2s-qv-image-zoom { position:absolute; right:14px; bottom:14px; width:42px; height:42px; border:1px solid #dbe7e4; border-radius:50%; background:#fff; color:var(--d2s-color-primary); box-shadow:0 5px 15px rgba(8,83,76,.12); font-size:20px; cursor:pointer; }
.d2s-qv-thumbs { display:flex; gap:10px; margin-top:14px; overflow-x:auto; padding:2px 2px 5px; }
.d2s-qv-thumb { flex:0 0 76px; width:76px; height:76px; padding:3px; border:1px solid #dce6e3; border-radius:12px; background:#fff; cursor:pointer; overflow:hidden; }
.d2s-qv-thumb img { width:100%; height:100%; object-fit:cover; border-radius:9px; display:block; }
.d2s-qv-thumb.is-active { border:2px solid var(--d2s-color-primary); padding:2px; box-shadow:0 0 0 2px rgba(8,83,76,.08); }
.d2s-qv-title {
  font-size:27px;
  margin:0 0 10px;
  line-height:1.2;
  letter-spacing:-.4px;
  color:#102a27;
}
.d2s-qv-rating { display:flex; align-items:center; gap:8px; color:#647773; font-size:13px; margin-bottom:15px; }
.d2s-qv-rating i { width:1px; height:16px; background:#d7e0de; display:block; margin:0 3px; }
.d2s-qv-stars { color:#f5a623; letter-spacing:1px; font-size:17px; }
.d2s-qv-rating strong { color:#183b36; }
.d2s-qv-price {
  font-size:30px;
  font-weight:800;
  color:var(--d2s-color-primary);
  margin-bottom: 10px;
  display:flex;
  align-items:center;
  gap:9px;
  line-height:1;
  margin:2px 0 15px;
}
.d2s-qv-price del { color:#9aa6a4; font-size:15px; font-weight:500; }
.d2s-qv-price ins { text-decoration:none; }
.d2s-qv-excerpt {
  font-size:13.5px;
  color:#64736f;
  margin-bottom:18px;
  line-height:1.55;
  max-height:66px;
  overflow:hidden;
}
.d2s-qv-attributes { border-top:1px solid #e8eeec; padding-top:16px; }
.d2s-qv-attribute { margin-bottom:15px; }
.d2s-qv-attribute-head { display:flex; justify-content:space-between; gap:12px; align-items:center; margin-bottom:8px; font-size:13px; color:#19332f; }
.d2s-qv-selected-label { color:var(--d2s-color-primary); font-weight:700; }
.d2s-qv-options { display:flex; flex-wrap:wrap; gap:7px; }
.d2s-qv-option { min-height:34px; padding:7px 13px; border:1px solid #d6e1de; border-radius:9px; background:#fff; color:#28413d; font-size:12px; font-weight:650; cursor:pointer; transition:.16s ease; }
.d2s-qv-option:hover { border-color:var(--d2s-color-primary); color:var(--d2s-color-primary); }
.d2s-qv-option.is-selected { border-color:var(--d2s-color-primary); background:#edf8f5; color:var(--d2s-color-primary); box-shadow:0 0 0 2px rgba(8,83,76,.07); }
.d2s-qv-purchase-row { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:8px 0 14px; }
.d2s-qv-quantity { display:flex; align-items:center; border:1px solid #d7e2df; border-radius:10px; overflow:hidden; height:42px; }
.d2s-qv-quantity button { width:38px; height:100%; border:0; background:#f6f9f8; color:var(--d2s-color-primary); font-size:20px; cursor:pointer; }
.d2s-qv-quantity input { width:44px; height:100%; border:0; border-left:1px solid #e1e9e7; border-right:1px solid #e1e9e7; text-align:center; font-weight:700; color:#17312d; background:#fff; }
.d2s-qv-quantity input::-webkit-inner-spin-button { appearance:none; }
.d2s-qv-stock { color:#198754; font-size:12px; font-weight:750; }
.d2s-qv-actions { display:grid; grid-template-columns:1fr 150px; gap:10px; }
.d2s-qv-add-to-cart,.d2s-qv-wishlist { min-height:48px; border-radius:11px; display:inline-flex; align-items:center; justify-content:center; gap:9px; font-size:13px; font-weight:800; text-decoration:none; cursor:pointer; box-sizing:border-box; }
.d2s-qv-add-to-cart { border:1px solid var(--d2s-color-primary); background:var(--d2s-color-primary); color:#fff; box-shadow:0 7px 18px rgba(8,83,76,.16); }
.d2s-qv-add-to-cart:hover { background:#096b61; border-color:#096b61; }
.d2s-qv-add-to-cart:disabled { opacity:.55; cursor:not-allowed; box-shadow:none; }
.d2s-qv-add-to-cart.is-added { background:#16836f; border-color:#16836f; }
.d2s-qv-cart-icon { font-size:15px; }
.d2s-qv-wishlist { border:1px solid #d5e2df; background:#fff; color:#24413c; }
.d2s-qv-wishlist:hover { border-color:var(--d2s-color-primary); color:var(--d2s-color-primary); }
.d2s-qv-meta { display:flex; flex-wrap:wrap; gap:12px; border-top:1px solid #e8eeec; margin-top:17px; padding-top:14px; color:#62726e; font-size:11px; font-weight:650; }
.d2s-qv-permalink {
  display:inline-block;
  margin-top:15px;
  font-size:12px;
  color:var(--d2s-color-primary);
  text-decoration:none;
  font-weight:750;
}
.d2s-qv-permalink:hover { text-decoration:underline; }
.d2s-quick-view-close {
  position: absolute;
  top:15px;
  right:15px;
  background:#fff;
  border:1px solid #dce6e3;
  font-size:25px;
  line-height: 1;
  cursor: pointer;
  color:#52635f;
  z-index:10;
  width:38px;
  height:38px;
  border-radius:50%;
  box-shadow:0 5px 16px rgba(8,83,76,.12);
  display:flex;
  align-items:center;
  justify-content:center;
}
.d2s-quick-view-close:hover { color:var(--d2s-color-primary); border-color:var(--d2s-color-primary); }
@media (max-width:900px) {
	.d2s-quick-view-modal.is-open { padding:12px; }
	.d2s-quick-view-panel { width:calc(100vw - 24px); max-height:calc(100vh - 24px); border-radius:18px; }
	.d2s-qv-shell { grid-template-columns:1fr; max-height:calc(100vh - 24px); }
	.d2s-qv-left { padding:14px; border-right:0; border-bottom:1px solid rgba(8,83,76,.08); }
	.d2s-qv-right { padding:20px 18px 24px; }
	.d2s-qv-main-image { border-radius:16px; }
	.d2s-qv-title { font-size:22px; padding-right:35px; }
}
@media (max-width:520px) {
	.d2s-quick-view-modal.is-open { padding:0; }
	.d2s-quick-view-panel { width:100vw; max-height:100vh; border-radius:0; }
	.d2s-qv-shell { max-height:100vh; }
	.d2s-qv-left { padding:10px; }
	.d2s-qv-right { padding:18px 14px 24px; }
	.d2s-qv-main-image { border-radius:14px; }
	.d2s-qv-thumb { flex-basis:62px; width:62px; height:62px; }
	.d2s-qv-title { font-size:20px; }
	.d2s-qv-price { font-size:27px; }
	.d2s-qv-actions { grid-template-columns:1fr; }
	.d2s-qv-wishlist { min-height:42px; }
	.d2s-qv-close { top:10px; right:10px; }
}

/* D2S v1.30.123 — Quick View loading-state fix
 * The loading element uses display:flex for its visible state; without
 * an explicit [hidden] override, that CSS can override the browser's
 * hidden attribute and leave a large blank/loading area above the product.
 */
.d2s-quick-view-loading[hidden] { display: none !important; }

/* v1.30.176 — review rating rows are canonical links to the D2S review module.
   v1.30.242 — "order" removed: .d2s-card-rating now lives inside
   .d2s-card-social-proof (which owns the order/position in the card's
   vertical stack) alongside the new "X sold" text, not directly in
   .d2s-card-body any more. */
.d2s-product-card .d2s-card-rating{
  min-height: 16px !important;
  margin: 0 !important;
  display:flex;
  align-items:center;
  gap:5px;
  text-decoration:none;
  cursor:pointer;
}
.d2s-product-card .d2s-card-rating:hover .d2s-card-rating-count{text-decoration:underline;}

/* ==========================================================
   D2S v1.30.398 — TEMU-STYLE MARKETPLACE CARD TEST
   Visual-only card treatment. Keeps existing D2S markup, real-data
   badges/ticker, wishlist/compare and WooCommerce logic untouched.
   ========================================================== */
.d2s-product-card {
  border: 0 !important;
  border-radius: 8px !important;
  background: #fff !important;
  box-shadow: none !important;
  overflow: hidden !important;
  transition: box-shadow .18s ease, transform .18s ease !important;
}
.d2s-product-card:hover {
  border-color: transparent !important;
  box-shadow: 0 5px 16px rgba(15,23,42,.07) !important;
  transform: translateY(-1px) !important;
}
.d2s-card-media {
  aspect-ratio: 1 / 1 !important;
  border-radius: 8px !important;
  background: #f5f5f5 !important;
  box-shadow: none !important;
}
.d2s-card-media::after {
  display: none !important;
}
.d2s-card-body {
  padding: 8px 5px 10px !important;
  gap: 4px !important;
  background: #fff !important;
}
.d2s-card-title {
  font-size: 14px !important;
  line-height: 1.32 !important;
  font-weight: 400 !important;
  color: #222 !important;
  letter-spacing: 0 !important;
  min-height: 37px !important;
}
.d2s-card-title-link:hover .d2s-card-title {
  color: #08534C !important;
}
.d2s-card-price {
  margin-top: 2px !important;
  gap: 6px !important;
  min-height: 25px !important;
  order: 4 !important;
}
.d2s-product-card .d2s-card-price .d2s-card-current-price,
.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
.d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale bdi,
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-currencySymbol {
  font-size: 20px !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  letter-spacing: -.35px !important;
}
.d2s-product-card .d2s-card-price .d2s-card-current-price--sale {
  color: #F04438 !important;
}
.d2s-product-card .d2s-card-price .d2s-card-current-price:only-child {
  color: #111 !important;
}
.d2s-product-card .d2s-card-price .d2s-card-original-price,
.d2s-product-card .d2s-card-price .d2s-card-original-price .woocommerce-Price-amount,
.d2s-product-card .d2s-card-price .d2s-card-original-price bdi {
  font-size: 11px !important;
  color: #8b8b8b !important;
}
.d2s-product-card .d2s-card-price .d2s-card-discount {
  height: 19px !important;
  min-height: 19px !important;
  padding: 0 6px !important;
  border-radius: 3px !important;
  background: #fff0f1 !important;
  color: #d92d3b !important;
  font-size: 9px !important;
  line-height: 19px !important;
  font-weight: 700 !important;
}
.d2s-card-social-proof {
  order: 5 !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  gap: 5px !important;
}
.d2s-card-rating-number,
.d2s-card-rating-count,
.d2s-card-sold {
  font-size: 11px !important;
}
.d2s-card-ticker {
  order: 6 !important;
  height: 18px !important;
  margin-top: 0 !important;
}
.d2s-card-ticker .d2s-ticker-line {
  font-size: 12px !important;
  font-weight: 550 !important;
}
.d2s-card-badges {
  top: 7px !important;
  left: 7px !important;
  gap: 3px !important;
}
.d2s-badge-sale {
  padding: 5px 10px 5px 8px !important;
  font-size: 10px !important;
}
.d2s-card-media-tools {
  top: 7px !important;
  right: 7px !important;
  gap: 5px !important;
}
.d2s-card-wishlist-btn,
.d2s-compare-icon {
  width: 31px !important;
  height: 31px !important;
  border-radius: 50% !important;
  background: rgba(255,255,255,.94) !important;
  border-color: rgba(0,0,0,.06) !important;
  box-shadow: 0 2px 8px rgba(0,0,0,.10) !important;
}
.d2s-card-marketplace-rail {
  left: 7px !important;
  right: 7px !important;
  bottom: 7px !important;
}
.d2s-marketplace-chip {
  border-radius: 4px !important;
  min-height: 22px !important;
  padding: 4px 6px !important;
  font-size: 8.5px !important;
}
@media (max-width: 520px) {
  .d2s-product-card {
    border-radius: 7px !important;
  }
  .d2s-card-media {
    border-radius: 7px !important;
  }
  .d2s-card-body {
    padding: 7px 4px 9px !important;
  }
  .d2s-card-title {
    font-size: 13.5px !important;
    min-height: 36px !important;
  }
  .d2s-product-card .d2s-card-price .d2s-card-current-price,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price .woocommerce-Price-currencySymbol,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-amount,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale bdi,
  .d2s-product-card .d2s-card-price .d2s-card-current-price--sale .woocommerce-Price-currencySymbol {
    font-size: 18px !important;
  }
}


/* D2S v1.30.399 — marketplace image corners: square */
.d2s-product-card { border-radius: 0 !important; }
.d2s-product-card .d2s-card-media,
.d2s-product-card .d2s-card-media-link,
.d2s-product-card .d2s-card-media img,
.d2s-product-card .d2s-card-media-link > img,
.d2s-product-card .d2s-card-hover-image {
  border-radius: 0 !important;
}
