/* ==========================================================================
   Envision Theme - shop pages (inc/shop-ui.php, assets/js/shop.js)
   breadcrumb · result count + sorting toolbar · custom sorting dropdown · related products carousel
   ========================================================================== */

/* ---------- 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(26, 86, 219, .16);
}
@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(26, 86, 219, .16);
}
.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(26, 86, 219, .08); }
.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; }
}
