/* ==========================================================================
   Envision Theme - shop pages (inc/shop-ui.php, assets/js/shop.js)
   breadcrumb · result count + sorting toolbar · custom sorting dropdown · related products carousel ·
   product page (gallery thumbnails, tabs, price, quantity + Add to cart, variations, attributes table)
   ========================================================================== */

/* ---------- Breadcrumb: breathing room under the header, lighter look ---------- */
.woocommerce-breadcrumb.woocommerce-breadcrumb {
	display: block;
	margin: 0;
	padding: 28px 0 6px;
	font-size: 13px;
	line-height: 1.6;
	color: var(--envision-slate);
}
.woocommerce-breadcrumb.woocommerce-breadcrumb a {
	color: var(--envision-ink);
	text-decoration: none;
	opacity: .78;
	transition: color .2s ease, opacity .2s ease;
}
.woocommerce-breadcrumb.woocommerce-breadcrumb a:hover,
.woocommerce-breadcrumb.woocommerce-breadcrumb a:focus-visible {
	color: var(--envision-accent);
	opacity: 1;
}
.woocommerce-breadcrumb .envision-bc-sep {
	margin: 0 9px;
	opacity: .4;
}
.woocommerce-products-header { margin-bottom: 4px; }
@media (max-width: 600px) {
	.woocommerce-breadcrumb.woocommerce-breadcrumb { padding-top: 18px; font-size: 12.5px; }
}

/* ---------- Toolbar: result count on the left, sorting on the right ---------- */
.envision-shop-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px 20px;
	margin: 8px 0 28px;
	padding: 12px 0;
	border-top: 1px solid var(--envision-line);
	border-bottom: 1px solid var(--envision-line);
}
.envision-shop-toolbar:empty { display: none; }
.envision-shop-toolbar .woocommerce-result-count {
	float: none;
	margin: 0;
	font-size: 14px;
	color: var(--envision-slate);
}
.envision-shop-toolbar .woocommerce-ordering {
	float: none;
	margin: 0;
}

/* native select (touch screens, and until the script has run) */
.envision-shop-toolbar .woocommerce-ordering select.orderby {
	-webkit-appearance: none;
	appearance: none;
	min-width: 230px;
	max-width: 100%;
	margin: 0;
	padding: 11px 44px 11px 20px;
	border: 1px solid var(--envision-line);
	border-radius: 999px;
	background: var(--envision-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 18px center / 14px;
	color: var(--envision-ink);
	font: 500 14px/1.2 var(--envision-font-body);
	cursor: pointer;
	transition: border-color .2s ease, box-shadow .2s ease;
}
.envision-shop-toolbar .woocommerce-ordering select.orderby:hover { border-color: var(--envision-accent); }
.envision-shop-toolbar .woocommerce-ordering select.orderby:focus-visible {
	outline: none;
	border-color: var(--envision-accent);
	box-shadow: 0 0 0 3px rgba(214, 40, 40, .16);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--envision-accent, #d62828) 16%, transparent);
}
@media (max-width: 600px) {
	.envision-shop-toolbar { gap: 10px 12px; }
	.envision-shop-toolbar .woocommerce-ordering { width: 100%; }
	.envision-shop-toolbar .woocommerce-ordering select.orderby { width: 100%; }
}

/* ---------- Custom sorting dropdown (mouse devices; built by shop.js on top of the real select) ---------- */
.envision-select { position: relative; display: inline-block; }
.envision-select > select.is-replaced {
	position: absolute;
	left: 0;
	top: 0;
	width: 1px;
	height: 1px;
	opacity: 0;
	pointer-events: none;
}
.envision-select-btn {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-width: 230px;
	margin: 0;
	padding: 11px 18px 11px 20px;
	border: 1px solid var(--envision-line);
	border-radius: 999px;
	background: var(--envision-surface);
	color: var(--envision-ink);
	font: 500 14px/1.2 var(--envision-font-body);
	cursor: pointer;
	transition: border-color .2s ease, box-shadow .2s ease;
}
.envision-select-btn:hover,
.envision-select.is-open .envision-select-btn { border-color: var(--envision-accent); }
.envision-select-btn:focus-visible {
	outline: none;
	border-color: var(--envision-accent);
	box-shadow: 0 0 0 3px rgba(214, 40, 40, .16);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--envision-accent, #d62828) 16%, transparent);
}
.envision-select-btn svg { flex: none; color: var(--envision-slate); transition: transform .2s ease; }
.envision-select.is-open .envision-select-btn svg { transform: rotate(180deg); }
.envision-select-list {
	position: absolute;
	z-index: 60;
	top: calc(100% + 8px);
	right: 0;
	min-width: 100%;
	margin: 0;
	padding: 6px;
	list-style: none;
	background: var(--envision-surface);
	border: 1px solid var(--envision-line);
	border-radius: 16px;
	box-shadow: 0 18px 40px rgba(20, 21, 26, .14);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-6px);
	transition: opacity .18s ease, transform .18s ease, visibility .18s;
}
.envision-select.is-open .envision-select-list {
	opacity: 1;
	visibility: visible;
	transform: none;
}
.envision-select-list:focus { outline: none; }
.envision-select-list li {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	margin: 0;
	padding: 10px 14px;
	border-radius: 10px;
	font-size: 14px;
	line-height: 1.3;
	white-space: nowrap;
	color: var(--envision-ink);
	cursor: pointer;
}
.envision-select-list li.is-active { background: rgba(214, 40, 40, .08); background: color-mix(in srgb, var(--envision-accent, #d62828) 8%, transparent); }
.envision-select-list li[aria-selected="true"] { font-weight: 600; color: var(--envision-accent); }
.envision-select-list li[aria-selected="true"]::after {
	content: "";
	width: 14px;
	height: 14px;
	flex: none;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E") center / contain no-repeat;
}
@supports (color: color-mix(in srgb, red 50%, blue)) {
	.envision-shop-toolbar .woocommerce-ordering select.orderby:focus-visible,
	.envision-select-btn:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--envision-accent) 20%, transparent); }
	.envision-select-list li.is-active { background: color-mix(in srgb, var(--envision-accent) 9%, transparent); }
}

/* ==========================================================================
   Related products carousel
   <section class="related products"> <h2> <div class="envision-carousel-wrap"> <ul class="products envision-carousel" data-cols data-autoplay>
   shop.js adds the arrows (next to the heading) and the dots. Without JS it is still a swipeable / scrollable row.
   ========================================================================== */
.related.products,
.upsells.products {
	clear: both;
	position: relative;
	margin-top: 56px;
}
.related.products > h2 {
	margin: 0 0 22px;
	padding-right: 110px;
	font-size: 24px;
	line-height: 1.25;
}
.envision-carousel-wrap { position: relative; }

ul.products.envision-carousel {
	--ec-d: 4;
	--ec-gap: 22px;
	--ec-cols: var(--ec-d);
	display: flex;
	flex-wrap: nowrap;
	gap: var(--ec-gap);
	margin: 0;
	padding: 6px 2px 22px;
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-ms-overflow-style: none;
	-webkit-overflow-scrolling: touch;
}
ul.products.envision-carousel::-webkit-scrollbar { display: none; }
ul.products.envision-carousel::before,
ul.products.envision-carousel::after { content: none; display: none; }
ul.products.envision-carousel[data-cols="2"] { --ec-d: 2; }
ul.products.envision-carousel[data-cols="3"] { --ec-d: 3; }
ul.products.envision-carousel[data-cols="4"] { --ec-d: 4; }
ul.products.envision-carousel[data-cols="5"] { --ec-d: 5; }
ul.products.envision-carousel[data-cols="6"] { --ec-d: 6; }

ul.products.envision-carousel > li.product,
ul.products.envision-pc.envision-carousel.envision-carousel > li.product {
	flex: 0 0 calc((100% - (var(--ec-cols) - 1) * var(--ec-gap)) / var(--ec-cols));
	width: auto;
	min-width: 0;
	margin: 0;
	float: none;
	scroll-snap-align: start;
}
@media (hover: hover) and (pointer: fine) {
	ul.products.envision-carousel { cursor: grab; }
	ul.products.envision-carousel.is-dragging { cursor: grabbing; scroll-snap-type: none; scroll-behavior: auto; user-select: none; }
	ul.products.envision-carousel.is-dragging a { pointer-events: none; }
}
@media (max-width: 1024px) {
	ul.products.envision-carousel[data-cols] { --ec-cols: min(var(--ec-d), 3); }
}
@media (max-width: 768px) {
	ul.products.envision-carousel[data-cols] { --ec-cols: 2; --ec-gap: 14px; }
	.related.products { margin-top: 40px; }
	.related.products > h2 { font-size: 20px; padding-right: 0; }
}

.envision-carousel-nav {
	position: absolute;
	top: -4px;
	right: 0;
	display: flex;
	gap: 8px;
}
.envision-carousel-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	margin: 0;
	padding: 0;
	border: 1px solid var(--envision-line);
	border-radius: 50%;
	background: var(--envision-surface);
	color: var(--envision-ink);
	cursor: pointer;
	transition: background-color .2s ease, color .2s ease, border-color .2s ease, opacity .2s ease, transform .2s ease;
}
.envision-carousel-btn:hover:not(:disabled) {
	background: var(--envision-accent);
	border-color: var(--envision-accent);
	color: #fff;
	transform: translateY(-1px);
}
.envision-carousel-btn:focus-visible { outline: 2px solid var(--envision-accent); outline-offset: 2px; }
.envision-carousel-btn:disabled { opacity: .35; cursor: default; }
.envision-carousel-wrap.is-static + .envision-carousel-nav,
.related.products.is-static .envision-carousel-nav { display: none; }
@media (max-width: 768px) {
	.envision-carousel-nav { display: none; }
}

.envision-carousel-dots {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 2px;
}
.envision-carousel-dots button {
	width: 8px;
	height: 8px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: var(--envision-line);
	cursor: pointer;
	transition: width .25s ease, background-color .25s ease;
}
.envision-carousel-dots button[aria-current="true"] {
	width: 24px;
	background: var(--envision-accent);
}
.envision-carousel-dots:empty,
.envision-carousel-wrap.is-static .envision-carousel-dots { display: none; }

@media (prefers-reduced-motion: reduce) {
	ul.products.envision-carousel { scroll-behavior: auto; }
	.envision-select-list, .envision-select-btn svg, .envision-carousel-btn, .envision-carousel-dots button { transition: none; }
}

/* ==========================================================================
   Product page (single product)
   WooCommerce's own rules start with  .woocommerce div.product ...  - these start with  html .woocommerce div.product ...
   so they win without !important.
   ========================================================================== */

/* ---------- Gallery: thumbnails are never dimmed ----------
   WooCommerce makes every inactive thumbnail 50% see-through: a white picture on a dark page turned grey and looked blurred.
   Now all thumbnails are full strength; the picture that is showing gets the accent border. */
html .woocommerce div.product div.images .woocommerce-product-gallery__image img { opacity: 1; }
html .woocommerce div.product div.images .flex-control-thumbs {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
	gap: 10px;
	margin: 12px 0 0;
	padding: 0;
	overflow: visible;
	list-style: none;
}
html .woocommerce div.product div.images .flex-control-thumbs li {
	width: auto;
	float: none;
	margin: 0;
	list-style: none;
}
html .woocommerce div.product div.images .flex-control-thumbs li img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	margin: 0;
	opacity: 1;
	cursor: pointer;
	border: 2px solid var(--envision-line);
	border-radius: 8px;
	transition: border-color .2s ease, box-shadow .2s ease;
}
html .woocommerce div.product div.images .flex-control-thumbs li img:hover {
	opacity: 1;
	border-color: var(--envision-slate);
}
html .woocommerce div.product div.images .flex-control-thumbs li img.flex-active {
	opacity: 1;
	border-color: var(--envision-accent);
}
/* the pictures after the first one when the slider script is not running */
html .woocommerce div.product div.images .woocommerce-product-gallery__image:nth-child(n+2) { opacity: 1; }

/* "Picture background: White" (Envision > Product Cards) */
body.envision-mbg-white div.product div.images .woocommerce-product-gallery__image,
body.envision-mbg-white div.product div.images .flex-control-thumbs li img {
	background: #fff;
}

/* ---------- Tabs: flat tabs with an accent underline (Woo's boxed tabs with the rounded corners were white on a dark page) ---------- */
html .woocommerce div.product .woocommerce-tabs { margin-top: 44px; }
html .woocommerce div.product .woocommerce-tabs ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 0 30px;
	margin: 0 0 26px;
	padding: 0;
	overflow: visible;
	list-style: none;
	border-bottom: 1px solid var(--envision-line);
}
html .woocommerce div.product .woocommerce-tabs ul.tabs::before,
html .woocommerce div.product .woocommerce-tabs ul.tabs::after {
	content: none;
	display: none;
	border: 0;
}
html .woocommerce div.product .woocommerce-tabs ul.tabs li {
	position: relative;
	z-index: auto;
	display: block;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background: transparent;
	color: var(--envision-slate);
}
html .woocommerce div.product .woocommerce-tabs ul.tabs li::before,
html .woocommerce div.product .woocommerce-tabs ul.tabs li::after,
html .woocommerce div.product .woocommerce-tabs ul.tabs li.active::before,
html .woocommerce div.product .woocommerce-tabs ul.tabs li.active::after {
	content: none;
	display: none;
	border: 0;
	box-shadow: none;
}
html .woocommerce div.product .woocommerce-tabs ul.tabs li.active {
	z-index: auto;
	background: transparent;
	border-bottom-color: transparent;
	color: var(--envision-ink);
}
html .woocommerce div.product .woocommerce-tabs ul.tabs li a {
	display: block;
	margin-bottom: -1px;
	padding: 12px 2px;
	border-bottom: 2px solid transparent;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.3;
	color: var(--envision-slate);
	text-decoration: none;
	transition: color .2s ease, border-color .2s ease;
}
html .woocommerce div.product .woocommerce-tabs ul.tabs li a:hover { color: var(--envision-ink); }
html .woocommerce div.product .woocommerce-tabs ul.tabs li.active a {
	color: var(--envision-ink);
	border-bottom-color: var(--envision-accent);
}
html .woocommerce div.product .woocommerce-tabs ul.tabs li a:focus-visible {
	outline: 2px solid var(--envision-accent);
	outline-offset: 2px;
	border-radius: 4px;
}
html .woocommerce div.product .woocommerce-tabs .panel { margin: 0 0 32px; }

/* Additional information table */
html .woocommerce div.product table.woocommerce-product-attributes {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
}
html .woocommerce div.product table.woocommerce-product-attributes th,
html .woocommerce div.product table.woocommerce-product-attributes td {
	padding: 12px 0;
	border: 0;
	border-bottom: 1px solid var(--envision-line);
	background: transparent;
	text-align: left;
	font-style: normal;
	vertical-align: top;
}
html .woocommerce div.product table.woocommerce-product-attributes th {
	width: 32%;
	padding-right: 16px;
	font-weight: 600;
	color: var(--envision-ink);
}
html .woocommerce div.product table.woocommerce-product-attributes td { color: var(--envision-slate); }
html .woocommerce div.product table.woocommerce-product-attributes td p { margin: 0; padding: 0; }

/* ---------- "Sale!" badge on the product page: inside the picture's corner, in the primary colour ---------- */
html .woocommerce div.product span.onsale {
	top: 12px;
	left: 12px;
	right: auto;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 6px 12px;
	border-radius: 999px;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.2;
	background: var(--envision-accent);
	color: var(--envision-accent-ink, #fff);
}

/* ---------- Price ---------- */
html .woocommerce div.product p.price,
html .woocommerce div.product span.price {
	margin: 0 0 18px;
	font-size: 28px;
	font-weight: 700;
	line-height: 1.2;
	color: var(--envision-ink);
}
html .woocommerce div.product p.price del,
html .woocommerce div.product span.price del {
	margin-right: 8px;
	font-size: .62em;
	font-weight: 500;
	color: var(--envision-slate);
	opacity: 1;
}
html .woocommerce div.product p.price ins,
html .woocommerce div.product span.price ins {
	background: transparent;
	color: var(--envision-accent);
	font-weight: 700;
	text-decoration: none;
}

/* ---------- Quantity + Add to cart: one tidy row ---------- */
html .woocommerce div.product form.cart:not(.variations_form):not(.grouped_form),
html .woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 12px;
}
/* Woo's clear-fix pseudo elements would become two empty flex items (extra gaps) */
html .woocommerce div.product form.cart:not(.variations_form):not(.grouped_form)::before,
html .woocommerce div.product form.cart:not(.variations_form):not(.grouped_form)::after,
html .woocommerce div.product form.cart .woocommerce-variation-add-to-cart::before,
html .woocommerce div.product form.cart .woocommerce-variation-add-to-cart::after {
	content: none;
	display: none;
}
html .woocommerce div.product form.cart { margin-bottom: 28px; }
html .woocommerce div.product form.cart div.quantity {
	float: none;
	display: flex;
	margin: 0;
}
html .woocommerce div.product form.cart div.quantity input.qty {
	width: 80px;
	height: 100%;
	min-height: 48px;
	margin: 0;
	padding: 0 10px;
	text-align: center;
	font: 600 16px/1 var(--envision-font-body);
	color: var(--envision-ink);
	background: var(--envision-surface);
	border: 1px solid var(--envision-line);
	border-radius: var(--envision-btn-radius, 6px);
	box-shadow: none;
	transition: border-color .2s ease, box-shadow .2s ease;
}
html .woocommerce div.product form.cart div.quantity input.qty:focus {
	outline: none;
	border-color: var(--envision-accent);
	box-shadow: 0 0 0 3px rgba(214, 40, 40, .16);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--envision-accent, #d62828) 16%, transparent);
}
html .woocommerce div.product form.cart .button {
	float: none;
	display: inline-flex;
	flex: 1 1 200px;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	margin: 0;
	padding: 12px 32px;
	font-size: 15px;
	line-height: 1.2;
	letter-spacing: .02em;
}
html .woocommerce div.product form.cart .button.disabled,
html .woocommerce div.product form.cart .button:disabled { opacity: .5; }

/* ---------- Variations (size / colour dropdowns) ---------- */
html .woocommerce div.product form.cart .variations { margin-bottom: 18px; }
html .woocommerce div.product form.cart .variations th,
html .woocommerce div.product form.cart .variations td { padding: 0 0 12px; border: 0; line-height: 1.4; }
html .woocommerce div.product form.cart .variations label {
	display: block;
	margin-bottom: 6px;
	font-size: 14px;
	font-weight: 600;
	color: var(--envision-ink);
}
html .woocommerce div.product form.cart .variations select {
	min-width: 220px;
	min-height: 46px;
	margin: 0;
	padding: 8px 42px 8px 14px;
	color: var(--envision-ink);
	background-color: var(--envision-surface);
	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' stroke='%239a9aa2' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	background-size: 14px;
	border: 1px solid var(--envision-line);
	border-radius: var(--envision-btn-radius, 6px);
}
html .woocommerce div.product form.cart .variations select:focus {
	outline: none;
	border-color: var(--envision-accent);
	box-shadow: 0 0 0 3px rgba(214, 40, 40, .16);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--envision-accent, #d62828) 16%, transparent);
}
html .woocommerce div.product form.cart .reset_variations { margin-left: 10px; font-size: 13px; color: var(--envision-slate); }

@media (max-width: 600px) {
	html .woocommerce div.product p.price,
	html .woocommerce div.product span.price { font-size: 24px; }
	html .woocommerce div.product .woocommerce-tabs ul.tabs { gap: 0 22px; }
	html .woocommerce div.product form.cart .variations select { width: 100%; min-width: 0; }
}
@media (prefers-reduced-motion: reduce) {
	html .woocommerce div.product div.images .flex-control-thumbs li img,
	html .woocommerce div.product .woocommerce-tabs ul.tabs li a,
	html .woocommerce div.product form.cart div.quantity input.qty { transition: none; }
}
