/**
 * Reusable Mahis Commerce product cards and native carousels.
 */

.mc-home-products {
	width: 100%;
	background-color: var(--mc-product-section-background, var(--mc-color-background));
	background-position: center;
	background-size: cover;
}

.mc-home-products--background-background {
	--mc-product-section-background: var(--mc-color-background);
}

.mc-home-products--background-surface {
	--mc-product-section-background: var(--mc-color-surface);
}

.mc-product-carousel__container--padding-top-md {
	padding-block-start: var(--mc-space-md);
}

.mc-product-carousel__container--padding-top-lg {
	padding-block-start: var(--mc-space-lg);
}

.mc-product-carousel__container--padding-top-xl {
	padding-block-start: var(--mc-space-xl);
}

.mc-product-carousel__container--padding-top-2xl {
	padding-block-start: var(--mc-space-2xl);
}

.mc-product-carousel__container--padding-bottom-md {
	padding-block-end: var(--mc-space-md);
}

.mc-product-carousel__container--padding-bottom-lg {
	padding-block-end: var(--mc-space-lg);
}

.mc-product-carousel__container--padding-bottom-xl {
	padding-block-end: var(--mc-space-xl);
}

.mc-product-carousel__container--padding-bottom-2xl {
	padding-block-end: var(--mc-space-2xl);
}

.mc-product-carousel__header {
	display: flex;
	gap: var(--mc-space-md);
	align-items: center;
	justify-content: space-between;
	margin-block-end: var(--mc-space-md);
}

.mc-product-carousel__header-actions { display: flex; gap: var(--mc-space-sm); align-items: center; }
.mc-product-carousel__controls { display: none; gap: var(--mc-space-xs); }
.mc-product-carousel__controls button { display: grid; width: 2.25rem; height: 2.25rem; padding: 0; border: 1px solid var(--mc-color-border); border-radius: var(--mc-radius-full); background: var(--mc-color-surface); color: var(--mc-color-primary); font: inherit; font-size: var(--mc-font-size-xl); cursor: pointer; place-items: center; }
.mc-product-carousel__controls button:focus-visible { outline: 2px solid var(--mc-color-primary); outline-offset: 2px; }

.mc-product-carousel__header h2 {
	margin: 0;
	font-weight: var(--mc-font-weight-bold);
	line-height: var(--mc-line-height-tight);
}

.mc-product-carousel__archive-link {
	flex: none;
	color: var(--mc-color-primary);
	font-size: var(--mc-font-size-sm);
	font-weight: var(--mc-font-weight-medium);
	text-decoration: none;
}

.mc-product-carousel__archive-link:hover {
	text-decoration: underline;
}

.mc-product-carousel__archive-link:focus-visible {
	outline: 2px solid var(--mc-color-primary);
	outline-offset: 2px;
}

.mc-product-carousel {
	--mc-product-carousel-gap: var(--mc-space-sm);

	display: grid;
	grid-auto-columns: calc((100% - ((var(--mc-product-visible-mobile) - 1) * var(--mc-product-carousel-gap))) / var(--mc-product-visible-mobile));
	grid-auto-flow: column;
	gap: var(--mc-product-carousel-gap);
	padding: 0 0 var(--mc-space-sm);
	margin: 0;
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-inline: contain;
	list-style: none;
	scroll-behavior: smooth;
	scroll-snap-type: inline mandatory;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.mc-product-carousel::-webkit-scrollbar {
	display: none;
}

.mc-product-carousel__item {
	min-width: 0;
	scroll-snap-align: start;
	scroll-snap-stop: always;
}

.mc-product-card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	background: var(--mc-color-surface);
	border: 1px solid var(--mc-color-border);
	border-radius: var(--mc-radius-card);
	box-shadow: var(--mc-shadow-small);
}

.mc-product-card__quantity {
	display: grid;
	grid-template-columns: 2.25rem minmax(2rem, 1fr) 2.25rem;
	min-height: 2.5rem;
	border: 1px solid var(--mc-color-primary);
	border-radius: var(--mc-radius-button);
	color: var(--mc-color-primary);
	place-items: center;
}

.mc-product-card__cta,
.mc-product-card__cta > * { width: 100%; }
.mc-product-card__cta { display: block; }

.mc-product-card__quantity button {
	width: 100%;
	height: 100%;
	border: 0;
	background: transparent;
	color: inherit;
	font: inherit;
	cursor: pointer;
}

.mc-product-card__quantity button:disabled { cursor: wait; }
.mc-product-card__action--wishlist.is-active { color: var(--mc-color-primary); }

.mc-product-card__image-link {
	position: relative;
	display: block;
	padding: var(--mc-space-sm);
	background: var(--mc-color-surface);
}

.mc-product-card__media {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 1;
	overflow: hidden;
}

.mc-product-card__image {
	position: absolute;
	inset: 0;
	display: block;
	transition: opacity 240ms ease, transform 320ms ease;
}

.mc-product-card__image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.mc-product-card__image--secondary {
	opacity: 0;
}

.mc-product-card__discount {
	position: absolute;
	z-index: 2;
	inset-block-start: var(--mc-space-sm);
	inset-inline-start: var(--mc-space-sm);
	padding: var(--mc-space-xs) var(--mc-space-sm);
	color: var(--mc-color-surface);
	font-size: var(--mc-font-size-xs);
	font-weight: var(--mc-font-weight-semibold);
	line-height: var(--mc-line-height-control);
	background: var(--mc-color-danger);
	border-radius: var(--mc-radius-full);
}

.mc-product-card__actions {
	position: absolute;
	z-index: 3;
	inset-block-start: var(--mc-space-sm);
	inset-inline-end: var(--mc-space-sm);
	display: flex;
	flex-direction: column;
	gap: var(--mc-space-sm);
}

.mc-product-card__action {
	display: inline-grid;
	width: var(--mc-space-2xl);
	height: var(--mc-space-2xl);
	padding: 0;
	color: var(--mc-color-text-primary);
	place-items: center;
	background: var(--mc-color-surface);
	border: 1px solid var(--mc-color-border);
	border-radius: var(--mc-radius-full);
	box-shadow: var(--mc-shadow-small);
	cursor: pointer;
}

.mc-product-card__action--view {
	display: none;
}

.mc-product-card__action:disabled {
	color: var(--mc-color-text-secondary);
	cursor: not-allowed;
}

.mc-product-card__content {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--mc-space-sm);
	padding: 0 var(--mc-space-sm) var(--mc-space-sm);
}

.mc-product-card__brand,
.mc-product-card__title,
.mc-product-card__price,
.mc-product-card__offer,
.mc-product-card__availability {
	margin: 0;
}

.mc-product-card__brand {
	color: var(--mc-color-text-secondary);
	font-size: var(--mc-font-size-xs);
	line-height: var(--mc-line-height-normal);
}

.mc-product-card__title {
	font-size: var(--mc-font-size-sm);
	font-weight: var(--mc-font-weight-medium);
	line-height: var(--mc-line-height-tight);
}

.mc-product-card__title a {
	color: var(--mc-color-text-primary);
	text-decoration: none;
}

.mc-product-card__image-link:focus-visible,
.mc-product-card__title a:focus-visible,
.mc-product-card__action:focus-visible,
.mc-product-card__cart:focus-visible {
	outline: 2px solid var(--mc-color-primary);
	outline-offset: 2px;
}

.mc-product-card__price {
	display: flex;
	flex-wrap: wrap;
	gap: var(--mc-space-xs);
	align-items: baseline;
	margin-block-start: auto;
	font-weight: var(--mc-font-weight-semibold);
	font-variant-numeric: tabular-nums;
	line-height: var(--mc-line-height-control);
}

.mc-product-card__price del {
	color: var(--mc-color-text-secondary);
	font-size: var(--mc-font-size-xs);
}

.mc-product-card__price ins {
	color: var(--mc-color-danger);
	font-size: var(--mc-font-size-sm);
	text-decoration: none;
}

.mc-product-card__offer,
.mc-product-card__availability {
	font-size: var(--mc-font-size-xs);
	line-height: var(--mc-line-height-normal);
}

.mc-product-card__offer {
	color: var(--mc-color-danger);
	font-weight: var(--mc-font-weight-medium);
}

.mc-product-card__availability {
	color: var(--mc-color-danger);
}

.mc-product-card__cart {
	display: grid;
	min-height: calc(var(--mc-space-2xl) - var(--mc-space-xs));
	padding: var(--mc-button-padding-block) var(--mc-button-padding-inline);
	color: var(--mc-color-button-text);
	font-size: var(--mc-font-size-xs);
	font-weight: var(--mc-button-font-weight);
	line-height: var(--mc-line-height-control);
	text-align: center;
	text-decoration: none;
	place-items: center;
	background: var(--mc-color-primary);
	border-radius: var(--mc-radius-button);
	transition: color 160ms ease, background-color 160ms ease;
}

.mc-product-card__cart:hover {
	color: var(--mc-color-button-text);
	background: var(--mc-color-primary-hover);
}

.mc-product-card__cart--disabled,
.mc-product-card__cart--disabled:hover {
	background: var(--mc-color-border);
	color: var(--mc-color-text-secondary);
	cursor: not-allowed;
}

.mc-product-card.is-unavailable .mc-product-card__availability {
	color: var(--mc-color-text-secondary);
	font-weight: var(--mc-font-weight-semibold);
}

@media (max-width: 47.999rem) {
	.mc-product-carousel__header {
		margin-block-end: var(--mc-space-sm);
	}

	.mc-product-carousel__header h2 {
		font-size: var(--mc-mobile-font-size-section-title);
		line-height: var(--mc-mobile-line-height-heading);
	}

	.mc-product-carousel__archive-link {
		font-size: var(--mc-mobile-font-size-sm);
	}

	.mc-product-card__discount,
	.mc-product-card__brand,
	.mc-product-card__price del,
	.mc-product-card__offer,
	.mc-product-card__availability {
		font-size: var(--mc-mobile-font-size-xs);
	}

	.mc-product-card__title {
		font-size: var(--mc-mobile-font-size-card-title);
		line-height: var(--mc-mobile-line-height-card);
	}

	.mc-product-card__price ins {
		font-size: var(--mc-mobile-font-size-body);
	}

	.mc-product-card__cart {
		font-size: var(--mc-mobile-font-size-card-title);
		line-height: var(--mc-mobile-line-height-control);
	}
}

@media (min-width: 48rem) {
	.mc-product-carousel {
		--mc-product-carousel-gap: var(--mc-space-md);

		grid-auto-columns: calc((100% - ((var(--mc-product-visible-tablet) - 1) * var(--mc-product-carousel-gap))) / var(--mc-product-visible-tablet));
	}

	.mc-product-card__image-link,
	.mc-product-card__content {
		padding-inline: var(--mc-space-md);
	}
}

@media (min-width: 64rem) {
	.mc-product-carousel__controls { display: flex; }
	.mc-product-carousel {
		--mc-product-carousel-gap: var(--mc-space-lg);

		grid-auto-columns: calc((100% - ((var(--mc-product-visible-desktop) - 1) * var(--mc-product-carousel-gap))) / var(--mc-product-visible-desktop));
	}

	.mc-product-card__title {
		font-size: var(--mc-font-size-md);
	}

	.mc-product-card__price ins {
		font-size: var(--mc-font-size-lg);
	}
}

@media (min-width: 64rem) and (hover: hover) and (pointer: fine) {
	.mc-product-card__actions {
		opacity: 0;
		transform: translateX(var(--mc-space-sm));
		transition: opacity 180ms ease, transform 180ms ease;
	}

	.mc-product-card__action--view {
		display: inline-grid;
	}

	.mc-product-card:not(.mc-product-card--without-cart) .mc-product-card__content {
		padding-block-end: calc(var(--mc-space-2xl) + var(--mc-space-lg));
	}

	.mc-product-card__cta {
		position: absolute;
		inset-inline: var(--mc-space-md);
		inset-block-end: var(--mc-space-md);
		opacity: 0;
		transform: translateY(var(--mc-space-sm));
		transition: opacity 180ms ease, transform 180ms ease;
	}

	.mc-product-card__cart { position: static; }

	.mc-product-card:hover .mc-product-card__actions,
	.mc-product-card:focus-within .mc-product-card__actions,
	.mc-product-card:hover .mc-product-card__cta,
	.mc-product-card:focus-within .mc-product-card__cta {
		opacity: 1;
		transform: translate(0);
	}

	.mc-product-card:hover .mc-product-card__image--secondary,
	.mc-product-card:focus-within .mc-product-card__image--secondary {
		opacity: 1;
		transform: scale(1.02);
	}

	.mc-product-card:hover .has-secondary-image .mc-product-card__image--primary,
	.mc-product-card:focus-within .has-secondary-image .mc-product-card__image--primary {
		opacity: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.mc-product-carousel {
		scroll-behavior: auto;
	}

	.mc-product-card__image,
	.mc-product-card__actions,
	.mc-product-card__cart,
	.mc-product-card__cta {
		transition: none;
	}
}
