/* =========================================================================
   Nivanta Gallery page — category grids + lightbox
   Layers on top of rooms-archive.css (.nv-stays__ shell). 09/07/2026
   ========================================================================= */

.nv-gal-cat { padding: 56px 0; }
.nv-gal-cat:nth-child(even) { background: #fff; }
.nv-gal-cat__head { margin-bottom: 28px; }

/* 3 columns x 2 rows preview grid */
.nv-gal__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
}

.nv-gal__tile {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 12px;
	overflow: hidden;
	cursor: pointer;
	background: #0b2530;
	box-shadow: 0 10px 26px -18px rgba(0, 0, 0, 0.5);
	transition: transform .25s ease, box-shadow .25s ease;
}
.nv-gal__tile img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .5s ease, opacity .25s ease;
}
.nv-gal__tile:hover img { transform: scale(1.06); }
.nv-gal__tile:hover { transform: translateY(-3px); box-shadow: 0 18px 40px -20px rgba(0, 0, 0, 0.55); }
.nv-gal__tile:focus-visible { outline: 3px solid var(--nv-lime, #A6CE39); outline-offset: 2px; }

/* "+X more" tile */
.nv-gal__more img { opacity: 0.55; }
.nv-gal__more::after {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(2, 46, 61, 0.35), rgba(2, 46, 61, 0.78));
}
.nv-gal__more-label {
	position: absolute;
	inset: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	font: 800 clamp(18px, 2vw, 24px)/1 var(--nv-display, 'Bricolage Grotesque', sans-serif);
	letter-spacing: -0.01em;
	color: #fff;
	text-transform: uppercase;
}

/* ---- Lightbox ---- */
.nv-lb {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(3, 18, 24, 0.94);
	opacity: 0;
	transition: opacity .2s ease;
	padding: max(16px, env(safe-area-inset-top)) 16px;
}
.nv-lb[hidden] { display: none; }
.nv-lb.is-open { opacity: 1; }
.nv-lb__stage {
	margin: 0;
	max-width: min(92vw, 1200px);
	max-height: 86vh;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
}
.nv-lb__img {
	max-width: 100%;
	max-height: 78vh;
	width: auto;
	height: auto;
	object-fit: contain;
	border-radius: 6px;
	box-shadow: 0 30px 80px -30px rgba(0, 0, 0, 0.8);
}
.nv-lb__cap {
	color: rgba(255, 255, 255, 0.75);
	font: 600 13px/1.4 var(--nv-body, 'Open Sans', sans-serif);
	letter-spacing: 0.04em;
}
.nv-lb__close {
	position: absolute;
	top: 14px;
	right: 18px;
	width: 44px;
	height: 44px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	font-size: 26px;
	line-height: 1;
	cursor: pointer;
	transition: background .2s ease;
}
.nv-lb__close:hover { background: rgba(255, 255, 255, 0.22); }
.nv-lb__nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 52px;
	height: 52px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	font-size: 30px;
	line-height: 1;
	cursor: pointer;
	transition: background .2s ease;
}
.nv-lb__nav:hover { background: rgba(255, 255, 255, 0.22); }
.nv-lb__nav--prev { left: 14px; }
.nv-lb__nav--next { right: 14px; }
.nv-lb__close:focus-visible, .nv-lb__nav:focus-visible { outline: 3px solid var(--nv-lime, #A6CE39); outline-offset: 2px; }

@media (max-width: 600px) {
	.nv-gal-cat { padding: 40px 0; }
	.nv-gal__grid { gap: 8px; }
	.nv-lb__nav { width: 42px; height: 42px; font-size: 24px; }
	.nv-lb__nav--prev { left: 6px; }
	.nv-lb__nav--next { right: 6px; }
}
