/* ---------------- Maps Container ---------------- */
.map-wrapper {
	--navy: #172935;
	--navy-lt: #2b4447;
	--gold: #c9a96e;
	--gold-lt: #e8d5b0;
	--gold-dk: #ad894c;

	height: 90dvh;
	display: grid;
	place-items: center;
}

/* ---------------- Map Search Widget ---------------- */
.widget--live-search {
	container-name: live-search;
	container-type: inline-size;
	position: absolute;
	bottom: 3%;
	left: 50%;
	z-index: 10;

	translate: -50% 0;

	border-radius: 0;
	background-color: #ffffff;
	padding: 0 0 0 10px;
	width: 50%;
	min-width: 600px;

	box-shadow: 0px 0px 40px rgb(0 0 0 / 0.3);

	form {
		margin: 0;
	}

	label {
		margin: 0;
		padding: 10px 0;

		.label-title {
			font-size: 12px;
			text-transform: uppercase;
			letter-spacing: 1px;
			color: var(--gold-dk);

			padding: 0 5px;
		}
	}

	.widget--user-input {
		display: grid;
		grid-template-columns: auto 160px 100px;
		gap: 10px;
	}

	.live-search--input {
		position: relative;
		anchor-name: --ls-input;
		border-bottom: 0;
		color: #000000;

		font-size: 18px;
		padding: 5px;
		width: calc(100% - 10px);

		border: 0;

		&::placeholder {
			color: var(--gold);
		}

		&:focus {
			color: #000000;
			background-color: #fff8e9;
		}
	}

	.live-search--submit {
		border-radius: 0;
		background-color: var(--navy);
		color: #ffffff;

		font-family: "Montserrat", sans-serif;
		font-size: 14px;
		font-weight: 600;
		letter-spacing: 0.1em;
		text-transform: uppercase;

		transition: background-color 250ms ease-in;

		&:hover {
			background-color: #af383f;
		}
	}

	.live-search--results {
		position-anchor: --ls-input;
		inset: auto;
		bottom: anchor(top);
		left: anchor(left);
		width: 100cqw;
		max-width: anchor-size(width);
		height: auto;

		outline: 0;
		border: 0;
		text-align: center;

		box-shadow: 0 0 10px rgb(0 0 0 / 0.1);

		.result-output {
			margin: 10px;

			display: flex;
			flex-direction: column;
			gap: 0;
			border: 0;

			animation: fadeIn 250ms 1 ease-in;

			span {
				display: block;
				padding: 10px;

				text-decoration: none;
				transition: background-color 250ms ease-in;

				cursor: pointer;

				&:hover {
					background-color: #fff8e9;
				}
			}
		}
	}
}

/* ---------------- City List View ---------------- */
.list-city-wrapper {
	padding: 20px;

	.list-city {
		list-style: none;
		padding: 10px 0;
		margin: 0;

		display: grid;
		gap: 10px;
		grid-auto-flow: column;
		grid-auto-columns: 300px;

		overflow-x: scroll;
		scroll-snap-type: x mandatory;
		scroll-behavior: smooth;

		& > li {
			padding: 20px;
			margin: 0;

			background-color: #ffffff;
			border-radius: 5px;

			scroll-snap-align: center;

			box-shadow: 0 0 10px rgb(0 0 0 / 0.1);
		}

		&::scroll-button(left) {
			content: "<" / "Scroll Left";
			left: -10px;
		}

		&::scroll-button(right) {
			content: ">" / "Scroll Right";
			right: -10px;
		}

		&::scroll-button(*) {
			position: absolute;
			top: 48%;

			padding: 10px;
			height: 38px;
			width: 38px;

			border: 0;
			border-radius: 100%;
			background-color: #cccccc;
			color: #000000;
		}

		&::scroll-button(*):focus-visible {
			background-color: #999999;
		}
	}

	.list-city--item {
		display: flex;
		gap: 20px;
		flex-direction: column;
	}

	.list-city--image {
		display: block;
		width: 100%;
		aspect-ratio: 4/2;
		object-fit: cover;

		border-radius: 3px;
	}

	.list-city--content {
		margin: 0 10px;
		display: flex;
		gap: 10px;
		flex-direction: column;
		text-align: center;
	}

	.list-city--name {
		font-size: 18px;
		font-weight: bold;
	}

	.bttn {
		display: block;
		text-align: center;
	}
}

.list-city-wrapper:has(.list-city:empty) {
	display: none;
}

.list-city::-webkit-scrollbar {
	height: 8px;
}
.list-city::-webkit-scrollbar-track {
	background: #efefef;
}
.list-city::-webkit-scrollbar-thumb {
	border-radius: 4px;
	background: #cccccc;
}

/* ---------------- Stepper Hour Picker ---------------- */
.hour-stepper {
	display: inline-flex;
	align-items: center;
	gap: 0;
	border: 1px solid #e8d5b0;
	border-radius: 4px;
	overflow: hidden;
}

.stepper-btn {
	background: #fff8e9;
	border: none;
	padding: 8px 14px;
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	color: #333;
	transition: background 0.15s;
}

.stepper-btn:hover {
	background: #e8d5b0;
}

.stepper-display {
	padding: 6px 16px;
	font-size: 14px;
	font-weight: 600;
	color: #000000;
	min-width: 70px;
	text-align: center;
	user-select: none;

	span {
		color: #000000;
	}
}

/* ---------------- Hotel Quick View ---------------- */
.modal-hotel {
	width: 980px;
	position: relative;
	margin: auto;
	padding: 0;
}

.modal-hotel--content {
	background-color: #ffffff;
	box-shadow: 0px 0px 40px rgb(0 0 0 / 0.3);
	padding: 0px;
	margin: 40px;

	min-height: 50dvh;
}

.modal-hotel--close {
	position: absolute;
	top: 40px;
	right: 40px;

	display: block;
	padding: 10px;

	border: 0;
	color: #ffffff;
	background-color: #b93c42;

	transition: background-color 250ms ease-in;

	&:hover {
		background-color: #db353d;
	}
}

.quick-view--wrapper {
	container-type: inline-size;
	container-name: --quick-hotel;

	display: flex;
	gap: 0px;

	& > * {
		flex: 1;
		flex-basis: 50%;

		max-height: 80dvh;
		overflow-y: auto;
	}
}

.quick-view--info {
	.wh-expert-section {
		font-size: 13px;
		margin: 10px;
	}
}

.quick-view--rates {
	position: relative;
	background-color: #fdfaf4;
	border: 2px solid #e8d5b0;

	padding: 0px;
	margin: 20px;

	font-size: 14px;
}

.quick-view--rates::before {
	content: "Our Best Rate!";
	position: relative;
	font-size: 12px;
	font-weight: bold;
	background-color: #e8d5b0;
	padding: 2px 10px;
	display: inline-block;
}

.quick-view--hotel-img {
	display: block;
	max-width: 100%;
	margin-inline: 0;
	margin-block: 0 20px;

	aspect-ratio: 3 / 2;
	object-fit: cover;
}

.quick-view--hotel::-webkit-scrollbar,
.quick-view--rates::-webkit-scrollbar {
	width: 8px;
}
.quick-view--hotel::-webkit-scrollbar-track,
.quick-view--rates::-webkit-scrollbar-track {
	background: #ffffff;
}
.quick-view--hotel::-webkit-scrollbar-thumb,
.quick-view--rates::-webkit-scrollbar-thumb {
	border-radius: 4px;
	background: #efefef;
}

#hotelViewContent:has(.modal-hotel--content) .modal-hotel--content {
	animation: fade-in 1s ease-in-out 0s 1;
}

@keyframes fade-in {
	0% {
		opacity: 0;
	}

	100% {
		opacity: 1;
	}
}

/* ---------------- Media Queries ---------------- */
@media only screen and (max-width: 480px) {
	.widget--live-search {
		bottom: 10px;
		min-width: unset;
		width: 90%;
		padding: 10px;

		label {
			padding-top: 0;
		}

		.widget--user-input {
			grid-template-columns: 1fr;
			gap: 0;
		}

		.live-search--input {
			text-align: center;
		}
	}

	.list-city-wrapper {
		.list-city {
			grid-auto-columns: 200px;
		}
	}

	dialog {
		max-width: 96%;
	}

	.quick-view--wrapper {
		container-type: inline-size;
		container-name: --quick-hotel;

		display: flex;
		flex-direction: column;
		gap: 0px;

		& > * {
			flex: 1;
			flex-basis: 100%;

			max-height: unset;
			overflow-y: auto;
		}
	}
}
