/* =========================================================
   BHA CLOUDBEDS IMMERSIVE / ACCOMMODATION CALENDAR
   Bentley Holiday Apartments
   ========================================================= */


/* ---------------------------------------------------------
   PROPERTY COLOUR VARIABLES
   --------------------------------------------------------- */


/* WESTONE
   Cloudbeds branding:
   Header navy: #383852
   Primary gold: #BB9958
*/

body.bha-cloudbeds-modal-wes {
	--bha-cb-primary: #383852;
	--bha-cb-primary-dark: #2d2d43;
	--bha-cb-primary-soft: rgba(56, 56, 82, 0.10);
	--bha-cb-primary-line: rgba(56, 56, 82, 0.34);
}


/* EUROCITY
   Primary gold: #BB9958
*/

body.bha-cloudbeds-modal-ecd {
	--bha-cb-primary: #BB9958;
	--bha-cb-primary-dark: #a68548;
	--bha-cb-primary-soft: rgba(187, 153, 88, 0.12);
	--bha-cb-primary-line: rgba(187, 153, 88, 0.40);
}


/* ---------------------------------------------------------
   SHARED CLOUDBEDS PORTAL
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes .cb-portal,
body.bha-cloudbeds-modal-ecd .cb-portal,
body.bha-cloudbeds-modal-wes .cb-bookingengine-root,
body.bha-cloudbeds-modal-ecd .cb-bookingengine-root {
	font-family: inherit;
}


/* ---------------------------------------------------------
   MODAL CONTAINER
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-modal"],

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-modal"] {

	border-radius: 6px !important;

	border-top:
		4px solid var(--bha-cb-primary) !important;

	background: #ffffff !important;

	box-shadow:
		0 12px 40px rgba(0, 0, 0, 0.18) !important;
}


/* ---------------------------------------------------------
   MODAL TYPOGRAPHY
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-modal"]
.cb-text,

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-modal"]
.cb-text {

	font-family: inherit;
}


/* ---------------------------------------------------------
   CLOSE BUTTON
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-modal-close-button"],

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-modal-close-button"] {

	transition:
		background-color 0.2s ease,
		color 0.2s ease !important;
}


body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-modal-close-button"]:hover,

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-modal-close-button"]:hover {

	background:
		var(--bha-cb-primary-soft) !important;

	color:
		var(--bha-cb-primary) !important;
}


/* ---------------------------------------------------------
   PREVIOUS / NEXT MONTH
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-nav-button,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-nav-button {

	border-color:
		var(--bha-cb-primary-line) !important;

	color:
		var(--bha-cb-primary) !important;

	transition:
		background-color 0.2s ease,
		border-color 0.2s ease,
		color 0.2s ease !important;
}


body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-nav-button:hover,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-nav-button:hover {

	background:
		var(--bha-cb-primary) !important;

	border-color:
		var(--bha-cb-primary) !important;

	color: #ffffff !important;
}


/* ---------------------------------------------------------
   AVAILABLE CALENDAR DAYS
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day:not(.cb-calendar-day--before):not(.cb-calendar-day--block),

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day:not(.cb-calendar-day--before):not(.cb-calendar-day--block) {

	transition:
		background-color 0.15s ease,
		border-color 0.15s ease,
		color 0.15s ease !important;
}


/* Hover available date */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day:not(.cb-calendar-day--before):not(.cb-calendar-day--block):hover,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day:not(.cb-calendar-day--before):not(.cb-calendar-day--block):hover {

	background:
		var(--bha-cb-primary-soft) !important;

	outline:
		1px solid var(--bha-cb-primary-line) !important;

	outline-offset: -1px !important;
}


/* ---------------------------------------------------------
   SELECTED CHECK-IN / CHECK-OUT
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day[aria-selected="true"],

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day[aria-selected="true"] {

	background:
		var(--bha-cb-primary) !important;

	border-color:
		var(--bha-cb-primary) !important;

	color: #ffffff !important;
}


/* Selected day text */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day[aria-selected="true"]
.cb-text,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day[aria-selected="true"]
.cb-text {

	color: #ffffff !important;
}


/* ---------------------------------------------------------
   CHECK-IN ENDPOINT
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day--checkin,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day--checkin {

	background:
		var(--bha-cb-primary) !important;

	border-color:
		var(--bha-cb-primary) !important;

	color: #ffffff !important;
}


body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day--checkin
.cb-text,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day--checkin
.cb-text {

	color: #ffffff !important;
}


/* ---------------------------------------------------------
   DATE RANGE / NIGHTS BETWEEN
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day--range:not([aria-selected="true"]),

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day--range:not([aria-selected="true"]) {

	background:
		var(--bha-cb-primary-soft) !important;

	border-color:
		transparent !important;

	color: #1f2430 !important;
}


/* Text / price within middle nights */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day--range:not([aria-selected="true"])
.cb-text,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day--range:not([aria-selected="true"])
.cb-text {

	color: #1f2430 !important;
}


/* ---------------------------------------------------------
   TODAY
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day--today,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day--today {

	border-color:
		var(--bha-cb-primary) !important;

	box-shadow:
		inset 0 0 0 1px
		var(--bha-cb-primary) !important;
}


/* ---------------------------------------------------------
   AVAILABILITY / RESTRICTION DOTS
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid$="-restrictions-indicator"],

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid$="-restrictions-indicator"] {

	background-color:
		var(--bha-cb-primary) !important;
}


/* ---------------------------------------------------------
   SOLD-OUT / HISTORIC DATES
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day--before,

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day--block,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day--before,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day--block {

	opacity: 0.48;
}


/* ---------------------------------------------------------
   CANCEL BUTTON
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-cancel-button"],

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-cancel-button"] {

	background: transparent !important;

	border:
		1px solid var(--bha-cb-primary) !important;

	border-radius: 0 !important;

	color:
		var(--bha-cb-primary) !important;

	box-shadow: none !important;

	font-family: inherit !important;

	transition:
		background-color 0.2s ease,
		color 0.2s ease !important;
}


body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-cancel-button"]:hover,

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-cancel-button"]:hover {

	background:
		var(--bha-cb-primary-soft) !important;
}


/* ---------------------------------------------------------
   CONTINUE BUTTON
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-continue-button"],

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-continue-button"] {

	background:
		var(--bha-cb-primary) !important;

	border:
		1px solid var(--bha-cb-primary) !important;

	border-radius: 0 !important;

	color: #ffffff !important;

	box-shadow: none !important;

	font-family: inherit !important;

	transition:
		background-color 0.2s ease,
		border-color 0.2s ease !important;
}


body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-continue-button"]:hover {

	background: #2d2d43 !important;
	border-color: #2d2d43 !important;
}


body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-continue-button"]:hover {

	background: #a68548 !important;
	border-color: #a68548 !important;
}


/* Disabled Continue */

body.bha-cloudbeds-modal-wes
.cb-portal
[data-testid="accommodation-date-picker-continue-button"]:disabled,

body.bha-cloudbeds-modal-ecd
.cb-portal
[data-testid="accommodation-date-picker-continue-button"]:disabled {

	background:
		var(--bha-cb-primary-soft) !important;

	border-color: transparent !important;

	color:
		rgba(31, 36, 48, 0.35) !important;

	opacity: 1 !important;

	cursor: not-allowed !important;
}


/* ---------------------------------------------------------
   KEYBOARD ACCESSIBILITY
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.cb-portal
button:focus-visible,

body.bha-cloudbeds-modal-ecd
.cb-portal
button:focus-visible,

body.bha-cloudbeds-modal-wes
.cb-portal
.cb-calendar-day:focus-visible,

body.bha-cloudbeds-modal-ecd
.cb-portal
.cb-calendar-day:focus-visible {

	outline:
		2px solid var(--bha-cb-primary) !important;

	outline-offset: 2px !important;
}


/* ---------------------------------------------------------
   ON-PAGE "CHOOSE DATES" BUTTON
   --------------------------------------------------------- */

cb-accommodation-date-picker
[data-testid="accommodation-date-picker-button"] {

	border-radius: 0 !important;

	font-family: inherit !important;

	text-transform: uppercase !important;

	letter-spacing: 0.055em !important;

	box-shadow: none !important;
}


/* WestOne */

.bha-room-booking--wes
cb-accommodation-date-picker
[data-testid="accommodation-date-picker-button"] {

	background: #383852 !important;

	border-color: #383852 !important;

	color: #ffffff !important;
}


.bha-room-booking--wes
cb-accommodation-date-picker
[data-testid="accommodation-date-picker-button"]:hover {

	background: #2d2d43 !important;

	border-color: #2d2d43 !important;
}


/* EuroCity */

.bha-room-booking--ecd
cb-accommodation-date-picker
[data-testid="accommodation-date-picker-button"] {

	background: #BB9958 !important;

	border-color: #BB9958 !important;

	color: #ffffff !important;
}


.bha-room-booking--ecd
cb-accommodation-date-picker
[data-testid="accommodation-date-picker-button"]:hover {

	background: #a68548 !important;

	border-color: #a68548 !important;
}


/* ---------------------------------------------------------
   CLOUDBEDS PORTAL Z-INDEX
   --------------------------------------------------------- */

.cb-bookingengine-root {

	--booking-engine-zIndices-sticky: 1100;
	--booking-engine-zIndices-modal: 1400;
	--booking-engine-zIndices-popover: 1500;
	--booking-engine-zIndices-tooltip: 1800;
}

/* =========================================================
   BOOKING PAGE — REDUCE EXCESS PROPERTY INFORMATION
   =========================================================
   
   Keep:
   - Property Information
   - Property images
   - Property description
   - Property amenities

   Hide complete Cloudbeds sections:
   - Address and Contact
   - Check-In / Check-Out Policies
   - Property and Cancellation Policies
   - Terms and Conditions link
   ========================================================= */


/* ---------------------------------------------------------
   ADDRESS + CONTACT
   --------------------------------------------------------- */

cb-immersive-experience
.cb-address-and-contact,

cb-immersive-experience
[data-testid="property-address-and-contact"] {

	display: none !important;
}


/* ---------------------------------------------------------
   CHECK-IN / CHECK-OUT POLICIES
   --------------------------------------------------------- */

cb-immersive-experience
.cb-policies,

cb-immersive-experience
[data-testid="property-policies"] {

	display: none !important;
}


/* ---------------------------------------------------------
   PROPERTY / CANCELLATION POLICIES
   --------------------------------------------------------- */

cb-immersive-experience
.cb-cancellation-policies,

cb-immersive-experience
[data-testid="property-cancellation-policies"] {

	display: none !important;
}


/* ---------------------------------------------------------
   CLOUDBEDS TERMS LINK
   --------------------------------------------------------- */

cb-immersive-experience
.cb-terms-link,

cb-immersive-experience
[data-testid="property-terms-link"] {

	display: none !important;
}


/* ---------------------------------------------------------
   MOBILE
   --------------------------------------------------------- */

@media (max-width: 690px) {

	body.bha-cloudbeds-modal-wes
	.cb-portal
	[data-testid="accommodation-date-picker-modal"],

	body.bha-cloudbeds-modal-ecd
	.cb-portal
	[data-testid="accommodation-date-picker-modal"] {

		border-radius: 0 !important;

		border-top-width: 3px !important;
	}

}


/* =========================================================
   BHA RATE PLAN COMPARISON
   Show multiple Cloudbeds offers side-by-side
   ========================================================= */


/* ---------------------------------------------------------
   REMOVE THE ACCORDION SHOW / HIDE BAR
   --------------------------------------------------------- */

.cb-accommodation-card
button[aria-controls*="accordion-panel"] {
	display: none !important;
}


/* ---------------------------------------------------------
   RATE OPTIONS GRID
   Applied by JS only when 2+ rates exist
   --------------------------------------------------------- */

.cb-accommodation-card
[id^="accordion-panel-"].bha-rate-grid {

	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));

	gap: 12px;

	padding: 14px !important;

	background: #f8f8f8;
}


/*
 * Cloudbeds inserts each rate inside its own list item.
 */

.cb-accommodation-card
.bha-rate-grid
> [role="listitem"] {

	position: relative;

	display: flex !important;
	flex-direction: column;

	min-width: 0;

	padding: 18px 18px 16px;

	background: #ffffff;

	border: 1px solid #e2e2e2;
}


/* Remove Cloudbeds' horizontal divider between rates */

.cb-accommodation-card
.bha-rate-grid
> [role="listitem"]
> hr {

	display: none !important;
}


/* ---------------------------------------------------------
   RATE PLAN INTERNAL LAYOUT
   --------------------------------------------------------- */

.cb-accommodation-card
.bha-rate-grid
.cb-rate-plan {

	display: grid !important;

	grid-template-columns: 1fr auto;
	grid-template-areas:
		"title  title"
		"price  button"
		"nights button";

	column-gap: 18px;
	row-gap: 6px;

	align-items: center;

	width: 100%;
}


/* Rate title */

.cb-accommodation-card
.bha-rate-grid
.cb-rate-plan-title-text {

	grid-area: title;

	margin: 0 0 8px !important;

	font-size: 17px !important;
	line-height: 1.25 !important;
}


/* Prices */

.cb-accommodation-card
.bha-rate-grid
.cb-rate-plan-price {

	grid-area: price;

	margin: 0 !important;

	font-size: 18px !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
}


/*
 * Cloudbeds may output more than one price node for a
 * discounted/non-refundable rate. Let its strike-through
 * formatting remain, but keep the stack compact.
 */

.cb-accommodation-card
.bha-rate-grid
.cb-rate-plan-price + .cb-rate-plan-price {

	margin-top: 2px !important;
}


/* Add button */

.cb-accommodation-card
.bha-rate-grid
.cb-select-button {

	grid-area: button;

	align-self: center;

	min-width: 76px;

	margin: 0 !important;
}


/* ---------------------------------------------------------
   CHEAPEST / BEST VALUE RATE
   --------------------------------------------------------- */

.cb-accommodation-card
.bha-rate-grid
> [role="listitem"].bha-rate-cheapest {

	border: 2px solid #bb9958;

	background: #fbf7ef;

	padding: 17px 17px 15px;
}


/* Small Best Value label */

.cb-accommodation-card
.bha-rate-grid
> [role="listitem"].bha-rate-cheapest::before {

	content: "BEST VALUE";

	display: inline-block;

	align-self: flex-start;

	width: fit-content;

	margin: 0 0 10px;

	padding: 4px 8px;

	background: #bb9958;

	color: #ffffff;

	font-size: 10px;
	font-weight: 600;

	letter-spacing: .08em;
	line-height: 1;

	text-transform: uppercase;
}


/* Slightly strengthen cheapest price */

.cb-accommodation-card
.bha-rate-grid
> [role="listitem"].bha-rate-cheapest
.cb-rate-plan-price {

	font-weight: 700 !important;
}


/* ---------------------------------------------------------
   WESTONE / EUROCITY BUTTON COLOURS
   --------------------------------------------------------- */

body.bha-cloudbeds-modal-wes
.bha-rate-grid
.bha-rate-cheapest
.cb-select-button {

	background: #383852 !important;

	border-color: #383852 !important;

	color: #ffffff !important;
}


body.bha-cloudbeds-modal-ecd
.bha-rate-grid
.bha-rate-cheapest
.cb-select-button {

	background: #bb9958 !important;

	border-color: #bb9958 !important;

	color: #ffffff !important;
}


/* ---------------------------------------------------------
   MOBILE
   --------------------------------------------------------- */

@media (max-width: 690px) {

	.cb-accommodation-card
	[id^="accordion-panel-"].bha-rate-grid {

		grid-template-columns: 1fr;

		gap: 10px;

		padding: 10px !important;
	}


	.cb-accommodation-card
	.bha-rate-grid
	> [role="listitem"] {

		padding: 15px;
	}


	.cb-accommodation-card
	.bha-rate-grid
	> [role="listitem"].bha-rate-cheapest {

		padding: 14px;
	}


	.cb-accommodation-card
	.bha-rate-grid
	.cb-rate-plan {

		grid-template-columns: 1fr auto;

		column-gap: 12px;
	}

}

/* =========================================================
   CLOUDBEDS CALENDAR
   Hide room / restriction availability tooltips
   ========================================================= */

/*
 * The calendar can display hover/focus overlays listing
 * minimum stay restrictions and individual room types.
 *
 * We deliberately suppress these in the BHA booking flow:
 * visitors only need to select dates here; available rooms
 * are displayed immediately afterwards.
 */

body.bha-cloudbeds-modal-wes
.cb-portal [role="tooltip"],

body.bha-cloudbeds-modal-ecd
.cb-portal [role="tooltip"],

body.bha-cloudbeds-modal-wes
.cb-portal .react-tooltip,

body.bha-cloudbeds-modal-ecd
.cb-portal .react-tooltip {

	display: none !important;
	visibility: hidden !important;
	opacity: 0 !important;

	pointer-events: none !important;
}

body.bha-cloudbeds-modal-wes
.cb-portal [class*="react-tooltip"],

body.bha-cloudbeds-modal-ecd
.cb-portal [class*="react-tooltip"] {

	display: none !important;
	visibility: hidden !important;
	opacity: 0 !important;

	pointer-events: none !important;
}

/* Remove default list bullets from Cloudbeds accommodation cards */

.cb-accommodations-page
[data-testid="accommodations-full-list"] {
	list-style: none !important;
	padding-left: 0 !important;
	margin-left: 0 !important;
}

.cb-accommodations-page
[data-testid="accommodations-full-list"] > li {
	list-style: none !important;
}

.cb-accommodations-page
[data-testid="accommodations-full-list"] > li::marker {
	content: "" !important;
}