/* TourKit booking widget + booking card. Every visual value is a --booking-* token, so a site
   (or the Elementor widget controls) can restyle it without touching this file. */
.tkb-root {
	--booking-primary: #0f766e;
	--booking-secondary: #f59e0b;
	--booking-text: #1c2127;
	--booking-muted: #5f6b76;
	--booking-background: #ffffff;
	--booking-surface: #f6f7f9;
	--booking-border: #e3e6ea;
	--booking-danger: #b32d2e;
	--booking-sold-out: #b32d2e;
	--booking-radius: 14px;
	--booking-font-family: var(--e-global-typography-text-font-family, inherit);
	--booking-heading-font-family: var(--e-global-typography-primary-font-family, var(--booking-font-family));
	--booking-padding: 14px;
	--booking-gap: 14px;
	--booking-button-bg: var(--booking-primary);
	--booking-button-color: #ffffff;
	--booking-button-hover-bg: color-mix(in srgb, var(--booking-button-bg) 85%, #000);
	--booking-button-radius: 999px;
	--booking-button-padding: 14px 22px;
	--booking-day-size: 42px;
	--booking-day-available: color-mix(in srgb, var(--booking-primary) 12%, #fff);
	--booking-day-selected: var(--booking-primary);
	--booking-day-selected-text: #ffffff;
	box-sizing: border-box;
	font-family: var(--booking-font-family);
	color: var(--booking-text);
	background: var(--booking-background);
	border-radius: var(--booking-radius);
	padding: var(--booking-padding);
	display: flex;
	flex-direction: column;
	gap: var(--booking-gap);
	width: 100%;
	max-width: 980px;
	margin-inline: auto;
	line-height: 1.4;
	container-type: inline-size;
}

.tkb-root *, .tkb-root *::before, .tkb-root *::after { box-sizing: border-box; }
/* A centered Elementor column sizes its widgets to their content, and this widget has no size of its own. */
.elementor-widget:has(.tkb-root) { width: 100%; }
.tkb-root :where(button, input, select, textarea) { font: inherit; color: inherit; }
.tkb-muted { color: var(--booking-muted); font-size: 0.9em; }
.tkb-loading, .tkb-cal-status { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 0; color: var(--booking-muted); }
.tkb-loading { padding: 24px 12px; }
.tkb-cal-status { padding-block: 6px; font-size: 0.92em; }
.tkb-side-wait { display: flex; flex: 1; flex-direction: column; gap: var(--booking-gap); }
.tkb-side-loading { flex: 1; min-height: 110px; }
.tkb-flow-side:has(.tkb-side-loading) { align-self: stretch; }
.tkb-cal-wrap.is-loading .tkb-day.is-empty { background: var(--booking-surface); animation: tkbPulse 1.4s ease-in-out infinite; }
@keyframes tkbPulse { 0%, 100% { opacity: 0.4; } 50% { opacity: 0.85; } }
@media (prefers-reduced-motion: reduce) { .tkb-cal-wrap.is-loading .tkb-day.is-empty { animation: none; } }
.tkb-step { display: flex; flex-direction: column; gap: 8px; }
.tkb-step-title, .tkb-title { margin: 0; font-size: 1.1em; font-weight: 700; color: var(--booking-text); }
.tkb-step { scroll-margin-block: 24px; }
.tkb-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* Layout: the calendar beside the choices, so the whole flow fits one screen */
.tkb-flow { display: flex; flex-direction: column; gap: var(--booking-gap); }
.tkb-flow-side { display: flex; flex-direction: column; gap: var(--booking-gap); min-width: 0; }
.tkb-flow-main { min-width: 0; }
.tkb-flow-hint { display: none; }
@container (min-width: 760px) {
	.tkb-flow { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); align-items: start; gap: 24px; }
	.tkb-flow-hint { display: block; margin: 0; padding: 18px; text-align: center; background: var(--booking-surface); border-radius: var(--booking-radius); }
}

/* Tour picker */
.tkb-tours { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
.tkb-tour { display: flex; flex-direction: column; gap: 4px; text-align: start; padding: 12px; border: 1px solid var(--booking-border); border-radius: var(--booking-radius); background: var(--booking-background); cursor: pointer; }
.tkb-tour img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: calc(var(--booking-radius) - 6px); }
.tkb-tour.is-selected { border-color: var(--booking-primary); box-shadow: 0 0 0 2px var(--booking-primary); }
.tkb-tour-name { font-weight: 700; }
.tkb-tour-price { color: var(--booking-primary); font-weight: 600; }

/* Calendar */
.tkb-cal-wrap { display: flex; flex-direction: column; gap: 8px; padding: 10px; border: 1px solid var(--booking-border); border-radius: var(--booking-radius); }
.tkb-cal-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.tkb-cal-title { font-size: 1.1em; text-align: center; }
.tkb-nav { flex: none; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--booking-border); background: var(--booking-background); cursor: pointer; font-size: 20px; line-height: 1; }
.tkb-nav:hover:not(:disabled) { border-color: var(--booking-primary); }
.tkb-nav:disabled { opacity: 0.35; cursor: default; }
.tkb-cal { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.tkb-dow { padding-block-end: 2px; font-size: 0.85em; font-weight: 600; color: var(--booking-muted); text-align: center; }
.tkb-day { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; min-height: 52px; padding: 4px 2px; border: 1px solid transparent; border-radius: calc(var(--booking-radius) - 4px); background: transparent; color: var(--booking-text); line-height: 1.2; }
.tkb-day-num { font-weight: 700; font-size: 1.05em; }
.tkb-day-note { max-width: 100%; font-size: 0.75em; text-align: center; white-space: normal; }
.tkb-day.is-outside { visibility: hidden; }
.tkb-day.is-empty { color: var(--booking-muted); opacity: 0.55; }
.tkb-day.is-empty .tkb-day-num { font-weight: 400; }
.tkb-day.is-available { background: var(--booking-day-available); cursor: pointer; transition: transform 0.12s ease, box-shadow 0.12s ease; }
.tkb-day.is-available:hover { box-shadow: inset 0 0 0 2px var(--booking-primary); transform: translateY(-1px); }
.tkb-day.is-soldout { background: repeating-linear-gradient(-45deg, var(--booking-surface), var(--booking-surface) 6px, transparent 6px, transparent 12px); border-color: var(--booking-border); cursor: not-allowed; }
.tkb-day.is-soldout .tkb-day-num { color: var(--booking-muted); text-decoration: line-through; }
.tkb-day.is-soldout .tkb-day-note { color: var(--booking-sold-out); font-weight: 700; letter-spacing: 0.02em; line-height: 1.1; }
.tkb-day.is-today { border-color: var(--booking-muted); }
.tkb-day.is-selected, .tkb-day.is-selected:hover { background: var(--booking-day-selected); color: var(--booking-day-selected-text); box-shadow: none; }
.tkb-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 0.85em; color: var(--booking-muted); }
.tkb-legend span { display: inline-flex; align-items: center; gap: 6px; }
.tkb-swatch { width: 14px; height: 14px; border-radius: 4px; border: 1px solid var(--booking-border); }
.tkb-swatch.is-available { background: var(--booking-day-available); }
.tkb-swatch.is-soldout { background: repeating-linear-gradient(-45deg, var(--booking-sold-out), var(--booking-sold-out) 2px, transparent 2px, transparent 4px); }

/* Small month */
.tkb-view-compact { max-width: 400px; margin-inline: auto; width: 100%; }
.tkb-view-compact .tkb-cal { gap: 4px; justify-items: center; }
.tkb-view-compact .tkb-day { width: var(--booking-day-size); min-height: 0; height: var(--booking-day-size); max-width: 100%; padding: 0; border-radius: 50%; }
.tkb-view-compact .tkb-day.is-available .tkb-day-note { display: none; }
.tkb-view-compact .tkb-day-note { font-size: 0.5em; }
.tkb-view-compact .tkb-day.is-soldout { background: var(--booking-surface); }
.tkb-view-compact .tkb-day.is-soldout .tkb-day-num { font-size: 0.8em; }

/* Week */
.tkb-view-week .tkb-day { min-height: 72px; }

/* Date list */
.tkb-list { display: flex; flex-direction: column; gap: 8px; }
.tkb-row { display: flex; align-items: center; gap: 14px; width: 100%; padding: 10px 14px; border: 1px solid var(--booking-border); border-radius: calc(var(--booking-radius) - 4px); background: var(--booking-background); color: var(--booking-text); text-align: start; cursor: pointer; transition: border-color 0.12s ease; }
.tkb-row:hover:not(.is-soldout) { border-color: var(--booking-primary); }
.tkb-row-date { flex: none; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: calc(var(--booking-radius) - 6px); background: var(--booking-day-available); line-height: 1.1; }
.tkb-row-date strong { font-size: 1.2em; }
.tkb-row-date small { font-size: 0.75em; }
.tkb-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.tkb-row-end { flex: none; font-weight: 700; color: var(--booking-text); }
.tkb-row.is-soldout { cursor: not-allowed; background: var(--booking-surface); }
.tkb-row.is-soldout .tkb-row-date { background: transparent; color: var(--booking-muted); }
.tkb-row.is-selected { border-color: var(--booking-primary); box-shadow: 0 0 0 1px var(--booking-primary); }
.tkb-row.is-selected .tkb-row-date { background: var(--booking-day-selected); color: var(--booking-day-selected-text); }
.tkb-badge-soldout { flex: none; padding: 3px 12px; border-radius: 999px; border: 1px solid var(--booking-sold-out); color: var(--booking-sold-out); font-size: 0.85em; font-weight: 700; }

/* Times */
.tkb-chosen { display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 10px 14px; border-radius: calc(var(--booking-radius) - 4px); background: var(--booking-day-available); color: var(--booking-text); }
.tkb-chosen-when { font-weight: 700; }
.tkb-chosen-when bdi { white-space: nowrap; }
.tkb-slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 6px; }
.tkb-slot { display: flex; flex-direction: column; align-items: center; gap: 0; padding: 6px 8px; border: 1px solid var(--booking-border); border-radius: calc(var(--booking-radius) - 4px); background: var(--booking-background); cursor: pointer; }
.tkb-slot strong { font-size: 1.1em; }
.tkb-slot.is-selected { border-color: var(--booking-primary); background: color-mix(in srgb, var(--booking-primary) 10%, #fff); box-shadow: 0 0 0 1px var(--booking-primary); }
.tkb-slot:disabled { opacity: 0.6; cursor: not-allowed; background: var(--booking-surface); }
.tkb-slot.is-soldout .tkb-muted { color: var(--booking-sold-out); font-weight: 700; }
.tkb-slot.is-soldout strong { text-decoration: line-through; }

/* Participants */
.tkb-qty-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.tkb-step-people.is-single { display: grid; grid-template-columns: auto auto; justify-content: start; align-items: center; gap: 0 16px; }
.tkb-step-people.is-single .tkb-qty-row { display: contents; }
.tkb-step-people.is-single .tkb-stepper { grid-column: 2; grid-row: 1 / span 2; }
.tkb-step-people.is-single .tkb-qty-label { grid-column: 1; grid-row: 2; }
.tkb-step-people.is-single > p, .tkb-step-people.is-single > label { grid-column: 1 / -1; margin: 6px 0 0; }
.tkb-qty-label { display: flex; flex-direction: column; }
.tkb-stepper { display: inline-flex; align-items: center; gap: 2px; padding: 3px; border-radius: 999px; background: var(--booking-surface); }
.tkb-stepper button { width: 34px; height: 34px; border-radius: 50%; border: 0; background: var(--booking-primary); color: var(--booking-day-selected-text); cursor: pointer; font-size: 20px; line-height: 1; transition: transform 0.12s ease; }
.tkb-stepper button:hover:not(:disabled) { transform: scale(1.06); }
.tkb-stepper button:disabled { background: var(--booking-border); color: var(--booking-muted); cursor: default; }
.tkb-stepper output { min-width: 30px; text-align: center; font-size: 1.1em; font-weight: 700; }
.tkb-check { display: flex; align-items: center; gap: 8px; cursor: pointer; }

/* Form */
.tkb-field { display: flex; flex-direction: column; gap: 4px; }
.tkb-label { font-weight: 600; font-size: 0.95em; }
.tkb-root input[type="text"], .tkb-root input[type="tel"], .tkb-root input[type="email"], .tkb-root input[type="number"], .tkb-root input[type="date"], .tkb-root select, .tkb-root textarea {
	width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--booking-border); border-radius: calc(var(--booking-radius) - 6px); background: var(--booking-background);
}
.tkb-root input:focus-visible, .tkb-root select:focus-visible, .tkb-root textarea:focus-visible, .tkb-root button:focus-visible { outline: 2px solid var(--booking-primary); outline-offset: 2px; }
.tkb-field.has-error input, .tkb-field.has-error select, .tkb-field.has-error textarea { border-color: var(--booking-danger); }
.tkb-field-error, .tkb-error { color: var(--booking-danger); font-size: 0.9em; }
.tkb-error { background: color-mix(in srgb, var(--booking-danger) 8%, #fff); padding: 10px 12px; border-radius: calc(var(--booking-radius) - 6px); }
/* Choice pills */
.tkb-root .tkb-pills + input { margin-block-start: 8px; }
.tkb-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.tkb-pill { display: inline-flex; align-items: center; gap: 0; min-height: 30px; padding: 2px 12px; font-size: 0.88em; line-height: 1.2; border: 1.5px solid var(--booking-border); border-radius: 999px; background: var(--booking-background); color: var(--booking-text); cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.12s ease; }
.tkb-pill:hover { border-color: var(--booking-primary); }
.tkb-pill:active { transform: scale(0.97); }
.tkb-pill-mark { display: inline-block; width: 0; height: 5px; margin-inline-end: 0; border-bottom: 2px solid transparent; border-left: 2px solid transparent; transform: rotate(-45deg) translate(1px, -1px); }
.tkb-pill.is-selected { background: var(--booking-primary); border-color: var(--booking-primary); color: var(--booking-day-selected-text); padding-inline: 6px; }
.tkb-pill.is-selected .tkb-pill-mark { width: 8px; margin-inline-end: 4px; border-color: currentColor; }
.tkb-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tkb-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border: 1px solid var(--booking-border); border-radius: 999px; cursor: pointer; }
.tkb-chip input { margin: 0; }
.tkb-chip.is-selected { border-color: var(--booking-primary); background: color-mix(in srgb, var(--booking-primary) 10%, #fff); }

/* Summary and button */
.tkb-summary-title { margin: 0; font-size: 1em; font-weight: 700; color: var(--booking-text); }
.tkb-checkout { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; background: var(--booking-surface); border-radius: var(--booking-radius); }
.tkb-summary-box { display: flex; flex-direction: column; gap: 0; font-size: 0.92em; }
.tkb-total { margin-block-start: 4px; font-size: 1.3em; font-weight: 700; color: var(--booking-text); }
.tkb-total.is-updating { opacity: 0.45; }
.tkb-checkout-hint { margin: 0; text-align: center; font-size: 0.82em; }
.tkb-root .tkb-submit[aria-busy="true"] { opacity: 1; gap: 10px; cursor: progress; }
.tkb-dots { display: inline-flex; align-items: center; gap: 5px; }
.tkb-dots i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; animation: tkbDot 1s ease-in-out infinite; }
.tkb-dots i:nth-child(2) { animation-delay: 0.15s; }
.tkb-dots i:nth-child(3) { animation-delay: 0.3s; }
@keyframes tkbDot { 0%, 100% { opacity: 0.3; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-4px); } }
@media (prefers-reduced-motion: reduce) { .tkb-dots i { animation: none; } }
.tkb-fly { position: fixed; z-index: 100001; pointer-events: none; border-radius: 50%; background: #fff center/cover no-repeat; box-shadow: 0 18px 40px -12px rgba(0, 0, 0, 0.4); }
.tkb-fly.is-plain { background: var(--booking-primary, #0f766e); }
.tkb-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 10px 18px; border-radius: var(--booking-button-radius); border: 1px solid var(--booking-border); background: var(--booking-background); color: var(--booking-text); text-decoration: none; cursor: pointer; }
.tkb-btn-primary { background: var(--booking-button-bg); border-color: var(--booking-button-bg); color: var(--booking-button-color); }
.tkb-btn-primary:hover { background: var(--booking-button-hover-bg); }
.tkb-btn-whatsapp { background: #25d366; border-color: #25d366; color: #fff; }
.tkb-btn-ghost { background: transparent; }
.tkb-btn:disabled { opacity: 0.6; cursor: wait; }
.tkb-submit { width: 100%; padding: 10px 22px; font-size: 1.05em; font-weight: 700; }

/* Booking card (thank-you, my booking) */
.tourkit-booking-view { border: 1px solid var(--booking-border); margin-block: 16px; }
.tkb-summary { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 0; }
.tkb-summary dt { color: var(--booking-muted); }
.tkb-summary dd { margin: 0; font-weight: 600; }
.tkb-instructions, .tkb-note { background: var(--booking-surface); padding: 12px 14px; border-radius: calc(var(--booking-radius) - 4px); }
.tkb-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.tkb-cancel { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.tkb-standalone { margin: 0; background: #f4f5f7; }
.tkb-page { max-width: 720px; margin: 24px auto; padding: 0 16px; }

/* Themes and site kits style plain buttons (often a white text on hover), so every state is stated here. */
.tkb-root.tkb-root button, .tkb-root.tkb-root input, .tkb-root.tkb-root select, .tkb-root.tkb-root textarea { font-family: inherit; letter-spacing: inherit; text-transform: none; }
.tkb-root .tkb-step-title, .tkb-root .tkb-summary-title, .tkb-root .tkb-title, .tkb-root .tkb-cal-title { font-family: var(--booking-heading-font-family); margin: 0; }
.tkb-root .tkb-day.is-available, .tkb-root .tkb-day.is-available:focus { background: var(--booking-day-available); color: var(--booking-text); }
.tkb-root .tkb-day.is-available:hover, .tkb-root .tkb-day.is-available:active { background: color-mix(in srgb, var(--booking-primary) 24%, var(--booking-background)); color: var(--booking-text); box-shadow: inset 0 0 0 2px var(--booking-primary); }
.tkb-root .tkb-day.is-soldout, .tkb-root .tkb-day.is-soldout:hover, .tkb-root .tkb-day.is-soldout:focus { background: repeating-linear-gradient(-45deg, var(--booking-surface), var(--booking-surface) 6px, transparent 6px, transparent 12px); color: var(--booking-text); box-shadow: none; }
.tkb-root .tkb-day.is-selected, .tkb-root .tkb-day.is-selected:hover, .tkb-root .tkb-day.is-selected:focus { background: var(--booking-day-selected); color: var(--booking-day-selected-text); box-shadow: none; }
.tkb-root .is-special { --booking-special-soft: linear-gradient(135deg, color-mix(in srgb, var(--booking-special) 10%, #fff) 0%, color-mix(in srgb, var(--booking-special) 36%, #fff) 48%, color-mix(in srgb, var(--booking-special) 14%, #fff) 100%); --booking-special-strong: linear-gradient(135deg, color-mix(in srgb, var(--booking-special) 45%, #fff) 0%, color-mix(in srgb, var(--booking-special) 85%, #fff) 50%, color-mix(in srgb, var(--booking-special) 55%, #fff) 100%); }
.tkb-root .tkb-swatch.is-special { background: var(--booking-special-strong); border-color: var(--booking-special); }
.tkb-root .tkb-day.is-special, .tkb-root .tkb-day.is-special:focus { background: var(--booking-special-soft); border-color: var(--booking-special); box-shadow: none; color: #2b2410; }
.tkb-root .tkb-day.is-special:hover, .tkb-root .tkb-day.is-special:active { background: var(--booking-special-soft); box-shadow: inset 0 0 0 2px var(--booking-special); color: #2b2410; }
.tkb-root .tkb-day.is-special .tkb-day-note { font-weight: 700; }
.tkb-root .tkb-day.is-special.is-selected, .tkb-root .tkb-day.is-special.is-selected:hover, .tkb-root .tkb-day.is-special.is-selected:focus { background: var(--booking-special-strong); border-color: var(--booking-special); box-shadow: inset 0 0 0 1px var(--booking-special); color: #2b2410; }
.tkb-root .tkb-nav, .tkb-root .tkb-nav:hover, .tkb-root .tkb-nav:focus { background: var(--booking-background); color: var(--booking-text); padding: 0; }
.tkb-root .tkb-tour, .tkb-root .tkb-tour:hover, .tkb-root .tkb-tour:focus, .tkb-root .tkb-slot, .tkb-root .tkb-slot:hover, .tkb-root .tkb-slot:focus, .tkb-root .tkb-row, .tkb-root .tkb-row:hover, .tkb-root .tkb-row:focus, .tkb-root .tkb-pill, .tkb-root .tkb-pill:hover, .tkb-root .tkb-pill:focus { background: var(--booking-background); color: var(--booking-text); }
.tkb-root .tkb-tour:hover, .tkb-root .tkb-slot:hover:not(:disabled), .tkb-root .tkb-row:hover:not(.is-soldout) { border-color: var(--booking-primary); }
.tkb-root .tkb-slot.is-selected, .tkb-root .tkb-slot.is-selected:hover, .tkb-root .tkb-slot.is-selected:focus { background: color-mix(in srgb, var(--booking-primary) 10%, var(--booking-background)); color: var(--booking-text); }
.tkb-root .tkb-slot.is-special:not(:disabled), .tkb-root .tkb-slot.is-special:not(:disabled):hover { background: var(--booking-special-soft); border-color: var(--booking-special); color: #2b2410; }
.tkb-root .tkb-slot.is-special.is-selected { box-shadow: 0 0 0 2px var(--booking-special); }
.tkb-root .tkb-row.is-special:not(.is-soldout), .tkb-root .tkb-row.is-special:not(.is-soldout):hover { border-color: var(--booking-special); background: var(--booking-special-soft); color: #2b2410; }
.tkb-root .tkb-row.is-special:not(.is-soldout) .tkb-row-date { background: var(--booking-special-strong); }
.tkb-root .tkb-chosen.is-special { background: var(--booking-special-soft); box-shadow: inset 0 0 0 1px var(--booking-special); color: #2b2410; }
.tkb-slot-tag { font-size: 0.8em; font-weight: 700; }
.tkb-slot-price { font-size: 0.9em; font-weight: 600; }
.tkb-info { margin-block-start: 10px; padding: 12px 14px; border: 1px solid var(--booking-border); border-radius: calc(var(--booking-radius) - 4px); background: var(--booking-surface); }
.tkb-root .tkb-info.is-special { border-color: var(--booking-special); background: var(--booking-special-soft); }
.tkb-root .tkb-info-title { margin: 0 0 4px; font-family: var(--booking-heading-font-family); font-size: 1em; font-weight: 700; color: var(--booking-text); }
.tkb-root .tkb-info-text { margin: 0 0 4px; font-size: 0.92em; line-height: 1.5; white-space: pre-line; color: var(--booking-text); }
.tkb-root .tkb-slot:disabled, .tkb-root .tkb-slot:disabled:hover, .tkb-root .tkb-row.is-soldout, .tkb-root .tkb-row.is-soldout:hover { background: var(--booking-surface); color: var(--booking-text); }
.tkb-root .tkb-pill:hover, .tkb-root .tkb-pill:active { background: color-mix(in srgb, var(--booking-primary) 14%, var(--booking-background)); border-color: var(--booking-primary); color: var(--booking-text); }
.tkb-root .tkb-pill.is-selected, .tkb-root .tkb-pill.is-selected:hover, .tkb-root .tkb-pill.is-selected:active, .tkb-root .tkb-pill.is-selected:focus { background: var(--booking-primary); border-color: var(--booking-primary); color: var(--booking-day-selected-text); }
.tkb-root .tkb-stepper button, .tkb-root .tkb-stepper button:hover, .tkb-root .tkb-stepper button:focus { background: var(--booking-primary); color: var(--booking-day-selected-text); padding: 0; }
.tkb-root .tkb-stepper button:disabled, .tkb-root .tkb-stepper button:disabled:hover { background: var(--booking-border); color: var(--booking-muted); }
.tkb-root .tkb-btn-primary, .tkb-root .tkb-btn-primary:focus { background: var(--booking-button-bg); border-color: var(--booking-button-bg); color: var(--booking-button-color); }
.tkb-root .tkb-btn-primary:hover { background: var(--booking-button-hover-bg); border-color: var(--booking-button-hover-bg); color: var(--booking-button-color); }

/* Day cells follow the width they really have (a narrow column on a desktop product page too). */
@container (max-width: 460px) {
	.tkb-root .tkb-cal { gap: 3px; }
	.tkb-root .tkb-day { padding: 3px 0; }
	.tkb-root .tkb-day-note { font-size: 11.5px; line-height: 1.15; letter-spacing: -0.01em; }
	.tkb-root .tkb-day.is-soldout .tkb-day-note { font-size: 10.5px; letter-spacing: 0; }
	.tkb-root .tkb-view-compact .tkb-day.is-soldout .tkb-day-note { font-size: 7px; }
}
@container (max-width: 320px) {
	.tkb-root .tkb-cal-wrap { padding: 6px; }
	.tkb-root .tkb-cal { gap: 2px; }
	.tkb-root .tkb-day-note { font-size: 11px; }
	.tkb-root .tkb-day.is-soldout .tkb-day-note { font-size: 10px; }
}

@media (max-width: 480px) {
	.tkb-root { --booking-padding: 12px; --booking-day-size: 40px; }
	.tkb-root .tkb-cal-wrap { padding: 0; border: 0; }
	.tkb-root .tkb-cal { gap: 3px; }
	.tkb-day { min-height: 56px; }
	.tkb-summary { grid-template-columns: 1fr; }
	.tkb-summary dd { margin-bottom: 6px; }
}

/* Phone: a site's h3 size (30px on some themes) is too big for these small steps. A size set on the Elementor widget still wins. */
@media (max-width: 767px) {
	.tkb-root .tkb-step-title, .tkb-root .tkb-summary-title { font-size: 1.1em; line-height: 1.3; }
}

/* Floating button on a tour's product page: leads down to the calendar while it is out of sight.
   Doubled class: a theme's own button rules (hover, focus, pressed) must not repaint it. */
button.tkb-float.tkb-float {
	position: fixed;
	left: 50%;
	right: auto;
	bottom: var(--tkb-float-bottom, 16px);
	z-index: 9990;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	width: auto;
	margin: 0;
	padding: 13px 24px;
	border: 2px solid #fff;
	border-radius: 999px;
	background: color-mix(in srgb, var(--tkb-float-bg, #0f766e) 78%, #000);
	color: #fff;
	font-family: inherit;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.2;
	text-transform: none;
	letter-spacing: normal;
	white-space: nowrap;
	box-shadow: 0 10px 26px -8px rgba(0, 0, 0, .5), 0 0 0 1px rgba(0, 0, 0, .06);
	cursor: pointer;
	opacity: 0;
	pointer-events: none;
	transform: translate(-50%, 16px);
	transition: opacity .25s ease, transform .3s cubic-bezier(.22, 1, .36, 1), bottom .35s cubic-bezier(.22, 1, .36, 1);
	-webkit-tap-highlight-color: transparent;
}
button.tkb-float.tkb-float:hover,
button.tkb-float.tkb-float:focus,
button.tkb-float.tkb-float:active {
	background: color-mix(in srgb, var(--tkb-float-bg, #0f766e) 78%, #000);
	color: #fff;
	border-color: #fff;
	text-decoration: none;
	outline: none;
}
button.tkb-float.tkb-float.is-shown { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); animation: tkbFloatBreath 2.6s ease-in-out .6s infinite; }
button.tkb-float.tkb-float:focus-visible { outline: 3px solid #fff; outline-offset: 2px; box-shadow: 0 0 0 6px color-mix(in srgb, var(--tkb-float-bg, #0f766e) 78%, #000); }
.tkb-float-arrow { display: inline-block; animation: tkbFloatNudge 1.8s ease-in-out infinite; }
@keyframes tkbFloatNudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(3px); } }
@keyframes tkbFloatBreath { 0%, 100% { scale: 1; } 50% { scale: 1.05; } }
@media (max-width: 767px) {
	button.tkb-float.tkb-float { padding: 12px 22px; font-size: 15px; }
}
@media (prefers-reduced-motion: reduce) { button.tkb-float.tkb-float { transition: none; } button.tkb-float.tkb-float.is-shown, .tkb-float-arrow { animation: none; } }
