.greatpm-booking-directory {
	--cbint-booking-canvas: #fbf8f2;
	--cbint-booking-surface: #fff;
	--cbint-booking-surface-alt: #f7f4ee;
	--cbint-booking-surface-strong: #eeeadf;
	--cbint-booking-border: #d8d9d2;
	--cbint-booking-border-strong: #a7afa9;
	--cbint-booking-heading: var(--e-global-color-primary, #1f2b24);
	--cbint-booking-text: var(--e-global-color-text, #3f4b46);
	--cbint-booking-muted: #5f6e67;
	--cbint-booking-accent: var(--e-global-color-secondary, #18392b);
	--cbint-booking-accent-hover: #214d3b;
	--cbint-booking-accent-active: #10291f;
	--cbint-booking-accent-contrast: #fff;
	--cbint-booking-focus: #315f4d;
	--cbint-booking-success: #216e4e;
	--cbint-booking-warning: #8a5a00;
	--cbint-booking-danger: #a12b2c;
	--cbint-booking-danger-surface: #fff4f3;
	--cbint-booking-shadow-sm: 0 1px 2px rgba(19, 31, 26, .08), 0 4px 12px rgba(19, 31, 26, .05);
	--cbint-booking-shadow: 0 20px 50px rgba(19, 31, 26, .10);
	--cbint-booking-shadow-lg: 0 28px 72px rgba(19, 31, 26, .18);
	--cbint-booking-radius: 20px;
	--cbint-booking-control-radius: 18px;
	--cbint-booking-surface-radius: 16px;
	--cbint-booking-pill-radius: 999px;
	--cbint-booking-control-height: 48px;
	--cbint-booking-action-height: 52px;
	--cbint-booking-font-family: inherit;
	--cbint-booking-font-size-xs: .75rem;
	--cbint-booking-font-size-sm: .875rem;
	--cbint-booking-font-size-md: 1rem;
	--cbint-booking-font-size-lg: 1.25rem;
	--cbint-booking-font-size-xl: clamp(1.5rem, 2vw, 2rem);
	--cbint-booking-line-height-tight: 1.25;
	--cbint-booking-line-height-body: 1.55;
	--cbint-booking-space-1: .25rem;
	--cbint-booking-space-2: .5rem;
	--cbint-booking-space-3: .75rem;
	--cbint-booking-space-4: 1rem;
	--cbint-booking-space-5: 1.5rem;
	--cbint-booking-space-6: 2rem;
	--cbint-booking-safe-area-top: env(safe-area-inset-top, 0px);
	--cbint-booking-safe-area-right: env(safe-area-inset-right, 0px);
	--cbint-booking-safe-area-bottom: env(safe-area-inset-bottom, 0px);
	--cbint-booking-safe-area-left: env(safe-area-inset-left, 0px);
	--greatpm-booking-card-surface: var(--cbint-booking-surface);
	--greatpm-booking-card-text: var(--cbint-booking-text);
	--greatpm-booking-card-muted: var(--cbint-booking-muted);
	--greatpm-booking-card-accent: var(--cbint-booking-accent);
	--greatpm-booking-card-accent-readable: var(--cbint-booking-heading);
	--greatpm-booking-card-action: var(--cbint-booking-accent);
	--greatpm-booking-card-action-contrast: var(--cbint-booking-accent-contrast);
	--greatpm-booking-card-border: var(--cbint-booking-border);
	--greatpm-booking-card-radius: var(--cbint-booking-radius);
	--greatpm-booking-card-shadow: var(--cbint-booking-shadow);
	--greatpm-booking-card-image-ratio: 4 / 3;
	--greatpm-booking-modal-image-ratio: 16 / 10;
	--greatpm-booking-card-space: 1rem;
	--greatpm-booking-card-grid-gap: 1.5rem;
	--greatpm-booking-card-control-radius: var(--cbint-booking-control-radius);
	--greatpm-booking-card-focus: 3px solid var(--cbint-booking-focus);
	--greatpm-booking-card-selected: 0 0 0 3px rgba(24, 57, 43, .22), var(--greatpm-booking-card-shadow);
	--greatpm-booking-card-disabled-opacity: .58;
	color: var(--cbint-booking-text);
	font-family: var(--cbint-booking-font-family);
	font-size: var(--cbint-booking-font-size-md);
	line-height: var(--cbint-booking-line-height-body);
}
@supports (color: color-mix(in srgb, black, white)) {
	.greatpm-booking-directory {
		--greatpm-booking-card-accent-readable: color-mix(in srgb, var(--greatpm-booking-card-accent) 35%, var(--cbint-booking-heading));
	}
}

/*
 * Production-site coexistence: the Sales Agent launcher uses a fixed layer that
 * otherwise covers Booking Engine cards and form controls. This exact Elementor
 * instance is suppressed only on pages that render the Booking Engine.
 */
body:has(.greatpm-booking-directory[data-greatpm-booking-directory]) .elementor-element.elementor-element-3507fb3 {
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
}
.greatpm-booking-directory *, .greatpm-booking-directory *::before, .greatpm-booking-directory *::after { box-sizing: border-box; }
.greatpm-booking-directory :where(input, select, textarea, button) { max-width: 100%; font: inherit; }
.greatpm-booking-directory :where(button, input, select, textarea):focus-visible { outline: var(--greatpm-booking-card-focus); outline-offset: 2px; }
.greatpm-booking-directory :where(button, input, select, textarea):disabled,
.greatpm-booking-directory .disabled { cursor: not-allowed; opacity: var(--greatpm-booking-card-disabled-opacity); box-shadow: none; }
.greatpm-booking-directory :where(input, textarea)::placeholder { color: var(--cbint-booking-muted); opacity: 1; }

.greatpm-booking-directory .cbint-booking-directory__step,
.greatpm-booking-directory .cbint-booking-directory__main,
.greatpm-booking-directory .cbint-booking-directory__results-shell,
.greatpm-booking-directory .cbint-booking-directory__results,
.greatpm-booking-directory .cbint-booking-reservation__panel { display: flex; flex-direction: column; }
.greatpm-booking-directory .cbint-booking-directory__step,
.greatpm-booking-directory .cbint-booking-directory__main { gap: 1.5rem; }
.greatpm-booking-directory .cbint-booking-directory__results-shell { gap: 1.25rem; width: 100%; }
.greatpm-booking-directory .cbint-booking-directory__results { gap: var(--greatpm-booking-card-grid-gap); }
.greatpm-booking-directory .cbint-booking-directory__cards { display: grid; width: 100%; min-width: 0; grid-template-columns: minmax(0, 1fr); align-items: stretch; gap: var(--greatpm-booking-card-grid-gap); }

.greatpm-booking-directory .greatpm-booking-directory__search,
.greatpm-booking-directory .cbint-booking-ui__search { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr) minmax(10rem, .72fr); gap: 1rem; align-items: start; padding: 1.25rem; border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-radius); background: linear-gradient(180deg, rgba(247, 244, 238, .9), rgba(255, 255, 255, .96)); box-shadow: var(--cbint-booking-shadow); }
.greatpm-booking-directory .greatpm-booking-directory__field { display: flex; flex-direction: column; gap: .35rem; }
.greatpm-booking-directory .greatpm-booking-directory__field label,
.greatpm-booking-directory .greatpm-booking-directory__date-title,
.greatpm-booking-directory .greatpm-booking-directory__field-label { color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-sm); font-weight: 700; line-height: var(--cbint-booking-line-height-tight); }
.greatpm-booking-directory :where(.greatpm-booking-directory__field input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), .greatpm-booking-directory__field select, .greatpm-booking-directory__field textarea, .cbint-booking-ui__date input:not([type="hidden"]), .room-quantity-select, .room-guests select, .room-guests input[readonly], .cbint-booking-reservation__form input:not([type="checkbox"]):not([type="radio"]), .cbint-booking-reservation__form select, .cbint-booking-reservation__form textarea) { width: 100%; min-height: var(--cbint-booking-control-height); padding: .75rem .95rem; border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-control-radius); background: var(--cbint-booking-surface); color: var(--cbint-booking-heading); box-shadow: inset 0 1px 2px rgba(19, 31, 26, .04); transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease, color .18s ease; }
.greatpm-booking-directory :where(.greatpm-booking-directory__field input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), .greatpm-booking-directory__field select, .greatpm-booking-directory__field textarea, .cbint-booking-ui__date input:not([type="hidden"]), .room-quantity-select, .room-guests select, .room-guests input[readonly], .cbint-booking-reservation__form input:not([type="checkbox"]):not([type="radio"]), .cbint-booking-reservation__form select, .cbint-booking-reservation__form textarea):hover:not(:disabled) { border-color: var(--cbint-booking-border-strong); }
.greatpm-booking-directory :where(.greatpm-booking-directory__field input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), .greatpm-booking-directory__field select, .greatpm-booking-directory__field textarea, .cbint-booking-ui__date input:not([type="hidden"]), .room-quantity-select, .room-guests select, .room-guests input[readonly], .cbint-booking-reservation__form input:not([type="checkbox"]):not([type="radio"]), .cbint-booking-reservation__form select, .cbint-booking-reservation__form textarea):focus-visible { border-color: var(--cbint-booking-focus); box-shadow: 0 0 0 4px rgba(49, 95, 77, .14); }
.greatpm-booking-directory :where(.greatpm-booking-directory__field input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]), .greatpm-booking-directory__field select, .greatpm-booking-directory__field textarea, .cbint-booking-ui__date input:not([type="hidden"]), .room-quantity-select, .room-guests select, .room-guests input[readonly], .cbint-booking-reservation__form input:not([type="checkbox"]):not([type="radio"]), .cbint-booking-reservation__form select, .cbint-booking-reservation__form textarea):disabled { background: var(--cbint-booking-surface-alt); color: var(--cbint-booking-muted); }
.greatpm-booking-directory :where(input, select, textarea)[aria-invalid="true"] { border-color: var(--cbint-booking-danger); box-shadow: 0 0 0 3px rgba(161, 43, 44, .12); }
@supports selector(:user-invalid) {
	.greatpm-booking-directory :where(input, select, textarea):user-invalid { border-color: var(--cbint-booking-danger); box-shadow: 0 0 0 3px rgba(161, 43, 44, .12); }
}
.greatpm-booking-directory :where(input[type="checkbox"], input[type="radio"]) { width: 1.25rem; min-width: 1.25rem; height: 1.25rem; min-height: 1.25rem; margin: 0; border: 1px solid var(--cbint-booking-border-strong); accent-color: var(--cbint-booking-accent); cursor: pointer; }
.greatpm-booking-directory :where(input[type="checkbox"], input[type="radio"]):disabled { cursor: not-allowed; }
.greatpm-booking-directory .cbint-booking-ui__date label { display: flex; flex-direction: column; align-items: stretch; width: 100%; gap: .35rem; }
.greatpm-booking-directory .greatpm-booking-directory__date-summary { min-height: 1.15em; color: var(--cbint-booking-muted); font-size: .8rem; line-height: 1.15; }
.greatpm-booking-directory .greatpm-booking-directory__guests { position: relative; min-width: 0; }
.greatpm-booking-directory .greatpm-booking-directory__guest-trigger { display: flex; width: 100%; min-height: var(--cbint-booking-control-height); align-items: center; justify-content: space-between; gap: .75rem; padding: .75rem .95rem; border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-control-radius); background: var(--cbint-booking-surface); color: var(--cbint-booking-heading); box-shadow: inset 0 1px 2px rgba(19, 31, 26, .04); text-align: left; cursor: pointer; transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease; }
.greatpm-booking-directory .greatpm-booking-directory__guest-trigger:hover { border-color: var(--cbint-booking-border-strong); }
.greatpm-booking-directory .greatpm-booking-directory__guest-trigger[aria-expanded="true"] { border-color: var(--cbint-booking-focus); box-shadow: 0 0 0 4px rgba(49, 95, 77, .14); }
.greatpm-booking-directory .greatpm-booking-directory__guest-panel { position: absolute; z-index: 20; top: calc(100% + .5rem); right: 0; left: 0; display: grid; min-width: min(20rem, calc(100vw - 2rem)); gap: .85rem; padding: 1rem; border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-surface-radius); background: var(--cbint-booking-surface); box-shadow: var(--cbint-booking-shadow-lg); }
.greatpm-booking-directory .greatpm-booking-directory__guest-panel[hidden] { display: none; }
.greatpm-booking-directory .greatpm-booking-directory__guest-row { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 1rem; }
.greatpm-booking-directory .greatpm-booking-directory__counter { display: grid; grid-template-columns: 2.75rem 3rem 2.75rem; align-items: center; gap: .25rem; }
.greatpm-booking-directory .greatpm-booking-directory__counter button { width: 2.75rem; min-width: 2.75rem; height: 2.75rem; padding: 0; border: 1px solid var(--cbint-booking-border-strong); border-radius: 50%; background: var(--cbint-booking-surface); color: var(--cbint-booking-accent); font-size: 1.25rem; font-weight: 700; cursor: pointer; }
.greatpm-booking-directory .greatpm-booking-directory__counter input { width: 3rem; min-width: 0; min-height: 2.75rem; padding: .25rem; border: 0; background: transparent; box-shadow: none; text-align: center; font-weight: 700; -moz-appearance: textfield; }
.greatpm-booking-directory .greatpm-booking-directory__counter input::-webkit-inner-spin-button,
.greatpm-booking-directory .greatpm-booking-directory__counter input::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; }
.greatpm-booking-directory .greatpm-booking-directory__guest-done { justify-self: end; min-height: 2.75rem; padding: .6rem 1rem; border: 1px solid var(--cbint-booking-accent); border-radius: var(--cbint-booking-control-radius); background: var(--cbint-booking-accent); color: var(--cbint-booking-accent-contrast); font-weight: 700; cursor: pointer; }
.greatpm-booking-directory .greatpm-booking-directory__search > .greatpm-booking-directory__submit { margin-top: 1.45rem; }
.greatpm-booking-directory .cbint-booking-ui__date h3 { margin: 0; color: var(--cbint-booking-heading); text-align: center; }
.greatpm-booking-directory [data-role="step-1"][hidden],
.greatpm-booking-directory [data-role="step-2"][hidden] { display: none; }

.greatpm-booking-directory .cbint-booking-directory__result-context { display: grid; min-width: 0; gap: .4rem; padding-top: .75rem; border-top: 1px solid var(--greatpm-booking-card-border); }
.greatpm-booking-directory .cbint-booking-directory__meta-item { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; margin: 0; padding: 0; border: 0; }
.greatpm-booking-directory .cbint-booking-directory__meta-item:last-child { padding-bottom: 0; border-bottom: 0; }
.greatpm-booking-directory .cbint-booking-directory__meta-label { color: var(--cbint-booking-muted); font-size: .78rem; font-weight: 600; }
.greatpm-booking-directory .cbint-booking-directory__meta-value { min-width: 0; overflow-wrap: anywhere; color: var(--greatpm-booking-card-muted); font-size: .78rem; text-align: right; font-weight: 600; }

.greatpm-booking-directory .room-card,
.greatpm-booking-directory .cbint-booking-reservation__panel { border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-radius); background: var(--cbint-booking-surface); box-shadow: var(--cbint-booking-shadow); }
.greatpm-booking-directory .room-card { position: relative; display: flex; height: 100%; min-width: 0; flex-direction: column; gap: 0; overflow: hidden; border-color: var(--greatpm-booking-card-border); border-radius: var(--greatpm-booking-card-radius); background: var(--greatpm-booking-card-surface); color: var(--greatpm-booking-card-text); box-shadow: var(--greatpm-booking-card-shadow); cursor: default; transition: box-shadow .2s ease, border-color .2s ease, background-color .2s ease; }
.greatpm-booking-directory .room-card:hover,
.greatpm-booking-directory .room-card:focus-within { border-color: var(--greatpm-booking-card-accent-readable); box-shadow: 0 18px 42px rgba(19, 31, 26, .14); }
.greatpm-booking-directory .room-card.is-selected { border-color: var(--greatpm-booking-card-accent-readable); box-shadow: var(--greatpm-booking-card-selected); }
.greatpm-booking-directory .room-card.has-error { border-color: var(--cbint-booking-danger); box-shadow: 0 0 0 3px rgba(161, 43, 44, .15), var(--greatpm-booking-card-shadow); }
.greatpm-booking-directory .room-card[data-selectable="false"] { opacity: 1; }
.greatpm-booking-directory .room-card__selection-status { position: absolute; z-index: 2; top: .75rem; right: .75rem; padding: .35rem .65rem; border-radius: 999px; background: var(--greatpm-booking-card-action); color: var(--greatpm-booking-card-action-contrast); box-shadow: 0 2px 10px rgba(19, 31, 26, .2); font-size: .78rem; font-weight: 750; }
.greatpm-booking-directory .room-card__selection-status[hidden] { display: none; }
.greatpm-booking-directory .room-header, .greatpm-booking-directory .room-card__media { display: block; }
.greatpm-booking-directory .room-card__media { overflow: hidden; background: var(--cbint-booking-surface-alt); }
.greatpm-booking-directory .room-image { width: 100%; min-height: 0; overflow: hidden; border-radius: 0; background: linear-gradient(135deg, #ece9e2, #f8f6f1); }
.greatpm-booking-directory .greatpm-booking-directory__image-placeholder,
.greatpm-booking-directory .room-card__image-placeholder { width: 100%; min-height: 0; aspect-ratio: var(--greatpm-booking-card-image-ratio); background: linear-gradient(135deg, #ece9e2 0%, #f8f6f1 50%, #e3e9e5 100%); }
.greatpm-booking-directory .room-card__image { display: block; width: 100%; height: auto; min-height: 0; aspect-ratio: var(--greatpm-booking-card-image-ratio); padding: 0; border: 0; border-radius: 0; object-fit: cover; }
.greatpm-booking-directory .room-info { display: flex; flex-direction: column; gap: var(--greatpm-booking-card-space); }
.greatpm-booking-directory .room-card__content { display: flex; width: 100%; min-width: 0; flex: 1; flex-direction: column; gap: var(--greatpm-booking-card-space); padding: calc(var(--greatpm-booking-card-space) * 1.25); overflow-wrap: anywhere; }
.greatpm-booking-directory .room-info h3, .greatpm-booking-directory .room-card__title { min-width: 0; margin: 0; overflow-wrap: anywhere; color: var(--greatpm-booking-card-accent-readable); font-size: clamp(1.1rem, 2vw, 1.3rem); line-height: 1.3; text-wrap: balance; }
.greatpm-booking-directory .room-quantity, .greatpm-booking-directory .room-quantity label, .greatpm-booking-directory .room-quantity-select { width: 100%; min-width: 0; max-width: 100%; }
.greatpm-booking-directory .room-quantity label { display: flex; flex-direction: column; gap: .4rem; }
.greatpm-booking-directory .room-card__metadata, .greatpm-booking-directory .room-card__attributes { display: grid; grid-template-columns: repeat(auto-fit, minmax(5rem, 1fr)); gap: .5rem; margin: 0; }
.greatpm-booking-directory .room-card__attributes div { display: flex; min-width: 0; align-items: flex-start; flex-direction: column-reverse; gap: .15rem; padding: .55rem .6rem; border-radius: calc(var(--greatpm-booking-card-control-radius) * .65); background: var(--cbint-booking-surface-alt); text-align: left; }
.greatpm-booking-directory .room-card__attributes dt { color: var(--greatpm-booking-card-muted); font-size: .75rem; font-weight: 500; }
.greatpm-booking-directory .room-card__attributes dd { margin: 0; }
.greatpm-booking-directory .room-body { display: flex; flex: 1 1 auto; flex-direction: column; gap: var(--greatpm-booking-card-space); }
.greatpm-booking-directory .rate-options, .greatpm-booking-directory .room-card__pricing { display: grid; min-width: 0; gap: .75rem; margin-top: auto; }
.greatpm-booking-directory .rate-option { display: flex; min-width: 0; align-items: center; justify-content: flex-start; flex-wrap: wrap; column-gap: .75rem; row-gap: .35rem; padding: .85rem; border: 1px solid var(--greatpm-booking-card-border); border-radius: var(--greatpm-booking-card-control-radius); background: var(--cbint-booking-surface-alt); }
.greatpm-booking-directory .rate-name { min-width: 0; flex: 1 1 7rem; overflow-wrap: anywhere; text-transform: capitalize; }
.greatpm-booking-directory .rate-name[aria-hidden="true"] { width: 0; flex: 0 0 0; overflow: hidden; }
.greatpm-booking-directory .rate-discount { min-width: 0; flex: 0 1 auto; overflow-wrap: anywhere; color: var(--greatpm-booking-card-muted); font-size: .8em; }
.greatpm-booking-directory .room-card__price-summary { display: grid; width: 100%; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; align-items: baseline; gap: .2rem .65rem; }
.greatpm-booking-directory .room-card__price-label { min-width: 0; overflow-wrap: anywhere; color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-sm); font-weight: 700; }
.greatpm-booking-directory .rate-price { display: inline-flex; width: auto; max-width: 100%; min-width: 0; align-items: baseline; justify-content: flex-end; gap: .35rem; margin-left: auto; overflow-wrap: anywhere; text-align: right; font-weight: 700; }
.greatpm-booking-directory .room-card__complete-price { color: var(--greatpm-booking-card-accent-readable); font-size: clamp(1.05rem, 1.5vw, 1.25rem); font-variant-numeric: tabular-nums; }
.greatpm-booking-directory .room-card__price-currency { min-width: 0; overflow-wrap: anywhere; color: var(--greatpm-booking-card-muted); font-size: .68em; font-weight: 600; letter-spacing: .02em; }
.greatpm-booking-directory .room-card__price-amount { min-width: 0; white-space: nowrap; }
.greatpm-booking-directory .room-card__price-support { min-width: 0; grid-column: 1 / -1; overflow-wrap: anywhere; color: var(--greatpm-booking-card-muted); font-size: var(--cbint-booking-font-size-xs); line-height: 1.35; }
.greatpm-booking-directory .room-card__actions { display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem; margin-top: auto; }
.greatpm-booking-directory .room-card__actions > button { width: 100%; min-width: 0; min-height: 52px; min-height: var(--cbint-booking-action-height); overflow-wrap: anywhere; }
.greatpm-booking-directory .room-card__actions .room-card__details { border-color: var(--cbint-booking-border-strong); background: transparent; color: var(--greatpm-booking-card-action); font-weight: 650; box-shadow: none; }
.greatpm-booking-directory .room-card__actions .room-card__select { background: var(--greatpm-booking-card-action); color: var(--greatpm-booking-card-action-contrast); box-shadow: 0 8px 18px rgba(24, 57, 43, .16); }
.greatpm-booking-directory .room-card__select[aria-busy="true"] { min-height: 52px; min-height: var(--cbint-booking-action-height); cursor: wait; opacity: var(--greatpm-booking-card-disabled-opacity); }
.greatpm-booking-directory .room-card__select[aria-busy="true"]::after { width: .85rem; height: .85rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; content: ""; animation: greatpm-booking-card-spin .75s linear infinite; }
.greatpm-booking-directory .room-card__select:disabled { cursor: not-allowed; opacity: var(--greatpm-booking-card-disabled-opacity); }
.greatpm-booking-directory .greatpm-booking-directory__results-toolbar { display: flex; min-width: 0; align-items: end; justify-content: space-between; gap: 1rem; padding: 1rem; border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-surface-radius); background: var(--cbint-booking-surface); box-shadow: var(--cbint-booking-shadow-sm); }
.greatpm-booking-directory .greatpm-booking-directory__results-summary { display: grid; min-width: 0; gap: .35rem; }
.greatpm-booking-directory .greatpm-booking-directory__result-count { margin: 0; color: var(--cbint-booking-heading); font-weight: 700; }
.greatpm-booking-directory .greatpm-booking-directory__searched-stay { display: flex; min-width: 0; flex-wrap: wrap; gap: .25rem .7rem; margin: 0; color: var(--cbint-booking-muted); font-size: var(--cbint-booking-font-size-sm); }
.greatpm-booking-directory .greatpm-booking-directory__searched-stay span { min-width: 0; overflow-wrap: anywhere; }
.greatpm-booking-directory .greatpm-booking-directory__searched-stay span + span::before { margin-right: .7rem; color: var(--cbint-booking-border-strong); content: "•"; }
.greatpm-booking-directory .greatpm-booking-directory__results-toolbar .greatpm-booking-directory__sort { width: min(100%, 18rem); }
.greatpm-booking-directory .greatpm-booking-directory__sort small { color: var(--cbint-booking-muted); font-size: .8rem; line-height: 1.25; }
.greatpm-booking-directory .room-body > .checkout-room { display: none; }
.greatpm-booking-directory .checkout-room { flex-direction: column; gap: .85rem; }
.greatpm-booking-directory .room-guests { display: flex; flex-wrap: wrap; gap: .75rem; }
.greatpm-booking-directory .room-guests label { display: flex; flex: 1 1 110px; flex-direction: column; gap: .35rem; }

.greatpm-booking-directory :where(button.room-description-btn, .select-rate, .greatpm-booking-directory__submit, .cbint-booking-reservation__back, .cbint-booking-reservation__submit) { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; min-height: 52px; min-height: var(--cbint-booking-action-height); padding: .85rem 1.2rem; border: 1px solid transparent; border-radius: var(--cbint-booking-control-radius); background: var(--cbint-booking-accent); color: var(--cbint-booking-accent-contrast); font-weight: 700; letter-spacing: .02em; line-height: var(--cbint-booking-line-height-tight); text-align: center; text-decoration: none; cursor: pointer; transition: transform .2s ease, box-shadow .2s ease, background-color .2s ease, border-color .2s ease, color .2s ease; }
.greatpm-booking-directory :where(button.room-description-btn, .cbint-booking-reservation__back) { width: 100%; border-color: var(--cbint-booking-border-strong); background: var(--cbint-booking-surface-alt); color: var(--cbint-booking-heading); }
.greatpm-booking-directory :where(button.room-description-btn, .select-rate, .greatpm-booking-directory__submit, .cbint-booking-reservation__back, .cbint-booking-reservation__submit):where(:hover, :focus-visible) { transform: translateY(-1px); background-color: var(--cbint-booking-accent-hover); box-shadow: 0 14px 28px rgba(24, 57, 43, .18); }
.greatpm-booking-directory :where(button.room-description-btn, .cbint-booking-reservation__back):where(:hover, :focus-visible) { border-color: var(--cbint-booking-accent); background-color: var(--cbint-booking-surface-strong); color: var(--cbint-booking-heading); }
.greatpm-booking-directory :where(button.room-description-btn, .select-rate, .greatpm-booking-directory__submit, .cbint-booking-reservation__back, .cbint-booking-reservation__submit):active { transform: translateY(0); background-color: var(--cbint-booking-accent-active); box-shadow: var(--cbint-booking-shadow-sm); }
.greatpm-booking-directory :where(button.room-description-btn, .cbint-booking-reservation__back):active { background-color: var(--cbint-booking-surface-strong); color: var(--cbint-booking-heading); }

.greatpm-booking-directory .room-modal[hidden] { display: none; }
.greatpm-booking-dialog-portal[hidden], .greatpm-booking-dialog-portal[inert] { pointer-events: none; }
.greatpm-booking-directory .room-modal { position: fixed; z-index: 100000; inset: 0; display: grid; place-items: center; padding: calc(1rem + var(--cbint-booking-safe-area-top)) calc(1rem + var(--cbint-booking-safe-area-right)) calc(1rem + var(--cbint-booking-safe-area-bottom)) calc(1rem + var(--cbint-booking-safe-area-left)); overflow: hidden; overscroll-behavior: contain; background: rgba(8, 16, 12, .72); backdrop-filter: blur(3px); }
.greatpm-booking-directory .room-modal-content { position: relative; display: flex; width: min(1120px, calc(100vw - 2rem)); height: min(880px, calc(100vh - 2rem - var(--cbint-booking-safe-area-top) - var(--cbint-booking-safe-area-bottom))); height: min(880px, calc(100dvh - 2rem - var(--cbint-booking-safe-area-top) - var(--cbint-booking-safe-area-bottom))); max-height: 100%; flex-direction: column; overflow: hidden; padding: 0; border: 1px solid var(--greatpm-booking-card-border); border-radius: var(--greatpm-booking-card-radius); background: var(--greatpm-booking-card-surface); color: var(--greatpm-booking-card-text); box-shadow: var(--cbint-booking-shadow-lg); }
.greatpm-booking-directory .room-modal-content__header { position: sticky; z-index: 4; top: 0; display: flex; min-width: 0; min-height: 4.5rem; align-items: center; flex: 0 0 auto; padding: 1rem 4.75rem 1rem 1.25rem; border-bottom: 1px solid var(--greatpm-booking-card-border); background: color-mix(in srgb, var(--greatpm-booking-card-surface) 94%, transparent); backdrop-filter: blur(12px); }
.greatpm-booking-directory .room-modal-content__header h3 { min-width: 0; margin: 0; overflow-wrap: anywhere; color: var(--greatpm-booking-card-accent-readable); font-size: var(--cbint-booking-font-size-xl); line-height: var(--cbint-booking-line-height-tight); }
.greatpm-booking-directory .room-modal-body { min-height: 0; flex: 1 1 auto; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; padding: 1.25rem; scrollbar-gutter: stable; }
.greatpm-booking-directory .room-description { display: flex; min-width: 0; flex-direction: column; gap: 1.25rem; }
.greatpm-booking-directory .room-modal-content__details { display: grid; width: 100%; min-width: 0; max-width: 72rem; grid-template-columns: minmax(0, 1.5fr) minmax(16rem, .8fr); align-items: start; gap: clamp(1.5rem, 4vw, 3rem); margin: 0 auto; }
.greatpm-booking-directory .room-modal-close { position: absolute; z-index: 5; top: 50%; right: 1rem; display: inline-flex; width: 46px; min-width: 46px; height: 46px; min-height: 46px; align-items: center; justify-content: center; padding: 0; border: 1px solid var(--greatpm-booking-card-border); border-radius: 50%; background: var(--greatpm-booking-card-action); color: var(--greatpm-booking-card-action-contrast); box-shadow: var(--cbint-booking-shadow-sm); font-size: 1.65rem; line-height: 1; cursor: pointer; transform: translateY(-50%); transition: background-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.greatpm-booking-directory .room-modal-close:hover { background: var(--cbint-booking-accent-hover); box-shadow: 0 8px 20px rgba(19, 31, 26, .2); transform: translateY(-50%) scale(1.04); }
.greatpm-booking-directory .room-modal-close:active { background: var(--cbint-booking-accent-active); transform: translateY(-50%) scale(.97); }
.greatpm-booking-directory .room-gallery-carousel { position: relative; display: block; width: 100%; min-width: 0; overflow: hidden; border-radius: var(--greatpm-booking-card-control-radius); background: var(--cbint-booking-surface-alt); }
.greatpm-booking-directory .room-gallery-carousel__viewport { width: 100%; min-width: 0; overflow-x: auto; overflow-y: hidden; overscroll-behavior-inline: contain; scroll-behavior: smooth; scroll-snap-type: inline mandatory; scrollbar-width: none; touch-action: pan-x pan-y; -webkit-overflow-scrolling: touch; }
.greatpm-booking-directory .room-gallery-carousel__viewport::-webkit-scrollbar { display: none; }
.greatpm-booking-directory .room-gallery-carousel__track { display: flex; width: 100%; min-width: 0; }
.greatpm-booking-directory .room-gallery-carousel__slide { position: relative; width: 100%; min-width: 100%; max-width: 100%; flex: 0 0 100%; margin: 0; overflow: hidden; scroll-snap-align: start; scroll-snap-stop: always; background: var(--cbint-booking-surface-alt); }
.greatpm-booking-directory .room-gallery-carousel__image { display: block; width: 100%; max-width: 100%; height: auto; aspect-ratio: var(--greatpm-booking-modal-image-ratio); object-fit: cover; object-position: center; background: var(--cbint-booking-surface-alt); }
.greatpm-booking-directory .room-gallery-carousel__caption { max-width: 100%; padding: .65rem .85rem; overflow-wrap: anywhere; color: var(--greatpm-booking-card-muted); font-size: .85rem; line-height: 1.4; }
.greatpm-booking-directory .room-gallery-carousel__controls { position: relative; z-index: 1; display: grid; min-height: 3.75rem; grid-template-columns: 48px minmax(0, 1fr) 48px; align-items: center; gap: .75rem; padding: .4rem .75rem; border-top: 1px solid var(--greatpm-booking-card-border); background: var(--greatpm-booking-card-surface); }
.greatpm-booking-directory .room-gallery-carousel__previous, .greatpm-booking-directory .room-gallery-carousel__next { position: static; display: inline-flex; width: 48px; min-width: 48px; height: 48px; min-height: 48px; align-items: center; justify-content: center; padding: 0; border: 1px solid var(--greatpm-booking-card-border); border-radius: 999px; background: var(--greatpm-booking-card-action); color: var(--greatpm-booking-card-action-contrast); box-shadow: var(--cbint-booking-shadow-sm); font-size: 0; line-height: 1; cursor: pointer; transform: none; transition: transform .2s ease, opacity .2s ease, background-color .2s ease, box-shadow .2s ease; }
.greatpm-booking-directory .room-gallery-carousel__previous { justify-self: start; }
.greatpm-booking-directory .room-gallery-carousel__next { justify-self: end; }
.greatpm-booking-directory .room-gallery-carousel__previous::before, .greatpm-booking-directory .room-gallery-carousel__next::before { font-size: 1.75rem; font-weight: 700; line-height: 1; }
.greatpm-booking-directory .room-gallery-carousel__previous::before { content: "‹"; }
.greatpm-booking-directory .room-gallery-carousel__next::before { content: "›"; }
.greatpm-booking-directory .room-gallery-carousel__previous:where(:hover, :focus-visible), .greatpm-booking-directory .room-gallery-carousel__next:where(:hover, :focus-visible) { background: var(--cbint-booking-accent-hover); transform: scale(1.05); box-shadow: 0 8px 18px rgba(24, 57, 43, .2); }
.greatpm-booking-directory .room-gallery-carousel__previous:active, .greatpm-booking-directory .room-gallery-carousel__next:active { transform: scale(.96); }
.greatpm-booking-directory .room-gallery-carousel__previous:disabled, .greatpm-booking-directory .room-gallery-carousel__next:disabled { cursor: not-allowed; opacity: var(--greatpm-booking-card-disabled-opacity); box-shadow: none; }
.greatpm-booking-directory .room-gallery-carousel__status { position: static; justify-self: center; min-width: 4.5rem; max-width: 100%; padding: .4rem .75rem; border-radius: 999px; background: var(--greatpm-booking-card-action); color: var(--greatpm-booking-card-action-contrast); font-size: .8rem; font-weight: 750; line-height: 1.2; text-align: center; }
.greatpm-booking-directory .room-gallery-carousel[data-gallery-count="1"] .room-gallery-carousel__controls { display: none; }
.greatpm-booking-directory [dir="rtl"] .room-gallery-carousel__previous, [dir="rtl"] .greatpm-booking-directory .room-gallery-carousel__previous { justify-self: end; }
.greatpm-booking-directory [dir="rtl"] .room-gallery-carousel__next, [dir="rtl"] .greatpm-booking-directory .room-gallery-carousel__next { justify-self: start; }
.greatpm-booking-directory [dir="rtl"] .room-gallery-carousel__previous::before, [dir="rtl"] .greatpm-booking-directory .room-gallery-carousel__previous::before { content: "›"; }
.greatpm-booking-directory [dir="rtl"] .room-gallery-carousel__next::before, [dir="rtl"] .greatpm-booking-directory .room-gallery-carousel__next::before { content: "‹"; }
.greatpm-booking-directory .room-features-wrap { min-width: 0; margin: 0; color: var(--cbint-booking-heading); }
.greatpm-booking-directory .room-features-wrap h4 { margin: 0 0 .65rem; color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-lg); }
.greatpm-booking-directory .room-modal-content__description > div { max-width: 75ch; color: var(--cbint-booking-text); }
.greatpm-booking-directory .room-modal-content__description :where(p, ul, ol) { margin-top: 0; }
.greatpm-booking-directory .room-features { column-count: 2; column-gap: 1.5rem; margin: 0; padding: 0; list-style: none; }
.greatpm-booking-directory .room-features li { break-inside: avoid; margin-bottom: .4rem; font-size: .9rem; }
.greatpm-booking-dialog-open, .greatpm-booking-dialog-open body { overflow: hidden; overscroll-behavior: none; }

.greatpm-booking-directory .cbint-booking-reservation__panel { gap: 1rem; padding: 1.25rem; }
.greatpm-booking-directory :where(.bill-fees-list, .invoice-room) { display: flex; flex-direction: column; gap: .85rem; }
.greatpm-booking-directory .bill-item { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: .5rem; padding-bottom: .65rem; border-bottom: 1px solid rgba(23, 31, 38, .08); }
.greatpm-booking-directory .bill-charge small, .greatpm-booking-directory .bill-estimate-note { font-size: .82em; opacity: .78; }
.greatpm-booking-directory .bill-estimate-note { margin: 0; }
.greatpm-booking-directory :where(.bill-item.total-taxes, .bill-item.total-fees) { font-weight: 600; }
.greatpm-booking-directory .bill-item.grand-total { padding-bottom: 0; border-bottom: 0; color: var(--cbint-booking-heading); font-weight: 800; }
.greatpm-booking-directory .cbint-booking-directory__step--review { gap: 1rem; }
.greatpm-booking-directory .cbint-booking-reservation__header { display: flex; min-width: 0; align-items: center; justify-content: flex-start; flex-wrap: wrap; gap: .75rem 1rem; }
.greatpm-booking-directory .cbint-booking-reservation__header h3 { min-width: 0; margin: 0; color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-xl); }
.greatpm-booking-directory .cbint-booking-reservation__back { width: auto; min-height: 44px; padding: .6rem .9rem; background: transparent; box-shadow: none; color: var(--cbint-booking-accent); font-size: var(--cbint-booking-font-size-sm); }
.greatpm-booking-directory .cbint-booking-reservation__form { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 1rem; }
.greatpm-booking-directory .cbint-booking-reservation__panel { min-width: 0; }
.greatpm-booking-directory .cbint-booking-reservation__panel--invoice { order: 1; overflow: hidden; padding: 0; }
.greatpm-booking-directory .cbint-booking-reservation__panel--guest { order: 2; }
.greatpm-booking-directory .cbint-booking-reservation__panel--guest > h4 { margin: 0; color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-lg); }
.greatpm-booking-directory .cbint-booking-reservation__panel--guest form { display: grid; width: 100%; min-width: 0; grid-template-columns: minmax(0, 1fr); gap: .35rem 1rem; }
.greatpm-booking-directory .cbint-booking-reservation__field { display: grid; min-width: 0; gap: .35rem; }
.greatpm-booking-directory .cbint-booking-reservation__field label { color: var(--cbint-booking-heading); font-weight: 650; }
.greatpm-booking-directory .cbint-booking-reservation__field-error { display: block; min-height: 1.2em; color: var(--cbint-booking-danger); font-size: var(--cbint-booking-font-size-xs); line-height: 1.2; }
.greatpm-booking-directory .cbint-booking-reservation__terms-wrap { display: grid; min-width: 0; gap: .3rem; }
.greatpm-booking-directory .cbint-booking-reservation__terms { display: flex; min-height: 52px; align-items: flex-start; gap: .7rem; padding: .75rem; border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-surface-radius); background: var(--cbint-booking-surface-alt); color: var(--cbint-booking-heading); font-weight: 500; cursor: pointer; }
.greatpm-booking-directory .cbint-booking-reservation__terms input { margin-top: .15rem; }
.greatpm-booking-directory .cbint-booking-reservation__terms a { color: var(--cbint-booking-accent); font-weight: 700; text-decoration: underline; text-underline-offset: .15em; }
.greatpm-booking-directory .cbint-booking-reservation__actions { display: grid; gap: .45rem; }
.greatpm-booking-directory .cbint-booking-reservation__submit { width: 100%; }
.greatpm-booking-directory .cbint-booking-reservation__security { margin: 0; color: var(--cbint-booking-muted); font-size: var(--cbint-booking-font-size-xs); text-align: center; }
.greatpm-booking-directory .cbint-booking-reservation__form-status { min-height: 1.5em; color: var(--cbint-booking-muted); font-size: var(--cbint-booking-font-size-sm); }
.greatpm-booking-directory .cbint-booking-reservation__summary { display: grid; min-width: 0; gap: 1rem; padding-bottom: 1.25rem; }
.greatpm-booking-directory .cbint-booking-reservation__summary-media { width: 100%; aspect-ratio: 16 / 9; overflow: hidden; background: linear-gradient(135deg, #ece9e2 0%, #f8f6f1 50%, #e3e9e5 100%); }
.greatpm-booking-directory .cbint-booking-reservation__summary-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.greatpm-booking-directory .cbint-booking-reservation__summary > :not(.cbint-booking-reservation__summary-media) { margin-right: 1.25rem; margin-left: 1.25rem; }
.greatpm-booking-directory .invoice-room { min-width: 0; gap: .35rem; }
.greatpm-booking-directory .invoice-room h4 { min-width: 0; margin: 0; overflow-wrap: anywhere; color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-lg); line-height: var(--cbint-booking-line-height-tight); }
.greatpm-booking-directory .invoice-room p { margin: 0; color: var(--cbint-booking-muted); font-size: var(--cbint-booking-font-size-sm); }
.greatpm-booking-directory .invoice-room .cbint-booking-reservation__summary-eyebrow { color: var(--cbint-booking-accent); font-size: var(--cbint-booking-font-size-xs); font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.greatpm-booking-directory .cbint-booking-reservation__price-lines { display: grid; gap: .65rem; margin-top: .25rem; padding: 0; list-style: none; }
.greatpm-booking-directory .cbint-booking-reservation__price-lines li { display: flex; min-width: 0; justify-content: space-between; gap: 1rem; padding-bottom: .5rem; border-bottom: 1px solid var(--cbint-booking-border); }
.greatpm-booking-directory .cbint-booking-reservation__price-lines li > :last-child { flex: 0 0 auto; white-space: nowrap; font-variant-numeric: tabular-nums; }
.greatpm-booking-directory .cbint-booking-reservation__price-lines .cbint-booking-reservation__grand-total { align-items: baseline; padding: .25rem 0 0; border-bottom: 0; color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-lg); }
.greatpm-booking-directory .cbint-booking-reservation__included { margin-bottom: 0; color: var(--cbint-booking-muted); font-size: var(--cbint-booking-font-size-xs); line-height: 1.4; }
.greatpm-booking-directory .greatpm-booking-directory__notice,
.greatpm-booking-directory .cbint-booking-directory__notice { margin: 1rem 0; padding: 1rem; border-left: 4px solid var(--cbint-booking-danger); background: var(--cbint-booking-danger-surface); color: var(--cbint-booking-heading); }
.greatpm-booking-directory .greatpm-booking-directory__state { display: grid; justify-items: center; gap: .65rem; width: 100%; padding: clamp(1.5rem, 4vw, 3rem); border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-radius); background: var(--cbint-booking-surface); color: var(--cbint-booking-text); text-align: center; box-shadow: var(--cbint-booking-shadow-sm); }
.greatpm-booking-directory .greatpm-booking-directory__state h3,
.greatpm-booking-directory .greatpm-booking-directory__state p { margin: 0; }
.greatpm-booking-directory .greatpm-booking-directory__state h3 { color: var(--cbint-booking-heading); font-size: var(--cbint-booking-font-size-lg); }
.greatpm-booking-directory .greatpm-booking-directory__state--initial { min-height: 10rem; align-content: center; background: linear-gradient(145deg, var(--cbint-booking-surface-alt), var(--cbint-booking-surface)); }
.greatpm-booking-directory .greatpm-booking-directory__state--empty,
.greatpm-booking-directory .cbint-booking-directory__empty { min-height: 12rem; align-content: center; border-style: dashed; color: var(--cbint-booking-muted); }
.greatpm-booking-directory .greatpm-booking-directory__state--error { min-height: 12rem; align-content: center; border-color: color-mix(in srgb, var(--cbint-booking-danger) 30%, var(--cbint-booking-border)); background: var(--cbint-booking-danger-surface); }
.greatpm-booking-directory .greatpm-booking-directory__state--warning { grid-template-columns: minmax(0, 1fr) auto; justify-items: start; align-items: center; padding: 1rem; border-color: color-mix(in srgb, var(--cbint-booking-warning) 30%, var(--cbint-booking-border)); background: #fff9ec; text-align: left; }
.greatpm-booking-directory .greatpm-booking-directory__retry { display: inline-flex; min-height: var(--cbint-booking-control-height); align-items: center; justify-content: center; padding: .7rem 1.1rem; border: 1px solid var(--cbint-booking-accent); border-radius: var(--cbint-booking-control-radius); background: var(--cbint-booking-accent); color: var(--cbint-booking-accent-contrast); font-weight: 700; cursor: pointer; }
.greatpm-booking-directory .greatpm-booking-directory__retry--secondary { min-height: 2.75rem; background: transparent; color: var(--cbint-booking-accent); }
.greatpm-booking-directory .room-card__quote-status { margin: -.25rem 0 0; color: var(--cbint-booking-muted); font-size: var(--cbint-booking-font-size-sm); }
.greatpm-booking-directory .room-card.has-error .room-card__quote-status { color: var(--cbint-booking-danger); }
.greatpm-booking-directory .room-card.is-validating-quote { border-color: var(--cbint-booking-focus); }
.greatpm-booking-directory .greatpm-booking-directory__editor-note { margin: 0 0 1rem; padding: .75rem 1rem; border-left: 4px solid #72aee6; background: #f0f6fc; }
.greatpm-booking-directory .greatpm-booking-directory__admin-diagnostics { margin-top: 1rem; padding: 1rem; background: #fff8e5; }
.greatpm-booking-directory.is-loading .cbint-booking-directory__results-shell { min-height: clamp(28rem, 56vw, 46rem); }
.greatpm-booking-directory .greatpm-booking-directory__loading-state { display: grid; gap: 1.25rem; width: 100%; min-width: 0; }
.greatpm-booking-directory .greatpm-booking-directory__loading-copy { display: flex; align-items: flex-start; gap: .8rem; min-height: 3.4rem; padding: 1rem 1.1rem; border: 1px solid var(--cbint-booking-border); border-radius: var(--cbint-booking-surface-radius); background: var(--cbint-booking-surface); box-shadow: var(--cbint-booking-shadow-sm); }
.greatpm-booking-directory .greatpm-booking-directory__loading-copy > div { min-height: 2.85rem; }
.greatpm-booking-directory .greatpm-booking-directory__loading-copy p { margin: 0; color: var(--cbint-booking-heading); font-weight: 700; }
.greatpm-booking-directory .greatpm-booking-directory__loading-copy .greatpm-booking-directory__loading-reassurance { margin-top: .2rem; color: var(--cbint-booking-muted); font-size: var(--cbint-booking-font-size-sm); font-weight: 500; }
.greatpm-booking-directory .greatpm-booking-directory__activity { width: 1.15rem; min-width: 1.15rem; height: 1.15rem; margin-top: .15rem; border: 2px solid color-mix(in srgb, var(--cbint-booking-accent) 22%, transparent); border-top-color: var(--cbint-booking-accent); border-radius: 50%; animation: greatpm-booking-card-spin .8s linear infinite; }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--greatpm-booking-card-grid-gap); min-width: 0; }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-card { min-width: 0; overflow: hidden; border: 1px solid var(--cbint-booking-border); border-radius: var(--greatpm-booking-card-radius); background: var(--cbint-booking-surface); box-shadow: var(--cbint-booking-shadow-sm); }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-media { aspect-ratio: var(--greatpm-booking-card-image-ratio); background: var(--cbint-booking-surface-strong); }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-body { display: grid; gap: .85rem; padding: 1rem; }
.greatpm-booking-directory :where(.greatpm-booking-directory__skeleton-media, .greatpm-booking-directory__skeleton-line, .greatpm-booking-directory__skeleton-action) { position: relative; overflow: hidden; }
.greatpm-booking-directory :where(.greatpm-booking-directory__skeleton-media, .greatpm-booking-directory__skeleton-line, .greatpm-booking-directory__skeleton-action)::after { position: absolute; inset: 0; content: ""; background: linear-gradient(100deg, transparent 20%, rgba(255, 255, 255, .75) 48%, transparent 76%); transform: translateX(-100%); animation: greatpm-booking-skeleton 1.4s ease-in-out infinite; }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-line { display: block; width: 100%; height: .8rem; border-radius: var(--cbint-booking-pill-radius); background: var(--cbint-booking-surface-strong); }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-line--title { width: 72%; height: 1.15rem; }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-line--short { width: 55%; }
.greatpm-booking-directory .greatpm-booking-directory__skeleton-action { display: block; width: 100%; height: var(--cbint-booking-action-height); margin-top: 1rem; border-radius: var(--cbint-booking-control-radius); background: var(--cbint-booking-surface-strong); }
@keyframes greatpm-booking-skeleton { to { transform: translateX(100%); } }
@keyframes greatpm-booking-card-spin { to { transform: rotate(360deg); } }

@media (min-width: 769px) and (max-width: 1199px) {
	.greatpm-booking-directory .cbint-booking-directory__main { display: block; }
	.greatpm-booking-directory .greatpm-booking-directory__search,
	.greatpm-booking-directory .cbint-booking-ui__search { grid-template-columns: minmax(0, 1fr) minmax(10rem, .65fr); }
	.greatpm-booking-directory .cbint-booking-ui__date { grid-column: 1 / -1; }
	.greatpm-booking-directory .cbint-booking-directory__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.greatpm-booking-directory .greatpm-booking-directory__skeleton-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.greatpm-booking-directory .greatpm-booking-directory__skeleton-card:nth-child(n+3) { display: none; }
	.greatpm-booking-directory .room-card__actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.greatpm-booking-directory .cbint-booking-ui__date h3 { text-align: left; }
	.greatpm-booking-directory .cbint-booking-reservation__form { grid-template-columns: minmax(0, 3fr) minmax(18rem, 2fr); }
	.greatpm-booking-directory .cbint-booking-reservation__panel--guest { grid-column: 1; grid-row: 1; order: initial; }
	.greatpm-booking-directory .cbint-booking-reservation__panel--guest form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.greatpm-booking-directory .cbint-booking-reservation__terms-wrap, .greatpm-booking-directory .cbint-booking-reservation__actions, .greatpm-booking-directory .cbint-booking-reservation__form-status { grid-column: 1 / -1; }
	.greatpm-booking-directory .cbint-booking-reservation__panel--invoice { position: sticky; top: 1rem; grid-column: 2; grid-row: 1; order: initial; }
}
@media (min-width: 1200px) {
	.greatpm-booking-directory .cbint-booking-directory__main { display: block; }
	.greatpm-booking-directory .cbint-booking-directory__cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.greatpm-booking-directory .room-card__actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.greatpm-booking-directory .cbint-booking-ui__date h3 { text-align: left; }
	.greatpm-booking-directory .cbint-booking-reservation__form { grid-template-columns: minmax(0, 3fr) minmax(20rem, 2fr); }
	.greatpm-booking-directory .cbint-booking-reservation__panel--guest { grid-column: 1; grid-row: 1; order: initial; }
	.greatpm-booking-directory .cbint-booking-reservation__panel--guest form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.greatpm-booking-directory .cbint-booking-reservation__terms-wrap, .greatpm-booking-directory .cbint-booking-reservation__actions, .greatpm-booking-directory .cbint-booking-reservation__form-status { grid-column: 1 / -1; }
	.greatpm-booking-directory .cbint-booking-reservation__panel--invoice { position: sticky; top: 1rem; grid-column: 2; grid-row: 1; order: initial; }
}
@media (max-width: 768px) {
	.greatpm-booking-directory .cbint-booking-directory__cards { grid-template-columns: minmax(0, 1fr); }
	.greatpm-booking-directory .greatpm-booking-directory__search,
	.greatpm-booking-directory .cbint-booking-ui__search { grid-template-columns: minmax(0, 1fr); padding: 1rem; }
	.greatpm-booking-directory .cbint-booking-ui__date,
	.greatpm-booking-directory .greatpm-booking-directory__guests { grid-column: 1 / -1; }
	.greatpm-booking-directory .greatpm-booking-directory__field { min-width: 0; }
	.greatpm-booking-directory .greatpm-booking-directory__submit { grid-column: 1 / -1; width: 100%; }
	.greatpm-booking-directory .greatpm-booking-directory__search > .greatpm-booking-directory__submit { margin-top: 0; }
	.greatpm-booking-directory .greatpm-booking-directory__guest-panel { right: 0; left: auto; width: min(20rem, calc(100vw - 2rem)); min-width: 0; }
	.greatpm-booking-directory .greatpm-booking-directory__results-toolbar { align-items: stretch; flex-direction: column; }
	.greatpm-booking-directory .greatpm-booking-directory__results-toolbar .greatpm-booking-directory__sort { width: 100%; }
	.greatpm-booking-directory .greatpm-booking-directory__searched-stay { flex-direction: column; gap: .15rem; }
	.greatpm-booking-directory .greatpm-booking-directory__searched-stay span + span::before { display: none; }
	.greatpm-booking-directory .greatpm-booking-directory__skeleton-grid { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
	.greatpm-booking-directory .greatpm-booking-directory__skeleton-card:nth-child(n+3) { display: none; }
	.greatpm-booking-directory .greatpm-booking-directory__state--warning { grid-template-columns: minmax(0, 1fr); }
	.greatpm-booking-directory .room-card__actions { grid-template-columns: minmax(0, 1fr); }
	.greatpm-booking-directory .room-modal { place-items: stretch; padding: 0; background: var(--greatpm-booking-card-surface); backdrop-filter: none; }
	.greatpm-booking-directory .room-modal-content { width: 100%; height: 100vh; height: 100dvh; max-height: 100vh; max-height: 100dvh; border: 0; border-radius: 0; box-shadow: none; }
	.greatpm-booking-directory .room-modal-content__header { min-height: calc(3.75rem + var(--cbint-booking-safe-area-top)); padding: calc(.6rem + var(--cbint-booking-safe-area-top)) calc(4rem + var(--cbint-booking-safe-area-right)) .6rem calc(1rem + var(--cbint-booking-safe-area-left)); }
	.greatpm-booking-directory .room-modal-content__header h3 { font-size: clamp(1.1rem, 5vw, 1.35rem); }
	.greatpm-booking-directory .room-modal-close { top: calc(50% + var(--cbint-booking-safe-area-top) / 2); right: calc(.65rem + var(--cbint-booking-safe-area-right)); width: 44px; min-width: 44px; height: 44px; min-height: 44px; }
	.greatpm-booking-directory .room-modal-body { padding: 0 0 calc(1rem + var(--cbint-booking-safe-area-bottom)); scrollbar-gutter: auto; }
	.greatpm-booking-directory .room-description { gap: 0; }
	.greatpm-booking-directory .room-gallery-carousel { border-radius: 0; }
	.greatpm-booking-directory .room-gallery-carousel__image { aspect-ratio: 4 / 3; }
	.greatpm-booking-directory .room-gallery-carousel__controls { padding-right: calc(.65rem + var(--cbint-booking-safe-area-right)); padding-left: calc(.65rem + var(--cbint-booking-safe-area-left)); }
	.greatpm-booking-directory .room-modal-content__details { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; padding: 1.25rem calc(1rem + var(--cbint-booking-safe-area-right)) 0 calc(1rem + var(--cbint-booking-safe-area-left)); }
	.greatpm-booking-directory .room-features { column-count: 1; }
	.greatpm-booking-directory .cbint-booking-directory__meta-item { align-items: flex-start; flex-direction: column; }
	.greatpm-booking-directory .cbint-booking-directory__meta-value { text-align: left; }
}
@media (prefers-reduced-motion: reduce) {
	.greatpm-booking-directory *, .greatpm-booking-directory *::before, .greatpm-booking-directory *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
	.greatpm-booking-directory .room-card:hover, .greatpm-booking-directory .room-card:focus-within { transform: none; }
	.greatpm-booking-directory .room-gallery-carousel__viewport { scroll-behavior: auto; }
	.greatpm-booking-directory .room-gallery-carousel__previous, .greatpm-booking-directory .room-gallery-carousel__next { transition: none; }
	.greatpm-booking-directory .greatpm-booking-directory__activity { animation: none; border-color: var(--cbint-booking-border-strong); border-top-color: var(--cbint-booking-accent); }
	.greatpm-booking-directory :where(.greatpm-booking-directory__skeleton-media, .greatpm-booking-directory__skeleton-line, .greatpm-booking-directory__skeleton-action)::after { display: none; animation: none; }
}
.greatpm-booking-directory .greatpm-booking-directory__result-status {
	margin: 1rem 0 0;
	color: var(--cbint-booking-muted);
	font-size: var(--cbint-booking-font-size-sm);
	text-align: center;
}

.greatpm-booking-directory .greatpm-booking-directory__pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	margin: 0;
	padding: .75rem;
	border: 1px solid var(--cbint-booking-border);
	border-radius: var(--cbint-booking-surface-radius);
	background: var(--cbint-booking-surface);
	box-shadow: var(--cbint-booking-shadow-sm);
}

.greatpm-booking-directory .greatpm-booking-directory__page {
	min-width: 2.75rem;
	min-height: 2.75rem;
	border: 1px solid var(--cbint-booking-border);
	border-radius: var(--cbint-booking-control-radius);
	background: var(--cbint-booking-surface);
	color: var(--cbint-booking-heading);
	cursor: pointer;
}

.greatpm-booking-directory .greatpm-booking-directory__page:hover:not(:disabled),
.greatpm-booking-directory .greatpm-booking-directory__page:focus-visible {
	border-color: var(--cbint-booking-accent);
	background: var(--cbint-booking-surface-alt);
}

.greatpm-booking-directory .greatpm-booking-directory__page[aria-current="page"] {
	border-color: var(--cbint-booking-accent);
	background: var(--cbint-booking-accent);
	color: var(--cbint-booking-accent-contrast);
	font-weight: 700;
}

.greatpm-booking-directory .greatpm-booking-directory__page:disabled {
	cursor: not-allowed;
	opacity: var(--greatpm-booking-card-disabled-opacity);
}

.greatpm-booking-directory .greatpm-booking-directory__pagination-gap {
	padding: 0 .25rem;
}
