/**
 * Featured Listings — horizontal scrollable track with navigation.
 */
.listora-featured {
	margin-block: var(--listora-space-6);
}

/* Header with title + see all + arrows */
.listora-featured__header {
	display: flex;
	align-items: center;
	gap: var(--listora-space-4);
	margin-block-end: var(--listora-space-4);
}

.listora-featured__title {
	font-family: var(--listora-card-title-font);
	font-size: 1.5rem;
	font-weight: var(--listora-weight-bold);
	letter-spacing: -0.01em;
	margin: 0;
	color: var(--listora-fg-default);
	flex: 1;
}

.listora-featured__see-all {
	font-size: var(--listora-text-size-sm);
	font-weight: var(--listora-weight-medium);
	color: var(--listora-primary);
	text-decoration: none;
	white-space: nowrap;
	transition: opacity var(--listora-transition-fast);
}

.listora-featured__see-all:hover {
	opacity: 0.8;
}

.listora-featured__nav-arrows {
	display: flex;
	gap: var(--listora-space-1);
}

.listora-featured__arrow {
	all: unset;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--listora-icon-btn-size);
	height: var(--listora-icon-btn-size);
	border-radius: var(--listora-radius-md);
	background: var(--listora-bg-surface);
	color: var(--listora-fg-muted);
	transition: background var(--listora-transition-base), color var(--listora-transition-base);
}

.listora-featured__arrow:hover {
	background: var(--listora-surface-2);
	color: var(--listora-fg-default);
}

.listora-featured__arrow:disabled {
	opacity: 0.3;
	cursor: not-allowed;
}

/* Track with peek effect */
.listora-featured__track {
	display: grid;
	grid-template-columns: repeat(var(--listora-featured-columns, 4), minmax(0, 1fr));
	gap: var(--listora-grid-gap);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
	padding-block-end: 0.5rem;
	padding-inline-end: 2rem;
}

.listora-featured__track::-webkit-scrollbar {
	display: none;
}

.listora-featured__track > .listora-card {
	scroll-snap-align: start;
	min-width: 0;
}

/* Navigation dots */
.listora-featured__dots {
	display: flex;
	justify-content: center;
	gap: var(--listora-space-1);
	margin-block-start: var(--listora-space-4);
}

/* Carousel pagination dots — visual dot is small (8px) but the tap area
 * is the full 40px button, achieved via padding-trick + ::before glyph.
 * Mobile UX audit 2026-05-25: the bare 8x8px button was un-tappable on
 * mobile. */
.listora-featured__dot {
	all: unset;
	box-sizing: border-box;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: var(--listora-tap-target, 40px);
	min-height: var(--listora-tap-target, 40px);
	width: var(--listora-tap-target, 40px);
	height: var(--listora-tap-target, 40px);
	background: transparent;
	transition: transform var(--listora-transition-base);
}

.listora-featured__dot::before {
	content: '';
	display: block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--listora-border);
	transition: background var(--listora-transition-base), transform var(--listora-transition-base);
}

.listora-featured__dot:hover::before {
	background: var(--listora-fg-faint);
}

.listora-featured__dot.is-active::before {
	background: var(--listora-primary);
	transform: scale(1.25);
}

@media (max-width: 1024px) {
	.listora-featured__track {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	.listora-featured__track {
		grid-template-columns: repeat(1, minmax(min(260px, 80vw), 1fr));
		grid-auto-flow: column;
		grid-auto-columns: minmax(min(260px, 80vw), 1fr);
	}

	.listora-featured__nav-arrows {
		display: none;
	}
}
