/**
 * ECP Product Carousel v1.1.0 (2026-10-09) — horizontal one-row track of real product cards.
 * Native overflow scrolling + CSS scroll-snap: touch swipe and trackpad/horizontal wheel are handled by the
 * browser (no JS), vertical page scroll stays free. Cards start and end inset from the screen edge
 * (--ecp-carousel-inset, via track padding + matching scroll-padding so snapping keeps the inset).
 * Arrows match PDP qty ± (.ecp-pdp-qty-btn): #f5f3ef bg, #2a3a52 icon, ~44px, radius 8px.
 */

.ecp-product-carousel {
	--ecp-carousel-gap: 24px;
	--ecp-carousel-card: min(280px, 72vw);
	--ecp-carousel-inset: 30px;
	--ecp-carousel-arrow-inset: calc(var(--ecp-carousel-inset) + 8px);
	position: relative;
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
	padding: 0 0 8px;
}

.ecp-product-carousel__viewport {
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: var(--ecp-carousel-inset);
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	/* Swiping/trackpad-scrolling past either end must not chain to the page (Safari/Chrome back-swipe). */
	overscroll-behavior-x: contain;
	scrollbar-width: none;
	cursor: grab;
	/* Native touch panning in BOTH axes (was pan-y, which blocked horizontal swipes on iPhone). */
	touch-action: auto;
	padding: 4px 0 12px;
	margin: 0;
}

/* Mouse/trackpad devices: free native scrolling. CSS mandatory snap snaps EVERY small trackpad/wheel delta back to
   the same card in Chrome, so horizontal two-finger scrolling looked stuck. ecp-product-carousel.js settles on the
   nearest card once a wheel/trackpad scroll has finished. Touch keeps native mandatory snap. */
@media (hover: hover) and (pointer: fine) {
	.ecp-product-carousel__viewport {
		scroll-snap-type: none;
	}
}

.ecp-product-carousel__viewport::-webkit-scrollbar {
	display: none;
}

.ecp-product-carousel__viewport.is-dragging {
	cursor: grabbing;
	scroll-snap-type: none;
	scroll-behavior: auto;
	user-select: none;
	-webkit-user-select: none;
}

.ecp-product-carousel__viewport a,
.ecp-product-carousel__viewport img {
	-webkit-user-drag: none;
}

/* Force one horizontal row — never archive 2-col grid */
body.ecp-product-carousel-active .ecp-product-carousel ul.products.ecp-product-carousel__track,
body.ecp-va-active .ecp-product-carousel ul.products.ecp-product-carousel__track,
body.ecp-vssv-active .ecp-product-carousel ul.products.ecp-product-carousel__track,
.ecp-product-carousel ul.products.ecp-product-carousel__track {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: stretch !important;
	gap: var(--ecp-carousel-gap) !important;
	grid-template-columns: none !important;
	grid-auto-flow: column !important;
	columns: auto !important;
	column-count: auto !important;
	width: max-content !important;
	max-width: none !important;
	min-width: 100%;
	margin: 0 !important;
	padding: 0 var(--ecp-carousel-inset) !important;
	list-style: none !important;
	box-sizing: border-box !important;
}

body.ecp-product-carousel-active .ecp-product-carousel ul.products.ecp-product-carousel__track > li.product,
body.ecp-va-active .ecp-product-carousel ul.products.ecp-product-carousel__track > li.product,
body.ecp-vssv-active .ecp-product-carousel ul.products.ecp-product-carousel__track > li.product,
.ecp-product-carousel ul.products.ecp-product-carousel__track > li.product {
	flex: 0 0 var(--ecp-carousel-card) !important;
	width: var(--ecp-carousel-card) !important;
	max-width: var(--ecp-carousel-card) !important;
	min-width: var(--ecp-carousel-card) !important;
	scroll-snap-align: start;
	float: none !important;
	margin: 0 !important;
	padding: 0 !important;
	box-sizing: border-box !important;
}

/*
 * Square L/R arrows — overlay on track edges.
 * Beat Elementor/Hello button resets with high specificity + !important
 * (match .ecp-pdp-qty-btn: #f5f3ef / #2a3a52 / 44px / radius 8px).
 */
body.ecp-product-carousel-active .ecp-product-carousel button.ecp-product-carousel__arrow,
.ecp-product-carousel button.ecp-product-carousel__arrow,
.elementor-widget-shortcode .ecp-product-carousel button.ecp-product-carousel__arrow {
	position: absolute !important;
	/* centred on the (square) card image: viewport top padding 4px + half the card width */
	top: calc(4px + var(--ecp-carousel-card) / 2) !important;
	transform: translateY(-50%) !important;
	z-index: 5 !important;
	width: 44px !important;
	height: 44px !important;
	min-width: 44px !important;
	min-height: 44px !important;
	border: none !important;
	border-radius: 8px !important;
	background: #f5f3ef !important;
	background-color: #f5f3ef !important;
	background-image: none !important;
	color: #2a3a52 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 0 !important;
	margin: 0 !important;
	cursor: pointer !important;
	box-shadow: 0 1px 3px rgba(42, 58, 82, 0.12) !important;
	transition: background 0.15s ease, opacity 0.15s ease !important;
	font-size: 0 !important;
	line-height: 1 !important;
	text-decoration: none !important;
	outline: none !important;
}

body.ecp-product-carousel-active .ecp-product-carousel button.ecp-product-carousel__arrow:hover:not(:disabled),
.ecp-product-carousel button.ecp-product-carousel__arrow:hover:not(:disabled) {
	background: #ede9e2 !important;
	background-color: #ede9e2 !important;
	color: #2a3a52 !important;
}

body.ecp-product-carousel-active .ecp-product-carousel button.ecp-product-carousel__arrow:disabled,
.ecp-product-carousel button.ecp-product-carousel__arrow:disabled {
	opacity: 0.35 !important;
	cursor: default !important;
}

body.ecp-product-carousel-active .ecp-product-carousel button.ecp-product-carousel__arrow--prev,
.ecp-product-carousel button.ecp-product-carousel__arrow--prev {
	left: var(--ecp-carousel-arrow-inset) !important;
	right: auto !important;
}

body.ecp-product-carousel-active .ecp-product-carousel button.ecp-product-carousel__arrow--next,
.ecp-product-carousel button.ecp-product-carousel__arrow--next {
	right: var(--ecp-carousel-arrow-inset) !important;
	left: auto !important;
}

body.ecp-product-carousel-active .ecp-product-carousel button.ecp-product-carousel__arrow svg,
.ecp-product-carousel button.ecp-product-carousel__arrow svg {
	width: 18px !important;
	height: 18px !important;
	fill: currentColor !important;
	display: block !important;
}

@media (max-width: 767px) {
	/* East Fork-style: 12px edge gutter, first card ~70% of the screen with a peek of the next */
	.ecp-product-carousel {
		--ecp-carousel-card: min(300px, 70vw);
		--ecp-carousel-gap: 12px;
		--ecp-carousel-inset: 12px;
		--ecp-carousel-arrow-inset: 20px;
	}

	body.ecp-product-carousel-active .ecp-product-carousel button.ecp-product-carousel__arrow,
	.ecp-product-carousel button.ecp-product-carousel__arrow {
		width: 40px !important;
		height: 40px !important;
		min-width: 40px !important;
		min-height: 40px !important;
		border-radius: 8px !important;
	}
}

.elementor-widget-shortcode .ecp-product-carousel {
	margin: 0;
}
