/**
 * Home category carousel.
 *
 * Categories always stay on one horizontal row. The selected desktop column
 * count controls how many cards are visible at once; the rest remain available
 * by touch/trackpad scrolling and the accessible arrow controls.
 */
.ln-categories {
	--ln-cat-gap: 18px;
	--ln-cat-radius: 22px;
	--ln-cat-border: color-mix(in srgb, var(--ln-gold) 30%, transparent);
	--ln-cat-shadow: 0 14px 34px rgba(12, 59, 52, 0.09);
	--ln-cat-shadow-hover: 0 24px 52px rgba(12, 59, 52, 0.17);
}

.ln-category-carousel {
	position: relative;
	isolation: isolate;
}

.ln-categories .ln-category-grid {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: calc((100% - (3 * var(--ln-cat-gap))) / 4);
	gap: var(--ln-cat-gap);
	margin: 0;
	padding: 2px 2px 14px;
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-inline: contain;
	scroll-behavior: smooth;
	scroll-snap-type: inline mandatory;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
}

.ln-categories .ln-category-grid::-webkit-scrollbar { display: none; }
.ln-categories-columns--3 .ln-category-grid { grid-auto-columns: calc((100% - (2 * var(--ln-cat-gap))) / 3); }
.ln-categories-columns--5 .ln-category-grid { grid-auto-columns: calc((100% - (4 * min(var(--ln-cat-gap), 15px))) / 5); gap: min(var(--ln-cat-gap), 15px); }
.ln-categories-columns--6 .ln-category-grid { grid-auto-columns: calc((100% - (5 * min(var(--ln-cat-gap), 13px))) / 6); gap: min(var(--ln-cat-gap), 13px); }

.ln-categories .ln-category-card {
	position: relative;
	isolation: isolate;
	display: block;
	min-width: 0;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	border: 1px solid var(--ln-cat-border);
	border-radius: var(--ln-cat-radius);
	background: #eee9de;
	box-shadow: var(--ln-cat-shadow);
	text-decoration: none;
	scroll-snap-align: start;
	transform: translateZ(0);
	transition: transform 360ms cubic-bezier(0.22, 0.72, 0.24, 1), box-shadow 360ms ease, border-color 360ms ease;
}

.ln-categories .ln-category-card > .ln-category-card__media {
	position: absolute;
	inset: 0;
	display: block;
	padding: 0;
	background: none;
}

.ln-categories .ln-category-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center;
	transform: scale(1.001);
	transition: transform 520ms cubic-bezier(0.22, 0.72, 0.24, 1), filter 420ms ease;
}

.ln-categories .ln-category-card::before,
.ln-categories .ln-category-card::after {
	position: absolute;
	z-index: 2;
	content: "";
	pointer-events: none;
	transition: opacity 360ms ease, transform 420ms cubic-bezier(0.22, 0.72, 0.24, 1), inset 360ms ease;
}

.ln-categories .ln-category-card::before {
	inset: 9px;
	border: 1px solid rgba(255, 255, 255, 0.52);
	border-radius: calc(var(--ln-cat-radius) - 8px);
	box-shadow: inset 0 0 0 1px rgba(8, 42, 37, 0.06);
}

.ln-categories .ln-category-card::after {
	right: 18%;
	bottom: 0;
	left: 18%;
	height: 3px;
	border-radius: 99px 99px 0 0;
	background: var(--ln-gold);
	box-shadow: 0 -6px 20px rgba(201, 163, 92, 0.3);
	transform: scaleX(0.45);
	transform-origin: center;
}

.ln-categories .ln-category-card:hover {
	border-color: color-mix(in srgb, var(--ln-gold) 62%, transparent);
	box-shadow: var(--ln-cat-shadow-hover);
	transform: translateY(-5px);
}

.ln-categories .ln-category-card:hover .ln-category-card__media img { transform: scale(1.055); }
.ln-categories .ln-category-card:hover::before { inset: 6px; opacity: 0.82; }
.ln-categories .ln-category-card:hover::after { transform: scaleX(1); }

.ln-categories .ln-category-card:focus-visible,
.ln-categories .ln-category-grid:focus-visible {
	outline: 3px solid var(--ln-gold);
	outline-offset: 4px;
}

.ln-category-carousel__nav[hidden] { display: none; }

.ln-category-carousel__nav {
	position: absolute;
	z-index: 5;
	top: 50%;
	right: 9px;
	left: 9px;
	display: flex;
	justify-content: space-between;
	pointer-events: none;
	transform: translateY(-50%);
}

.ln-category-carousel__nav button {
	display: grid;
	width: 40px;
	height: 40px;
	padding: 0;
	place-items: center;
	pointer-events: auto;
	border: 1px solid rgba(255, 255, 255, .58);
	border-radius: 50%;
	background: rgba(8, 42, 37, .74);
	box-shadow: 0 8px 24px rgba(8, 42, 37, .16);
	color: #fff;
	font: 400 23px/1 Arial, sans-serif;
	backdrop-filter: blur(9px);
	transition: opacity .2s ease, transform .2s ease, background .2s ease, color .2s ease;
}

.ln-category-carousel__nav button:hover,
.ln-category-carousel__nav button:focus-visible {
	background: var(--ln-gold);
	color: var(--ln-primary-dark);
	transform: scale(1.05);
}

.ln-category-carousel__nav button:disabled {
	opacity: .28;
	pointer-events: none;
}

/* Square gallery: clean, architectural and compact. */
.ln-categories-style--square .ln-category-card {
	aspect-ratio: 1 / 1;
	border-radius: 18px;
}

.ln-categories-style--square .ln-category-card::before { inset: 12px; border-radius: 10px; }
.ln-categories-style--square .ln-category-card::after {
	top: 12px;
	right: auto;
	bottom: auto;
	left: 12px;
	width: 34px;
	height: 34px;
	border: 1px solid rgba(255, 255, 255, 0.62);
	border-radius: 50%;
	background: rgba(8, 42, 37, 0.12);
	box-shadow: none;
	backdrop-filter: blur(7px);
	transform: scale(0.72);
}
.ln-categories-style--square .ln-category-card:hover::after { background: color-mix(in srgb, var(--ln-gold) 72%, transparent); transform: scale(1); }

/* Arch: a softer chandelier-friendly silhouette. */
.ln-categories-style--arch .ln-category-card {
	aspect-ratio: 4 / 5;
	border-radius: 999px 999px 26px 26px;
	background: color-mix(in srgb, var(--ln-gold) 9%, #efeae0);
}
.ln-categories-style--arch .ln-category-card::before { inset: 10px; border-radius: 999px 999px 18px 18px; }
.ln-categories-style--arch .ln-category-card::after { right: 28%; left: 28%; }

/* Circle: image medallions with a double jewelry-like ring. */
.ln-categories-style--circle .ln-category-card {
	aspect-ratio: 1 / 1;
	border-width: 2px;
	border-radius: 50%;
	box-shadow: 0 12px 32px rgba(12, 59, 52, 0.1), inset 0 0 0 7px color-mix(in srgb, var(--ln-paper) 68%, transparent);
}
.ln-categories-style--circle .ln-category-card::before { inset: 8px; border-color: color-mix(in srgb, var(--ln-gold) 48%, white); border-radius: 50%; }
.ln-categories-style--circle .ln-category-card::after { display: none; }
.ln-categories-style--circle .ln-category-card:hover { transform: translateY(-5px) rotate(-0.7deg); }

/* Landscape: useful when category artwork is already wide. */
.ln-categories-style--landscape .ln-category-card { aspect-ratio: 4 / 3; border-radius: 20px; }
.ln-categories-style--landscape .ln-category-card::before { border-radius: 12px; }
.ln-categories-style--landscape .ln-category-card__media img { filter: saturate(0.96) contrast(1.01); }
.ln-categories-style--landscape .ln-category-card:hover .ln-category-card__media img { filter: saturate(1.05) contrast(1.025); }

@media (max-width: 980px) {
	.ln-categories .ln-category-grid,
	.ln-categories-columns--3 .ln-category-grid,
	.ln-categories-columns--4 .ln-category-grid,
	.ln-categories-columns--5 .ln-category-grid,
	.ln-categories-columns--6 .ln-category-grid {
		grid-auto-columns: calc((100% - (2 * 13px)) / 3);
		gap: 13px;
	}
}

@media (max-width: 680px) {
	.ln-categories .ln-category-grid,
	.ln-categories-columns--3 .ln-category-grid,
	.ln-categories-columns--4 .ln-category-grid,
	.ln-categories-columns--5 .ln-category-grid,
	.ln-categories-columns--6 .ln-category-grid {
		grid-auto-columns: min(72vw, 255px);
		gap: 11px;
		padding-bottom: 10px;
	}

	.ln-categories .ln-category-card { border-radius: min(var(--ln-cat-radius), 18px); }
	.ln-categories-style--arch .ln-category-card { border-radius: 999px 999px 20px 20px; }
	.ln-categories-style--circle .ln-category-card { border-radius: 50%; }
	.ln-categories .ln-category-card::before { inset: 6px; }
	.ln-category-carousel__nav { right: 6px; left: 6px; }
	.ln-category-carousel__nav button { width: 36px; height: 36px; font-size: 21px; }
}

@media (max-width: 430px) {
	.ln-categories .ln-category-grid,
	.ln-categories-columns--3 .ln-category-grid,
	.ln-categories-columns--4 .ln-category-grid,
	.ln-categories-columns--5 .ln-category-grid,
	.ln-categories-columns--6 .ln-category-grid {
		grid-auto-columns: min(76vw, 235px);
	}
}

@media (hover: none) {
	.ln-categories .ln-category-card:hover { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.ln-categories .ln-category-grid { scroll-behavior: auto; }
	.ln-categories .ln-category-card,
	.ln-categories .ln-category-card::before,
	.ln-categories .ln-category-card::after,
	.ln-categories .ln-category-card__media img,
	.ln-category-carousel__nav button { transition: none !important; }
}
