/* Caribico WebBeds - front-end styles
 * Mobile-first, designed to sit inside TwentyTwentyThree's content column.
 */

.caribico-wb-app {
	width: 100%;
	max-width: 1360px;
	margin: 0 auto;
	box-sizing: border-box;
	font-family: inherit;
	color: inherit;
}

/* Search form */
.caribico-wb-search-form {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	padding: 16px;
	background: #f7f7f5;
	border-radius: 8px;
	margin-bottom: 16px;
}

.caribico-wb-field {
	display: flex;
	flex-direction: column;
	flex: 1 1 160px;
	min-width: 140px;
}

.caribico-wb-field-small {
	flex: 0 1 90px;
	min-width: 80px;
}

.caribico-wb-field label {
	font-size: 0.85rem;
	font-weight: 600;
	margin-bottom: 4px;
}

.caribico-wb-field input,
.caribico-wb-field select {
	padding: 8px 10px;
	border: 1px solid #ccc;
	border-radius: 6px;
	font-size: 1rem;
}

.caribico-wb-submit {
	align-self: flex-end;
	flex: 0 0 auto;
}

.caribico-wb-btn {
	display: inline-block;
	padding: 10px 20px;
	border-radius: 6px;
	border: none;
	cursor: pointer;
	font-weight: 600;
	font-size: 0.95rem;
	text-decoration: none;
}

.caribico-wb-btn-primary {
	background: #0a5c46;
	color: #fff;
}

.caribico-wb-btn-primary:hover {
	background: #08493a;
}

.caribico-wb-btn-secondary {
	background: #fff;
	color: #0a5c46;
	border: 1px solid #0a5c46;
}

.caribico-wb-btn-link {
	background: none;
	color: #0a5c46;
	padding: 0;
	text-decoration: underline;
}

.caribico-wb-btn-large {
	padding: 14px 28px;
	font-size: 1.05rem;
	width: 100%;
}

.caribico-wb-children-ages {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.caribico-wb-children-ages input {
	width: 70px;
	padding: 8px;
	border-radius: 6px;
	border: 1px solid #ccc;
}

/* Filters */
.caribico-wb-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
	padding: 12px 16px;
	background: #fff;
	border: 1px solid #e2e2e2;
	border-radius: 8px;
	margin-bottom: 16px;
}

.caribico-wb-filter > label {
	display: block;
	font-weight: 600;
	font-size: 0.85rem;
	margin-bottom: 6px;
}

.caribico-wb-amenities label {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-weight: 400;
	margin-right: 10px;
}

/* Results */
.caribico-wb-empty-state {
	padding: 24px 16px;
	text-align: center;
	color: #667085;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.45;
}

.caribico-wb-error {
	margin: 12px 0;
	padding: 10px 12px;
	border-radius: 8px;
	border: 1px solid #F5B7B1;
	background: #FEF3F2;
	color: #B42318;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.45;
	text-transform: none;
}

.caribico-wb-error p {
	margin: 0;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
}

.caribico-wb-results-list {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.caribico-wb-hotel-card {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	padding: 12px;
	border: 1px solid #e2e2e2;
	border-radius: 8px;
	align-items: center;
}

.caribico-wb-hotel-thumb img {
	width: 140px;
	height: 100px;
	object-fit: cover;
	border-radius: 6px;
	background: #eee;
}

.caribico-wb-hotel-body {
	flex: 1 1 300px;
}

.caribico-wb-hotel-name {
	margin: 0 0 4px;
	font-size: 1.1rem;
}

.caribico-wb-hotel-rating {
	color: #d4a017;
	font-size: 0.9rem;
	margin-bottom: 4px;
}

.caribico-wb-hotel-address {
	margin: 0;
	color: #666;
	font-size: 0.9rem;
}

.caribico-wb-hotel-amenities {
	margin-top: 6px;
	font-size: 0.8rem;
	color: #444;
}

.caribico-wb-hotel-amenities span {
	display: inline-block;
	background: #eef4f1;
	border-radius: 4px;
	padding: 2px 6px;
	margin: 2px 4px 0 0;
}

.caribico-wb-hotel-price {
	text-align: right;
	min-width: 130px;
}

.caribico-wb-price-value {
	font-size: 1.3rem;
	font-weight: 700;
	display: block;
}

/* Hotel detail */
.cwb-hotel-summary {
	margin-bottom: 20px;
}

.cwb-room-row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 12px;
	border: 1px solid #e2e2e2;
	border-radius: 8px;
	margin-bottom: 10px;
	flex-wrap: wrap;
	gap: 12px;
}

.cwb-room-price {
	text-align: right;
}

/* Booking form */
.cwb-price-lock-banner {
	background: #fff3cd;
	border: 1px solid #ffe58f;
	padding: 10px 14px;
	border-radius: 6px;
	margin-bottom: 16px;
	font-size: 0.95rem;
}

#cwb-lock-countdown {
	font-size: 1.1rem;
	margin-left: 6px;
}

.cwb-guest-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	padding: 10px;
	background: #fafafa;
	border-radius: 6px;
	margin-bottom: 10px;
}

.cwb-booking-result {
	margin-top: 16px;
	padding: 10px 12px;
	border-radius: 8px;
	font-size: 14px;
	font-weight: 400;
	line-height: 1.45;
	text-transform: none;
}

.cwb-booking-result.success {
	background: #eaf7ee;
	border: 1px solid #b7e2c2;
	color: #027A48;
}

.cwb-booking-result.error {
	background: #fdecea;
	border: 1px solid #f5b7b1;
	color: #B42318;
}

/* Compact confirm errors override the legacy banner chrome. */
.cwb-booking-result.error.is-confirm-inline {
	background: transparent;
	border: 0;
	padding: 0;
}

.cwb-booking-blocked h3 {
	margin: 0 0 12px;
	font-size: 18px;
	color: #7a1f1a;
}

.cwb-booking-blocked-label {
	margin: 10px 0 2px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #8a3a34;
}

.cwb-booking-blocked-reason,
.cwb-booking-blocked-next {
	margin: 0 0 4px;
	color: #4a1f1c;
	line-height: 1.45;
}

.cwb-booking-status-panel {
	margin-top: 14px;
	padding: 12px 14px;
	border: 1px solid #d9e5eb;
	border-radius: 10px;
	background: #f8fbfd;
}

.cwb-booking-status-panel.is-blocked {
	border-color: #f5b7b1;
	background: #fff7f6;
}

.cwb-booking-status-facts {
	margin: 0;
	display: grid;
	gap: 8px;
}

.cwb-booking-status-facts div {
	display: grid;
	grid-template-columns: 120px minmax(0, 1fr);
	gap: 8px;
	align-items: start;
}

.cwb-booking-status-facts dt {
	margin: 0;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: #667085;
}

.cwb-booking-status-facts dd {
	margin: 0;
	font-size: 13px;
	color: #101828;
	font-weight: 600;
}

.cwb-booking-status-blockers {
	margin-top: 10px;
	font-size: 13px;
	color: #7a1f1a;
}

.cwb-booking-status-blockers ul {
	margin: 6px 0 0;
	padding-left: 18px;
}

.caribico-wb-loading {
	padding: 20px;
	text-align: center;
	color: #666;
}

/* Mobile */
@media (max-width: 600px) {
	.caribico-wb-search-form {
		flex-direction: column;
	}

	.caribico-wb-hotel-card {
		flex-direction: column;
		align-items: stretch;
	}

	.caribico-wb-hotel-price {
		text-align: left;
	}

	.cwb-room-row {
		flex-direction: column;
		align-items: stretch;
	}

	.cwb-room-price {
		text-align: left;
	}
}


/* Destination autocomplete */
.caribico-wb-field { position: relative; }
.cwb-destination-suggestions {
	position: absolute; z-index: 9999; left: 0; right: 0; top: 100%;
	background: #fff; border: 1px solid #dcdcde; border-radius: 6px;
	box-shadow: 0 8px 24px rgba(0,0,0,.12); max-height: 280px; overflow-y: auto;
}
.cwb-destination-option {
	display: flex; align-items: center; gap: 8px; width: 100%; border: 0; border-bottom: 1px solid #eee;
	background: #fff; padding: 6px 10px; text-align: left; cursor: pointer;
	font: inherit; color: inherit;
}
.cwb-destination-option:last-child { border-bottom: 0; }
.cwb-destination-option:hover,
.cwb-destination-option:focus,
.cwb-destination-option.is-active {
	background: #f4f7fb;
	outline: none;
}
.cwb-destination-option.is-active {
	box-shadow: inset 3px 0 0 #1B5A7A;
}
.cwb-destination-option-icon {
	flex: 0 0 auto;
	line-height: 1;
	font-size: 12px;
}
.cwb-destination-option-body {
	display: flex;
	flex-direction: column;
	gap: 1px;
	min-width: 0;
}
.cwb-destination-option-label {
	font-size: 13px;
	font-weight: 600;
	color: #101828;
	line-height: 1.25;
	overflow-wrap: anywhere;
	word-break: break-word;
}
.cwb-destination-option-sub {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 0;
	min-width: 0;
	line-height: 1.25;
}
.cwb-destination-option-meta {
	font-size: 11px;
	color: #667085;
	line-height: 1.25;
	overflow-wrap: anywhere;
	word-break: break-word;
}
.cwb-destination-option-sep {
	font-size: 11px;
	color: #98A2B3;
}
.cwb-destination-option-type {
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: #1B5A7A;
}
.cwb-destination-option.is-hotel .cwb-destination-option-type { color: #0a5c46; }
.cwb-destination-match {
	background: #EAF3F7;
	color: inherit;
	padding: 0;
	font-weight: 600;
}
.cwb-destination-status {
	padding: 12px 14px;
	font-size: 13px;
	line-height: 1.4;
	background: #fff;
}
.cwb-destination-loading {
	display: flex;
	align-items: center;
	gap: 10px;
	color: #5f6b7a;
}
.cwb-destination-loading-dot {
	width: 14px;
	height: 14px;
	border: 2px solid #d9e5e0;
	border-top-color: #1B5A7A;
	border-radius: 50%;
	animation: cwb-spin .8s linear infinite;
	flex-shrink: 0;
}
.cwb-destination-empty { color: #5f6b7a; }
.cwb-destination-error { color: #a94442; }
.cwb-destination-country { color: #667085; }

.cwb-search-loading{display:grid;place-items:center;min-height:180px;text-align:center}.cwb-loading-dot{width:34px;height:34px;border:3px solid #d9e5e0;border-top-color:#0a5c46;border-radius:50%;animation:cwb-spin .8s linear infinite}@keyframes cwb-spin{to{transform:rotate(360deg)}}

/* Booking cancellation flow */
.cwb-cancellation-box {
	margin-top: 18px;
	padding-top: 16px;
	border-top: 1px solid #b7e2c2;
}

.cwb-cancellation-box h4 {
	margin: 0 0 8px;
}

.cwb-cancellation-result {
	margin-top: 12px;
	padding: 12px;
	border-radius: 6px;
	background: #fff;
	border: 1px solid #dcdcde;
}

.cwb-cancellation-result.success {
	border-color: #9fd4ad;
	background: #f5fbf7;
}

.cwb-cancellation-result.error {
	border-color: #efb4ae;
	background: #fff7f6;
}

.caribico-wb-btn-danger {
	background: #b42318;
	border-color: #b42318;
	color: #fff;
}

.caribico-wb-btn-danger:hover,
.caribico-wb-btn-danger:focus {
	background: #8f1c13;
	border-color: #8f1c13;
	color: #fff;
}

.cwb-cancellation-box.is-cancelled {
	border-top-color: #9fd4ad;
}


/* Phase 2.1 hotel result cards — layout aligned with caribico-ui.css compact cards */
.caribico-wb-results-list { display:flex; flex-direction:column; gap:16px; }
.caribico-wb-hotel-card {
	display:grid;
	grid-template-columns:250px minmax(0,1fr) 170px;
	gap:16px;
	padding:10px;
	border:1px solid #dfe7e3;
	border-radius:10px;
	overflow:hidden;
	align-items:stretch;
	background:#fff;
	box-shadow:0 8px 24px rgba(18,43,34,.06);
	transition:transform .18s ease, box-shadow .18s ease;
}
.caribico-wb-hotel-card:hover { transform:translateY(-2px); box-shadow:0 14px 34px rgba(18,43,34,.10); }
.caribico-wb-hotel-thumb { min-height:190px; background:#EAF3F7; }
.caribico-wb-hotel-thumb img { width:100%; height:100%; min-height:190px; object-fit:cover; border-radius:0; display:block; }
.cwb-hotel-image-placeholder { min-height:190px; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; background:#EAF3F7; color:#1B5A7A; text-align:center; }
.cwb-hotel-image-placeholder span { font-size:.82rem; font-weight:800; letter-spacing:.16em; color:#1B5A7A; }
.cwb-hotel-image-placeholder small { color:#667085; }
.caribico-wb-hotel-body { padding:6px 0; min-width:0; }
.cwb-hotel-title-row { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.caribico-wb-hotel-name { margin:0; font-size:1.25rem; line-height:1.3; color:#17372d; }
.cwb-content-note { display:inline-block; margin-top:5px; font-size:.72rem; color:#7a857f; text-transform:uppercase; letter-spacing:.06em; }
.caribico-wb-hotel-rating { color:#c78b00; white-space:nowrap; }
.cwb-meta-unavailable { color:#7b8681; font-size:.78rem; }
.caribico-wb-hotel-address { margin:2px 0 6px; color:#56635d; font-size:.9rem; }
.caribico-wb-hotel-amenities { margin:4px 0 6px; }
.caribico-wb-hotel-amenities span { background:#eef5f2; color:#31594b; border-radius:999px; padding:5px 9px; margin:2px 5px 0 0; }
.cwb-rate-badge { display:inline-block; margin-top:4px; padding:5px 9px; border-radius:999px; font-size:.75rem; background:#edf6ef; color:#2f6b43; }
.cwb-rate-badge.is-nonrefundable { background:#fff2e8; color:#9a4a12; }
.caribico-wb-hotel-price { padding:14px 12px; border:1px solid #EEF1F4; border-radius:10px; background:#FFFFFF; text-align:right; display:flex; flex-direction:column; justify-content:center; align-items:flex-end; }
.caribico-wb-price-from { color:#6d7873; font-size:.78rem; text-transform:uppercase; letter-spacing:.06em; }
.caribico-wb-price-value { display:inline; font-size:1.65rem; color:#17372d; }
.caribico-wb-price-currency { font-weight:700; color:#17372d; }
.cwb-price-scope { display:block; margin:4px 0 16px; max-width:170px; color:#6d7873; font-size:.78rem; line-height:1.35; }
.caribico-wb-hotel-price .cwb-view-hotel { width:100%; }
@media (max-width: 820px) {
	.caribico-wb-hotel-card { grid-template-columns:170px minmax(0,1fr); }
	.caribico-wb-hotel-price { grid-column:1/-1; border-left:0; border-top:1px solid #edf1ef; align-items:flex-start; text-align:left; }
	.cwb-price-scope { max-width:none; }
	.caribico-wb-hotel-price .cwb-view-hotel { width:auto; }
}
@media (max-width: 560px) {
	.caribico-wb-hotel-card { display:block; }
	.caribico-wb-hotel-thumb, .caribico-wb-hotel-thumb img, .cwb-hotel-image-placeholder { min-height:190px; height:190px; }
	.caribico-wb-hotel-body { padding:6px 0; }
	.cwb-hotel-title-row { display:block; }
	.caribico-wb-hotel-rating { margin-top:7px; }
	.caribico-wb-hotel-price { padding:18px; }
	.caribico-wb-hotel-price .cwb-view-hotel { width:100%; }
}

/* Phase 2.2 booking confirmation workspace — keep desktop width stable with Hotels */
.caribico-wb-app[data-view="booking"]{width:100%;max-width:1360px;margin:0 auto;box-sizing:border-box}
.caribico-wb-app[data-view="booking"] #caribico-wb-results-region{margin-top:0}
.cwb-booking-summary{border:1px solid #dfe7e3;border-radius:16px;background:#fff;padding:22px;margin:14px 0 20px;box-shadow:0 8px 24px rgba(18,43,34,.06)}
.cwb-booking-summary h3{margin:0 0 12px;color:#17372d}
.cwb-summary-grid,.cwb-confirmation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cwb-summary-item,.cwb-confirmation-item{padding:12px;border-radius:10px;background:#f6f9f7}
.cwb-summary-label,.cwb-confirmation-label{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#748078;margin-bottom:4px}
.cwb-summary-value,.cwb-confirmation-value{font-weight:700;color:#17372d;word-break:break-word}
.cwb-booking-result.success{border:1px solid #b7e2c2;border-radius:16px;background:#f4fbf6;padding:22px}
.cwb-confirmation-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}
.cwb-confirmation-header h3{margin:0;color:#17372d}.cwb-status-pill{display:inline-block;padding:6px 10px;border-radius:999px;background:#dff4e5;color:#176b3a;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.cwb-confirmation-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.cwb-print-voucher{background:#fff;border:1px solid #0a5c46;color:#0a5c46}
@media(max-width:700px){.cwb-summary-grid,.cwb-confirmation-grid{grid-template-columns:1fr}.cwb-confirmation-header{display:block}.cwb-status-pill{margin-top:8px}}
@media print{body *{visibility:hidden!important}.cwb-booking-result,.cwb-booking-result *{visibility:visible!important}.cwb-booking-result{position:absolute;left:0;top:0;width:100%;border:0!important;background:#fff!important}.cwb-cancellation-box,.cwb-confirmation-actions,.cwb-price-mismatch-warning{display:none!important}}


/* v20.1 voucher guest details */
.cwb-voucher-guests,.cwb-voucher-contact{margin-top:18px;padding-top:14px;border-top:1px solid #d9e9df}.cwb-voucher-guests>.cwb-confirmation-label,.cwb-voucher-contact>.cwb-confirmation-label{display:block;margin-bottom:8px}.cwb-voucher-guest{display:flex;gap:14px;align-items:baseline;margin:5px 0}.cwb-voucher-guest-label{min-width:88px;color:#68756e;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.cwb-voucher-contact strong{display:block}
@media print{.cwb-voucher-guests,.cwb-voucher-contact{display:block!important;break-inside:avoid}.cwb-voucher-guest{display:flex!important}.cwb-voucher-guest strong,.cwb-voucher-contact strong{color:#000!important}}

/* v1.11.27 status panel / processing (shared with caribico-ui). */
.cwb-booking-result.is-processing{padding:14px 16px}
.cwb-booking-status-panel .cwb-booking-status-facts{display:none}

/* Hotel identity facets share the existing checkbox row design. */
#cwb-hotel-name-options,#cwb-hotel-chain-options,#cwb-location-options,#cwb-hotel-amenities-options{max-height:260px;overflow-y:auto}
.cwb-facet-search{display:block;width:100%;box-sizing:border-box;margin:0 0 8px;padding:8px 10px;border:1px solid #d8e1e8;border-radius:6px;font:inherit;color:inherit;background:#fff}
#cwb-hotel-name-options .cwb-facet-row[hidden]{display:none!important}
.cwb-room-request-status,.cwb-room-available-status{display:inline-block;margin:6px 0;padding:6px 9px;border-radius:5px;background:#eef7f1;color:#237044;font-size:12px;font-weight:600}
.cwb-room-commercial-flags{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;margin:6px 0}
.cwb-room-commercial-flags .cwb-room-request-status,.cwb-room-commercial-flags .cwb-room-available-status{display:inline-flex;align-items:center;box-sizing:border-box;min-height:30px;margin:0;line-height:1.25}
.cwb-room-promo{display:inline-flex;align-items:center;box-sizing:border-box;min-height:30px;padding:6px 9px;border-radius:5px;background:#f1f3f5;color:#59636e;font-size:12px;font-weight:600;line-height:1.25;white-space:nowrap}
@media(max-width:767px){.cwb-room-commercial-flags{flex-direction:column;align-items:flex-start}.cwb-room-promo{white-space:normal}}
