/* Easy Hotel - Multi Hotel: single hotel page */

/* The moonlit theme adds 100px top/bottom padding to #content, which leaves a big
   empty gap above the hero and below the page. Drop it on the hotel page only —
   the hero sits flush under the header, and .eshbmh-body carries its own bottom space. */
body.single-eshb_hotel .main-contain #content {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

.eshbmh-single-hotel .eshb-container {
	max-width: 1200px;
	margin: 0 auto;
	padding-left: 15px;
	padding-right: 15px;
}

/* Hero */
.eshbmh-hero {
	position: relative;
	background-size: cover;
	background-position: center;
	background-color: #1f2937;
	color: #fff;
	padding: 90px 0 70px;
	margin-bottom: 40px;
}
.eshbmh-hero-overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0,0,0,.25), rgba(0,0,0,.65));
}
.eshbmh-hero-inner {
	position: relative;
	z-index: 1;
}
.eshbmh-single-hotel h1.eshbmh-hotel-title {
	color: #fff;
	margin: 6px 0 8px;
	font-size: 60px;
	line-height: 1.15;
}
.eshbmh-cities {
	margin-bottom: 6px;
}
.eshbmh-city-chip {
	display: inline-block;
	background: rgba(255,255,255,.18);
	color: #fff;
	text-decoration: none;
	padding: 3px 12px;
	border-radius: 40px;
	font-size: 13px;
	margin-right: 6px;
}
.eshbmh-city-chip:hover {
	background: rgba(255,255,255,.32);
	color: #fff;
}
.eshbmh-stars {
	color: #ffc107;
	font-size: 20px;
	letter-spacing: 2px;
	margin-bottom: 10px;
}
.eshbmh-address {
	color: #f0f0f0;
	margin: 0;
	font-size: 15px;
}
.eshbmh-address .dashicons,
.eshbmh-contact .dashicons {
	font-size: 18px;
	width: 18px;
	height: 18px;
	vertical-align: text-bottom;
	opacity: .85;
}

/* Body layout */
.eshbmh-body {
	display: grid;
	grid-template-columns: 1fr 320px;
	gap: 40px;
	align-items: start;
	padding-bottom: 60px;
}
.eshbmh-section {
	margin-bottom: 40px;
}
.eshbmh-section-title {
	font-size: 24px;
	margin: 0 0 18px;
	padding-bottom: 10px;
	border-bottom: 2px solid #eee;
}

/* Amenities */
.eshbmh-amenities-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 8px 20px;
}
.eshbmh-amenities-list li {
	margin: 0;
	font-size: 15px;
}
.eshbmh-amenities-list .dashicons {
	color: #2e9e5b;
	font-size: 18px;
	width: 18px;
	height: 18px;
	vertical-align: text-bottom;
}
.eshbmh-amenities-list .eshbmh-amen-ico {
	color: #b9741f;
	font-size: 17px;
	width: 20px;
	text-align: center;
	margin-right: 2px;
}
.eshbmh-amenities-list .eshbmh-amen-ico-img {
	width: 20px;
	height: 20px;
	object-fit: contain;
	vertical-align: text-bottom;
	margin-right: 4px;
}
.eshbmh-amenities-list li {
	display: flex;
	align-items: center;
	gap: 4px;
}

/* Hide Easy Hotel "Extra Services" everywhere — this client doesn't offer them.
   .extra-services-wrapper  = single accommodation booking form (sidebar)
   .eshb-services-*         = native checkout page */
.extra-services-wrapper,
.eshb-services-summary-cell,
.eshb-services-editor,
.eshb-service-option {
	display: none !important;
}

/* Single room page: replace Easy Hotel's default "More Rooms" slider with our
   own card grid (rendered via the eshb_after_single_accomodation_content hook). */
.related-accomodations {
	display: none !important;
}
.eshbmh-more-rooms {
	margin-top: 34px;
}

/* Native checkout: trim the bits not needed for the WhatsApp / COD-only flow.
   - "+ Add accommodation" + coupon row  → .eshb-coupon-section
   - Payment Method card (COD stays selected in the hidden radio, so submit works) */
.eshb-native-checkout .eshb-coupon-section,
.eshb-native-checkout .eshb-card:has( #eshbGatewayMount ),
.eshb-native-checkout .eshb-card:has( [name="eshbPaymentMethod"] ) {
	display: none !important;
}

/* Gallery lightbox */
body.eshbmh-lb-lock {
	overflow: hidden;
}
.eshbmh-gallery-item {
	cursor: zoom-in;
}
.eshbmh-lightbox {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: none;
	align-items: center;
	justify-content: center;
	background: rgba(0, 0, 0, .9);
}
.eshbmh-lightbox.is-open {
	display: flex;
}
.eshbmh-lb-img {
	max-width: 90vw;
	max-height: 86vh;
	object-fit: contain;
	box-shadow: 0 10px 40px rgba(0, 0, 0, .5);
	border-radius: 4px;
}
.eshbmh-lb-close,
.eshbmh-lb-prev,
.eshbmh-lb-next {
	position: absolute;
	background: rgba(255, 255, 255, .12);
	color: #fff;
	border: 0;
	cursor: pointer;
	font-size: 26px;
	line-height: 1;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background .2s ease;
}
.eshbmh-lb-close:hover,
.eshbmh-lb-prev:hover,
.eshbmh-lb-next:hover {
	background: rgba(255, 255, 255, .28);
}
.eshbmh-lb-close {
	top: 22px;
	right: 22px;
	font-size: 32px;
}
.eshbmh-lb-prev {
	left: 22px;
	top: 50%;
	transform: translateY(-50%);
}
.eshbmh-lb-next {
	right: 22px;
	top: 50%;
	transform: translateY(-50%);
}
@media (max-width: 560px) {
	.eshbmh-lb-prev { left: 10px; }
	.eshbmh-lb-next { right: 10px; }
	.eshbmh-lb-close { top: 12px; right: 12px; }
}

/* Gallery */
.eshbmh-gallery-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
}
.eshbmh-gallery-item {
	display: block;
	overflow: hidden;
	border-radius: 6px;
	aspect-ratio: 4 / 3;
}
.eshbmh-gallery-item img,
.eshbmh-gallery-item .eshbmh-gallery-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .4s ease;
}
.eshbmh-gallery-item:hover img {
	transform: scale(1.06);
}

/* Rooms grouped by category */
.eshbmh-room-group {
	margin-bottom: 34px;
}
.eshbmh-room-group-title {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 20px;
	padding-left: 12px;
	border-left: 3px solid #b9741f;
	letter-spacing: .2px;
}
.eshbmh-room-count {
	font-size: 12px;
	font-weight: 600;
	color: #6b7280;
	background: #f3f4f6;
	border-radius: 30px;
	min-width: 22px;
	height: 22px;
	padding: 0 8px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
}
.eshbmh-room-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
}
.eshbmh-room-grid .eshbmh-room-card {
	flex: 1 1 300px;
	max-width: 372px;
}

/* Room card */
.eshbmh-room-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid #eef0f3;
	border-radius: 12px;
	overflow: hidden;
	transition: transform .3s ease, box-shadow .3s ease;
}
.eshbmh-room-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 14px 30px rgba(0, 0, 0, .10);
}
.eshbmh-room-media {
	position: relative;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: #eee;
}
.eshbmh-room-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .4s ease;
}
.eshbmh-room-card:hover .eshbmh-room-media img {
	transform: scale(1.06);
}
.eshbmh-room-cat {
	position: absolute;
	top: 12px;
	left: 12px;
	background: #b9741f;
	color: #fff;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: .3px;
	padding: 4px 12px;
	border-radius: 30px;
	text-transform: capitalize;
	box-shadow: 0 2px 8px rgba(0, 0, 0, .18);
}
.eshbmh-room-price {
	position: absolute;
	bottom: 12px;
	right: 12px;
	background: rgba(31, 41, 55, .92);
	color: #fff;
	padding: 6px 12px;
	border-radius: 6px;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.1;
}
.eshbmh-room-price small {
	font-size: 11px;
	font-weight: 400;
	opacity: .85;
}
.eshbmh-room-body {
	padding: 16px 18px 18px;
	display: flex;
	flex-direction: column;
	flex: 1;
}
.eshbmh-room-title {
	font-size: 19px;
	margin: 0 0 10px;
	line-height: 1.25;
}
.eshbmh-room-title a {
	color: #1f2937;
	text-decoration: none;
}
.eshbmh-room-title a:hover {
	color: #b9741f;
}
.eshbmh-room-meta {
	list-style: none;
	margin: 0 0 16px;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 8px 14px;
	flex: 1;
}
.eshbmh-room-meta li {
	margin: 0;
	font-size: 13px;
	color: #666;
	display: inline-flex;
	align-items: center;
	gap: 5px;
}
.eshbmh-room-meta li i {
	color: #b9741f;
}
.eshbmh-room-btn {
	display: inline-block;
	text-align: center;
	padding: 10px 18px;
	background: #1f2937;
	color: #fff;
	text-decoration: none;
	font-size: 14px;
	border-radius: 6px;
	transition: background .2s ease;
}
.eshbmh-room-btn:hover {
	background: #b9741f;
	color: #fff;
}

/* Typography control — rein in the theme's oversized heading fonts so the
   hotel page reads clean & premium regardless of the active theme. */
.eshbmh-single-hotel h2.eshbmh-section-title {
	font-size: 34px !important;
	line-height: 1.25 !important;
	margin-bottom: 24px !important;
}
.eshbmh-single-hotel h3.eshbmh-room-group-title {
	font-size: 19px !important;
	line-height: 1.3 !important;
	font-weight: 600 !important;
}
.eshbmh-single-hotel h3.eshbmh-room-title {
	font-size: 18px !important;
	line-height: 1.35 !important;
	font-weight: 600 !important;
	margin: 0 0 10px !important;
}
.eshbmh-single-hotel h3.eshbmh-room-title a {
	font-size: inherit;
	font-weight: inherit;
}

/* Sidebar cards */
.eshbmh-card {
	border: 1px solid #eee;
	border-radius: 8px;
	padding: 20px;
	margin-bottom: 24px;
	background: #fff;
	box-shadow: 0 6px 20px rgba(0,0,0,.04);
}
.eshbmh-card-title {
	font-size: 18px;
	margin: 0 0 14px;
}
.eshbmh-contact p {
	margin: 0 0 10px;
	font-size: 15px;
}
.eshbmh-contact a {
	text-decoration: none;
}
.eshbmh-contact .dashicons {
	color: #555;
	margin-right: 4px;
}
.eshbmh-map-embed {
	line-height: 0;
	border-radius: 6px;
	overflow: hidden;
}
.eshbmh-empty {
	color: #888;
	font-style: italic;
}

/* ============================================================
   Hotels listing / archive (grid + top filter, no sidebar)
   ============================================================ */
.eshbmh-hotel-archive {
	padding: 0;
}
.eshbmh-archive-head {
	text-align: center;
	margin-bottom: 26px;
}
.eshbmh-hotel-archive .eshbmh-archive-title {
	font-size: 34px !important;
	line-height: 1.2 !important;
	margin: 0;
}

/* Filter bar */
.eshbmh-filter-bar {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: center;
	padding: 16px 18px;
	margin: 0 0 34px;
	background: #f7f8fa;
	border: 1px solid #eef0f3;
	border-radius: 10px;
}
.eshbmh-filter-label {
	font-weight: 600;
	font-size: 14px;
	color: #444;
	display: inline-flex;
	align-items: center;
	gap: 4px;
}
.eshbmh-filter-label .dashicons {
	font-size: 18px;
	width: 18px;
	height: 18px;
}
.eshbmh-filter-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
.eshbmh-chip {
	display: inline-block;
	padding: 7px 16px;
	border-radius: 40px;
	background: #fff;
	border: 1px solid #dcdfe4;
	color: #333;
	text-decoration: none;
	font-size: 14px;
	line-height: 1.2;
	transition: all .2s ease;
}
.eshbmh-chip:hover {
	border-color: #b9741f;
	color: #b9741f;
}
.eshbmh-chip.is-active {
	background: #b9741f;
	border-color: #b9741f;
	color: #fff;
}

/* Hotel grid — column count via --eshbmh-cols (set by the shortcode); defaults to 3.
   Using a CSS variable (not an inline grid-template-columns) so the media queries
   below can still override it on tablet/mobile. */
.eshbmh-hotel-grid {
	display: grid;
	grid-template-columns: repeat(var(--eshbmh-cols, 3), 1fr);
	gap: 28px;
}

/* Hotel card */
.eshbmh-hotel-card {
	background: #fff;
	border: 1px solid #eef0f3;
	border-radius: 12px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: transform .3s ease, box-shadow .3s ease;
}
.eshbmh-hotel-card:hover {
	transform: translateY(-5px);
	box-shadow: 0 16px 34px rgba(0,0,0,.10);
}
.eshbmh-hotel-card-media {
	position: relative;
	display: block;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: #eee;
}
.eshbmh-hotel-card-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .4s ease;
}
.eshbmh-hotel-card:hover .eshbmh-hotel-card-media img {
	transform: scale(1.06);
}
.eshbmh-card-star {
	position: absolute;
	top: 12px;
	left: 12px;
	background: rgba(0,0,0,.6);
	color: #ffc107;
	font-size: 13px;
	font-weight: 600;
	padding: 3px 10px;
	border-radius: 30px;
}
.eshbmh-hotel-card-body {
	padding: 18px 20px 20px;
	display: flex;
	flex-direction: column;
	flex: 1;
}
.eshbmh-card-city {
	display: inline-flex;
	align-items: center;
	gap: 3px;
	font-size: 13px;
	color: #b9741f;
	font-weight: 600;
	margin-bottom: 6px;
}
.eshbmh-card-city .dashicons {
	font-size: 16px;
	width: 16px;
	height: 16px;
}
.eshbmh-hotel-card-title {
	font-size: 20px;
	margin: 0 0 8px;
	line-height: 1.25;
}
.eshbmh-hotel-card-title a {
	color: #1f2937;
	text-decoration: none;
}
.eshbmh-hotel-card-title a:hover {
	color: #b9741f;
}
.eshbmh-card-address {
	font-size: 14px;
	color: #777;
	margin: 0 0 16px;
	flex: 1;
}
.eshbmh-hotel-card-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	border-top: 1px solid #f0f0f0;
	padding-top: 14px;
}
.eshbmh-card-rooms {
	font-size: 13px;
	color: #666;
	font-weight: 600;
}
.eshbmh-card-btn {
	display: inline-block;
	padding: 8px 18px;
	background: #b9741f;
	color: #fff;
	text-decoration: none;
	font-size: 14px;
	border-radius: 6px;
	transition: background .2s ease;
}
.eshbmh-card-btn:hover {
	background: #a2631a;
	color: #fff;
}

/* ============================================================
   Hotels slider (Swiper carousel)
   ============================================================ */
.eshbmh-hotels-slider {
	position: relative;
	padding: 0 10px;
}
.eshbmh-hotels-slider .swiper {
	padding-bottom: 4px;
}
/* Pre-init state: before Swiper's own JS/CSS kick in, keep the slides in a
   clipped horizontal row instead of a full-width vertical stack (avoids FOUC
   / layout jump on reload). Swiper adds .swiper-initialized once it's ready. */
.eshbmh-hotels-slider .swiper:not(.swiper-initialized) {
	overflow: hidden;
}
.eshbmh-hotels-slider .swiper:not(.swiper-initialized) .swiper-wrapper {
	display: flex;
	flex-wrap: nowrap;
	gap: 24px;
}
.eshbmh-hotels-slider .swiper:not(.swiper-initialized) .swiper-slide {
	flex: 0 0 300px;
	max-width: 372px;
}
.eshbmh-hotels-slider .swiper:not(.swiper-initialized) ~ .eshbmh-hs-prev,
.eshbmh-hotels-slider .swiper:not(.swiper-initialized) ~ .eshbmh-hs-next {
	opacity: 0;
}
.eshbmh-hotels-slider .swiper-slide {
	height: auto; /* let cards stretch to equal height */
}
.eshbmh-hotels-slider .swiper-slide .eshbmh-hotel-card {
	height: 100%;
}
.eshbmh-hs-prev,
.eshbmh-hs-next {
	position: absolute;
	top: 40%;
	transform: translateY(-50%);
	z-index: 5;
	width: 44px;
	height: 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	color: #1f2937;
	border-radius: 50%;
	box-shadow: 0 6px 18px rgba(0, 0, 0, .12);
	cursor: pointer;
	font-size: 18px;
	transition: all .2s ease;
	user-select: none;
}
.eshbmh-hs-prev:hover,
.eshbmh-hs-next:hover {
	background: #b9741f;
	color: #fff;
}
.eshbmh-hs-prev { left: -8px; }
.eshbmh-hs-next { right: -8px; }
.eshbmh-hotels-slider .swiper-pagination {
	position: static;
	margin-top: 22px;
}
.eshbmh-hotels-slider .swiper-pagination-bullet-active {
	background: #b9741f;
}
@media (max-width: 767px) {
	.eshbmh-hs-prev { left: 0; }
	.eshbmh-hs-next { right: 0; }
}

/* Pagination */
.eshbmh-pagination {
	margin-top: 40px;
	text-align: center;
}
.eshbmh-pagination .page-numbers {
	list-style: none;
	display: inline-flex;
	gap: 6px;
	padding: 0;
	margin: 0;
}
.eshbmh-pagination .page-numbers li {
	margin: 0;
}
.eshbmh-pagination .page-numbers a,
.eshbmh-pagination .page-numbers span {
	display: inline-block;
	min-width: 40px;
	padding: 8px 12px;
	border: 1px solid #dcdfe4;
	border-radius: 6px;
	text-decoration: none;
	color: #333;
}
.eshbmh-pagination .page-numbers .current {
	background: #b9741f;
	border-color: #b9741f;
	color: #fff;
}

/* Responsive */
@media (max-width: 900px) {
	.eshbmh-body {
		grid-template-columns: 1fr;
	}
	.eshbmh-single-hotel h1.eshbmh-hotel-title {
		font-size: 42px !important;
	}
	.eshbmh-gallery-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.eshbmh-hotel-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 680px) {
	.eshbmh-room-grid {
		grid-template-columns: 1fr;
	}
}
@media (max-width: 560px) {
	.eshbmh-amenities-list {
		grid-template-columns: 1fr;
	}
	.eshbmh-hotel-grid {
		grid-template-columns: 1fr;
	}
	.eshbmh-hotel-archive .eshbmh-archive-title {
		font-size: 24px !important;
	}
}

/* Single hotel page — phone refinements (hero + spacing) */
@media (max-width: 767px) {
	.eshbmh-hero {
		padding: 54px 0 40px;
		margin-bottom: 28px;
	}
	.eshbmh-single-hotel h1.eshbmh-hotel-title {
		font-size: 40px !important;
	}
	.eshbmh-body {
		gap: 28px;
		padding-bottom: 40px;
	}
	.eshbmh-gallery-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.eshbmh-single-hotel h2.eshbmh-section-title {
		font-size: 40px !important;
	}
	.eshbmh-hotel-archive .eshbmh-archive-title {
		font-size: 27px !important;
	}
}
@media (max-width: 460px) {
	.eshbmh-hero {
		padding: 42px 0 32px;
	}
	.eshbmh-single-hotel h1.eshbmh-hotel-title {
		font-size: 40px !important;
	}
	.eshbmh-stars {
		font-size: 17px;
	}
}

/* Mobile: hotel name in the hotel list at 40px (per request) */
@media (max-width: 767px) {
	.eshbmh-hotel-card .eshbmh-hotel-card-title,
	.eshbmh-hotel-card .eshbmh-hotel-card-title a {
		font-size: 40px !important;
		line-height: 1.15 !important;
	}
}
