/**
 * Single property page — header + stats.
 *
 * Brand colours (design tokens):
 *   ink #1E1F1E   slate #454645   brand #119100   sky #35AFC9   cloud #F3EFE3
 *
 * Designer spec (exact px):
 *   - "Student Let" tab: 280px from the top, 10px font, 6px/10px padding,
 *     cloud bg / black text.
 *   - Title: 42px, 12px below the tab.
 *   - "Schedule Viewing" CTA (standard style) + calculator icon far right.
 *   - Sky line 30px below the CTA row.
 *   - Feature-icon row (bed/bath/living/size/type) with listing price right.
 */

/* Links in this page never take the browser's purple :visited colour. */
.nops-single-prop a:visited,
.nops-prop-faqs a:visited,
.nops-fp--similar a:visited {
	color: inherit;
}

.nops-single-prop {
	background: #454645; /* slate */
	color: #f3efe3; /* cloud */
	padding-top: 280px;
	padding-bottom: 98px;
}

/* ---- Header ---- */
.nops-single-prop-tab {
	display: inline-block;
	padding: 6px 10px;
	font-family: "open-sans", sans-serif;
	font-size: 10px;
	line-height: 1;
	letter-spacing: 0.04em;
	color: #000; /* black */
	background: #f3efe3; /* cloud */
}

.nops-single-prop-title {
	margin: 12px 0 0;
	font-family: "etna", sans-serif;
	font-size: 42px;
	font-weight: 400;
	line-height: 1.15;
	color: #f3efe3; /* cloud */
}

.nops-single-prop-cta-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	margin-top: 24px;
}

/* Standard CTA button style. */
.nops-single-prop-schedule,
.nops-single-prop-schedule:visited {
	display: inline-flex;
	align-items: center;
	gap: 16px;
	padding: 14px 59px;
	font-family: "open-sans", sans-serif;
	font-size: 18px;
	color: #f3efe3; /* cloud */
	text-decoration: none;
	background: transparent;
	border: 1px solid #35afc9; /* sky */
	transition: background-color 0.2s ease, color 0.2s ease;
}

.nops-single-prop-schedule:hover {
	background: #35afc9;
	color: #1e1f1e;
}

.nops-single-prop-schedule svg {
	display: block;
}

/* Calculator icon button (right). */
.nops-single-prop-calc {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	background: transparent;
	border: 1px solid #35afc9; /* sky */
	cursor: pointer;
	transition: background-color 0.2s ease;
}

.nops-single-prop-calc svg {
	display: block;
}

.nops-single-prop-calc:hover {
	background: #35afc9;
}

/* Sky line 30px below the CTA row. */
.nops-single-prop-rule {
	margin: 30px 0 0;
	border: 0;
	border-top: 1px solid #35afc9; /* sky */
}

/* ---- Stats row ---- */
.nops-single-prop-stats {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 32px;
	margin-top: 24px;
}

.nops-single-prop-features {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 56px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.nops-single-prop-feature {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	text-align: center;
}

.nops-single-prop-feature svg {
	display: block;
	width: auto;
	height: 32px;
}

.nops-single-prop-feature-label {
	font-family: "open-sans", sans-serif;
	font-size: 14px;
	line-height: 1;
	color: #f3efe3; /* cloud */
}

/* ---- Listing price (right) ---- */
.nops-single-prop-price {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 6px;
	text-align: right;
}

.nops-single-prop-price-label {
	font-family: "open-sans", sans-serif;
	font-size: 12px;
	letter-spacing: 0.04em;
	color: #f3efe3; /* cloud */
}

.nops-single-prop-price-value {
	font-family: "open-sans", sans-serif;
	font-size: 28px;
	font-weight: 600;
	line-height: 1;
	color: #f3efe3; /* cloud */
}

/* ---- About + Property details ---- */
.nops-single-prop-about {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	margin-top: 64px;
}

.nops-single-prop-h2 {
	margin: 0;
	font-family: "etna", sans-serif;
	font-weight: 400;
	font-size: 42px;
	color: #f3efe3; /* cloud */
}

/* Left description: 26px text, 40px below the title, 48px between paragraphs. */
.nops-single-prop-desc .nops-single-prop-h2 {
	margin-bottom: 40px;
}

.nops-single-prop-desc-body {
	font-size: 26px;
	line-height: 1.5;
	color: #f3efe3; /* cloud */
}

.nops-single-prop-desc-body p {
	margin: 0 0 48px;
}

.nops-single-prop-desc-body p:last-child {
	margin-bottom: 0;
}

/* Right column */
.nops-single-prop-aside {
	display: flex;
	flex-direction: column;
}

/* Right heading: 44px below the sky line. */
.nops-single-prop-details .nops-single-prop-h2 {
	padding-top: 44px;
	border-top: 1px solid #35afc9; /* sky */
}

/* Availability: 20px, 11px below the heading. */
.nops-single-prop-availability {
	margin: 11px 0 0;
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	color: #35afc9; /* sky */
}

/* Grey tags: 10px, 20px below the text above, 6px gap, cloud bg, no border. */
.nops-single-prop-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 20px;
}

.nops-single-prop-tag {
	padding: 5px 10px;
	font-family: "open-sans", sans-serif;
	font-size: 10px;
	line-height: 1;
	color: #000; /* black text on cloud */
	background: #f3efe3; /* cloud */
	border: 0;
}

/* Combined feature list: 18px white bullets, two columns, 39px below the
   grey tags, 48px gap between each bullet. */
.nops-single-prop-detail-list {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px 32px;
	margin: 39px 0 0;
	padding: 0;
	list-style: none;
}

.nops-single-prop-detail-item {
	position: relative;
	padding-left: 20px;
	font-family: "open-sans", sans-serif;
	font-size: 18px;
	line-height: 1.4;
	color: #f3efe3; /* cloud / white */
}

.nops-single-prop-detail-item::before {
	content: "";
	position: absolute;
	left: 0;
	top: 9px;
	width: 5px;
	height: 5px;
	border-radius: 50%;
	background: #f3efe3; /* white bullet, not blue */
}

/* Schedule a tour box: 61px below the bullets, 40px padding all round. */
.nops-single-prop-tour {
	margin-top: 61px;
	padding: 40px;
	border: 1px solid #35afc9; /* sky */
}

/* Tour text: 24px, 27px below the title. Enquiry button 45px below text. */
.nops-single-prop-tour-text {
	margin: 27px 0 0;
	font-size: 24px;
	line-height: 1.5;
	color: #f3efe3; /* cloud */
}

.nops-single-prop-tour-btn,
.nops-single-prop-tour-btn:visited {
	display: inline-flex;
	align-items: center;
	gap: 16px;
	margin-top: 45px;
	padding: 14px 24px;
	font-family: "open-sans", sans-serif;
	font-size: 14px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #f3efe3; /* cloud */
	text-decoration: none;
	background: transparent;
	border: 1px solid #35afc9; /* sky */
	transition: background-color 0.2s ease, color 0.2s ease;
}

.nops-single-prop-tour-btn:hover {
	background: #35afc9;
	color: #1e1f1e;
}

.nops-single-prop-tour-btn svg {
	display: block;
}

@media (max-width: 1024px) {
	.nops-single-prop-about {
		grid-template-columns: 1fr;
		gap: 48px;
	}
}

@media (max-width: 480px) {
	.nops-single-prop-spec-list {
		grid-template-columns: 1fr;
	}
}

/* ---- Similar properties (featured-properties variant) ---- */
/* The shared .nops-fp forces 100vh at >=1920px; the similar row should flow
   to its content height instead. */
.nops-fp--similar {
	min-height: 0;
}

@media (min-width: 1920px) {
	.nops-fp--similar {
		min-height: 0;
	}
}

/* The Tailwind @layer base sets all h1–h6 to ink; keep every heading in the
   Similar section white. */
.nops-fp--similar .nops-fp-heading,
.nops-fp--similar .nops-fp-card-headline,
.nops-fp--similar .nops-fp-card-headline a {
	color: #f3efe3; /* cloud */
}

/* ---- Image lightbox ---- */
body.nops-lightbox-open {
	overflow: hidden;
}

.nops-lightbox {
	position: fixed;
	inset: 0;
	z-index: 1100;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
}

.nops-lightbox[hidden] {
	display: none;
}

.nops-lightbox-overlay {
	position: absolute;
	inset: 0;
	background: rgba(30, 31, 30, 0.6); /* ink, translucent */
	backdrop-filter: blur(8px);
}

/* Counter: 20px, 73px from top, 73px-ish from left. */
.nops-lightbox-counter {
	position: absolute;
	top: 73px;
	left: 73px;
	z-index: 3;
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	color: #f3efe3; /* cloud */
}

/* Close: right-aligned, 72px from top. */
.nops-lightbox-close {
	position: absolute;
	top: 72px;
	right: 73px;
	z-index: 3;
	width: 26px;
	height: 26px;
	padding: 0;
	background: none;
	border: 0;
	cursor: pointer;
}

.nops-lightbox-close svg {
	display: block;
}

/* Arrows: vertically centred on the image, left/right edges. */
.nops-lightbox-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 3;
	width: 60px;
	height: 44px;
	padding: 0;
	background: none;
	border: 0;
	cursor: pointer;
}

.nops-lightbox-arrow--prev {
	left: 40px;
}

.nops-lightbox-arrow--next {
	right: 40px;
}

.nops-lightbox-arrow svg {
	display: block;
	width: 100%;
	height: auto;
}

/* Stage: one large image, at least 1280px wide (shrinks on smaller screens). */
.nops-lightbox-stage {
	position: relative;
	z-index: 2;
	width: min(1280px, calc(100vw - 240px));
	max-height: calc(100vh - 260px);
	display: flex;
	align-items: center;
	justify-content: center;
}

.nops-lightbox-img {
	max-width: 100%;
	max-height: calc(100vh - 260px);
	width: auto;
	height: auto;
	object-fit: contain;
	display: block;
}

/* Thumbnail strip along the bottom. */
.nops-lightbox-thumbs {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 3;
	display: flex;
	gap: 8px;
	padding: 16px 24px;
	overflow-x: auto;
	scrollbar-width: none;
}

.nops-lightbox-thumbs::-webkit-scrollbar {
	display: none;
}

.nops-lightbox-thumb {
	flex: 0 0 auto;
	width: 96px;
	height: 64px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	opacity: 0.55;
	transition: opacity 0.2s ease;
}

.nops-lightbox-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.nops-lightbox-thumb.is-active,
.nops-lightbox-thumb:hover {
	opacity: 1;
}

@media (max-width: 1024px) {
	.nops-lightbox-counter { top: 24px; left: 24px; }
	.nops-lightbox-close { top: 24px; right: 24px; }
	.nops-lightbox-arrow--prev { left: 12px; }
	.nops-lightbox-arrow--next { right: 12px; }
	.nops-lightbox-stage {
		width: calc(100vw - 120px);
	}
}

@media (max-width: 640px) {
	.nops-lightbox-arrow { width: 36px; }
	.nops-lightbox-thumb { width: 64px; height: 44px; }
}

/* Masonry tile button wrapper (clickable image). */
.nops-prop-masonry-btn {
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

/* ---- Rent calculator modal ---- */
body.nops-calc-open {
	overflow: hidden;
}

.nops-calc {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
}

.nops-calc[hidden] {
	display: none;
}

.nops-calc-overlay {
	position: absolute;
	inset: 0;
	background: rgba(30, 31, 30, 0.55); /* ink, translucent */
	backdrop-filter: blur(6px);
}

.nops-calc-box {
	position: relative;
	width: 100%;
	max-width: 758px;
	max-height: 90vh;
	overflow-y: auto;
	padding: 80px 64px 64px; /* title sits 80px from the top */
	background: #1e1f1e; /* ink */
	border: 1px solid #35afc9; /* sky */
}

/* Close: 38px from top, 41px from right. */
.nops-calc-close {
	position: absolute;
	top: 38px;
	right: 41px;
	width: 24px;
	height: 24px;
	padding: 0;
	background: none;
	border: 0;
	cursor: pointer;
}

.nops-calc-close svg {
	display: block;
}

/* Title: 42px, centred, 80px from the top (via box padding). */
.nops-calc-title {
	margin: 0;
	text-align: center;
	font-family: "etna", sans-serif;
	font-weight: 400;
	font-size: 42px;
	color: #f3efe3; /* cloud */
}

/* Entries: 20px, 108px below the title, 41px between each. */
.nops-calc-fields {
	margin-top: 108px;
	display: flex;
	flex-direction: column;
	gap: 41px;
}

.nops-calc-field {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	gap: 24px;
}

.nops-calc-label {
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	font-weight: 700;
	color: #f3efe3; /* cloud */
}

.nops-calc-input-wrap {
	position: relative;
	display: flex;
	align-items: center;
	border-bottom: 1px solid #35afc9; /* sky underline under each value */
	padding-bottom: 4px;
}

.nops-calc-input,
input[type="number"].nops-calc-input {
	flex: 1 1 auto;
	width: 100%;
	padding: 6px 0;
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	color: #f3efe3; /* white text */
	background: transparent;
	border: 0;
	border-radius: 0;
	text-align: left;
	appearance: textfield;
	-moz-appearance: textfield;
}

/* Rent input keeps its right alignment (£ prefix on the left). */
.nops-calc-input--prefixed,
input[type="number"].nops-calc-input--prefixed {
	text-align: right;
}

/* Keep text white even when selected/highlighted. */
.nops-calc-input::selection {
	color: #f3efe3;
	background: rgba(53, 175, 201, 0.4); /* sky tint */
}

.nops-calc-input::-webkit-outer-spin-button,
.nops-calc-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.nops-calc-input:focus,
input[type="number"].nops-calc-input:focus {
	outline: none;
	border: 0;
}

/* £ / people / months are blue. */
.nops-calc-unit {
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	color: #35afc9; /* sky */
}

.nops-calc-unit--prefix {
	margin-right: 12px;
	order: -1;
}

.nops-calc-unit--suffix {
	margin-left: 12px;
}

/* Calculate button: 18px, centred, with arrow. */
.nops-calc-calculate {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 24px;
	width: 100%;
	margin-top: 32px;
	padding: 14px 24px;
	font-family: "open-sans", sans-serif;
	font-size: 18px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: #f3efe3; /* cloud */
	background: transparent;
	border: 1px solid #35afc9; /* sky */
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}

.nops-calc-calculate:hover {
	background: #35afc9;
	color: #1e1f1e;
}

.nops-calc-calculate svg {
	display: block;
}

/* Results: 20px, 16px gap, 62px below the calculate button. */
.nops-calc-results {
	margin-top: 62px;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.nops-calc-results[hidden] {
	display: none;
}

.nops-calc-result {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
}

.nops-calc-result-label {
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	font-weight: 700;
	color: #f3efe3; /* cloud */
}

.nops-calc-result-value {
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	font-weight: 700;
	color: #f3efe3; /* cloud */
}

@media (max-width: 640px) {
	.nops-calc-box {
		padding: 64px 24px 40px;
	}
	.nops-calc-fields {
		margin-top: 48px;
	}
	.nops-calc-field {
		grid-template-columns: 1fr;
		gap: 8px;
	}
	.nops-calc-title {
		font-size: 32px;
	}
}

/* ---- Location map (inside the container) ---- */
.nops-prop-map {
	position: relative;
	width: 100%;
	margin-top: 98px;
	height: clamp(360px, 36vw, 560px);
	background: #1e1f1e; /* ink, while tiles load */
	z-index: 0;
}

/* Mute the standard OSM tiles to a low-key greyscale look. */
.nops-prop-map .leaflet-tile-pane {
	filter: grayscale(0.9) contrast(0.95) brightness(1.03);
}

/* Keep Leaflet controls above the page. */
.nops-prop-map .leaflet-control-container {
	z-index: 2;
}

/* ---- Full image gallery ---- */
/*
 * Repeating 6-image pattern (matches the designer layout), 16px gap:
 *   1: top-left square           2: top-right wide
 *   3: left tall (spans 2 rows)  4: right upper
 *                                5: right lower
 *   6: full-width wide
 * The grid is 2 columns of equal tracks; row heights are driven by the
 * images themselves via span rules. Any trailing images (a partial final
 * group) simply flow into the next cells.
 */
/*
 * Repeating 6-image pattern, exact ratios from the designer SVG (tile
 * width 848 in a 1712 canvas), 16px gap. Heights per tile:
 *   1: 848x595 top-left      2: 848x595 top-right
 *   3: 848x713 left tall     4: 848x348 right upper
 *                            5: 848x348 right lower
 *   6: 1712x595 full-width
 * Row unit = 1px; each tile spans its exact pixel height (scaled with the
 * grid via aspect-ratio on the image). Column 1 and 2 stay in step because
 * 595 + 16 + (713-595) ... instead we drive row heights directly: the left
 * tall tile (713) == two stacked (348+348) + the 16px gap between them (17),
 * so the rows line up.
 */
.nops-prop-masonry {
	margin-top: 64px;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	/* Row unit chosen so tile heights are whole spans: use 1fr-free fixed
	   rows via aspect-ratio instead. */
	grid-auto-flow: row dense;
}

.nops-prop-masonry-item {
	margin: 0;
	overflow: hidden;
}

.nops-prop-masonry-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Default tile = 848 x 595. */
.nops-prop-masonry-item {
	aspect-ratio: 848 / 595;
}

/* 3rd of each group: tall left, 848 x 713, spans the two stacked beside it. */
.nops-prop-masonry-item:nth-child(6n + 3) {
	grid-row: span 2;
	aspect-ratio: 848 / 713;
}

/* 4th & 5th of each group: right stacked, 848 x 348. */
.nops-prop-masonry-item:nth-child(6n + 4),
.nops-prop-masonry-item:nth-child(6n + 5) {
	aspect-ratio: 848 / 348;
}

/* 6th of each group: full-width, 1712 x 595. */
.nops-prop-masonry-item:nth-child(6n + 6) {
	grid-column: 1 / -1;
	aspect-ratio: 1712 / 595;
}

@media (max-width: 640px) {
	.nops-prop-masonry {
		grid-template-columns: 1fr;
	}
	.nops-prop-masonry-item,
	.nops-prop-masonry-item:nth-child(6n + 3),
	.nops-prop-masonry-item:nth-child(6n + 4),
	.nops-prop-masonry-item:nth-child(6n + 5),
	.nops-prop-masonry-item:nth-child(6n + 6) {
		grid-row: auto;
		grid-column: auto;
		aspect-ratio: 848 / 595;
	}
}

/* ---- Masonry gallery preview ---- */
/*
 * Two equal columns, 16px gap, 49px below the stats row.
 *   - Left column: one tall tile spanning the full height (two rows).
 *   - Right column: top tile (50% height) + a bottom row of two tiles.
 * The right column's rows are equal, so the top tile = 50% height of the
 * left tile, and the two bottom tiles fill the remaining 50%.
 */
.nops-prop-gallery {
	display: grid;
	grid-template-columns: 1fr 1fr;
	grid-template-rows: 1fr 1fr;
	gap: 16px;
	margin-top: 49px;
	/* Keep the preview a sensible height; left tile drives the aspect. */
	height: clamp(420px, 42vw, 720px);
}

.nops-prop-gallery-main {
	grid-column: 1;
	grid-row: 1 / span 2; /* full height of the left column */
	min-height: 0;
}

.nops-prop-gallery-side {
	grid-column: 2;
	grid-row: 1 / span 2;
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-height: 0;
}

.nops-prop-gallery-tile--top {
	flex: 1 1 50%; /* top-right = 50% height of the column */
	min-height: 0;
}

.nops-prop-gallery-bottom {
	flex: 1 1 50%;
	display: flex;
	gap: 16px;
	min-height: 0;
}

.nops-prop-gallery-bottom .nops-prop-gallery-tile {
	flex: 1 1 50%;
	min-width: 0;
}

/* Tiles. */
.nops-prop-gallery-tile {
	position: relative;
	display: block;
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.nops-prop-gallery-main .nops-prop-gallery-tile {
	height: 100%;
}

.nops-prop-gallery-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Video trigger button (fills the tile). */
.nops-prop-gallery-video-trigger {
	position: relative;
	display: block;
	width: 100%;
	height: 100%;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

/* Inline YouTube iframe (after play) — cover the tile, no letterboxing.
   The iframe is sized to a 16:9 box that is scaled up to fill whichever
   dimension is short, then centred and cropped. */
.nops-prop-gallery-tile--video {
	overflow: hidden;
	container-type: size;
}

.nops-prop-gallery-iframe {
	position: absolute;
	top: 50%;
	left: 50%;
	/* Keep a 16:9 box, scaled so the shorter side fills the tile, then
	   centred and cropped — the container-query units are relative to the
	   tile, not the viewport. */
	aspect-ratio: 16 / 9;
	width: max(100%, 177.78cqh); /* 16/9 of tile height */
	height: max(100%, 56.25cqw); /* 9/16 of tile width */
	transform: translate(-50%, -50%);
	border: 0;
	display: block;
}

/* Video play button on the main tile. */
.nops-prop-gallery-play {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.nops-prop-gallery-play svg {
	width: 64px;
	height: 64px;
	filter: drop-shadow( 0 2px 8px rgba(30, 31, 30, 0.5) );
	transition: transform 0.2s ease;
}

.nops-prop-gallery-tile--video:hover .nops-prop-gallery-play svg {
	transform: scale(1.08);
}

/* Bottom-right tile: gradient overlay + "View Photos". */
.nops-prop-gallery-overlay {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	/* Gradient from the supplied SVG (bottom ink -> transparent top). */
	height: 188px;
	max-height: 100%;
	background: linear-gradient(
		to top,
		#1e1f1e 0%,
		rgba(30, 31, 30, 0.949) 14.4%,
		rgba(30, 31, 30, 0.588) 60.2%,
		rgba(30, 31, 30, 0) 100%
	);
	pointer-events: none;
}

.nops-prop-gallery-viewphotos {
	position: absolute;
	left: 16px;
	right: 16px;
	bottom: 16px;
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 12px;
	font-family: "open-sans", sans-serif;
	font-size: 20px;
	line-height: 1;
	color: #f3efe3; /* cloud */
}

.nops-prop-gallery-divider {
	opacity: 0.6;
}

.nops-prop-gallery-viewphotos-label {
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.nops-prop-gallery-viewphotos svg {
	margin-left: auto;
	display: block;
	flex: 0 0 auto;
}

/* ---- Responsive ---- */
@media (max-width: 1024px) {
	.nops-single-prop {
		padding-top: 180px;
	}
}

@media (max-width: 1024px) {
	.nops-prop-gallery {
		grid-template-columns: 1fr;
		grid-template-rows: auto;
		height: auto;
	}

	.nops-prop-gallery-main,
	.nops-prop-gallery-side {
		grid-column: 1;
		grid-row: auto;
	}

	.nops-prop-gallery-main .nops-prop-gallery-tile {
		height: auto;
		aspect-ratio: 16 / 9;
	}

	.nops-prop-gallery-side {
		display: grid;
		grid-template-columns: 1fr 1fr;
		grid-auto-flow: row;
		gap: 16px;
	}

	/* Stacked flex children → grid cells on tablet. */
	.nops-prop-gallery-tile--top {
		grid-column: 1 / -1;
		aspect-ratio: 16 / 9;
	}

	.nops-prop-gallery-bottom {
		grid-column: 1 / -1;
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 16px;
	}

	.nops-prop-gallery-bottom .nops-prop-gallery-tile {
		aspect-ratio: 4 / 3;
	}

	.nops-prop-gallery-viewphotos {
		font-size: 16px;
	}
}

@media (max-width: 560px) {
	.nops-prop-gallery-bottom {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 768px) {
	.nops-single-prop-stats {
		flex-direction: column;
		align-items: flex-start;
		gap: 32px;
	}

	.nops-single-prop-price {
		align-items: flex-start;
		text-align: left;
	}

	.nops-single-prop-features {
		gap: 32px;
	}
}

@media (max-width: 640px) {
	.nops-single-prop {
		padding-top: 140px;
	}

	.nops-single-prop-title {
		font-size: 32px;
	}

	.nops-single-prop-cta-row {
		flex-wrap: wrap;
	}
}
