/*
 * NSV media and layout stabilization v94.4.
 * This file is deliberately loaded last. It removes legacy decorative shapes
 * from catalogue cards and fixes the high-impact layout defects found by TEST.
 */

/* --------------------------------------------------------------------------
   Card media: one rectangular image, no decorative circles or ellipses
   -------------------------------------------------------------------------- */
:is(
	.nsv68-card,
	.nsv68-card.nsv69-card,
	.nsv71-service-card,
	.nsv80-service-card,
	.nsv80-article-card,
	.nsv-hotel-room-card
) {
	isolation: isolate !important;
}

:is(
	.nsv68-card,
	.nsv68-card.nsv69-card,
	.nsv71-service-card,
	.nsv80-service-card,
	.nsv80-article-card,
	.nsv-hotel-room-card
)::before,
:is(
	.nsv68-card,
	.nsv68-card.nsv69-card,
	.nsv71-service-card,
	.nsv80-service-card,
	.nsv80-article-card,
	.nsv-hotel-room-card
)::after {
	display: none !important;
	width: 0 !important;
	height: 0 !important;
	content: none !important;
	opacity: 0 !important;
	visibility: hidden !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	box-shadow: none !important;
	clip-path: none !important;
	-webkit-clip-path: none !important;
	mask: none !important;
	-webkit-mask: none !important;
	transform: none !important;
}

:is(
	.nsv68-card__media,
	.nsv-hotel-room-card__media,
	.nsv80-service-card__media,
	.nsv80-article-card__media
) {
	position: relative !important;
	display: block !important;
	overflow: hidden !important;
	clip-path: none !important;
	-webkit-clip-path: none !important;
	mask: none !important;
	-webkit-mask: none !important;
	border-radius: 0 !important;
	background: #e8efed !important;
	background-clip: border-box !important;
}

:is(
	.nsv68-card__media,
	.nsv-hotel-room-card__media,
	.nsv80-service-card__media,
	.nsv80-article-card__media
)::before,
:is(
	.nsv68-card__media,
	.nsv-hotel-room-card__media,
	.nsv80-service-card__media,
	.nsv80-article-card__media
)::after,
.nsv68-card__media > a:first-child::before,
.nsv68-card__media > a:first-child::after,
.nsv-hotel-room-card__media > a:first-child::before,
.nsv-hotel-room-card__media > a:first-child::after,
.nsv80-service-card__media .nsv81-media-link::before,
.nsv80-service-card__media .nsv81-media-link::after,
.nsv80-article-card__media .nsv81-media-link::before,
.nsv80-article-card__media .nsv81-media-link::after {
	display: none !important;
	width: 0 !important;
	height: 0 !important;
	content: none !important;
	opacity: 0 !important;
	visibility: hidden !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	box-shadow: none !important;
	clip-path: none !important;
	-webkit-clip-path: none !important;
	mask: none !important;
	-webkit-mask: none !important;
	transform: none !important;
}

:is(
	.nsv68-card__media > a:first-child,
	.nsv-hotel-room-card__media > a:first-child,
	.nsv80-service-card__media .nsv81-media-link,
	.nsv80-article-card__media .nsv81-media-link,
	.nsv68-card__media picture,
	.nsv-hotel-room-card__media picture,
	.nsv80-service-card__media picture,
	.nsv80-article-card__media picture
) {
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	min-width: 0 !important;
	min-height: 0 !important;
	overflow: hidden !important;
	clip-path: none !important;
	-webkit-clip-path: none !important;
	mask: none !important;
	-webkit-mask: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	transform: none !important;
}

:is(
	.nsv68-card__media img,
	.nsv-hotel-room-card__media img,
	.nsv80-service-card__media img,
	.nsv80-article-card__media img,
	.nsv81-media-link img
) {
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	min-width: 100% !important;
	min-height: 100% !important;
	object-fit: cover !important;
	object-position: center !important;
	clip-path: none !important;
	-webkit-clip-path: none !important;
	mask: none !important;
	-webkit-mask: none !important;
	border: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}

.nsv68-card__media,
.nsv80-service-card__media,
.nsv-hotel-room-card__media {
	aspect-ratio: 4 / 3 !important;
}

.nsv80-article-card__media {
	aspect-ratio: 16 / 10 !important;
}

/* --------------------------------------------------------------------------
   Object page: do not reserve empty gallery slots; keep room cards in-page
   -------------------------------------------------------------------------- */
.nsv-hotel-gallery__rail:not(:has(.nsv-hotel-gallery__thumb)) {
	display: none !important;
}

.nsv-hotel-gallery:not(:has(.nsv-hotel-gallery__rail .nsv-hotel-gallery__thumb)) {
	grid-template-columns: minmax(0, 1fr) !important;
}

.nsv-hotel-gallery:not(:has(.nsv-hotel-gallery__rail .nsv-hotel-gallery__thumb)) .nsv-hotel-gallery__main {
	grid-column: 1 !important;
}

.nsv-hotel-room-grid[data-hotel-panel="published"] {
	display: grid !important;
	width: 100% !important;
	max-width: 100% !important;
	grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	grid-auto-flow: row !important;
	grid-auto-columns: auto !important;
	gap: 18px !important;
	overflow: visible !important;
	padding: 0 !important;
	scroll-snap-type: none !important;
}

.nsv-hotel-room-grid[data-hotel-panel="published"] > .nsv-hotel-room-card {
	display: grid !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
	grid-template-columns: minmax(0, 1fr) !important;
	grid-template-rows: auto minmax(0, 1fr) !important;
	overflow: hidden !important;
}

.nsv-hotel-room-card__favorite {
	width: 40px !important;
	height: 40px !important;
	min-width: 40px !important;
	max-width: 40px !important;
}

.nsv-hotel-room-card__body {
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
}

/* --------------------------------------------------------------------------
   Article search: field and button form one compact row
   -------------------------------------------------------------------------- */
.nsv80-filter--page {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) auto !important;
	align-items: end !important;
	gap: 14px !important;
}

.nsv80-page-search {
	display: grid !important;
	width: 100% !important;
	min-width: 0 !important;
	grid-template-columns: minmax(0, 1fr) auto !important;
	align-items: end !important;
	gap: 10px !important;
}

.nsv80-page-search .nsv80-filter__field,
.nsv80-page-search .nsv80-filter__field input {
	width: 100% !important;
	min-width: 0 !important;
}

.nsv80-page-search .nsv80-filter__submit {
	position: static !important;
	width: auto !important;
	min-width: 118px !important;
	height: 48px !important;
	min-height: 48px !important;
	margin: 0 !important;
	transform: none !important;
}

.nsv80-page-quicklinks {
	align-self: end !important;
}

/* Old freelance categories are hidden until CEO approves travel categories
   and the database tree is replaced. Search by destination remains available. */
.nsv85-projects-page .nsv85-category-bar {
	display: none !important;
}

/* --------------------------------------------------------------------------
   Mobile density: a catalogue is for comparison, not an endless detail page
   -------------------------------------------------------------------------- */
@media (max-width: 700px) {
	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__media,
	.nsv80-service-card__media,
	.nsv80-article-card__media,
	.nsv-hotel-room-card__media {
		aspect-ratio: 16 / 10 !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__body {
		padding: 15px 15px 12px !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__object-row {
		min-height: 0 !important;
		margin-bottom: 6px !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__title {
		min-height: 0 !important;
		margin-top: 8px !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__title h3,
	.nsv68-catalog .nsv68-card.nsv69-card h3 {
		font-size: 21px !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__description,
	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__chips {
		display: none !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__facts {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		margin-top: 10px !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__facts > span {
		min-height: 46px !important;
		padding: 7px 9px !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__facts > span:nth-child(n + 3) {
		display: none !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__aside {
		padding: 12px 15px 14px !important;
	}

	.nsv68-catalog .nsv68-card.nsv69-card .nsv68-card__price strong {
		font-size: 23px !important;
	}

	.nsv-site-footer > .nsv-container {
		padding-top: 30px !important;
		padding-bottom: 24px !important;
	}

	.nsv-footer-panel {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: 24px 16px !important;
	}

	.nsv-footer-brand {
		grid-column: 1 / -1 !important;
		max-width: none !important;
	}

	.nsv-footer-brand > p {
		margin-top: 14px !important;
		font-size: 12px !important;
		line-height: 1.5 !important;
	}

	.nsv-footer-action {
		min-height: 42px !important;
		margin-top: 16px !important;
	}

	.nsv-footer-column h2 {
		margin-bottom: 12px !important;
	}

	.nsv-footer-column ul {
		gap: 8px !important;
	}

	.nsv-footer-column:last-child {
		grid-column: 1 / -1 !important;
	}

	.nsv-footer-bottom > .nsv-container {
		min-height: 54px !important;
	}

	.nsv-hotel-gallery:not(:has(.nsv-hotel-gallery__rail .nsv-hotel-gallery__thumb)) {
		grid-template-rows: 260px !important;
	}

	.nsv-hotel-room-grid[data-hotel-panel="published"] {
		grid-template-columns: minmax(0, 1fr) !important;
		gap: 14px !important;
	}

	.nsv80-filter--page,
	.nsv80-page-search {
		grid-template-columns: minmax(0, 1fr) !important;
	}

	.nsv80-page-search .nsv80-filter__submit {
		width: 100% !important;
	}

	:is(
		.nsv68-card__media,
		.nsv-hotel-room-card__media,
		.nsv80-service-card__media,
		.nsv80-article-card__media
	) {
		width: 100% !important;
		height: auto !important;
		min-height: 0 !important;
	}
}

@media (max-width: 430px) {
	.nsv-footer-panel {
		grid-template-columns: minmax(0, 1fr) !important;
		gap: 20px !important;
	}

	.nsv-footer-brand,
	.nsv-footer-column:last-child {
		grid-column: 1 !important;
	}

	.nsv-footer-action {
		width: 100% !important;
		justify-content: center !important;
	}
}
