/* TAC Booking Engine — public styles. Scoped to .tac-stays-root so the
   operator's theme is not disturbed. Colours come from CSS custom properties
   set inline by the plugin (the operator's colourway). */

.tac-stays-root {
	/* INHERIT-FRIENDLY DEFAULTS. Operator settings (injected inline) override any
	   of these. Blank settings fall through to these, which lean on the host
	   theme so the booking engine feels native out of the box. */
	--tacbe-brand: currentColor;          /* primary; theme text colour until set */
	--tacbe-accent: var(--tacbe-brand);   /* hover/highlight tracks the brand until an accent is set */
	--tacbe-accent-dark: var(--tacbe-accent); /* darker-accent fallback tracks accent so no fixed brown leaks */
	--tacbe-text: inherit;                /* body text inherits the theme */
	--tacbe-muted-ink: #8a8f96;
	--tacbe-line: #e6e6e3;
	--tacbe-paper: #f7f5f0;               /* card/panel surface */
	--tacbe-surface: #fff;               /* crisp interactive surfaces (menus, inputs, cells); pair with --tacbe-paper for a dark theme */
	--tacbe-bg: transparent;              /* sits on the theme's own background */
	--tacbe-btn-text: #ffffff;            /* text on solid buttons */
	--tacbe-font-heading: inherit;        /* inherit the theme's heading font */
	--tacbe-font-body: inherit;
	--tacbe-radius: 10px;
	--tacbe-gap: 16px;
	--tacbe-pad: 24px;
	font-family: var(--tacbe-font-body);
	color: var(--tacbe-text);
	box-sizing: border-box;
}
.tac-stays-root *, .tac-stays-root *::before, .tac-stays-root *::after { box-sizing: inherit; }

.tac-stays-root .tacbe-btn {
	display: inline-block;
	padding: 10px 18px;
	border: 1px solid var(--tacbe-brand);
	background: transparent;
	color: var(--tacbe-brand);
	border-radius: 2px;
	cursor: pointer;
	font: inherit;
	line-height: 1.2;
}
.tac-stays-root .tacbe-btn-primary {
	background: var(--tacbe-brand);
	color: var(--tacbe-paper);
}
.tac-stays-root .tacbe-btn-primary:hover { background: var(--tacbe-accent); border-color: var(--tacbe-accent); filter: brightness(0.92); }

.tac-stays-root .tacbe-muted { opacity: 0.7; }

/* Search controls */
.tac-stays-root .tacbe-search-controls {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: end;
	margin-bottom: 24px;
}
.tac-stays-root .tacbe-search-controls label {
	display: flex;
	flex-direction: column;
	font-size: 0.85em;
	gap: 4px;
}
.tac-stays-root .tacbe-search-controls input {
	padding: 8px 10px;
	border: 1px solid rgba(10,22,40,0.2);
	border-radius: 2px;
	font: inherit;
}

/* Grid + cards */
.tac-stays-root .tacbe-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 20px;
}
.tac-stays-root .tacbe-card {
	display: block;
	text-decoration: none;
	color: inherit;
	background: var(--tacbe-paper);
	border-radius: 3px;
	overflow: hidden;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.tac-stays-root .tacbe-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(10,22,40,0.12); }
.tac-stays-root .tacbe-card-img {
	aspect-ratio: 4 / 3;
	background-size: cover;
	background-position: center;
	background-color: rgba(10,22,40,0.06);
}
.tac-stays-root .tacbe-card-body { padding: 14px 16px; }
.tac-stays-root .tacbe-card-body h3 { margin: 0 0 6px; font-size: 1.05em; }
.tac-stays-root .tacbe-card-price { font-size: 0.9em; opacity: 0.85; }

/* Quote box */
.tac-stays-root .tacbe-quote-box {
	display: flex;
	flex-direction: column;
	gap: 12px;
	max-width: 360px;
	padding: 20px;
	border: 1px solid rgba(10,22,40,0.12);
	border-radius: 3px;
	background: var(--tacbe-paper);
}
.tac-stays-root .tacbe-quote-box label { display: flex; flex-direction: column; font-size: 0.85em; gap: 4px; }
.tac-stays-root .tacbe-quote-box input { padding: 8px 10px; border: 1px solid rgba(10,22,40,0.2); border-radius: 2px; font: inherit; }
.tac-stays-root .tacbe-price-from { font-size: 1.1em; font-weight: 600; }
.tac-stays-root .tacbe-quote-result { min-height: 1.4em; }

/* Loader */
.tac-stays-root .tacbe-loader { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 40px 0; }
.tac-stays-root .tacbe-loader-chip { width: 56px; height: 56px; border-radius: 12px; background: var(--tacbe-brand); }
.tac-stays-root .tacbe-loader-logo {
	width: 150px;
	height: 100px;
	border-radius: 18px;
	background: var(--tacbe-brand);
	padding: 18px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
}
.tac-stays-root .tacbe-loader-logo img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; }
.tac-stays-root .tacbe-loader-bar { width: 200px; height: 3px; border-radius: 2px; background: linear-gradient(90deg, var(--tacbe-accent), var(--tacbe-brand)); animation: tacbe-pulse 1.2s ease-in-out infinite; }
.tac-stays-root .tacbe-loader-copy { font-size: 0.9em; opacity: 0.8; }
@keyframes tacbe-pulse { 0%,100% { opacity: 0.4; } 50% { opacity: 1; } }

/* Modal overlay (appended to body, escapes themed parent transforms) */
.tacbe-modal-overlay {
	position: fixed;
	inset: 0;
	background: rgba(10,22,40,0.6);
	display: flex;
	align-items: center;
	justify-content: center;
	z-index: 999999;
	padding: 20px;
}

/* Enquiry form (fallback for not-set-up and no-availability) */
.tac-stays-root .tacbe-enquiry {
	margin-top: 16px;
	max-width: 360px;
	padding: 20px;
	border: 1px solid rgba(10,22,40,0.12);
	border-radius: 3px;
	background: var(--tacbe-paper);
}
.tac-stays-root .tacbe-enquiry-intro { margin: 0 0 12px; }
.tac-stays-root .tacbe-enquiry-fields { display: flex; flex-direction: column; gap: 10px; }
.tac-stays-root .tacbe-enquiry-fields input,
.tac-stays-root .tacbe-enquiry-fields textarea {
	padding: 8px 10px;
	border: 1px solid rgba(10,22,40,0.2);
	border-radius: 2px;
	font: inherit;
	width: 100%;
}
.tac-stays-root .tacbe-enquiry-status { min-height: 1.2em; font-size: 0.9em; opacity: 0.8; }
.tac-stays-root .tacbe-enquiry-done { font-weight: 600; }
/* When the enquiry form sits inside the quote box (no-availability fallback) it is
   not a separate card: drop the card chrome and divide it from the result above. */
.tac-stays-root .tacbe-quote-box .tacbe-enquiry {
	max-width: none;
	padding: 16px 0 0;
	margin-top: 16px;
	border: 0;
	border-top: 1px solid var(--tacbe-line);
	border-radius: 0;
	background: transparent;
}
/* Honeypot: visually hidden but present in the DOM for bots. */
.tac-stays-root .tacbe-hp { position: absolute !important; left: -9999px !important; height: 1px; width: 1px; opacity: 0; }

/* ============================================================================
   v0.3 — quote panel, search bar, pills, filters, refined cards, calendar.
   All driven by the brand variables above so each operator's colourway flows
   through. Defaults lean premium navy + warm accent.
   ========================================================================== */

.tac-stays-root { --tacbe-line: #e6e6e3; --tacbe-muted-ink: #8a8f96; }

/* ---- Quote panel ---- */
.tac-stays-root .tacbe-quote-box {
	background: var(--tacbe-paper);
	border: 1px solid var(--tacbe-line);
	border-radius: 10px;
	padding: 26px 24px;
	max-width: 420px;
	box-shadow: 0 10px 30px rgba(20,26,36,.06);
}
.tac-stays-root .tacbe-price-from {
	font-size: 1.5rem;
	font-weight: 600;
	color: var(--tacbe-brand);
	margin-bottom: 18px;
}
.tac-stays-root .tacbe-price-from span { font-size: .95rem; font-weight: 400; color: var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.tac-stays-root .tacbe-field label { font-size: .82rem; letter-spacing: .02em; color: var(--tacbe-brand); }
.tac-stays-root .tacbe-field input {
	padding: 12px 14px;
	border: 1px solid var(--tacbe-line);
	border-radius: 7px;
	font: inherit;
	background: var(--tacbe-surface, #fff);
	color: var(--tacbe-text);
}
.tac-stays-root .tacbe-quote-box .tacbe-btn,
.tac-stays-root .tacbe-quote-box .tacbe-btn-primary {
	width: 100%;
	padding: 14px;
	border-radius: 7px;
	font-weight: 600;
	font-size: 1rem;
	margin-top: 4px;
}
.tac-stays-root .tacbe-quote-box .tacbe-btn { border: 1.5px solid var(--tacbe-brand); }
.tac-stays-root .tacbe-quote-box .tacbe-btn-primary { margin-top: 12px; }

/* Itemised breakdown */
.tac-stays-root .tacbe-breakdown { margin: 18px 0 4px; }
.tac-stays-root .tacbe-line { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; font-size: .95rem; }
.tac-stays-root .tacbe-line-note { color: var(--tacbe-muted-ink); font-size: .85rem; }
.tac-stays-root .tacbe-line-total {
	border-top: 1px solid var(--tacbe-line);
	margin-top: 6px; padding-top: 12px;
	font-weight: 700; font-size: 1.05rem; color: var(--tacbe-brand);
}
.tac-stays-root .tacbe-incl { font-size: .8rem; color: var(--tacbe-muted-ink); margin-top: 4px; }
.tac-stays-root .tacbe-quote-result:empty { display: none; }

/* ---- Unified search bar ---- */
.tac-stays-root .tacbe-searchbar {
	display: flex; align-items: stretch;
	border: 1px solid var(--tacbe-line);
	border-radius: 12px; background: var(--tacbe-surface, #fff);
	box-shadow: 0 8px 24px rgba(20,26,36,.05);
	margin-bottom: 18px;
}
.tac-stays-root .tacbe-sb-field { flex: 1; display: flex; flex-direction: column; gap: 3px; padding: 14px 18px; border-right: 1px solid var(--tacbe-line); justify-content: center; }
.tac-stays-root .tacbe-sb-label { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-sb-input { border: none; font: inherit; font-size: 1rem; color: var(--tacbe-text); background: transparent; padding: 2px 0; outline: none; width: 100%; max-width: 100%; box-sizing: border-box; }
.tac-stays-root .tacbe-sb-where { min-width: 0; position: relative; }
.tac-stays-root .tacbe-sb-select { display:flex; align-items:center; justify-content:space-between; gap:8px; cursor:pointer; font:inherit; font-size:1rem; color:var(--tacbe-text); }
.tac-stays-root .tacbe-sb-select-val { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tac-stays-root .tacbe-sb-select-caret { color:var(--tacbe-muted-ink); font-size:11px; flex:0 0 auto; }
.tac-stays-root .tacbe-sb-select-menu { position:absolute; top:calc(100% + 10px); left:0; z-index:60; min-width:240px; max-width:90vw; max-height:300px; overflow-y:auto; background:var(--tacbe-surface, #fff); border:1px solid var(--tacbe-line); border-radius:12px; box-shadow:0 12px 40px rgba(20,26,36,.14); padding:6px; }
.tac-stays-root .tacbe-sb-opt { padding:10px 14px; border-radius:8px; font:inherit; font-size:.95rem; color:var(--tacbe-text); cursor:pointer; }
.tac-stays-root .tacbe-sb-opt:hover { background:var(--tacbe-paper); }
.tac-stays-root .tacbe-sb-opt.is-selected { background:var(--tacbe-brand, #1b2330); color:#fff; }
@media (max-width: 600px){ .tac-stays-root .tacbe-sb-select-menu { left:0; right:0; } }
.tac-stays-root .tacbe-sb-guests { width: 70px; }
.tac-stays-root .tacbe-sb-go {
	background: var(--tacbe-sb-bg, transparent);
	color: var(--tacbe-sb-text, currentColor);
	border: var(--tacbe-sb-border, 1.5px solid currentColor);
	box-sizing: border-box;
	padding: 0 34px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; font-size: .8rem;
	cursor: pointer;
}
.tac-stays-root .tacbe-sb-go:hover { filter: brightness(0.92); }

/* ---- Extended bar: guests & rooms popup ---- */
.tac-stays-root .tacbe-sb-rooms { position: relative; }
.tac-stays-root .tacbe-sb-roomstrig { display:flex; align-items:center; justify-content:space-between; gap:8px; cursor:pointer; font:inherit; font-size:1rem; color:var(--tacbe-text); }
.tac-stays-root .tacbe-sb-roomstrig-val { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tac-stays-root .tacbe-rooms-pop { position:absolute; top:calc(100% + 12px); right:0; z-index:60; width:340px; max-width:92vw; background:var(--tacbe-surface, #fff); border:1px solid var(--tacbe-line); border-radius:14px; box-shadow:0 16px 48px rgba(20,26,36,.16); padding:16px 18px 14px; }
.tac-stays-root .tacbe-rooms-row { display:flex; align-items:center; justify-content:space-between; padding:10px 0; }
.tac-stays-root .tacbe-rooms-l { font-size:1rem; color:var(--tacbe-text); }
.tac-stays-root .tacbe-rooms-sub { color:var(--tacbe-muted-ink); font-size:.82rem; }
.tac-stays-root .tacbe-rooms-div { border-top:1px solid var(--tacbe-line); margin:6px 0 2px; }
.tac-stays-root .tacbe-step { display:flex; align-items:center; gap:14px; }
.tac-stays-root .tacbe-step-btn { width:30px; height:30px; border-radius:50%; border:1px solid var(--tacbe-line); background:var(--tacbe-surface, #fff); color:var(--tacbe-text); font-size:17px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; }
.tac-stays-root .tacbe-step-btn:hover { border-color:var(--tacbe-accent); color:var(--tacbe-accent); }
.tac-stays-root .tacbe-step-btn:disabled { opacity:.35; cursor:default; border-color:var(--tacbe-line); color:var(--tacbe-text); }
.tac-stays-root .tacbe-step-val { min-width:38px; text-align:center; font-size:1rem; }
.tac-stays-root .tacbe-toggle { width:46px; height:27px; border-radius:999px; border:none; background:#d8d5cd; position:relative; cursor:pointer; padding:0; transition:background .15s; }
.tac-stays-root .tacbe-toggle-kn { position:absolute; top:3px; left:3px; width:21px; height:21px; border-radius:50%; background:#fff; transition:left .15s; box-shadow:0 1px 2px rgba(0,0,0,.2); }
.tac-stays-root .tacbe-toggle[aria-pressed="true"] { background:var(--tacbe-accent); }
.tac-stays-root .tacbe-toggle[aria-pressed="true"] .tacbe-toggle-kn { left:22px; }
.tac-stays-root .tacbe-rooms-done { width:100%; margin-top:10px; border:none; background:var(--tacbe-accent); color:#fff; padding:11px; border-radius:9px; font:inherit; font-weight:600; letter-spacing:.06em; font-size:.95rem; cursor:pointer; }
.tac-stays-root .tacbe-rooms-done:hover { background:var(--tacbe-accent-dark, #8c5f31); }
@media (max-width:600px){ .tac-stays-root .tacbe-rooms-pop { left:0; right:0; width:auto; } }

/* ---- Grid-only mode ([tac_grid]): results without the search bar ---- */
.tac-stays-root .tacbe-grid-only .tacbe-searchbar,
.tac-stays-root .tacbe-grid-only .tacbe-search-pill,
.tac-stays-root .tacbe-grid-only .tacbe-result-count,
.tac-stays-root .tacbe-grid-only .tacbe-controls { display: none; }

/* ---- Neighbourhood pills ---- */
.tac-stays-root .tacbe-pills { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.tac-stays-root .tacbe-pills-scroll { display: flex; flex-wrap: wrap; gap: 10px; flex: 1; }
.tac-stays-root .tacbe-pill {
	border: 1px solid var(--tacbe-line); background: var(--tacbe-surface, #fff); color: var(--tacbe-text);
	border-radius: 999px; padding: 9px 18px; font: inherit; font-size: .9rem; cursor: pointer;
	transition: all .15s;
}
.tac-stays-root .tacbe-pill:hover { border-color: var(--tacbe-brand); }
.tac-stays-root .tacbe-pill.is-active { background: var(--tacbe-brand); color: #fff; border-color: var(--tacbe-brand); }
.tac-stays-root .tacbe-filters-btn {
	border: 1px solid var(--tacbe-brand); background: var(--tacbe-surface, #fff); color: var(--tacbe-brand);
	border-radius: 999px; padding: 9px 20px; font: inherit; font-size: .9rem; cursor: pointer; white-space: nowrap;
}

/* ---- Amenity filter panel ---- */
.tac-stays-root .tacbe-filterpanel { border: 1px solid var(--tacbe-line); border-radius: 10px; padding: 18px 20px; margin-bottom: 18px; background: var(--tacbe-paper); }
.tac-stays-root .tacbe-filterpanel-title { font-weight: 600; margin-bottom: 12px; color: var(--tacbe-brand); }
.tac-stays-root .tacbe-filter-chips { display: flex; flex-wrap: wrap; gap: 10px 22px; }
.tac-stays-root .tacbe-filter-chip { display: inline-flex; align-items: center; gap: 7px; font-size: .92rem; cursor: pointer; }

.tac-stays-root .tacbe-result-count { font-size: 1.05rem; margin-bottom: 18px; }
.tac-stays-root .tacbe-similar { margin-top: 44px; }
.tac-stays-root .tacbe-similar[hidden] { display: none; }
.tac-stays-root .tacbe-similar > h2 { margin: 0 0 18px; }
.tac-stays-root .tacbe-similar-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 32px 26px; align-items: stretch; }
.tac-stays-root .tacbe-similar-grid .tacbe-card { height: 100%; }
.tac-stays-root .tacbe-sortbar { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin: -8px 0 16px; }
.tac-stays-root .tacbe-sortbar[hidden] { display: none; }
.tac-stays-root .tacbe-sort-label { font-size: .85rem; color: var(--tacbe-muted-ink, #667); }
.tac-stays-root .tacbe-sort-select { font: inherit; font-size: .9rem; padding: 7px 30px 7px 12px; border: 1px solid var(--tacbe-line, #e6e6e3); border-radius: var(--tacbe-radius, 8px); background: var(--tacbe-paper, #fff); color: var(--tacbe-text, inherit); cursor: pointer; }
.tac-stays-root .tacbe-result-count strong { font-weight: 700; }

/* ---- Refined cards ---- */
.tac-stays-root .tacbe-grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 32px 26px; }
.tac-stays-root .tacbe-card { text-decoration: none; color: inherit; display: block; }
.tac-stays-root .tacbe-card-img { aspect-ratio: 4/3; background-size: cover; background-position: center; border-radius: 12px; }
.tac-stays-root .tacbe-card-body { padding: 16px 18px 18px; }
.tac-stays-root .tacbe-card-suburb { font-size: .72rem; letter-spacing: .18em; color: var(--tacbe-muted-ink); margin-bottom: 6px; }
.tac-stays-root .tacbe-card-title { font-size: 1.25rem; font-weight: 600; margin: 0 0 8px; color: var(--tacbe-brand); line-height: 1.2; }
.tac-stays-root .tacbe-card-spec { color: var(--tacbe-muted-ink); font-size: .92rem; margin-bottom: 12px; }
.tac-stays-root .tacbe-card-price { border-top: 1px solid var(--tacbe-line); padding-top: 12px; font-size: 1.05rem; }
.tac-stays-root .tacbe-card-from { font-size: .72rem; letter-spacing: .12em; color: var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-card-per { color: var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-card-feenote { font-size: .8rem; color: var(--tacbe-muted-ink); margin-top: 5px; }
/* Withheld-price hint (shown until a card is quoted for a date range). */
.tac-stays-root .tacbe-card-pricehint { font-size: .92rem; color: var(--tacbe-muted-ink); }
/* The price and fee cells are always present so a later quote can fill them;
   hide them while they carry nothing so an empty card foot stays tidy. */
.tac-stays-root .tacbe-card-price:empty { display: none; }
.tac-stays-root .tacbe-card-feenote:empty { display: none; }
.tac-stays-root .tacbe-card-was { text-decoration: line-through; color: var(--tacbe-muted-ink); font-weight: 400; margin-right: 3px; }
.tac-stays-root .tacbe-card-promo { margin: 0 0 8px; }
.tac-stays-root .tacbe-card-promopill { display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .02em; padding: 3px 9px; border-radius: 6px; background: var(--tacbe-promo-bg, #0E7A53); color: var(--tacbe-promo-text, #ffffff); }
.tac-stays-root .tacbe-card-hidden { display: none !important; }
.tac-stays-root .tacbe-filter-chip.is-disabled { opacity: .45; cursor: not-allowed; }

/* Search card image carousel: a swipeable scroll-snap track with arrows and dots.
   Single-image cards keep the plain .tacbe-card-img block above. */
.tac-stays-root .tacbe-card-media { position: relative; overflow: hidden; border-radius: var(--tacbe-radius); }
.tac-stays-root .tacbe-card-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.tac-stays-root .tacbe-card-track::-webkit-scrollbar { display: none; }
.tac-stays-root .tacbe-card-slide { flex: 0 0 100%; aspect-ratio: 4 / 3; background-size: cover; background-position: center; background-color: rgba(10,22,40,0.06); scroll-snap-align: start; }
.tac-stays-root .tacbe-card-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; border-radius: 999px; background: rgba(255,255,255,.92); color: #1b2330; display: flex; align-items: center; justify-content: center; font-size: 1.1rem; line-height: 1; cursor: pointer; box-shadow: 0 2px 8px rgba(20,26,36,.2); opacity: 0; transition: opacity .15s ease; user-select: none; }
.tac-stays-root .tacbe-card-prev { left: 10px; }
.tac-stays-root .tacbe-card-next { right: 10px; }
.tac-stays-root .tacbe-card-media:hover .tacbe-card-nav { opacity: 1; }
@media (hover: none) { .tac-stays-root .tacbe-card-nav { opacity: 1; } }
.tac-stays-root .tacbe-card-dots { position: absolute; left: 0; right: 0; bottom: 10px; display: flex; gap: 6px; justify-content: center; pointer-events: none; }
.tac-stays-root .tacbe-card-dot { width: 6px; height: 6px; border-radius: 999px; background: rgba(255,255,255,.65); box-shadow: 0 0 3px rgba(20,26,36,.45); pointer-events: auto; cursor: pointer; transition: background .15s ease, transform .15s ease; }
.tac-stays-root .tacbe-card-dot.is-active { background: #fff; transform: scale(1.3); }

/* ---- Availability calendar ---- */
.tac-stays-root .tacbe-cal-legend { display: flex; gap: 22px; margin-bottom: 14px; }
.tac-stays-root .tacbe-cal-key { display: inline-flex; align-items: center; gap: 8px; font-size: .9rem; }
.tac-stays-root .tacbe-cal-swatch { width: 16px; height: 16px; border-radius: 4px; border: 1px solid var(--tacbe-line); display: inline-block; }
.tac-stays-root .tacbe-cal-swatch.is-avail { background: var(--tacbe-surface, #fff); }
.tac-stays-root .tacbe-cal-swatch.is-booked { background: var(--tacbe-paper); border-color: var(--tacbe-line); }
.tac-stays-root .tacbe-cal-min { margin-bottom: 22px; }
.tac-stays-root .tacbe-cal-months { display: flex; flex-wrap: wrap; gap: 48px; }
.tac-stays-root .tacbe-cal-month { flex: 1; min-width: 280px; }
.tac-stays-root .tacbe-cal-title { text-align: center; font-weight: 600; font-size: 1.25rem; color: var(--tacbe-brand); margin-bottom: 16px; }
.tac-stays-root .tacbe-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.tac-stays-root .tacbe-cal-dow { text-align: center; font-size: .8rem; color: var(--tacbe-muted-ink); padding-bottom: 6px; }
.tac-stays-root .tacbe-cal-cell { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; border: 1px solid var(--tacbe-line); border-radius: 8px; font-size: .95rem; }
.tac-stays-root .tacbe-cal-cell.is-empty { border: none; }
.tac-stays-root .tacbe-cal-cell.is-avail { background: var(--tacbe-surface, #fff); color: var(--tacbe-text); }
.tac-stays-root .tacbe-cal-cell.is-booked { background: var(--tacbe-paper); color: var(--tacbe-muted-ink); border-color: var(--tacbe-line); }
.tac-stays-root .tacbe-cal-cell.is-past { color: #cfd2d6; border-color: transparent; }
.tac-stays-root .tacbe-cal-cell.is-unknown { color: var(--tacbe-muted-ink); border-style: dashed; }

/* Mobile collapse-to-pill */
.tacbe-search-pill { display: none; }
.tac-stays-root .tacbe-sb-close { display: none; }
@media (max-width: 720px) {
	/* Collapsed trigger styled like the desktop bar (white card), not a coloured pill. */
	.tacbe-search-pill,
	.tacbe-search-pill:link,
	.tacbe-search-pill:visited {
		display: flex; align-items: center; gap: 10px; width: 100%;
		background: var(--tacbe-surface, #fff) !important; border: 1px solid var(--tacbe-line, #e6e6e3); border-radius: 12px;
		padding: 15px 18px; font: inherit; font-size: .95rem; color: var(--tacbe-text, #1b2330) !important;
		box-shadow: 0 8px 24px rgba(20,26,36,.05); cursor: pointer; text-align: left;
	}
	.tacbe-search-pill-sticky { position: sticky; top: 8px; z-index: 40; }
	.tacbe-search-pill-ic { font-size: 1.05rem; color: var(--tacbe-brand, #1b2330); }
	.tacbe-search-pill-text { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--tacbe-text, #1b2330); }
	.tacbe-search .tacbe-searchbar { display: none; }
	/* When open: overlay the full search as a sheet. */
	.tacbe-search.tacbe-search-open .tacbe-search-pill { display: none; }
	.tacbe-search.tacbe-search-open .tacbe-searchbar {
		display: block; position: fixed; left: 0; right: 0; top: 0; bottom: 0; z-index: 100;
		margin: 0; border-radius: 0; overflow-y: auto; padding: 20px 16px 16px;
	}
	.tacbe-search.tacbe-search-open .tacbe-searchbar .tacbe-sb-field { border: 1px solid var(--tacbe-line); border-radius: 10px; margin-bottom: 12px; padding: 12px 16px; }
	.tacbe-search.tacbe-search-open .tacbe-searchbar .tacbe-sb-dates { display: block; }
	.tacbe-search.tacbe-search-open .tacbe-searchbar .tacbe-sb-go { width: 100%; border-radius: 10px; padding: 16px; margin-top: 4px; }
	.tacbe-search.tacbe-search-open .tacbe-sb-close {
		display: block; position: absolute; top: 14px; right: 16px; z-index: 2;
		background: none; border: none; font-size: 22px; line-height: 1; cursor: pointer; color: var(--tacbe-text, #1b2330);
	}
}

/* ============================================================================
   Inherit-with-override wiring. These rules make the components respond to the
   font / radius / button-text / surface variables so operator settings (or the
   theme, when blank) flow through consistently.
   ========================================================================== */

/* Headings inherit the theme's heading font unless overridden. */
.tac-stays-root .tacbe-card-title,
.tac-stays-root .tacbe-cal-title,
.tac-stays-root .tacbe-price-from { font-family: var(--tacbe-font-heading); }

/* Radius flows from one lever. */
.tac-stays-root .tacbe-quote-box,
.tac-stays-root .tacbe-searchbar,
.tac-stays-root .tacbe-filterpanel,
.tac-stays-root .tacbe-card-img { border-radius: var(--tacbe-radius); }
.tac-stays-root .tacbe-field input,
.tac-stays-root .tacbe-quote-box .tacbe-btn,
.tac-stays-root .tacbe-quote-box .tacbe-btn-primary { border-radius: calc(var(--tacbe-radius) * 0.7); }
.tac-stays-root .tacbe-cal-cell { border-radius: calc(var(--tacbe-radius) * 0.6); }

/* Solid buttons use the configured button-text colour. The search button
   manages its own colour (outline by default, solid via --tacbe-sb-* vars). */
.tac-stays-root .tacbe-btn-primary { color: var(--tacbe-btn-text); }

/* Outline button style (when chosen) is applied via this class on the root. */
.tac-stays-root.tacbe-buttons-outline .tacbe-btn-primary,
.tac-stays-root.tacbe-buttons-outline .tacbe-sb-go {
	background: transparent;
	color: var(--tacbe-brand);
	border: 1.5px solid var(--tacbe-brand);
}

/* Page-area background, when the operator sets one. */
.tac-stays-root { background: var(--tacbe-bg); }

/* Density: gap + padding flow from variables. */
.tac-stays-root .tacbe-quote-box { padding: var(--tacbe-pad); }
.tac-stays-root .tacbe-grid { gap: calc(var(--tacbe-gap) * 1.6) var(--tacbe-gap); }
.tac-stays-root .tacbe-field { margin-bottom: var(--tacbe-gap); }

/* v0.5 — folded control row (Neighbourhoods + Filters buttons + panels) */
.tac-stays-root .tacbe-controls { display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-bottom:16px; }
.tac-stays-root .tacbe-ctrl {
	border:1px solid var(--tacbe-line); background:var(--tacbe-surface, #fff); color:var(--tacbe-text);
	border-radius:999px; padding:11px 20px; font:inherit; font-size:14px; cursor:pointer;
	display:inline-flex; align-items:center; gap:9px;
}
.tac-stays-root .tacbe-ctrl:hover { border-color:var(--tacbe-brand); }
.tac-stays-root .tacbe-ctrl-ic { font-size:15px; line-height:1; }
.tac-stays-root .tacbe-ctrl-caret { color:var(--tacbe-muted-ink); font-size:11px; }
.tac-stays-root .tacbe-panel {
	border:1px solid var(--tacbe-line); border-radius:var(--tacbe-radius);
	background:var(--tacbe-paper); padding:18px 20px; margin-bottom:18px;
}
.tac-stays-root .tacbe-hoods-panel .tacbe-pills-scroll { display:flex; flex-wrap:wrap; gap:10px; }

/* v0.5.1 — protect the booking engine's own spacing so it looks good in ANY
   theme, including full-bleed ones. Sensible max width + comfortable side
   padding so content never jams against the page edge. Eases off on mobile. */
.tac-stays-root {
	max-width: 1200px;
	margin-left: auto;
	margin-right: auto;
	padding-left: 28px;
	padding-right: 28px;
	padding-top: 8px;
	padding-bottom: 8px;
}
@media (max-width: 600px) {
	.tac-stays-root { padding-left: 16px; padding-right: 16px; }
}

/* v0.6 — property page layout: gallery, two-column with sticky booking, amenities, map */
.tac-stays-root.tacbe-property { padding-top: 16px; }

/* Full-width single-property template wrapper (used when the plugin template is
   turned on). The inner .tac-stays-root centres itself at 1200px, so this only
   guarantees a full-width block with vertical breathing room under the theme
   header, and stops a theme flex/grid parent from collapsing it. */
.tacbe-single-property { width: 100%; max-width: 100%; margin: 0; padding: 32px 0 56px; box-sizing: border-box; }

/* Gallery: one large + a grid of up to four */
.tac-stays-root .tacbe-gallery { display:grid; grid-template-columns: 2fr 1fr; gap:8px; height:380px; border-radius:var(--tacbe-radius); overflow:hidden; margin-bottom:28px; }
.tac-stays-root .tacbe-gal-main { background-size:cover; background-position:center; }
.tac-stays-root .tacbe-gal-grid { display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; gap:8px; }
.tac-stays-root .tacbe-gal-cell { background-size:cover; background-position:center; background-color:#e6e6e3; }

/* Two columns: content + sticky booking aside */
.tac-stays-root .tacbe-prop-cols { display:grid; grid-template-columns: 1fr 380px; gap:48px; align-items:start; }
.tac-stays-root .tacbe-prop-main { min-width:0; }
.tac-stays-root .tacbe-specbar { color:var(--tacbe-muted-ink); font-size:1.05rem; margin-bottom:18px; }
.tac-stays-root .tacbe-prop-content { font-size:1.05rem; line-height:1.7; }
.tac-stays-root .tacbe-prop-section { border-top:1px solid var(--tacbe-line); margin-top:30px; padding-top:24px; }
.tac-stays-root .tacbe-prop-section h3 { font-size:1.25rem; font-weight:600; margin:0 0 16px; font-family:var(--tacbe-font-heading); }
.tac-stays-root .tacbe-amenities { display:grid; grid-template-columns:repeat(2,1fr); gap:12px 28px; }
.tac-stays-root .tacbe-amenity { font-size:1rem; padding-left:24px; position:relative; }
.tac-stays-root .tacbe-amenity::before { content:"\2713"; position:absolute; left:0; color:var(--tacbe-accent); }

/* sticky booking aside: the aside is the grid item, so its containing block is
   the full two-column row and the panel can travel as the long column scrolls.
   (Putting position:sticky on an inner wrapper fails, because that wrapper is
   only as tall as the panel itself.) */
.tac-stays-root .tacbe-prop-aside--sticky { position: sticky; top: 20px; align-self: start; }
.tac-stays-root .tacbe-prop-sticky { position: sticky; top: 20px; }

/* responsive: single column, booking drops below the content on mobile */
@media (max-width: 860px) {
	.tac-stays-root .tacbe-prop-cols { grid-template-columns:1fr; gap:28px; }
	.tac-stays-root .tacbe-prop-aside { order:-1; } /* booking box near the top on mobile */
	.tac-stays-root .tacbe-prop-sticky,
	.tac-stays-root .tacbe-prop-aside--sticky { position:static; }
	.tac-stays-root .tacbe-gallery { grid-template-columns:1fr; height:auto; }
	.tac-stays-root .tacbe-gal-main { height:240px; }
	.tac-stays-root .tacbe-gal-grid { grid-template-columns:repeat(4,1fr); grid-template-rows:1fr; height:80px; margin-top:8px; }
}

/* v0.6.1 — gallery lightbox + amenity see-more */
.tac-stays-root .tacbe-gallery { cursor:pointer; position:relative; }
.tac-stays-root .tacbe-gal-grid { position:relative; }
.tac-stays-root .tacbe-gal-count { position:absolute; right:12px; bottom:12px; background:rgba(255,255,255,.92); color:#1b2330; font-weight:600; font-size:.8rem; padding:6px 12px; border-radius:999px; box-shadow:0 2px 10px rgba(20,26,36,.18); }
.tac-stays-root .tacbe-amenity-more { margin-top:16px; background:none; border:1px solid var(--tacbe-line); border-radius:8px; padding:10px 18px; font:inherit; font-size:.95rem; cursor:pointer; color:var(--tacbe-text); }
.tac-stays-root .tacbe-amenity-more:hover { border-color:var(--tacbe-brand); }

/* lightbox overlay — appended to <body>, so NOT scoped under .tac-stays-root */
.tacbe-lightbox { position:fixed; inset:0; background:rgba(10,14,20,.94); z-index:99999; display:flex; align-items:center; justify-content:center; }
.tacbe-lb-img { max-width:78vw; max-height:86vh; object-fit:contain; border-radius:4px; }
.tacbe-lb-close { position:absolute; top:22px; right:26px; background:none; border:none; color:#fff; font-size:34px; line-height:1; cursor:pointer; z-index:2; }
.tacbe-lb-nav { position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,.18); border:none; color:#fff; width:52px; height:52px; border-radius:50%; font-size:28px; line-height:1; cursor:pointer; z-index:2; display:flex; align-items:center; justify-content:center; padding:0; }
.tacbe-lb-nav:hover { background:rgba(255,255,255,.25); }
.tacbe-lb-prev { left:24px; }
.tacbe-lb-next { right:24px; }
.tacbe-lb-count { position:absolute; bottom:24px; left:50%; transform:translateX(-50%); color:#fff; font-size:.9rem; letter-spacing:.05em; }
@media (max-width:600px){ .tacbe-lb-nav{ width:42px; height:42px; font-size:24px; } .tacbe-lb-prev{left:10px;} .tacbe-lb-next{right:10px;} }

/* v0.6.5 — combined range date picker */
.tac-stays-root .tacbe-daterange { display:flex; border:1px solid var(--tacbe-line); border-radius:9px; overflow:hidden; background:var(--tacbe-surface, #fff); cursor:pointer; margin-bottom:14px; }
.tac-stays-root .tacbe-dr-cell { flex:1; padding:11px 14px; }
.tac-stays-root .tacbe-dr-cell + .tacbe-dr-cell { border-left:1px solid var(--tacbe-line); }
.tac-stays-root .tacbe-dr-label { display:block; font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-dr-val { display:block; font-size:.95rem; margin-top:3px; }
.tac-stays-root .tacbe-rangecal { border:1px solid var(--tacbe-line); border-radius:12px; background:var(--tacbe-surface, #fff); padding:14px; margin-bottom:14px; box-shadow:0 12px 40px rgba(20,26,36,.12); width:100%; box-sizing:border-box; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-title { font-weight:600; font-size:.95rem; text-align:left; color:var(--tacbe-text); margin-bottom:0; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-nav { background:none; border:1px solid var(--tacbe-line); border-radius:7px; width:30px; height:30px; cursor:pointer; font-size:17px; line-height:1; display:flex; align-items:center; justify-content:center; color:var(--tacbe-text); flex:0 0 auto; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-nav:hover { border-color:var(--tacbe-brand); }
.tac-stays-root .tacbe-rangecal .tacbe-cal-dow { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; margin-bottom:4px; text-align:center; padding-bottom:0; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-dow span { text-align:center; font-size:.68rem; color:var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-rangecal .tacbe-cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-empty { aspect-ratio:1; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-day { aspect-ratio:1; width:100%; border:none; background:none; border-radius:7px; cursor:pointer; font:inherit; font-size:.82rem; color:var(--tacbe-text); display:flex; align-items:center; justify-content:center; padding:0; box-sizing:border-box; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-day:hover:not(.is-disabled) { background:var(--tacbe-paper); }
.tac-stays-root .tacbe-rangecal .tacbe-cal-day.is-disabled { color:#cfd2d6; cursor:default; text-decoration:line-through; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-day.is-start, .tac-stays-root .tacbe-rangecal .tacbe-cal-day.is-end { background:var(--tacbe-brand, #1b2330); color:#fff; }
.tac-stays-root .tacbe-rangecal .tacbe-cal-day.is-inrange { background:color-mix(in srgb, var(--tacbe-brand, #1b2330) 14%, transparent); }
.tac-stays-root .tacbe-rangecal .tacbe-cal-note { font-size:.78rem; color:var(--tacbe-muted-ink); margin-top:10px; text-align:center; }

/* v0.6.8 — search bar range date field (calendar pops as overlay) */
.tac-stays-root .tacbe-sb-dates { position:relative; flex:2; display:flex; padding:0; border-right:1px solid var(--tacbe-line); }
.tac-stays-root .tacbe-sb-daterange { display:flex; cursor:pointer; flex:1; }
.tac-stays-root .tacbe-sb-dr-cell { flex:1; display:flex; flex-direction:column; gap:3px; justify-content:center; padding:14px 18px; }
.tac-stays-root .tacbe-sb-dr-cell + .tacbe-sb-dr-cell { border-left:1px solid var(--tacbe-line); }
.tac-stays-root .tacbe-sb-dr-val { display:block; font-size:1rem; color:var(--tacbe-text); }
.tac-stays-root .tacbe-sb-cal { position:absolute; top:calc(100% + 10px); left:0; z-index:50; width:320px; max-width:90vw; cursor:default; }
@media (max-width: 600px){
	.tac-stays-root .tacbe-sb-dates { flex-direction:column; border-right:none; border-bottom:1px solid var(--tacbe-line); }
	.tac-stays-root .tacbe-sb-cal { left:auto; right:0; }
}

/* v0.6.15 — currency footnote */
.tac-stays-root .tacbe-currency-foot { font-size:.8rem; color:var(--tacbe-muted-ink); margin-top:14px; }
.tac-stays-root .tacbe-quote-box .tacbe-currency-foot { margin-top:16px; text-align:center; }

/* v0.7.1 — maps (property page + search map view) */
.tac-stays-root .tacbe-grid[hidden], .tac-stays-root .tacbe-mapview[hidden] { display: none !important; }
.tac-stays-root .tacbe-map { height:420px; margin-top:1.25rem; border-radius:var(--tacbe-radius); overflow:hidden; background:#eef0ee; }
/* Privacy logo is a geographic image overlay (scales with the map), so it needs no fixed pixel sizing. */
.tac-stays-root .tacbe-priv-logo-ov { pointer-events:none; }
/* full-width property map band sits below the two columns */
.tac-stays-root .tacbe-property > .tacbe-prop-section { margin-top:40px; padding-top:32px; }
/* property location pin */
.tacbe-prop-pin-dot { display:block; width:18px; height:18px; border-radius:50%; border:3px solid #fff; box-shadow:0 0 0 1px rgba(0,0,0,.2), 0 2px 6px rgba(0,0,0,.3); }
.tac-stays-root .tacbe-mapview { width:100%; }
.tac-stays-root .tacbe-mapview-canvas { height:560px; width:100%; border-radius:14px; overflow:hidden; border:1px solid var(--tacbe-line); }
/* control row map button active state */
.tac-stays-root .tacbe-ctrl-map.is-active { background:var(--tacbe-brand, #1b2330); color:#fff; border-color:var(--tacbe-brand, #1b2330); }
/* price pins on the search map */
.tacbe-price-pin { background:none; border:none; }
.tacbe-price-pin-bubble { display:inline-block; transform:translate(-50%,-100%); background:var(--tacbe-brand, #1b2330); color:#fff; font-size:13px; font-weight:600; padding:6px 12px; border-radius:999px; box-shadow:0 3px 8px rgba(0,0,0,.25); white-space:nowrap; text-decoration:none; cursor:pointer; }
.tacbe-price-pin-bubble:hover { background:var(--tacbe-accent, #a9743f); }
/* map popup preview card.
   The wrapper padding and content margin are forced to zero (with !important and
   the .tac-stays-root prefix for specificity) so a host theme cannot re-add
   Leaflet's default popup frame. That keeps the image flush to the top and sides
   of the popup. The close button is moved onto the image, top-right. */
.tac-stays-root .leaflet-popup.tacbe-map-popup .leaflet-popup-content-wrapper,
.tacbe-map-popup .leaflet-popup-content-wrapper { padding:0 !important; border-radius:14px; overflow:hidden; }
.tac-stays-root .leaflet-popup.tacbe-map-popup .leaflet-popup-content,
.tacbe-map-popup .leaflet-popup-content { margin:0 !important; width:248px !important; }
.tacbe-map-popup .leaflet-popup-content > * { margin:0; }
.tacbe-map-popup a.leaflet-popup-close-button {
	top:8px; right:8px; width:24px; height:24px; padding:0;
	display:flex; align-items:center; justify-content:center;
	color:#fff; font-size:18px; line-height:1; border-radius:999px;
	background:rgba(0,0,0,.32); text-shadow:none; z-index:2;
}
.tacbe-map-popup a.leaflet-popup-close-button:hover { background:rgba(0,0,0,.5); color:#fff; }
.tacbe-map-card { font-family:inherit; width:248px; box-sizing:border-box; }
.tacbe-map-card-img { height:140px; background-size:cover; background-position:center; }
.tacbe-map-card-body { padding:12px 14px 14px; }
.tacbe-map-card-title { font-weight:600; font-size:.98rem; color:var(--tacbe-text, #1b2330); line-height:1.3; word-break:normal; overflow-wrap:break-word; }
.tacbe-map-card-spec { font-size:.82rem; color:var(--tacbe-muted-ink, #8a8f96); margin-top:4px; }
.tacbe-map-card-price { font-size:1rem; font-weight:600; color:var(--tacbe-text, #1b2330); margin-top:8px; white-space:nowrap; }
.tacbe-map-card-price span { font-weight:400; color:var(--tacbe-muted-ink, #8a8f96); font-size:.85rem; }
.tacbe-map-card-link, .tacbe-map-card-link:link, .tacbe-map-card-link:visited { display:inline-block; margin-top:12px; background:var(--tacbe-brand, #1b2330); color:#fff !important; text-decoration:none; font-size:.85rem; font-weight:600; padding:9px 16px; border-radius:8px; }
.tacbe-map-card-link:hover { background:var(--tacbe-accent, #a9743f); color:#fff !important; }
/* Leaflet attribution should stay readable but unobtrusive */
.tac-stays-root .leaflet-container { font: inherit; }

/* v0.7.7 — sticky search bar + mobile book bar */
.tac-stays-root .tacbe-searchbar-sticky { position: sticky; top: 0; z-index: 40; border-radius: 0; box-shadow: 0 4px 16px rgba(20,26,36,.10); width: 100vw; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); padding-left: max(28px, calc(50vw - 600px)); padding-right: max(28px, calc(50vw - 600px)); box-sizing: border-box; }
/* mobile bottom book bar — hidden on desktop, shown on small screens */
.tacbe-mobile-bookbar { display: none; }
@media (max-width: 860px) {
	.tacbe-mobile-bookbar {
		display: flex; align-items: center; justify-content: space-between; gap: 14px;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
		background: var(--tacbe-surface, #fff); border-top: 1px solid var(--tacbe-line, #e6e6e3);
		padding: 12px 16px; box-shadow: 0 -4px 16px rgba(20,26,36,.08);
	}
	.tacbe-mobile-bookbar .tacbe-mbb-price { font-size: 1rem; font-weight: 600; color: var(--tacbe-text, #1b2330); }
	.tacbe-mobile-bookbar .tacbe-mbb-price span { font-weight: 400; color: var(--tacbe-muted-ink, #8a8f96); font-size: .85rem; }
	.tacbe-mobile-bookbar .tacbe-mbb-go,
	.tacbe-mobile-bookbar .tacbe-mbb-go:link,
	.tacbe-mobile-bookbar .tacbe-mbb-go:visited { flex: 0 0 auto; margin: 0; background: var(--tacbe-brand, #1b2330); color: #fff !important; }
	/* keep content clear of the fixed bar */
	.tac-stays-root.tacbe-property { padding-bottom: 80px; }
}

/* ─── Guest reviews ─────────────────────────────────────────── */
.tac-stays-root .tacbe-reviews { margin: 36px 0 8px; }
.tac-stays-root .tacbe-reviews-title { font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--tacbe-muted, #6b7280); margin: 0 0 14px; }
.tac-stays-root .tacbe-reviews-head { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; padding: 0 0 22px; border-bottom: 1px solid var(--tacbe-line, #e7e3db); margin-bottom: 22px; }
.tac-stays-root .tacbe-reviews-score { display: flex; align-items: baseline; gap: 10px; }
.tac-stays-root .tacbe-reviews-star { color: var(--tacbe-brand); font-size: 1.5rem; }
.tac-stays-root .tacbe-reviews-avg { font-size: 2.4rem; font-weight: 600; line-height: 1; }
.tac-stays-root .tacbe-reviews-count { color: var(--tacbe-muted, #6b7280); font-size: .95rem; }
.tac-stays-root .tacbe-rev-cats { display: flex; gap: 22px; flex-wrap: wrap; margin-left: auto; }
.tac-stays-root .tacbe-rev-cat { font-size: .8rem; }
.tac-stays-root .tacbe-rev-cat b { display: block; font-size: .95rem; font-weight: 600; }
.tac-stays-root .tacbe-rev-cat span { color: var(--tacbe-muted, #6b7280); }
.tac-stays-root .tacbe-rev-featured-label { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--tacbe-brand); font-weight: 700; margin: 0 0 10px; }
.tac-stays-root .tacbe-review { background: var(--tacbe-surface, #fff); border: 1px solid var(--tacbe-line, #e7e3db); border-radius: 12px; padding: 18px 20px; margin-bottom: 16px; }
.tac-stays-root .tacbe-review-head { display: flex; align-items: baseline; gap: 12px; margin: 0 0 8px; }
.tac-stays-root .tacbe-review-rating { color: var(--tacbe-brand); font-weight: 700; font-size: .9rem; }
.tac-stays-root .tacbe-review-date { color: var(--tacbe-muted, #6b7280); font-size: .85rem; }
.tac-stays-root .tacbe-review-text { line-height: 1.55; }
.tac-stays-root .tacbe-rev-details { margin-top: 4px; }
.tac-stays-root .tacbe-rev-details summary { list-style: none; }
.tac-stays-root .tacbe-rev-details summary::-webkit-details-marker { display: none; }
.tac-stays-root .tacbe-rev-more { display: inline-flex; align-items: center; cursor: pointer; background: transparent; border: 1px solid currentColor; border-radius: 999px; padding: 11px 22px; font-size: .9rem; font-weight: 600; }
.tac-stays-root .tacbe-rev-more:hover { background: var(--tacbe-brand); border-color: var(--tacbe-brand); color: #fff; }
.tac-stays-root .tacbe-reviews-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 26px; margin-top: 18px; }
@media (max-width: 640px) { .tac-stays-root .tacbe-reviews-grid { grid-template-columns: 1fr; } .tac-stays-root .tacbe-rev-cats { margin-left: 0; width: 100%; } }
.tac-stays-root .tacbe-review-translated { margin-top: 6px; font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: var(--tacbe-muted, #6b7280); }

/* Standalone content blocks (operator-built pages). Spacing only, colours and
   type inherit the host theme so the blocks blend in. */
.tac-stays-root .tacbe-prop-title { margin: 0 0 .4em; }
.tac-stays-root .tacbe-prop-description { margin: 0 0 1.5rem; line-height: 1.6; }
.tac-stays-root .tacbe-prop-price { margin: 0 0 1rem; }
.tac-stays-root .tacbe-prop-price .tacbe-price-label { color: var(--tacbe-muted, #6b7280); }
.tac-stays-root .tacbe-prop-price .tacbe-price-amount { font-weight: 600; font-size: 1.15em; }
.tac-stays-root .tacbe-prop-price .tacbe-price-unit { color: var(--tacbe-muted, #6b7280); }

/* ============================================================================
   v1.5.0 — property page brought in line with the TAC reference layout.
   Structure, spacing and treatment only; every colour still flows through the
   operator's own brand variables (inherit-by-default), so each site keeps its
   own palette. No hardcoded brand colours below.
   ========================================================================== */

/* Head: locality eyebrow + meta row, above the gallery. */
.tac-stays-root.tacbe-property { padding-top: 18px; }
.tac-stays-root .tacbe-prop-head { margin: 0 0 20px; }
.tac-stays-root .tacbe-prop-eyebrow {
	font-size: .72rem; letter-spacing: .2em; text-transform: uppercase;
	color: var(--tacbe-muted-ink); margin-bottom: 8px;
}
.tac-stays-root .tacbe-prop-head .tacbe-specbar { margin: 0; font-size: 1rem; color: var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-prop-metarow { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.tac-stays-root .tacbe-callouts { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.tac-stays-root .tacbe-callout { display: inline-block; font-size: 12px; font-weight: 600; letter-spacing: .02em; padding: 3px 11px; border-radius: 999px; line-height: 1.7; white-space: nowrap; }
.tac-stays-root .tacbe-card-mediawrap { position: relative; }
.tac-stays-root .tacbe-card-callouts { position: absolute; top: 12px; right: 12px; z-index: 3; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; pointer-events: none; }
.tac-stays-root .tacbe-card-callout { font-size: 11px; font-weight: 600; letter-spacing: .02em; padding: 4px 11px; border-radius: 999px; box-shadow: 0 2px 6px rgba(20,26,36,.28); white-space: nowrap; }

/* Gallery: lead image. The photo-count pill lives on the grid (see .tacbe-gal-count). */
.tac-stays-root .tacbe-gal-main { position: relative; }

/* Sections: larger headings + a quiet rule between, matching the reference. */
.tac-stays-root .tacbe-prop-main > .tacbe-prop-section { border-top: 1px solid var(--tacbe-line); margin-top: 40px; padding-top: 34px; }
.tac-stays-root .tacbe-prop-main > .tacbe-prop-section:first-child { border-top: 0; margin-top: 4px; padding-top: 0; }
.tac-stays-root .tacbe-prop-section h2 {
	font-size: 1.45rem; font-weight: 600; line-height: 1.2;
	margin: 0 0 18px; font-family: var(--tacbe-font-heading); color: var(--tacbe-text);
}
.tac-stays-root .tacbe-prop-about .tacbe-prop-content { font-size: 1.05rem; line-height: 1.7; }
.tac-stays-root .tacbe-prop-about .tacbe-prop-content > :first-child { margin-top: 0; }
.tac-stays-root .tacbe-prop-about .tacbe-prop-content > :last-child { margin-bottom: 0; }

/* About this stay: the summary and the "space" detail beneath it, as one block
   that the JS collapses to five lines when it runs long. The block is full in the
   source; the clamp is added by JS so SEO and no-JS visitors see everything. */
.tac-stays-root .tacbe-clamp { font-size: 1.05rem; line-height: 1.7; }
.tac-stays-root .tacbe-clamp--collapsed {
	overflow: hidden;
	-webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 2em), transparent);
	mask-image: linear-gradient(to bottom, #000 calc(100% - 2em), transparent);
}
.tac-stays-root .tacbe-prop-space { margin-top: 18px; font-size: 1.05rem; line-height: 1.7; }
.tac-stays-root .tacbe-prop-space > :first-child { margin-top: 0; }
.tac-stays-root .tacbe-prop-space > :last-child { margin-bottom: 0; }
.tac-stays-root .tacbe-clamp-toggle {
	margin-top: 14px; background: none; border: 1px solid var(--tacbe-line); border-radius: 8px;
	padding: 9px 18px; font: inherit; font-size: .95rem; cursor: pointer; color: var(--tacbe-text);
}
.tac-stays-root .tacbe-clamp-toggle:hover { border-color: var(--tacbe-brand); }

/* Notes copy at the foot of Good to know, and the House rules section. */
.tac-stays-root .tacbe-gtk-notes { margin-top: 26px; font-size: 1rem; line-height: 1.7; color: var(--tacbe-text); }
.tac-stays-root .tacbe-gtk-notes > :first-child { margin-top: 0; }
.tac-stays-root .tacbe-gtk-notes > :last-child { margin-bottom: 0; }
.tac-stays-root .tacbe-houserules { font-size: 1rem; line-height: 1.7; }
.tac-stays-root .tacbe-houserules > :last-child { margin-bottom: 0; }
.tac-stays-root .tacbe-notes, .tac-stays-root .tacbe-space { font-size: 1rem; line-height: 1.7; }

/* Availability: collapsible block whose summary is the section heading. */
.tac-stays-root .tacbe-availability { padding-top: 34px; }
.tac-stays-root .tacbe-avail-toggle > summary {
	list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px;
	font-size: 1.45rem; font-weight: 600; margin: 0 0 18px; font-family: var(--tacbe-font-heading); color: var(--tacbe-text);
}
.tac-stays-root .tacbe-avail-toggle > summary::-webkit-details-marker { display: none; }
.tac-stays-root .tacbe-avail-toggle > summary::after {
	content: "Hide calendar"; margin-left: 14px; font-family: var(--tacbe-font-body);
	font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase;
	color: var(--tacbe-muted-ink); border: 1px solid var(--tacbe-line); border-radius: 999px; padding: 7px 14px;
}
.tac-stays-root .tacbe-avail-toggle:not([open]) > summary::after { content: "Show calendar"; }
.tac-stays-root .tacbe-avail-toggle > summary span { flex: 0 0 auto; }

/* Good to know: two-up fact grid. */
.tac-stays-root .tacbe-gtk { display: grid; grid-template-columns: 1fr 1fr; gap: 26px 48px; }
.tac-stays-root .tacbe-gtk-label { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--tacbe-muted-ink); margin-bottom: 6px; }
.tac-stays-root .tacbe-gtk-value { font-size: 1.02rem; color: var(--tacbe-text); }
@media (max-width: 560px) { .tac-stays-root .tacbe-gtk { grid-template-columns: 1fr; gap: 20px; } }

/* Neighbourhood intro line above the map. */
.tac-stays-root .tacbe-hood-intro { margin: 0 0 16px; color: var(--tacbe-muted-ink); line-height: 1.6; }

/* Booking card: price-average header, single Reserve action. */
.tac-stays-root .tacbe-bk-head { margin-bottom: 18px; }
.tac-stays-root .tacbe-bk-price { font-size: 1.7rem; font-weight: 700; color: var(--tacbe-text); font-family: var(--tacbe-font-heading); }
.tac-stays-root .tacbe-bk-unit { font-size: .95rem; color: var(--tacbe-muted-ink); margin-left: 6px; }
.tac-stays-root .tacbe-bk-sub { font-size: .85rem; color: var(--tacbe-muted-ink); margin-top: 4px; min-height: 1em; }
.tac-stays-root .tacbe-bk-guests { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; }
.tac-stays-root .tacbe-bk-guests label { font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; color: var(--tacbe-muted-ink); }
.tac-stays-root .tacbe-bk-guests input {
	padding: 12px 14px; border: 1px solid var(--tacbe-line); border-radius: calc(var(--tacbe-radius) * 0.7);
	font: inherit; background: var(--tacbe-surface, #fff); color: var(--tacbe-text); width: 100%;
}
.tac-stays-root .tacbe-quote-box .tacbe-bk-reserve { margin-top: 16px; text-transform: none; letter-spacing: .01em; }
.tac-stays-root .tacbe-quote-box .tacbe-bk-reserve[disabled] {
	background: var(--tacbe-paper); color: var(--tacbe-muted-ink);
	border: 1px solid var(--tacbe-line); cursor: default;
}

/* v1.5.1 — availability calendar month paging (prev/next arrows). */
.tac-stays-root .tacbe-cal-display { position: relative; }
.tac-stays-root .tacbe-cal-page {
	position: absolute; top: -4px; z-index: 2;
	width: 34px; height: 34px; padding: 0;
	border: 1px solid var(--tacbe-line); border-radius: 999px; background: var(--tacbe-surface, #fff);
	color: var(--tacbe-text); cursor: pointer; font-size: 18px; line-height: 1;
	display: flex; align-items: center; justify-content: center;
}
.tac-stays-root .tacbe-cal-page.prev { left: 0; }
.tac-stays-root .tacbe-cal-page.next { right: 0; }
.tac-stays-root .tacbe-cal-page:hover:not([disabled]) { border-color: var(--tacbe-brand); }
.tac-stays-root .tacbe-cal-page[disabled] { opacity: .3; cursor: default; }

/* Listing video (YouTube embed between the map and Good to know) */
.tacbe-video { position: relative; width: 100%; aspect-ratio: 16 / 9; border-radius: 12px; overflow: hidden; background: #000; }
.tacbe-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block; }
/* Fallback for browsers without aspect-ratio support */
@supports not (aspect-ratio: 16 / 9) {
	.tacbe-video { height: 0; padding-bottom: 56.25%; }
}

/* ── Card CTA button (optional, via cta="true" on the search/grid/collection shortcodes) ── */
.tac-stays-root .tacbe-card-foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	border-top: 1px solid var(--tacbe-line);
	padding-top: 12px;
}
.tac-stays-root .tacbe-card-foot .tacbe-card-price { border-top: none; padding-top: 0; }
.tac-stays-root .tacbe-card-cta {
	flex: 0 0 auto;
	/* Stay to the right whether or not the price cell is present (in dates mode
	   the price cell is hidden until a quote runs). */
	margin-left: auto;
	padding: 8px 18px;
	font-weight: 600;
	font-size: .92rem;
	white-space: nowrap;
	text-decoration: none;
}

/* ── Pagination (optional, via per_page on the search/grid/collection shortcodes) ── */
.tac-stays-root .tacbe-pager {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 6px;
	margin: 24px 0 4px;
}
.tac-stays-root .tacbe-pager-btn {
	min-width: 38px;
	height: 38px;
	padding: 0 10px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--tacbe-line);
	border-radius: var(--tacbe-radius, 8px);
	background: var(--tacbe-paper, transparent);
	color: var(--tacbe-text, inherit);
	font: inherit;
	font-size: .95rem;
	line-height: 1;
	cursor: pointer;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.tac-stays-root .tacbe-pager-btn:hover { border-color: var(--tacbe-brand); }
.tac-stays-root .tacbe-pager-btn.is-current {
	background: var(--tacbe-brand);
	border-color: var(--tacbe-brand);
	color: var(--tacbe-btn-text, #fff);
	font-weight: 600;
	cursor: default;
}
.tac-stays-root .tacbe-pager-btn[disabled] { opacity: .4; cursor: default; }
.tac-stays-root .tacbe-pager-gap { padding: 0 4px; color: var(--tacbe-muted-ink); }

/* ── Search bar only, for overlaying on a hero ([tac_searchbar]) ── */
.tac-stays-root .tacbe-bar-only { background: transparent; }
.tac-stays-root .tacbe-bar-only .tacbe-grid,
.tac-stays-root .tacbe-bar-only .tacbe-mapview,
.tac-stays-root .tacbe-bar-only .tacbe-controls,
.tac-stays-root .tacbe-bar-only .tacbe-result-count,
.tac-stays-root .tacbe-bar-only .tacbe-hoods-panel,
.tac-stays-root .tacbe-bar-only .tacbe-filterpanel,
.tac-stays-root .tacbe-bar-only .tacbe-loader,
.tac-stays-root .tacbe-bar-only .tacbe-currency-foot,
.tac-stays-root .tacbe-bar-only .tacbe-search-pill { display: none !important; }
/* Keep the bar visible at every width when it is the only thing on show, and
   shrink-wrap it to its content so the white background runs from Where to the
   Search button rather than stretching the full page width. Better for an
   overlay on a hero image. */
.tac-stays-root .tacbe-bar-only .tacbe-searchbar {
	display: inline-flex;
	width: auto;
	max-width: 100%;
	flex-wrap: wrap;
	margin-bottom: 0;
}
.tac-stays-root .tacbe-bar-only .tacbe-sb-field { flex: 0 0 auto; }

/* ── Inline property enquiry under the booking box ── */
.tac-stays-root .tacbe-bk-enquire { margin-top: 8px; }
.tac-stays-root .tacbe-enquiry-slot { margin-top: 10px; }
/* Enquiry mode: the form replaces the booking controls so the panel stays short
   and fully scrollable, instead of stacking below them and running past the
   bottom of a sticky booking column. */
.tac-stays-root .tacbe-quote-box.tacbe-enquiry-open .tacbe-bk-head,
.tac-stays-root .tacbe-quote-box.tacbe-enquiry-open .tacbe-daterange,
.tac-stays-root .tacbe-quote-box.tacbe-enquiry-open .tacbe-rangecal,
.tac-stays-root .tacbe-quote-box.tacbe-enquiry-open .tacbe-bk-guests,
.tac-stays-root .tacbe-quote-box.tacbe-enquiry-open .tacbe-quote-result,
.tac-stays-root .tacbe-quote-box.tacbe-enquiry-open .tacbe-bk-reserve,
.tac-stays-root .tacbe-quote-box.tacbe-enquiry-open .tacbe-currency-foot { display: none !important; }
.tac-stays-root .tacbe-enquiry-row { display: flex; gap: 10px; }
.tac-stays-root .tacbe-enquiry-row > * { flex: 1 1 0; min-width: 0; }
.tac-stays-root .tacbe-enquiry-datelabel {
	display: flex;
	flex-direction: column;
	gap: 4px;
	font-size: .8rem;
	color: var(--tacbe-muted-ink);
}

/* ============================================================
   Search display modes: cards / map + cards (split) / full map
   Driven by data-view on .tacbe-search, set by the segmented
   switch. Everything tracks the operator brand vars.
   ============================================================ */
.tac-stays-root .tacbe-results { width: 100%; }
.tac-stays-root .tacbe-splitmap { display: none; }
.tac-stays-root .tacbe-mapview { display: none; }

/* Full map view */
.tac-stays-root .tacbe-search[data-view="full"] .tacbe-results { display: none; }
.tac-stays-root .tacbe-search[data-view="full"] .tacbe-mapview { display: block; }

/* Split view: sticky map on the left, scrolling cards on the right */
.tac-stays-root .tacbe-search[data-view="split"] .tacbe-results {
	display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
	gap: 24px; align-items: start;
}
.tac-stays-root .tacbe-search[data-view="split"] .tacbe-splitmap {
	display: block; position: sticky; top: 16px; align-self: start;
}
.tac-stays-root .tacbe-splitmap-canvas {
	height: calc(100vh - 32px); min-height: 480px; width: 100%;
	border-radius: 14px; overflow: hidden; border: 1px solid var(--tacbe-line);
}
/* Neutral tile tint so the brand price pins carry the colour, not the map.
   Scoped to the tile pane, so markers and popups keep their full colour. */
.tac-stays-root .tacbe-splitmap-canvas .leaflet-tile-pane { filter: grayscale(1) brightness(1.04) contrast(.92) sepia(.04); }
/* The cards column is narrower in split, so let cards pack tighter */
.tac-stays-root .tacbe-search[data-view="split"] .tacbe-grid {
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 24px 18px;
}

/* Segmented view switch (sits at the right of the control row) */
.tac-stays-root .tacbe-viewseg { display: inline-flex; margin-left: auto; border: 1px solid var(--tacbe-line); border-radius: 999px; overflow: hidden; }
.tac-stays-root .tacbe-viewseg-btn { border: 0; background: transparent; font: inherit; font-size: .92rem; line-height: 1; color: var(--tacbe-brand); padding: 9px 16px; cursor: pointer; }
.tac-stays-root .tacbe-viewseg-btn + .tacbe-viewseg-btn { border-left: 1px solid var(--tacbe-line); }
.tac-stays-root .tacbe-viewseg-btn:hover { background: rgba(10,22,40,0.05); }
.tac-stays-root .tacbe-viewseg-btn.is-active { background: var(--tacbe-brand, #1b2330); color: #fff; }

/* Hover link between a card and its pin (split view) */
.tac-stays-root .tacbe-card.is-map-active { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(10,22,40,0.16); }
.tacbe-price-pin-bubble.is-pin-active { background: var(--tacbe-accent, #a9743f); transform: translate(-50%,-100%) scale(1.12); z-index: 1000; }

/* Mobile floating Map / List button + full-map overlay */
.tac-stays-root .tacbe-mobmap { display: none; }
@media (max-width: 860px) {
	/* Two columns will not fit a phone, so split shows the cards and the map is
	   reached through the floating button as a full-screen overlay. */
	.tac-stays-root .tacbe-search[data-view="split"] .tacbe-results { display: block; }
	.tac-stays-root .tacbe-search[data-view="split"] .tacbe-splitmap { display: none; }
	.tac-stays-root .tacbe-viewseg { display: none; }
	.tac-stays-root .tacbe-search[data-mapmode="all"] .tacbe-mobmap,
	.tac-stays-root .tacbe-search[data-mapmode="split"] .tacbe-mobmap,
	.tac-stays-root .tacbe-search[data-mapmode="full"] .tacbe-mobmap {
		display: inline-flex; align-items: center; gap: 8px;
		position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 1200;
		background: var(--tacbe-brand, #1b2330); color: #fff; border: 0; border-radius: 999px;
		padding: 13px 24px; font: inherit; font-size: .95rem; font-weight: 600;
		box-shadow: 0 6px 20px rgba(10,22,40,.32); cursor: pointer;
	}
	.tac-stays-root .tacbe-search.tacbe-mobmap-open .tacbe-mapview { display: block; position: fixed; inset: 0; z-index: 1100; background: var(--tacbe-surface, #fff); }
	.tac-stays-root .tacbe-search.tacbe-mobmap-open .tacbe-mapview-canvas { height: 100vh; border-radius: 0; border: 0; }
}

/* Grid-only and bar-only placements never show a map or the switch */
.tac-stays-root .tacbe-grid-only .tacbe-splitmap,
.tac-stays-root .tacbe-grid-only .tacbe-mapview,
.tac-stays-root .tacbe-grid-only .tacbe-viewseg,
.tac-stays-root .tacbe-grid-only .tacbe-mobmap,
.tac-stays-root .tacbe-bar-only .tacbe-splitmap,
.tac-stays-root .tacbe-bar-only .tacbe-mapview,
.tac-stays-root .tacbe-bar-only .tacbe-mobmap { display: none !important; }

/* ============================================================
   Card alignment. Each card is a flex column stretched to the
   row height (grid stretches items), the body grows to fill,
   and the price / View foot is pinned to the bottom so a longer
   title never pushes it up. The title height is then equalised
   per row in JS so the spec and price lines also line up.
   ============================================================ */
.tac-stays-root .tacbe-card { display: flex; flex-direction: column; }
.tac-stays-root .tacbe-card-body { display: flex; flex-direction: column; flex: 1 1 auto; }
.tac-stays-root .tacbe-card-foot { margin-top: auto; }
.tac-stays-root .tacbe-card-body > .tacbe-card-price { margin-top: auto; }

/* ============================================================
   Optional icon spec row (Look & feel > Spec row). Beds, baths
   and guests as Lucide icons in place of words. Icons inherit
   the surrounding text colour and size in em.
   ============================================================ */
.tac-stays-root .tacbe-spec-icons { display: flex; align-items: center; flex-wrap: wrap; gap: 14px; }
.tac-stays-root .tacbe-spec-item { display: inline-flex; align-items: center; gap: 5px; }
.tac-stays-root .tacbe-spec-svg { width: 1.05em; height: 1.05em; flex: none; opacity: .8; }
.tac-stays-root .tacbe-spec-n { font-variant-numeric: tabular-nums; }

/* ============================================================
   Google maps card popup (custom overlay, no InfoWindow chrome).
   Positioned by JS at the pin point; sits centred just above it.
   The card fills it edge to edge, so the image is flush top/sides.
   ============================================================ */
.tac-stays-root .tacbe-gpopup {
	position: absolute; width: 248px; background: var(--tacbe-surface, #fff); border-radius: 14px;
	overflow: hidden; box-shadow: 0 8px 30px rgba(0,0,0,.30);
	transform: translate(-50%, calc(-100% - 18px)); pointer-events: auto; cursor: default;
}
.tac-stays-root .tacbe-gpopup .tacbe-map-card { width: 248px; }
.tac-stays-root .tacbe-gpopup-close {
	position: absolute; top: 8px; right: 8px; width: 24px; height: 24px; padding: 0; border: 0;
	display: flex; align-items: center; justify-content: center; border-radius: 999px;
	background: rgba(0,0,0,.32); color: #fff; font-size: 18px; line-height: 1; cursor: pointer; z-index: 2;
}
.tac-stays-root .tacbe-gpopup-close:hover { background: rgba(0,0,0,.5); color: #fff; }
