/* ------------------------------------------------------------
 * Shared carousel interaction styles
 * ------------------------------------------------------------ */

[data-carousel-clone][hidden] {
	display: none !important;
}

/*
 * Keep any transient carousel overflow inside the carousel itself.
 * This prevents rapid dragging / loop-clone movement from creating
 * a document-level horizontal scrollbar.
 */
[data-luxury-carousel] {
	min-width: 0;
	max-width: 100%;
	overflow-x: clip;
	overflow-clip-margin: 1px;
}

[data-luxury-carousel][data-carousel-static="true"] [data-carousel-track] {
	justify-content: center;
}

[data-carousel-viewport] {
	min-width: 0;
	max-width: 100%;
	scroll-behavior: auto !important;
	scrollbar-width: none !important;
	-ms-overflow-style: none;
	overscroll-behavior-x: contain;
	overscroll-behavior-inline: contain;
}

[data-carousel-viewport]::-webkit-scrollbar {
	display: none !important;
	width: 0 !important;
	height: 0 !important;
}

/*
 * JavaScript owns all desktop/manual landing positions. Native CSS
 * snapping is switched on only while a genuine touch/pen gesture is
 * active, preventing the browser from applying a second snap after
 * our own click/drag animation has already reached its target.
 */
[data-carousel-viewport] {
	scroll-snap-type: none !important;
}

[data-carousel-viewport][data-carousel-native-snap="true"] {
	scroll-snap-type: x mandatory !important;
}

[data-carousel-viewport][data-carousel-dragging="true"],
[data-carousel-viewport][data-carousel-animating="true"] {
	scroll-snap-type: none !important;
}

@media (hover: hover) and (pointer: fine) {
	[data-carousel-viewport] {
		cursor: grab;
	}

	[data-carousel-viewport][data-carousel-dragging="true"] {
		cursor: grabbing;
		user-select: none;
	}
}
