/*
 * Product variation picker
 * - Desktop: each attribute group stays within two equal-height rows.
 * - Mobile: the original WooCommerce form is displayed in a bottom sheet.
 */

:root {
	--tsl-variation-accent: #ee4d2d;
	--tsl-variation-border: #e2e2e2;
	--tsl-variation-muted: #777;
	--tsl-variation-surface: #f7f7f7;
}

body.single-product .tsl-native-variation-select {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

body.single-product .single_variation_wrap .tsl-sold-count {
	display: none !important;
}

body.single-product .tsl-variation-wrap {
	margin-bottom: 10px;
}

body.single-product .tsl-variation-label {
	color: #333;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.35;
}

body.single-product .tsl-variation-buttons {
	min-width: 0;
}

body.single-product .tsl-var-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: 100%;
	margin: 0;
	padding: 6px 10px;
	border: 1px solid var(--tsl-variation-border);
	border-radius: 4px;
	background: var(--tsl-variation-surface);
	color: #222;
	font-family: inherit;
	font-size: 13px;
	font-weight: 400;
	line-height: 1.25;
	text-align: left;
	text-transform: none;
	cursor: pointer;
	transition: border-color .2s ease, background-color .2s ease, color .2s ease, box-shadow .2s ease;
}

body.single-product .tsl-var-btn img {
	flex: 0 0 auto;
	width: 30px;
	height: 30px;
	border-radius: 2px;
	object-fit: cover;
}

body.single-product .tsl-var-btn span {
	display: block;
	min-width: 0;
	overflow-wrap: anywhere;
}

body.single-product .tsl-var-btn:hover,
body.single-product .tsl-var-btn:focus-visible,
body.single-product .tsl-var-btn.active {
	border-color: var(--tsl-variation-accent);
	background: #fff;
	color: var(--tsl-variation-accent);
	box-shadow: inset 0 0 0 1px var(--tsl-variation-accent);
	outline: none;
}

body.single-product .tsl-var-btn.disabled,
body.single-product .tsl-var-btn:disabled {
	opacity: .42;
	cursor: not-allowed;
	box-shadow: none;
}

.tsl-mobile-buy-launcher,
.tsl-variation-sheet {
	display: none;
}

.tsl-variation-form-origin {
	display: none !important;
}

body.single-product form.tsl-custom-variations-active .ux-swatches {
	display: none !important;
}

/*
 * Desktop variation grid:
 * - Keep five equal-height rows.
 * - Fill left to right, then continue on the next row.
 * - JS calculates the column count from the number of variation buttons.
 */
@media (min-width: 850px) {
	body.single-product form.variations_form .tsl-variation-wrap {
		display: grid;
		grid-template-columns: 84px minmax(0, 1fr);
		align-items: start;
		gap: 12px;
	}

	body.single-product form.variations_form .tsl-variation-label {
		padding-top: 14px;
	}

	body.single-product form.variations_form .tsl-variation-buttons {
		--tsl-desktop-row-count: 5;
		--tsl-desktop-column-count: 1;
		display: grid;
		grid-template-columns: repeat(var(--tsl-desktop-column-count), minmax(190px, 1fr));
		grid-template-rows: repeat(var(--tsl-desktop-row-count), var(--tsl-desktop-option-height, 54px));
		grid-auto-flow: row;
		gap: 8px;
		overflow-x: auto;
		padding: 1px 1px 5px;
		scrollbar-width: thin;
		overscroll-behavior-inline: contain;
	}

	body.single-product form.variations_form .tsl-var-btn {
		height: var(--tsl-desktop-option-height, 54px);
	}
}

/* Mobile bottom sheet. It is enabled only after JavaScript is ready. */
@media (max-width: 849px) {
	body.tsl-variation-ui-ready .tsl-mobile-buy-launcher {
		display: block;
		margin: 10px 0;
	}

	body.tsl-variation-ui-ready .tsl-mobile-buy-button {
		width: 100%;
		min-height: 48px;
		margin: 0;
		border-radius: 4px;
		background: var(--tsl-variation-accent);
		color: #fff;
		font-size: 16px;
		font-weight: 600;
		text-transform: none;
	}

	body.tsl-variation-sheet-open {
		overflow: hidden;
	}

	body.tsl-variation-ui-ready .tsl-variation-sheet {
		position: fixed;
		inset: 0;
		z-index: 2147483000;
		display: block;
		isolation: isolate;
		pointer-events: none;
	}

	.tsl-variation-sheet__overlay {
		position: absolute;
		inset: 0;
		background: rgba(0, 0, 0, .52);
		opacity: 0;
		transition: opacity .24s ease;
	}

	.tsl-variation-sheet__panel {
		position: absolute;
		right: 0;
		bottom: 0;
		left: 0;
		display: flex;
		flex-direction: column;
		height: min(88dvh, 760px);
		max-height: calc(100dvh - env(safe-area-inset-top));
		border-radius: 18px 18px 0 0;
		background: #fff;
		box-shadow: 0 -14px 40px rgba(0, 0, 0, .18);
		outline: none;
		visibility: hidden;
		transform: translate3d(0, 102%, 0);
		transition: transform .28s cubic-bezier(.22, .8, .3, 1), visibility 0s linear .28s;
	}

	body.tsl-variation-ui-ready .tsl-variation-sheet.is-open {
		pointer-events: auto;
	}

	.tsl-variation-sheet.is-open .tsl-variation-sheet__overlay {
		opacity: 1;
	}

	.tsl-variation-sheet.is-open .tsl-variation-sheet__panel {
		visibility: visible;
		transform: translate3d(0, 0, 0);
		transition-delay: 0s;
	}

	.tsl-variation-sheet__close {
		position: absolute;
		top: 12px;
		right: 12px;
		z-index: 2;
		display: grid;
		place-items: center;
		width: 44px;
		height: 44px;
		margin: 0;
		padding: 0;
		border: 0;
		border-radius: 50%;
		background: transparent;
		color: #777;
		cursor: pointer;
	}

	.tsl-variation-sheet__close:focus-visible {
		outline: 2px solid var(--tsl-variation-accent);
		outline-offset: 2px;
	}

	.tsl-variation-sheet__close svg {
		width: 27px;
		height: 27px;
		fill: none;
		stroke: currentColor;
		stroke-linecap: round;
		stroke-width: 1.8;
	}

	.tsl-variation-sheet__product {
		display: grid;
		grid-template-columns: 112px minmax(0, 1fr);
		gap: 16px;
		align-items: end;
		flex: 0 0 auto;
		padding: 20px 64px 18px 16px;
		border-bottom: 1px solid #eee;
	}

	.tsl-variation-sheet__image {
		width: 112px;
		height: 112px;
		border: 1px solid #e7e7e7;
		border-radius: 6px;
		background: #fff;
		object-fit: cover;
	}

	.tsl-variation-sheet__summary {
		min-width: 0;
		padding-bottom: 3px;
	}

	.tsl-variation-sheet__price {
		margin-bottom: 8px;
		color: var(--tsl-variation-accent);
		font-size: 22px;
		font-weight: 500;
		line-height: 1.25;
	}

	.tsl-variation-sheet__price .price {
		margin: 0;
		color: inherit;
		font-size: inherit;
	}

	.tsl-variation-sheet__price .tsl-sold-count {
		display: none;
	}

	.tsl-variation-sheet__stock {
		color: var(--tsl-variation-muted);
		font-size: 14px;
		line-height: 1.4;
	}

	.tsl-variation-sheet__body {
		display: flex;
		flex: 1 1 auto;
		min-height: 0;
		overflow: hidden;
		padding: 0;
	}

	.tsl-variation-sheet form.variations_form.cart {
		display: flex;
		flex: 1 1 auto;
		flex-direction: column;
		flex-wrap: nowrap;
		min-height: 0;
		width: 100%;
		margin: 0 !important;
		padding: 0 !important;
	}

	/* Only this table scrolls; purchase controls stay fixed below it. */
	.tsl-variation-sheet table.variations {
		flex: 1 1 auto;
		min-height: 0;
		overflow-x: hidden;
		overflow-y: auto;
		padding: 16px;
		overscroll-behavior-y: contain;
		-webkit-overflow-scrolling: touch;
	}

	.tsl-variation-sheet table.variations,
	.tsl-variation-sheet table.variations tbody,
	.tsl-variation-sheet table.variations tr,
	.tsl-variation-sheet table.variations td.value {
		display: block;
		width: 100%;
	}

	.tsl-variation-sheet table.variations {
		margin: 0;
		border: 0;
	}

	.tsl-variation-sheet table.variations tr {
		margin-bottom: 18px;
	}

	.tsl-variation-sheet table.variations tr:last-child {
		margin-bottom: 8px;
	}

	.tsl-variation-sheet table.variations th.label {
		display: none;
	}

	.tsl-variation-sheet .tsl-variation-wrap {
		display: block;
		margin: 0;
	}

	.tsl-variation-sheet .tsl-variation-label {
		margin-bottom: 10px;
		font-size: 16px;
		font-weight: 500;
	}

	.tsl-variation-sheet .tsl-variation-buttons {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 10px;
	}

	.tsl-variation-sheet .tsl-var-btn {
		height: 54px;
		min-height: 54px;
		padding: 7px 9px;
		background: #f6f6f6;
		font-size: 14px;
	}

	.tsl-variation-sheet .tsl-var-btn img {
		width: 38px;
		height: 38px;
	}

	.tsl-variation-sheet .reset_variations {
		display: inline-block;
		margin-top: 8px;
		color: var(--tsl-variation-accent);
		font-size: 13px;
	}

	.tsl-variation-sheet .single_variation_wrap {
		display: block !important;
		flex: 0 0 auto;
		margin: 0;
	}

	.tsl-variation-sheet .woocommerce-variation.single_variation,
	.tsl-variation-sheet .reset_variations_alert {
		display: none !important;
	}

	/* Fixed mobile footer: price type, quantity and purchase buttons. */
	.tsl-variation-sheet .woocommerce-variation-add-to-cart {
		position: relative;
		z-index: 3;
		flex: 0 0 auto;
		display: grid;
		grid-template-columns: minmax(0, 1fr) auto;
		gap: 12px;
		align-items: center;
		margin: 0;
		padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
		border-top: 1px solid #eee;
		background: rgba(255, 255, 255, .98);
		box-shadow: 0 -8px 22px rgba(0, 0, 0, .06);
	}

	.tsl-variation-sheet .tsl-price-type {
		grid-column: 1 / -1;
		grid-row: 1;
	}

	.tsl-variation-sheet .woocommerce-variation-add-to-cart > div.qty {
		grid-column: 1;
		grid-row: 2;
		float: none;
		width: auto;
		margin: 0;
		font-size: 16px;
	}

	.tsl-variation-sheet .woocommerce-variation-add-to-cart > .quantity {
		grid-column: 2;
		grid-row: 2;
		width: auto;
		margin: 0;
	}

	.tsl-variation-sheet .woocommerce-variation-add-to-cart .single_add_to_cart_button,
	.tsl-variation-sheet .woocommerce-variation-add-to-cart .ux-buy-now-button {
		min-height: 48px;
		margin: 0 !important;
		border-radius: 4px;
		font-size: 15px;
		font-weight: 600;
		line-height: 1.2;
		text-transform: none;
	}

	.tsl-variation-sheet .woocommerce-variation-add-to-cart .single_add_to_cart_button {
		grid-column: 1;
		grid-row: 3;
	}

	.tsl-variation-sheet .woocommerce-variation-add-to-cart .ux-buy-now-button {
		grid-column: 2;
		grid-row: 3;
		background: var(--tsl-variation-accent);
		color: #fff;
	}

	.tsl-variation-sheet form:not(.tsl-has-buy-now) .single_add_to_cart_button {
		grid-column: 1 / -1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tsl-variation-sheet__overlay,
	.tsl-variation-sheet__panel,
	body.single-product .tsl-var-btn {
		transition: none;
	}
}
