/* ==========================================================================
   VoxQ Single product page
   ========================================================================== */

.voxq-single {
	padding-block: var(--vxq-spacing-lg);
}

.voxq-single__layout {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	gap: var(--vxq-spacing-2xl);
	align-items: start;
	margin-top: var(--vxq-spacing-lg);
}

/* Gallery */
.voxq-single__gallery .woocommerce-product-gallery {
	margin: 0;
	width: 100%;
	float: none;
	position: relative;
}

.voxq-single__gallery .woocommerce-product-gallery__wrapper {
	margin: 0;
}

.voxq-single__gallery .onsale {
	position: absolute;
	top: 0.75rem;
	left: 0.75rem;
	min-width: 0;
	min-height: 0;
	margin: 0;
	padding: 0.4rem 0.6rem;
	border-radius: var(--vxq-radius-full);
	background: var(--vxq-color-sale);
	color: #fff;
	font-size: var(--vxq-font-size-xs);
	font-weight: 700;
	line-height: 1;
	z-index: 2;
}

.voxq-single__gallery .flex-viewport {
	border-radius: var(--vxq-radius-md);
	overflow: hidden;
}

.voxq-single__gallery .woocommerce-product-gallery__image img {
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

.voxq-single__gallery .flex-control-thumbs {
	display: flex;
	gap: 0.5rem;
	margin: 0.5rem 0 0;
	list-style: none;
	padding: 0;
}

.voxq-single__gallery .flex-control-thumbs li {
	flex: 1;
	min-width: 0;
	margin: 0;
}

.voxq-single__gallery .flex-control-thumbs img {
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: var(--vxq-radius-sm);
	opacity: 0.6;
	cursor: pointer;
}

.voxq-single__gallery .flex-control-thumbs img.flex-active {
	opacity: 1;
}

/* Summary */
.voxq-single__summary .product_title {
	font-size: var(--vxq-font-size-2xl);
	margin: 0 0 var(--vxq-spacing-xs);
}

.voxq-single__summary .woocommerce-product-rating {
	display: flex;
	align-items: center;
	gap: 0.375rem;
	margin-bottom: var(--vxq-spacing-md);
}

.voxq-single__summary .price {
	font-size: var(--vxq-font-size-xl);
	font-weight: 600;
	margin: var(--vxq-spacing-md) 0;
}

.voxq-single__summary .price del {
	color: var(--vxq-color-faint);
	font-weight: 400;
	margin-right: 0.5rem;
}

.voxq-single__summary .price ins {
	text-decoration: none;
}

.voxq-single__summary .woocommerce-product-details__short-description {
	color: var(--vxq-color-muted);
	margin-bottom: var(--vxq-spacing-lg);
}

/* Add to cart */
.voxq-single__summary .cart {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--vxq-spacing-sm);
	margin-bottom: var(--vxq-spacing-lg);
}

.voxq-single__summary .quantity .qty {
	width: 4.5rem;
	height: 3rem;
	padding: 0 0.5rem;
	border: 1px solid var(--vxq-color-border-strong);
	border-radius: var(--vxq-radius-sm);
	text-align: center;
	font-weight: 600;
}

.voxq-single__summary .single_add_to_cart_button.button.alt {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 3rem;
	padding: 0.875rem 2.25rem;
	border: 1px solid var(--vxq-color-primary);
	border-radius: var(--vxq-radius-sm);
	background-color: var(--vxq-color-primary);
	color: var(--vxq-color-on-primary);
	font-family: var(--vxq-font-body);
	font-size: var(--vxq-font-size-sm);
	font-weight: 600;
	letter-spacing: var(--vxq-letter-spacing-meta);
	line-height: 1.2;
	text-transform: uppercase;
	box-shadow: none;
	transition: background-color var(--vxq-duration) var(--vxq-ease), border-color var(--vxq-duration) var(--vxq-ease), color var(--vxq-duration) var(--vxq-ease), transform var(--vxq-duration) var(--vxq-ease);
}

.voxq-single__summary .single_add_to_cart_button.button.alt:not(:disabled):not(.disabled) {
	background-color: var(--vxq-color-primary);
	border-color: var(--vxq-color-primary);
	color: var(--vxq-color-on-primary);
}

.voxq-single__summary .single_add_to_cart_button.button.alt:hover:not(:disabled):not(.disabled) {
	background-color: var(--vxq-color-primary-hover);
	border-color: var(--vxq-color-primary-hover);
	color: var(--vxq-color-on-primary);
}

/* WooCommerce 11 adds a later, more specific purple disabled/alt rule. Keep
   this narrowly scoped to the native single-product CTA. */
.voxq-single__summary .single_add_to_cart_button.button.alt:disabled,
.voxq-single__summary .single_add_to_cart_button.button.alt.disabled {
	background: var(--vxq-color-primary) !important;
	background-color: var(--vxq-color-primary) !important;
	background-image: none !important;
	border-color: var(--vxq-color-primary) !important;
	color: var(--vxq-color-on-primary) !important;
	opacity: 0.5;
	cursor: not-allowed;
}

.voxq-single__summary .single_add_to_cart_button.button.alt:disabled:hover,
.voxq-single__summary .single_add_to_cart_button.button.alt.disabled:hover {
	background: var(--vxq-color-primary) !important;
	background-color: var(--vxq-color-primary) !important;
	background-image: none !important;
	border-color: var(--vxq-color-primary) !important;
	color: var(--vxq-color-on-primary) !important;
}

.voxq-single__summary .single_add_to_cart_button.button.alt:active:not(:disabled):not(.disabled) {
	transform: translateY(1px);
}

/* Variations / swatches */
.voxq-single__summary .variations_form .variations {
	margin-bottom: var(--vxq-spacing-md);
}

.voxq-single__summary .variations_form td.label {
	display: none;
}

.voxq-single__summary .variations_form th.label {
	padding: 0 0.75rem 0 0;
	text-align: left;
	white-space: nowrap;
	vertical-align: middle;
}

.voxq-single__summary .variations_form .value select {
	width: 100%;
	min-height: 2.75rem;
	padding: 0.5rem;
	border: 1px solid var(--vxq-color-border-strong);
	border-radius: var(--vxq-radius-sm);
	background: var(--vxq-color-surface);
}

.voxq-single__summary .voxq-swatches {
	display: grid;
	gap: var(--vxq-spacing-sm);
	margin: var(--vxq-spacing-sm) 0 var(--vxq-spacing-lg);
}

.voxq-single__summary .voxq-swatch-group {
	display: grid;
	grid-template-columns: 5rem minmax(0, 1fr);
	align-items: center;
	gap: 0.75rem;
}

.voxq-single__summary .voxq-swatch-group__label {
	font-size: var(--vxq-font-size-sm);
	font-weight: 600;
}

.voxq-single__summary .voxq-swatch-group__options {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.voxq-single__summary .reset_variations {
	color: var(--vxq-color-danger);
	font-size: var(--vxq-font-size-sm);
	margin-top: 0.375rem;
}

.voxq-single__summary .woocommerce-variation-price {
	margin-block: var(--vxq-spacing-md);
}

.voxq-single__summary .woocommerce-variation-price .price {
	font-size: var(--vxq-font-size-xl);
}

.voxq-single__summary .woocommerce-variation-availability .in-stock {
	color: var(--vxq-color-success);
	font-size: var(--vxq-font-size-sm);
}

.voxq-single__summary .woocommerce-variation-availability .out-of-stock {
	color: var(--vxq-color-danger);
	font-size: var(--vxq-font-size-sm);
}

/* Meta */
.voxq-single__summary .product_meta {
	margin-top: var(--vxq-spacing-lg);
	padding-top: var(--vxq-spacing-md);
	border-top: 1px solid var(--vxq-color-border);
	font-size: var(--vxq-font-size-sm);
	color: var(--vxq-color-muted);
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.voxq-single__summary .product_meta a {
	color: var(--vxq-color-text);
}

/* Wishlist / compare on single */
.voxq-single-actions {
	display: flex;
	gap: var(--vxq-spacing-sm);
	margin-top: var(--vxq-spacing-md);
}

/* Tabs */
.woocommerce-tabs {
	margin-top: var(--vxq-spacing-2xl);
}

.woocommerce-tabs .tabs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--vxq-spacing-md);
	list-style: none;
	padding: 0;
	margin: 0 0 var(--vxq-spacing-lg);
	border-bottom: 1px solid var(--vxq-color-border);
}

.woocommerce-tabs .tabs li {
	border: 0;
	background: none;
}

.woocommerce-tabs .tabs a {
	display: block;
	padding: 0.75rem 0;
	font-weight: 600;
	border-bottom: 2px solid transparent;
	margin-bottom: -1px;
	color: var(--vxq-color-muted);
}

.woocommerce-tabs .tabs li.active a {
	color: var(--vxq-color-text);
	border-color: var(--vxq-color-primary);
}

.woocommerce-tabs h2 {
	font-size: var(--vxq-font-size-xl);
}

/* Related / upsells */
.related.products,
.upsells.products {
	margin-top: var(--vxq-spacing-2xl);
}

.related.products > h2,
.upsells.products > h2 {
	font-size: var(--vxq-font-size-xl);
}

/* WooCommerce does not add VoxQ's loop classes to every native product loop.
   Keep related and upsell cards in a controlled grid regardless of the loop
   wrapper classes supplied by the active WooCommerce version. */
.related.products ul.products,
.upsells.products ul.products {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--vxq-spacing-lg) var(--vxq-spacing-md);
	list-style: none;
	margin: 0;
	padding: 0;
}

.related.products ul.products > li.product,
.upsells.products ul.products > li.product {
	float: none;
	width: auto;
	min-width: 0;
	margin: 0;
	padding: 0;
	text-align: left;
}

/* Sticky mobile add to cart */
.voxq-sticky-atc {
	display: none;
}

@media (max-width: 1023px) {
	.voxq-single__layout {
		grid-template-columns: 1fr;
		gap: var(--vxq-spacing-lg);
	}

	.related.products ul.products,
	.upsells.products ul.products {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.related.products ul.products,
	.upsells.products ul.products {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.voxq-sticky-atc {
		display: block;
		position: fixed;
		left: 0;
		right: 0;
		bottom: 0;
		z-index: var(--vxq-z-header);
		padding: 0.75rem var(--vxq-gutter);
		background: var(--vxq-color-surface);
		border-top: 1px solid var(--vxq-color-border);
		transform: translateY(110%);
		transition: transform var(--vxq-duration) var(--vxq-ease);
	}

	.voxq-sticky-atc.is-visible {
		transform: translateY(0);
	}
}
