/**
 * Cubo Tour Master Custom Checkout Styles
 * Modern, Responsive, High-Converting UI
 * Accent Color: Navy Blue (#0f2a4a / #163b65)
 * Primary Font: Google Asap
 */

@import url('https://fonts.googleapis.com/css2?family=Asap:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400;1,600&display=swap');

:root {
	--cubo-font-family: 'Asap', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
	--cubo-accent: #1d4ed8;
	--cubo-accent-gradient: linear-gradient(135deg, #1e40af 0%, #2563eb 50%, #3b82f6 100%);
	--cubo-accent-hover: #1e40af;
	--cubo-accent-light: #eff6ff;
	--cubo-accent-border: #bfdbfe;
	--cubo-text-main: #0f172a;
	--cubo-text-muted: #64748b;
	--cubo-border-color: #e8eef5;
	--cubo-border-subtle: #f1f5f9;
	--cubo-bg-card: #ffffff;
	--cubo-bg-surface: #f8fafc;
	--cubo-success: #10b981;
	--cubo-danger: #ef4444;
	--cubo-warning: #f59e0b;
	--cubo-shadow-sm: 0 1px 3px 0 rgba(15, 23, 42, 0.04);
	--cubo-shadow-md: 0 10px 30px -5px rgba(15, 23, 42, 0.06), 0 2px 6px -1px rgba(15, 23, 42, 0.02);
	--cubo-shadow-lg: 0 16px 40px -6px rgba(15, 23, 42, 0.08), 0 4px 12px -2px rgba(15, 23, 42, 0.03);
	--cubo-radius-sm: 8px;
	--cubo-radius-md: 12px;
	--cubo-radius-lg: 20px;
}

.cubo-tm-checkout-wrapper,
.cubo-checkout-page-wrap {
	font-family: var(--cubo-font-family) !important;
	color: var(--cubo-text-main);
	line-height: 1.5;
	margin: 24px 0;
	box-sizing: border-box;
	container-type: inline-size;
	container-name: cubo-checkout;
}

.cubo-tm-checkout-wrapper *,
.cubo-tm-checkout-wrapper *::before,
.cubo-tm-checkout-wrapper *::after,
.cubo-checkout-page-wrap *,
.cubo-checkout-page-wrap *::before,
.cubo-checkout-page-wrap *::after,
div.flatpickr-calendar,
div.flatpickr-calendar * {
	font-family: var(--cubo-font-family) !important;
	box-sizing: inherit;
}

/* ==========================================================================
   Step Navigation Tracker (Hidden - single booking flow into checkout page)
   ========================================================================== */
.cubo-tm-step-tracker {
	display: none !important;
}

/* ==========================================================================
   Suppress Summary Column when in Widget Mode or Checkout URL is defined
   ========================================================================== */
.cubo-tm-checkout-wrapper[data-checkout-url]:not([data-checkout-url=""]) .cubo-tm-summary-column,
.cubo-tm-checkout-wrapper:not(.cubo-show-summary) .cubo-tm-summary-column,
.cubo-layout-single-column .cubo-tm-summary-column,
.cubo-layout-auto .cubo-tm-summary-column {
	display: none !important;
}

/* ==========================================================================
   Checkout Layout Grid (Adaptive: Sidebar / Mobile / Full Width)
   ========================================================================== */
/* Default: Single column (mobile-first, sidebar-friendly, fluid) */
.cubo-tm-grid {
	display: grid;
	grid-template-columns: 100%;
	gap: 24px;
	align-items: start;
	width: 100%;
}

.cubo-tm-form-column {
	min-width: 0;
	width: 100%;
}

.cubo-tm-summary-column {
	min-width: 0;
	width: 100%;
}

/* Wide Container (>= 860px container width) - 2 Column Desktop Layout */
@container cubo-checkout (min-width: 860px) {
	.cubo-tm-grid {
		grid-template-columns: 1fr 380px;
		gap: 32px;
	}
	.cubo-tm-summary-card {
		position: sticky !important;
		top: 24px !important;
	}
}

/* Fallback / explicit JS class for wide containers */
.cubo-tm-checkout-wrapper.cubo-wide-container:not(.cubo-layout-single-column) .cubo-tm-grid {
	grid-template-columns: 1fr 380px;
	gap: 32px;
}
.cubo-tm-checkout-wrapper.cubo-wide-container:not(.cubo-layout-single-column) .cubo-tm-summary-card {
	position: sticky !important;
	top: 24px !important;
}

/* Narrow container (< 860px) or forced single-column layout */
.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-tm-grid,
.cubo-tm-checkout-wrapper.cubo-layout-single-column .cubo-tm-grid {
	grid-template-columns: 100% !important;
	gap: 24px;
}

.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-tm-summary-card,
.cubo-tm-checkout-wrapper.cubo-layout-single-column .cubo-tm-summary-card {
	position: static !important;
}

/* Compact Step Tracker for narrow spaces (< 580px) */
@container cubo-checkout (max-width: 580px) {
	.cubo-step-label {
		display: none;
	}
	.cubo-tm-step-tracker {
		padding: 12px 16px;
		margin-bottom: 20px;
	}
	.cubo-step-connector {
		margin: 0 8px;
	}
}

.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-step-label {
	display: none;
}
.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-tm-step-tracker {
	padding: 12px 16px;
	margin-bottom: 20px;
}
.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-step-connector {
	margin: 0 8px;
}
.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-footer-pricing-card {
	padding: 16px 14px;
}
.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-footer-guests-summary {
	font-size: 13px;
	gap: 5px;
}
.cubo-tm-checkout-wrapper.cubo-narrow-container .cubo-footer-rate-calc {
	font-size: 11px;
	padding: 2px 6px;
}

@media (max-width: 960px) {
	.cubo-step-label {
		display: none;
	}
	.cubo-tm-step-tracker {
		padding: 12px 16px;
		margin-bottom: 20px;
	}
	.cubo-step-connector {
		margin: 0 8px;
	}
}

/* ==========================================================================
   Form Cards & Steps
   ========================================================================== */
.cubo-tm-form-column {
	background: var(--cubo-bg-card);
	border: 1px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-lg);
	box-shadow: var(--cubo-shadow-md);
	overflow: hidden;
}

/* ==========================================================================
   Top Accent Header Bar ("Book This Tour")
   ========================================================================== */
.cubo-booking-top-bar {
	background: linear-gradient(135deg, #1e40af 0%, #2563eb 50%, #3b82f6 100%);
	padding: 14px 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	border-bottom: 1px solid rgba(255, 255, 255, 0.15);
	position: relative;
	z-index: 2;
}

.cubo-booking-top-title {
	font-size: 15px;
	font-weight: 700;
	color: #ffffff;
	margin: 0;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1;
}

.cubo-booking-top-icon {
	width: 17px !important;
	height: 17px !important;
	min-width: 17px !important;
	min-height: 17px !important;
	max-width: 17px !important;
	max-height: 17px !important;
	fill: #ffffff !important;
	flex-shrink: 0 !important;
	display: inline-block !important;
}

.cubo-booking-top-badge {
	font-size: 11px;
	font-weight: 600;
	color: #ffffff;
	background: rgba(255, 255, 255, 0.2);
	backdrop-filter: blur(4px);
	padding: 3px 10px;
	border-radius: 20px;
	border: 1px solid rgba(255, 255, 255, 0.25);
	letter-spacing: 0.03em;
	text-transform: uppercase;
	line-height: 1.2;
}

.cubo-step-panel {
	display: none;
	padding: 24px 32px 32px 32px;
	animation: cuboFadeIn 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.cubo-step-panel.active {
	display: block;
}

@keyframes cuboFadeIn {
	from {
		opacity: 0;
		transform: translateY(6px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.cubo-step-header {
	margin-bottom: 24px;
	padding-bottom: 18px;
	border-bottom: 1px solid var(--cubo-border-color);
}

/* Tour Header Card with Photo & Title */
.cubo-tour-header-card {
	display: flex;
	gap: 16px;
	align-items: stretch;
	margin-bottom: 0;
}

.cubo-tour-header-thumb {
	align-self: stretch;
	width: 115px;
	min-width: 115px;
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
	border: 1px solid #e2e8f0;
	background: #f8fafc;
	flex-shrink: 0;
}

.cubo-tour-header-thumb img {
	width: 100% !important;
	height: 100% !important;
	min-width: 100% !important;
	min-height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	object-fit: cover !important;
	object-position: center center !important;
	display: block !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}

.cubo-tour-header-meta {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
}

.cubo-tour-title-display {
	font-size: 22px;
	font-weight: 700;
	color: #0f172a;
	line-height: 1.24;
	margin: 0 0 8px 0;
	letter-spacing: -0.02em;
}

/* Feature Micro-Badges Row (Placed between Calendar and Number of Guests) */
.cubo-mid-badges-row,
.cubo-feature-badges-row {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 20px 0 24px 0;
}

.cubo-mid-badges-row .cubo-feature-badge,
.cubo-feature-badge {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 6px 14px;
	border-radius: 9999px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: 0.01em;
	transition: all 0.2s ease;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}

.cubo-feature-icon {
	width: 13px;
	height: 13px;
	fill: currentColor;
	flex-shrink: 0;
}

.cubo-feature-instant {
	background: #eff6ff;
	color: #1d4ed8;
	border: 1px solid #dbeafe;
}

.cubo-feature-cancel {
	background: #ecfdf5;
	color: #065f46;
	border: 1px solid #a7f3d0;
}

.cubo-feature-fees {
	background: #fffbeb;
	color: #92400e;
	border: 1px solid #fde68a;
}

.cubo-step-title {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 20px;
	font-weight: 700;
	color: var(--cubo-accent);
	margin: 0 0 6px 0;
}

.cubo-step-header-num {
	display: none;
}

.cubo-step-sub {
	font-size: 14px;
	color: var(--cubo-text-muted);
	margin: 0;
}

/* Form inputs & controls */
.cubo-form-group {
	margin-bottom: 24px;
}

.cubo-form-row {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	margin-bottom: 16px;
}

.cubo-form-row .col-6 {
	flex: 0 0 calc(50% - 8px);
	max-width: calc(50% - 8px);
	box-sizing: border-box;
	margin-bottom: 0;
}

.cubo-form-row .col-12 {
	flex: 0 0 100%;
	max-width: 100%;
	box-sizing: border-box;
	margin-bottom: 0;
}

@media (max-width: 600px) {
	.cubo-booking-top-bar {
		padding: 12px 18px;
	}
	.cubo-booking-top-title {
		font-size: 13.5px;
		gap: 6px;
	}
	.cubo-booking-top-badge {
		font-size: 10px;
		padding: 2.5px 8px;
	}
	.cubo-step-panel {
		padding: 20px 16px 24px 16px;
	}
	.cubo-form-row .col-6,
	.cubo-form-row .col-12 {
		flex: 0 0 100%;
		max-width: 100%;
	}
}

.cubo-form-label {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 14px;
	font-weight: 600;
	color: var(--cubo-text-main);
	margin-bottom: 8px;
}

.cubo-required {
	color: var(--cubo-danger);
}

.cubo-text-input,
.cubo-date-input {
	width: 100%;
	height: 48px;
	padding: 0 16px;
	font-size: 15px;
	color: var(--cubo-text-main);
	background: var(--cubo-bg-surface);
	border: 1px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-md);
	transition: all 0.2s ease;
	outline: none;
}

.cubo-text-input:focus,
.cubo-date-input:focus {
	background: #ffffff;
	border-color: var(--cubo-accent);
	box-shadow: 0 0 0 3px var(--cubo-accent-light);
}

.cubo-date-input {
	cursor: pointer;
	font-weight: 600;
	color: var(--cubo-accent);
}

.cubo-calendar-hint {
	display: flex;
	align-items: center;
	gap: 16px;
	font-size: 12px;
	color: var(--cubo-text-muted);
	margin-top: 8px;
}

.cubo-legend-dot {
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	margin-right: 4px;
}

.cubo-legend-dot.available {
	background: var(--cubo-accent);
}

.cubo-legend-dot.blocked {
	background: var(--cubo-border-color);
}

/* ==========================================================================
   Packages List
   ========================================================================== */
.cubo-package-cards {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.cubo-package-card {
	position: relative;
	display: block;
	cursor: pointer;
	border: 2px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-md);
	background: var(--cubo-bg-surface);
	padding: 16px;
	transition: all 0.2s ease;
}

.cubo-package-card input[type="radio"] {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.cubo-package-card:hover {
	border-color: var(--cubo-accent-border);
	background: #ffffff;
}

.cubo-package-card.selected {
	border-color: var(--cubo-accent);
	background: var(--cubo-accent-light);
	box-shadow: 0 0 0 1px var(--cubo-accent);
}

.cubo-package-card-inner {
	display: flex;
	justify-content: space-between;
	align-items: center;
}

.cubo-package-title {
	font-size: 16px;
	font-weight: 700;
	color: var(--cubo-accent);
}

.cubo-package-caption {
	font-size: 13px;
	color: var(--cubo-text-muted);
	margin-top: 2px;
}

.cubo-package-time {
	display: flex;
	align-items: center;
	gap: 4px;
	font-size: 12px;
	color: var(--cubo-accent);
	font-weight: 600;
	margin-top: 4px;
}

.cubo-package-price {
	text-align: right;
}

.cubo-pkg-from {
	display: block;
	font-size: 11px;
	color: var(--cubo-text-muted);
	text-transform: uppercase;
}

.cubo-pkg-amount {
	font-size: 18px;
	font-weight: 800;
	color: var(--cubo-accent);
}

.cubo-pkg-unit {
	display: block;
	font-size: 11px;
	color: var(--cubo-text-muted);
}

/* ==========================================================================
   Passenger Count Selectors (Adults & Children)
   ========================================================================== */
.cubo-passenger-selectors {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 24px;
}

.cubo-passenger-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 16px 20px;
	background: var(--cubo-bg-surface);
	border: 1px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-md);
	transition: border-color 0.2s;
}

.cubo-passenger-row:hover {
	border-color: var(--cubo-accent-border);
}

.cubo-passenger-type {
	font-size: 16px;
	font-weight: 700;
	color: var(--cubo-text-main);
}

.cubo-passenger-age {
	font-size: 13px;
	color: var(--cubo-text-muted);
}

.cubo-passenger-rate-hint {
	font-size: 12px;
	color: var(--cubo-accent);
	margin-top: 2px;
}

.cubo-counter-widget {
	display: flex;
	align-items: center;
	gap: 8px;
	background: #ffffff;
	border: 1px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-sm);
	padding: 4px;
}

.cubo-counter-btn {
	width: 36px;
	height: 36px;
	border: none;
	border-radius: var(--cubo-radius-sm);
	background: var(--cubo-bg-surface);
	color: var(--cubo-accent);
	font-size: 18px;
	font-weight: 700;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: all 0.15s ease;
}

.cubo-counter-btn:hover {
	background: var(--cubo-accent);
	color: #ffffff;
}

.cubo-counter-input {
	width: 44px;
	border: none;
	text-align: center;
	font-size: 16px;
	font-weight: 700;
	color: var(--cubo-text-main);
	background: transparent;
	outline: none;
}

.cubo-passenger-subtotal-banner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	background: var(--cubo-accent-light);
	border-left: 4px solid var(--cubo-accent);
	border-radius: var(--cubo-radius-sm);
	padding: 14px 18px;
	margin-bottom: 24px;
	font-size: 14px;
}

.cubo-banner-label {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--cubo-accent);
}

.cubo-banner-subtotal strong {
	font-size: 18px;
	color: var(--cubo-accent);
	font-weight: 800;
	margin-left: 6px;
}

/* ==========================================================================
   Add-on Services List
   ========================================================================== */
.cubo-services-list {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cubo-service-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 14px 18px;
	background: var(--cubo-bg-surface);
	border: 1px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-md);
	cursor: pointer;
	transition: all 0.2s ease;
}

.cubo-service-item:hover {
	border-color: var(--cubo-accent-border);
	background: #ffffff;
}

.cubo-service-item input[type="checkbox"] {
	margin-right: 12px;
	accent-color: var(--cubo-accent);
	width: 18px;
	height: 18px;
	cursor: pointer;
}

.cubo-service-details {
	flex: 1;
}

.cubo-service-title {
	font-size: 14px;
	font-weight: 600;
	color: var(--cubo-text-main);
}

.cubo-service-desc {
	font-size: 12px;
	color: var(--cubo-text-muted);
}

.cubo-service-cost {
	font-size: 14px;
	font-weight: 700;
	color: var(--cubo-accent);
}

/* ==========================================================================
   Payment Gateway Cards
   ========================================================================== */
.cubo-gateways-container {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 24px;
}

.cubo-gateway-card {
	position: relative;
	display: block;
	cursor: pointer;
	border: 2px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-md);
	background: var(--cubo-bg-surface);
	padding: 16px;
	transition: all 0.2s ease;
}

.cubo-gateway-card input[type="radio"] {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.cubo-gateway-card:hover {
	border-color: var(--cubo-accent-border);
	background: #ffffff;
}

.cubo-gateway-card.selected {
	border-color: var(--cubo-accent);
	background: var(--cubo-accent-light);
	box-shadow: 0 0 0 1px var(--cubo-accent);
}

.cubo-gateway-card-inner {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}

.cubo-gateway-radio-mark {
	width: 20px;
	height: 20px;
	border: 2px solid var(--cubo-border-color);
	border-radius: 50%;
	background: #ffffff;
	flex-shrink: 0;
	margin-top: 2px;
	transition: all 0.2s ease;
}

.cubo-gateway-card.selected .cubo-gateway-radio-mark {
	border-color: var(--cubo-accent);
	background: radial-gradient(circle, var(--cubo-accent) 45%, #ffffff 46%);
}

.cubo-gateway-title-row {
	display: flex;
	align-items: center;
	gap: 10px;
}

.cubo-gateway-title {
	font-size: 15px;
	font-weight: 700;
	color: var(--cubo-accent);
}

.cubo-gateway-badge {
	font-size: 11px;
	font-weight: 600;
	color: var(--cubo-success);
	background: #ecfdf5;
	padding: 2px 8px;
	border-radius: 9999px;
}

.cubo-gateway-desc {
	font-size: 13px;
	color: var(--cubo-text-muted);
	margin: 4px 0 0 0;
}

.cubo-terms-box {
	background: var(--cubo-bg-surface);
	border-radius: var(--cubo-radius-sm);
	padding: 14px 16px;
	margin-bottom: 24px;
	border: 1px solid var(--cubo-border-color);
}

.cubo-terms-checkbox-label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	cursor: pointer;
	font-size: 13px;
	color: var(--cubo-text-muted);
}

.cubo-terms-checkbox-label input[type="checkbox"] {
	margin-top: 2px;
	accent-color: var(--cubo-accent);
}

/* ==========================================================================
   Action Buttons
   ========================================================================== */
.cubo-step-actions {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-top: 28px;
	padding-top: 20px;
	border-top: 1px solid var(--cubo-border-color);
}

.cubo-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 14px 24px;
	font-size: 15px;
	font-weight: 700;
	border-radius: var(--cubo-radius-md);
	border: none;
	cursor: pointer;
	transition: all 0.2s ease;
	text-decoration: none;
	line-height: 1;
}

.cubo-btn-primary {
	background: var(--cubo-accent);
	color: #ffffff;
	box-shadow: 0 4px 12px rgba(15, 42, 74, 0.2);
}

.cubo-btn-primary:hover {
	background: var(--cubo-accent-hover);
	transform: translateY(-1px);
	box-shadow: 0 6px 16px rgba(15, 42, 74, 0.25);
}

.cubo-btn-secondary {
	background: var(--cubo-bg-surface);
	color: var(--cubo-text-main);
	border: 1px solid var(--cubo-border-color);
}

.cubo-btn-secondary:hover {
	background: #ffffff;
	border-color: var(--cubo-text-muted);
}

.cubo-btn-submit {
	background: var(--cubo-accent);
	color: #ffffff;
	font-size: 16px;
	padding: 16px 32px;
	box-shadow: 0 4px 14px rgba(15, 42, 74, 0.25);
}

.cubo-btn-submit:hover {
	background: var(--cubo-accent-hover);
	transform: translateY(-1px);
}

.cubo-btn-icon {
	width: 18px;
	height: 18px;
	fill: currentColor;
}

.cubo-spinner {
	width: 18px;
	height: 18px;
	border: 2px solid rgba(255, 255, 255, 0.3);
	border-top-color: #ffffff;
	border-radius: 50%;
	animation: cuboSpin 0.7s linear infinite;
}

@keyframes cuboSpin {
	to { transform: rotate(360deg); }
}

/* ==========================================================================
   Right Column: Sticky Order Summary Card
   ========================================================================== */
.cubo-tm-summary-card {
	position: sticky;
	top: 24px;
	background: var(--cubo-bg-card);
	border: 1px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-lg);
	padding: 24px;
	box-shadow: var(--cubo-shadow-md);
}

.cubo-summary-head {
	display: flex;
	gap: 14px;
	align-items: center;
}

.cubo-summary-thumb {
	width: 76px !important;
	height: 76px !important;
	min-width: 76px !important;
	min-height: 76px !important;
	max-width: 76px !important;
	max-height: 76px !important;
	border-radius: 12px !important;
	overflow: hidden !important;
	flex-shrink: 0 !important;
	position: relative !important;
	background: #f1f5f9 !important;
	box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06) !important;
	border: 1px solid #e2e8f0 !important;
}

.cubo-summary-thumb img {
	width: 100% !important;
	height: 100% !important;
	min-width: 100% !important;
	min-height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	object-fit: cover !important;
	object-position: center center !important;
	display: block !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}

.cubo-summary-badge {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	color: var(--cubo-success);
	background: #ecfdf5;
	padding: 2px 8px;
	border-radius: 9999px;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	margin-bottom: 4px;
}

.cubo-summary-tour-title {
	font-size: 15px;
	font-weight: 700;
	color: var(--cubo-accent);
	margin: 0;
	line-height: 1.3;
}

.cubo-summary-divider {
	height: 1px;
	background: var(--cubo-border-color);
	margin: 18px 0;
}

.cubo-summary-details {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cubo-summary-line {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 13px;
}

.cubo-summary-label {
	display: flex;
	align-items: center;
	gap: 6px;
	color: var(--cubo-text-muted);
}

.cubo-summary-val {
	color: var(--cubo-text-main);
	font-weight: 600;
	text-align: right;
}

/* Pricing Breakdown */
.cubo-summary-breakdown {
	display: flex;
	flex-direction: column;
	gap: 8px;
	background: var(--cubo-bg-surface);
	border-radius: var(--cubo-radius-sm);
	padding: 12px 14px;
	margin-bottom: 16px;
}

.cubo-breakdown-row {
	display: flex;
	justify-content: space-between;
	font-size: 13px;
}

.cubo-breakdown-desc {
	color: var(--cubo-text-muted);
}

.cubo-breakdown-amount {
	font-weight: 600;
	color: var(--cubo-text-main);
}

.cubo-discount-row .cubo-breakdown-desc,
.cubo-discount-row .cubo-breakdown-amount {
	color: var(--cubo-success);
	font-weight: 700;
}

/* Coupon Box */
.cubo-coupon-widget {
	margin-bottom: 16px;
}

.cubo-coupon-input-wrap {
	display: flex;
	gap: 8px;
}

.cubo-coupon-input-wrap input {
	flex: 1;
	height: 40px;
	padding: 0 12px;
	font-size: 13px;
	border: 1px solid var(--cubo-border-color);
	border-radius: var(--cubo-radius-sm);
	outline: none;
	text-transform: uppercase;
}

.cubo-coupon-input-wrap button {
	padding: 0 16px;
	height: 40px;
	background: var(--cubo-accent);
	color: #ffffff;
	border: none;
	border-radius: var(--cubo-radius-sm);
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	transition: background 0.2s;
}

.cubo-coupon-input-wrap button:hover {
	background: var(--cubo-accent-hover);
}

.cubo-coupon-status {
	font-size: 12px;
	margin-top: 6px;
	padding: 4px 8px;
	border-radius: 4px;
}

.cubo-coupon-status.success {
	background: #ecfdf5;
	color: var(--cubo-success);
}

.cubo-coupon-status.error {
	background: #fef2f2;
	color: var(--cubo-danger);
}

/* Total Amount */
.cubo-summary-total-row {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	margin-bottom: 20px;
}

.cubo-total-label span:first-child {
	display: block;
	font-size: 16px;
	font-weight: 700;
	color: var(--cubo-text-main);
}

.cubo-tax-notice {
	font-size: 11px;
	color: var(--cubo-text-muted);
}

.cubo-total-value {
	font-size: 26px;
	font-weight: 800;
	color: var(--cubo-accent);
}

/* Trust Badges */
.cubo-trust-badges {
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: var(--cubo-bg-surface);
	border-radius: var(--cubo-radius-sm);
	padding: 14px;
}

.cubo-trust-item {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 12px;
	font-weight: 600;
	color: var(--cubo-text-muted);
}

.cubo-trust-icon {
	width: 16px;
	height: 16px;
	fill: var(--cubo-accent);
}

/* Notice alerts */
.cubo-tm-notice-area {
	padding: 14px 18px;
	border-radius: var(--cubo-radius-sm);
	margin-bottom: 20px;
	font-size: 14px;
}

.cubo-tm-notice-area.error {
	background: #fef2f2;
	border-left: 4px solid var(--cubo-danger);
	color: #991b1b;
}

/* ==========================================================================
   Success Panel
   ========================================================================== */
.cubo-success-card {
	text-align: center;
	padding: 40px 20px;
}

.cubo-success-icon-wrap {
	width: 64px;
	height: 64px;
	margin: 0 auto 20px auto;
}

.cubo-success-check-svg {
	width: 64px;
	height: 64px;
	border-radius: 50%;
	display: block;
	stroke-width: 3;
	stroke: var(--cubo-success);
	stroke-miterlimit: 10;
	box-shadow: inset 0 0 0 var(--cubo-success);
	animation: cuboFill 0.4s ease-in-out 0.4s forwards, cuboScale 0.3s ease-in-out 0.9s both;
}

.cubo-success-circle {
	stroke-dasharray: 166;
	stroke-dashoffset: 166;
	stroke-width: 3;
	stroke-miterlimit: 10;
	stroke: var(--cubo-success);
	animation: cuboStroke 0.6s cubic-bezier(0.65, 0, 0.45, 1) forwards;
}

.cubo-success-check {
	transform-origin: 50% 50%;
	stroke-dasharray: 48;
	stroke-dashoffset: 48;
	animation: cuboStroke 0.3s cubic-bezier(0.65, 0, 0.45, 1) 0.8s forwards;
}

@keyframes cuboStroke {
	100% { stroke-dashoffset: 0; }
}

@keyframes cuboScale {
	0%, 100% { transform: none; }
	50% { transform: scale3d(1.1, 1.1, 1); }
}

.cubo-success-title {
	font-size: 26px;
	font-weight: 800;
	color: var(--cubo-accent);
	margin: 0 0 8px 0;
}

.cubo-success-lead {
	font-size: 15px;
	color: var(--cubo-text-muted);
	max-width: 500px;
	margin: 0 auto 24px auto;
}

.cubo-order-reference-box {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: var(--cubo-accent-light);
	border: 1px dashed var(--cubo-accent);
	border-radius: var(--cubo-radius-sm);
	padding: 10px 20px;
	margin-bottom: 28px;
}

.cubo-ref-label {
	font-size: 14px;
	color: var(--cubo-text-muted);
}

.cubo-ref-id {
	font-size: 18px;
	color: var(--cubo-accent);
	font-weight: 800;
}

/* Icons helper */
.cubo-icon {
	width: 18px;
	height: 18px;
	fill: currentColor;
	vertical-align: middle;
}

.cubo-icon-sm {
	width: 14px;
	height: 14px;
	fill: currentColor;
	vertical-align: middle;
}

.cubo-icon-xs {
	width: 13px;
	height: 13px;
	fill: currentColor;
	vertical-align: middle;
}

/* ==========================================================================
   HIGH-SPECIFICITY OVERRIDES
   Defeat Tourmaster CSS (tourmaster.css) and Elementor resets that can
   inadvertently zero-out pointer-events, opacity, or styling on form controls
   inside our checkout wrapper.
   ========================================================================== */

/* Counter buttons — ensure always clickable and styled */
.cubo-tm-checkout-wrapper .cubo-counter-widget {
	display: flex !important;
	align-items: center !important;
	gap: 8px !important;
	background: #ffffff !important;
	border: 1px solid var(--cubo-border-color) !important;
	border-radius: var(--cubo-radius-sm) !important;
	padding: 4px !important;
}

.cubo-tm-checkout-wrapper .cubo-counter-btn {
	width: 36px !important;
	height: 36px !important;
	min-width: 36px !important;
	min-height: 36px !important;
	border: none !important;
	border-radius: var(--cubo-radius-sm) !important;
	background: var(--cubo-bg-surface) !important;
	color: var(--cubo-accent) !important;
	font-size: 18px !important;
	font-weight: 700 !important;
	cursor: pointer !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	transition: all 0.15s ease !important;
	pointer-events: auto !important;
	position: relative !important;
	z-index: 1 !important;
	line-height: 1 !important;
	padding: 0 !important;
	margin: 0 !important;
	opacity: 1 !important;
	visibility: visible !important;
	box-shadow: none !important;
	text-shadow: none !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	outline: none !important;
	-webkit-appearance: none !important;
	appearance: none !important;
}

.cubo-tm-checkout-wrapper .cubo-counter-btn:hover {
	background: var(--cubo-accent) !important;
	color: #ffffff !important;
}

.cubo-tm-checkout-wrapper .cubo-counter-btn:focus {
	outline: 2px solid var(--cubo-accent) !important;
	outline-offset: 1px !important;
}

.cubo-counter-btn:disabled,
.cubo-counter-btn.is-disabled,
.cubo-tm-checkout-wrapper .cubo-counter-btn:disabled,
.cubo-tm-checkout-wrapper .cubo-counter-btn.is-disabled {
	opacity: 0.35 !important;
	cursor: not-allowed !important;
	pointer-events: none !important;
	background: var(--cubo-bg-surface) !important;
	color: var(--cubo-text-muted, #94a3b8) !important;
}

.cubo-tm-checkout-wrapper .cubo-counter-input {
	width: 44px !important;
	border: none !important;
	border-radius: 0 !important;
	text-align: center !important;
	font-size: 16px !important;
	font-weight: 700 !important;
	color: var(--cubo-text-main) !important;
	background: transparent !important;
	outline: none !important;
	box-shadow: none !important;
	padding: 0 !important;
	margin: 0 !important;
	pointer-events: none !important; /* read-only display */
}

/* Step panels — ensure hidden panels don't block events on visible ones */
.cubo-tm-checkout-wrapper .cubo-step-panel {
	display: none;
}

.cubo-tm-checkout-wrapper .cubo-step-panel.active {
	display: block !important;
}

/* ==========================================================================
   MODERN FLATPICKR INLINE CALENDAR (100% Fluid, Zero Gaps, Sleek Card)
   ========================================================================== */

.cubo-tm-checkout-wrapper .flatpickr-calendar,
.cubo-checkout-page-wrap .flatpickr-calendar {
	background: #ffffff !important;
	border: 1px solid var(--cubo-border-color, #e2e8f0) !important;
	border-radius: var(--cubo-radius-lg, 16px) !important;
	box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.06), 0 8px 10px -6px rgba(15, 23, 42, 0.04) !important;
	font-family: inherit !important;
	width: 100% !important;
	max-width: 100% !important;
	overflow: hidden !important;
	padding: 0 !important;
	margin: 0 0 16px 0 !important;
}

.cubo-tm-checkout-wrapper .flatpickr-calendar.inline,
.cubo-checkout-page-wrap .flatpickr-calendar.inline {
	display: block !important;
	position: relative !important;
	top: auto !important;
	visibility: visible !important;
	opacity: 1 !important;
}

/* Calendar Month Header */
.cubo-tm-checkout-wrapper .flatpickr-months,
/* Calendar Month Header: Vibrant Accent Blue Gradient with White Text & White Buttons */
.cubo-tm-checkout-wrapper .flatpickr-months,
.cubo-checkout-page-wrap .flatpickr-months,
div.flatpickr-calendar .flatpickr-months {
	background: linear-gradient(135deg, #1e40af 0%, #2563eb 50%, #3b82f6 100%) !important;
	border-radius: 14px 14px 0 0 !important;
	padding: 14px 16px 12px 16px !important;
	display: flex !important;
	align-items: center !important;
	position: relative !important;
	border-bottom: none !important;
}

.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-month,
.cubo-checkout-page-wrap .flatpickr-months .flatpickr-month,
div.flatpickr-calendar .flatpickr-months .flatpickr-month {
	background: transparent !important;
	color: #ffffff !important;
	fill: #ffffff !important;
	height: 36px !important;
	line-height: 36px !important;
	position: relative !important;
	overflow: visible !important;
	flex: 1 !important;
	padding: 0 !important;
}

.cubo-tm-checkout-wrapper .flatpickr-current-month,
.cubo-checkout-page-wrap .flatpickr-current-month,
div.flatpickr-calendar .flatpickr-current-month {
	font-size: 16px !important;
	font-weight: 700 !important;
	color: #ffffff !important;
	fill: #ffffff !important;
	padding: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 6px !important;
	height: 36px !important;
	line-height: 36px !important;
	position: static !important;
	width: 100% !important;
	transform: none !important;
}

.cubo-tm-checkout-wrapper .flatpickr-current-month .flatpickr-monthDropdown-months,
.cubo-checkout-page-wrap .flatpickr-current-month .flatpickr-monthDropdown-months,
div.flatpickr-calendar .flatpickr-current-month .flatpickr-monthDropdown-months {
	appearance: none !important;
	-webkit-appearance: none !important;
	background: transparent !important;
	border: none !important;
	color: #ffffff !important;
	font-size: 16px !important;
	font-weight: 700 !important;
	padding: 0 4px !important;
	margin: 0 !important;
	cursor: pointer !important;
}

.cubo-tm-checkout-wrapper .flatpickr-current-month input.cur-year,
.cubo-checkout-page-wrap .flatpickr-current-month input.cur-year,
div.flatpickr-calendar .flatpickr-current-month input.cur-year {
	font-size: 16px !important;
	font-weight: 700 !important;
	color: #ffffff !important;
	padding: 0 !important;
	margin: 0 !important;
	border: none !important;
	background: transparent !important;
	width: 52px !important;
}

/* Nav Chevron Buttons: Crisp Pure White Circles with Vibrant Blue Icon */
.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-prev-month,
.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-next-month,
.cubo-checkout-page-wrap .flatpickr-months .flatpickr-prev-month,
.cubo-checkout-page-wrap .flatpickr-months .flatpickr-next-month,
div.flatpickr-calendar .flatpickr-months .flatpickr-prev-month,
div.flatpickr-calendar .flatpickr-months .flatpickr-next-month {
	width: 32px !important;
	height: 32px !important;
	top: 14px !important;
	padding: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	border-radius: 50% !important;
	background: #ffffff !important;
	border: none !important;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.16) !important;
	color: #2563eb !important;
	fill: #2563eb !important;
	transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1) !important;
	z-index: 5 !important;
	cursor: pointer !important;
}

.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-prev-month,
div.flatpickr-calendar .flatpickr-months .flatpickr-prev-month {
	left: 14px !important;
}

.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-next-month,
div.flatpickr-calendar .flatpickr-months .flatpickr-next-month {
	right: 14px !important;
}

.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-prev-month:hover,
.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-next-month:hover,
.cubo-checkout-page-wrap .flatpickr-months .flatpickr-prev-month:hover,
.cubo-checkout-page-wrap .flatpickr-months .flatpickr-next-month:hover,
div.flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover,
div.flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover {
	background: #f8fafc !important;
	color: #1d4ed8 !important;
	fill: #1d4ed8 !important;
	transform: scale(1.1) !important;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.22) !important;
}

.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-prev-month svg,
.cubo-tm-checkout-wrapper .flatpickr-months .flatpickr-next-month svg,
.cubo-checkout-page-wrap .flatpickr-months .flatpickr-prev-month svg,
.cubo-checkout-page-wrap .flatpickr-months .flatpickr-next-month svg,
div.flatpickr-calendar .flatpickr-months .flatpickr-prev-month svg,
div.flatpickr-calendar .flatpickr-months .flatpickr-next-month svg {
	width: 14px !important;
	height: 14px !important;
	fill: inherit !important;
}

/* Weekday Labels Row */
.cubo-tm-checkout-wrapper .flatpickr-innerContainer,
.cubo-checkout-page-wrap .flatpickr-innerContainer,
div.flatpickr-calendar .flatpickr-innerContainer {
	width: 100% !important;
	display: block !important;
}

.cubo-tm-checkout-wrapper .flatpickr-rContainer,
.cubo-checkout-page-wrap .flatpickr-rContainer,
div.flatpickr-calendar .flatpickr-rContainer {
	width: 100% !important;
	max-width: 100% !important;
	display: block !important;
}

.cubo-tm-checkout-wrapper .flatpickr-weekdays,
.cubo-checkout-page-wrap .flatpickr-weekdays,
div.flatpickr-calendar .flatpickr-weekdays {
	width: 100% !important;
	height: auto !important;
	background: #f8fafc !important;
	padding: 10px 10px 8px 10px !important;
	display: flex !important;
	border-bottom: 1px solid #f1f5f9 !important;
	box-sizing: border-box !important;
}

.cubo-tm-checkout-wrapper .flatpickr-weekdaycontainer,
.cubo-checkout-page-wrap .flatpickr-weekdaycontainer,
div.flatpickr-calendar .flatpickr-weekdaycontainer {
	width: 100% !important;
	display: flex !important;
	justify-content: flex-start !important;
	gap: 4px !important;
}

.cubo-tm-checkout-wrapper span.flatpickr-weekday,
.cubo-checkout-page-wrap span.flatpickr-weekday,
div.flatpickr-calendar span.flatpickr-weekday {
	color: #64748b !important;
	font-weight: 700 !important;
	font-size: 11.5px !important;
	text-transform: uppercase !important;
	letter-spacing: 0.05em !important;
	flex: 0 0 calc((100% - 24px) / 7) !important;
	max-width: calc((100% - 24px) / 7) !important;
	text-align: center !important;
	margin: 0 !important;
	line-height: 1.2 !important;
}

/* Days Container: Fluid Grid with both Row and Column Gap */
.cubo-tm-checkout-wrapper .flatpickr-days,
.cubo-checkout-page-wrap .flatpickr-days,
div.flatpickr-calendar .flatpickr-days {
	width: 100% !important;
	max-width: 100% !important;
	padding: 10px !important;
	box-sizing: border-box !important;
	display: block !important;
}

.cubo-tm-checkout-wrapper .dayContainer,
.cubo-checkout-page-wrap .dayContainer,
div.flatpickr-calendar .dayContainer {
	width: 100% !important;
	min-width: 100% !important;
	max-width: 100% !important;
	box-sizing: border-box !important;
	display: flex !important;
	flex-wrap: wrap !important;
	gap: 6px 4px !important;
	justify-content: flex-start !important;
	padding: 2px 0 6px 0 !important;
	transform: none !important;
}

/* Individual Day Cells */
.cubo-tm-checkout-wrapper .flatpickr-day,
.cubo-checkout-page-wrap .flatpickr-day,
div.flatpickr-calendar .flatpickr-day {
	box-sizing: border-box !important;
	flex: 0 0 calc((100% - 24px) / 7) !important;
	max-width: calc((100% - 24px) / 7) !important;
	height: 38px !important;
	line-height: 38px !important;
	margin: 0 !important;
	border-radius: 10px !important;
	font-size: 14px !important;
	font-weight: 500 !important;
	color: #1e293b !important;
	background: transparent !important;
	border: 1px solid transparent !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	transition: all 0.16s cubic-bezier(0.16, 1, 0.3, 1) !important;
	cursor: pointer !important;
	position: relative !important;
}

/* Available / Clickable Days (UNSELECTED): Soft Azure Pill with Crisp Blue Text */
.cubo-tm-checkout-wrapper .flatpickr-day:not(.flatpickr-disabled):not(.prevMonthDay):not(.nextMonthDay):not(.selected),
.cubo-checkout-page-wrap .flatpickr-day:not(.flatpickr-disabled):not(.prevMonthDay):not(.nextMonthDay):not(.selected),
div.flatpickr-calendar .flatpickr-day:not(.flatpickr-disabled):not(.prevMonthDay):not(.nextMonthDay):not(.selected) {
	background: #eff6ff !important;
	border: 1px solid #bfdbfe !important;
	color: #1d4ed8 !important;
	-webkit-text-fill-color: #1d4ed8 !important;
	font-weight: 600 !important;
	font-size: 14px !important;
	border-radius: 10px !important;
	transition: all 0.16s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.cubo-tm-checkout-wrapper .flatpickr-day:not(.flatpickr-disabled):not(.prevMonthDay):not(.nextMonthDay):not(.selected):hover,
.cubo-checkout-page-wrap .flatpickr-day:not(.flatpickr-disabled):not(.prevMonthDay):not(.nextMonthDay):not(.selected):hover,
div.flatpickr-calendar .flatpickr-day:not(.flatpickr-disabled):not(.prevMonthDay):not(.nextMonthDay):not(.selected):hover {
	background: #dbeafe !important;
	border-color: #3b82f6 !important;
	color: #1e40af !important;
	-webkit-text-fill-color: #1e40af !important;
	transform: translateY(-2px) scale(1.05) !important;
	box-shadow: 0 4px 14px rgba(37, 99, 235, 0.22) !important;
	z-index: 3 !important;
}

/* Selected Day: Vibrant Oceanic Blue Gradient & Pure White Text */
.cubo-tm-checkout-wrapper .flatpickr-day.selected,
.cubo-tm-checkout-wrapper .flatpickr-day.selected:hover,
.cubo-tm-checkout-wrapper .flatpickr-day.selected:focus,
.cubo-checkout-page-wrap .flatpickr-day.selected,
.cubo-checkout-page-wrap .flatpickr-day.selected:hover,
.cubo-checkout-page-wrap .flatpickr-day.selected:focus,
div.flatpickr-calendar .flatpickr-day.selected,
div.flatpickr-calendar .flatpickr-day.selected:hover,
div.flatpickr-calendar .flatpickr-day.selected:focus,
div.flatpickr-calendar .flatpickr-day.startRange,
div.flatpickr-calendar .flatpickr-day.endRange {
	background: #1d4ed8 !important;
	background-color: #1d4ed8 !important;
	background-image: linear-gradient(135deg, #1e40af 0%, #2563eb 50%, #3b82f6 100%) !important;
	border-color: #1d4ed8 !important;
	color: #ffffff !important;
	-webkit-text-fill-color: #ffffff !important;
	font-weight: 800 !important;
	font-size: 14.5px !important;
	box-shadow: 0 6px 18px rgba(37, 99, 235, 0.42) !important;
	transform: scale(1.06) !important;
	border-radius: 10px !important;
	z-index: 5 !important;
}

/* Today's Date (unselected) */
.cubo-tm-checkout-wrapper .flatpickr-day.today:not(.selected),
.cubo-checkout-page-wrap .flatpickr-day.today:not(.selected),
div.flatpickr-calendar .flatpickr-day.today:not(.selected) {
	border-color: #2563eb !important;
	border-width: 2px !important;
	font-weight: 700 !important;
}

/* Disabled / Blocked / Excluded Days */
.cubo-tm-checkout-wrapper .flatpickr-day.flatpickr-disabled,
.cubo-tm-checkout-wrapper .flatpickr-day.flatpickr-disabled:hover,
.cubo-checkout-page-wrap .flatpickr-day.flatpickr-disabled,
.cubo-checkout-page-wrap .flatpickr-day.flatpickr-disabled:hover,
div.flatpickr-calendar .flatpickr-day.flatpickr-disabled {
	color: #cbd5e1 !important;
	-webkit-text-fill-color: #cbd5e1 !important;
	background: transparent !important;
	border-color: transparent !important;
	cursor: not-allowed !important;
	opacity: 0.4 !important;
	transform: none !important;
	box-shadow: none !important;
}

/* Days belonging to adjacent months */
.cubo-tm-checkout-wrapper .flatpickr-day.prevMonthDay,
.cubo-tm-checkout-wrapper .flatpickr-day.nextMonthDay,
.cubo-checkout-page-wrap .flatpickr-day.prevMonthDay,
.cubo-checkout-page-wrap .flatpickr-day.nextMonthDay {
	opacity: 0.15 !important;
	color: #cbd5e1 !important;
	-webkit-text-fill-color: #cbd5e1 !important;
	cursor: default !important;
}

/* Hide the original date input when flatpickr is inline */
.cubo-tm-checkout-wrapper .cubo-datepicker-inline-wrap .cubo-date-input,
.cubo-checkout-page-wrap .cubo-datepicker-inline-wrap .cubo-date-input {
	display: none !important;
}

/* Top Header Status & Trust Pills */
.cubo-header-top-row {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 6px;
	margin-bottom: 0;
}

.cubo-live-indicator {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: #ecfdf5;
	border: 1px solid #a7f3d0;
	color: #065f46;
	padding: 4px 12px;
	border-radius: 20px;
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: 0.02em;
	text-transform: uppercase;
}

.cubo-pulse-dot {
	width: 8px;
	height: 8px;
	background: #10b981;
	border-radius: 50%;
	box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
	animation: cuboPulse 2s infinite;
}

@keyframes cuboPulse {
	0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); }
	70% { transform: scale(1); box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }
	100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}

.cubo-trust-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: #fffbeb;
	border: 1px solid #fef3c7;
	color: #92400e;
	padding: 4px 10px;
	border-radius: 20px;
	font-size: 12px;
	font-weight: 600;
}

.cubo-trust-pill svg {
	width: 14px;
	height: 14px;
	fill: #f59e0b;
}

/* Elevated Passenger Selectors Section */
.cubo-passengers-section {
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	border-radius: 12px;
	padding: 18px 20px;
	margin-bottom: 24px;
}

.cubo-section-label-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 14px;
}

.cubo-section-label-row .cubo-form-label {
	margin-bottom: 0;
	font-size: 15px;
	font-weight: 700;
	color: #0f172a;
}

.cubo-infotext-tag {
	font-size: 12px;
	color: #64748b;
	background: #ffffff;
	border: 1px solid #e2e8f0;
	padding: 2px 8px;
	border-radius: 12px;
	font-weight: 500;
}

/* Unified Live Booking & Price Footer */
.cubo-unified-booking-footer {
	margin-top: 24px;
	padding-top: 20px;
	border-top: 2px dashed #e2e8f0;
}

.cubo-footer-pricing-card {
	background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
	border: 1px solid #e2e8f0;
	border-radius: 16px;
	padding: 20px 24px;
	box-shadow: 0 4px 20px -2px rgba(15, 23, 42, 0.05);
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.cubo-footer-pricing-details {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px;
	padding-bottom: 14px;
	border-bottom: 1px solid #f1f5f9;
}

.cubo-footer-guests-summary {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 13.5px;
	color: #334155;
	font-weight: 600;
	white-space: nowrap;
	flex-wrap: nowrap;
}

#cubo-total-passengers-text {
	white-space: nowrap;
}

.cubo-footer-guests-summary svg {
	width: 16px;
	height: 16px;
	fill: #2563eb;
	flex-shrink: 0;
}

.cubo-footer-dot {
	color: #cbd5e1;
	flex-shrink: 0;
}

.cubo-footer-rate-calc {
	font-size: 12px;
	color: #059669;
	background: #ecfdf5;
	padding: 2px 7px;
	border-radius: 6px;
	font-weight: 600;
	white-space: nowrap;
	flex-shrink: 0;
}

.cubo-footer-total-display {
	display: flex;
	align-items: baseline;
	gap: 10px;
}

.cubo-footer-total-label {
	font-size: 13.5px;
	font-weight: 700;
	color: #64748b;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.cubo-footer-total-amount {
	font-size: 28px;
	font-weight: 800;
	color: #1d4ed8;
	letter-spacing: -0.02em;
}

.cubo-btn-large-cta {
	width: 100% !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 12px !important;
	padding: 16px 28px !important;
	font-size: 16px !important;
	font-weight: 700 !important;
	border-radius: 12px !important;
	background: linear-gradient(135deg, #1e40af 0%, #2563eb 50%, #3b82f6 100%) !important;
	color: #ffffff !important;
	box-shadow: 0 8px 24px -4px rgba(37, 99, 235, 0.4) !important;
	transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1) !important;
	cursor: pointer !important;
	border: none !important;
}

.cubo-btn-large-cta:hover {
	background: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%) !important;
	transform: translateY(-2px) !important;
	box-shadow: 0 12px 28px -4px rgba(37, 99, 235, 0.5) !important;
}

.cubo-btn-lock svg {
	width: 16px;
	height: 16px;
	fill: #ffffff;
	display: block;
}

.cubo-footer-reassurance {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 14px;
	font-size: 12.5px;
	color: #64748b;
}

.cubo-reassure-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.cubo-reassure-item svg {
	width: 14px;
	height: 14px;
	fill: #10b981;
	flex-shrink: 0;
}

.cubo-reassure-sep {
	color: #cbd5e1;
}

/* Complimentary Hotel Pick-up Banner in Step 2 */
.cubo-pickup-reassurance-banner {
	display: flex;
	align-items: flex-start;
	gap: 14px;
	background: #f0fdf4;
	border: 1px solid #bbf7d0;
	border-radius: 12px;
	padding: 16px 18px;
	margin-bottom: 24px;
}

.cubo-pickup-icon {
	width: 36px;
	height: 36px;
	border-radius: 8px;
	background: #dcfce7;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}

.cubo-pickup-icon svg {
	width: 20px;
	height: 20px;
	fill: #15803d;
}

.cubo-pickup-text {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.cubo-pickup-text strong {
	font-size: 14px;
	font-weight: 700;
	color: #14532d;
}

.cubo-pickup-text span {
	font-size: 13px;
	color: #166534;
	line-height: 1.4;
}

/* ==========================================================================
   DEDICATED CHECKOUT PAGE STYLES [cubo_tm_checkout_page]
   ========================================================================== */

.cubo-checkout-page-wrap {
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
	padding: 24px 16px;
	box-sizing: border-box;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
	color: var(--cubo-text-main, #1e293b);
}

.cubo-checkout-page-grid {
	display: grid;
	grid-template-columns: 1fr 380px;
	gap: 32px;
	align-items: start;
}

@media (max-width: 991px) {
	.cubo-checkout-page-grid {
		grid-template-columns: 1fr;
	}
}

.cubo-checkout-main-card {
	background: #ffffff;
	border: 1px solid var(--cubo-border-color, #e2e8f0);
	border-radius: var(--cubo-radius-lg, 16px);
	box-shadow: var(--cubo-shadow-sm, 0 1px 3px rgba(0,0,0,0.06));
	padding: 28px;
	box-sizing: border-box;
}

.cubo-checkout-section {
	margin-bottom: 32px;
	padding-bottom: 28px;
	border-bottom: 1px solid #f1f5f9;
}

.cubo-checkout-section:last-child {
	margin-bottom: 0;
	padding-bottom: 0;
	border-bottom: none;
}

/* Fields Header with Left Title and Right Reassurance Subtitle */
.cubo-checkout-fields-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 12px 20px;
	margin-bottom: 20px;
	padding-bottom: 16px;
	border-bottom: 1px solid #f1f5f9;
}

.cubo-fields-header-left {
	flex: 1;
	min-width: 240px;
}

.cubo-fields-main-title {
	font-size: 20px;
	font-weight: 700;
	color: #0f172a;
	margin: 0 0 4px 0;
	line-height: 1.25;
	letter-spacing: -0.015em;
}

.cubo-fields-sub-text {
	font-size: 13px;
	color: #64748b;
	margin: 0;
	line-height: 1.4;
}

.cubo-fields-header-right {
	display: flex;
	align-items: center;
	flex-shrink: 0;
}

.cubo-fields-subtitle-pill {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 6px 14px;
	background: #eff6ff;
	border: 1px solid #dbeafe;
	border-radius: 9999px;
	font-size: 12px;
	font-weight: 600;
	color: #1d4ed8;
	line-height: 1.25;
	box-shadow: 0 1px 3px rgba(37, 99, 235, 0.05);
}

.cubo-fields-subtitle-pill .cubo-pill-icon {
	width: 14px;
	height: 14px;
	fill: #2563eb;
	flex-shrink: 0;
}

@media (max-width: 640px) {
	.cubo-checkout-fields-header {
		flex-direction: column;
		align-items: flex-start;
		gap: 10px;
	}
	.cubo-fields-header-right {
		width: 100%;
	}
	.cubo-fields-subtitle-pill {
		width: 100%;
		justify-content: flex-start;
		box-sizing: border-box;
	}
}

.cubo-checkout-section-title {
	font-size: 19px;
	font-weight: 700;
	color: var(--cubo-text-dark, #0f172a);
	margin: 0 0 6px 0;
	display: flex;
	align-items: center;
	gap: 10px;
}

.cubo-checkout-section-title .cubo-step-badge {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--cubo-accent, #0f2a4a);
	color: #ffffff;
	font-size: 14px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
}

.cubo-checkout-section-sub {
	font-size: 13.5px;
	color: var(--cubo-text-muted, #64748b);
	margin: 0 0 18px 0;
}

/* Sticky Summary Card on Checkout Page */
.cubo-checkout-summary-card {
	background: #ffffff;
	border: 1px solid var(--cubo-border-color, #e2e8f0);
	border-radius: var(--cubo-radius-lg, 16px);
	box-shadow: var(--cubo-shadow-md, 0 4px 12px rgba(0,0,0,0.06));
	padding: 24px;
	position: sticky;
	top: 24px;
	box-sizing: border-box;
}

.cubo-summary-tour-header {
	display: flex;
	gap: 14px;
	align-items: center;
	padding-bottom: 18px;
	border-bottom: 1px solid #f1f5f9;
	margin-bottom: 18px;
}

.cubo-summary-tour-img {
	width: 100% !important;
	height: 100% !important;
	min-width: 100% !important;
	min-height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	object-fit: cover !important;
	object-position: center center !important;
	display: block !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
}

.cubo-summary-tour-meta h4 {
	font-size: 15px;
	font-weight: 700;
	margin: 0 0 4px 0;
	color: #0f172a;
	line-height: 1.3;
}

.cubo-summary-booking-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-bottom: 18px;
}

.cubo-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 10px;
	background: #f8fafc;
	border: 1px solid #e2e8f0;
	border-radius: 20px;
	font-size: 12px;
	font-weight: 600;
	color: #334155;
}

.cubo-chip svg {
	width: 14px;
	height: 14px;
	fill: var(--cubo-accent, #0f2a4a);
}

/* PayPal Redirection Overlay */
.cubo-redirect-overlay {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background: rgba(15, 23, 42, 0.7);
	backdrop-filter: blur(4px);
	z-index: 999999;
	display: flex;
	align-items: center;
	justify-content: center;
}

.cubo-redirect-box {
	background: #ffffff;
	border-radius: 16px;
	padding: 36px 32px;
	text-align: center;
	max-width: 420px;
	box-shadow: 0 20px 40px rgba(0,0,0,0.25);
}

.cubo-redirect-spinner {
	width: 48px;
	height: 48px;
	border: 4px solid #f1f5f9;
	border-top-color: var(--cubo-accent, #0f2a4a);
	border-radius: 50%;
	animation: cubo-spin 0.8s linear infinite;
	margin: 0 auto 16px auto;
}

@keyframes cubo-spin {
	to { transform: rotate(360deg); }
}

.cubo-redirect-title {
	font-size: 18px;
	font-weight: 700;
	color: #0f172a;
	margin: 0 0 8px 0;
}

.cubo-redirect-desc {
	font-size: 13.5px;
	color: #64748b;
	margin: 0;
}

/* Trust & Guarantee Badges in Summary */
.cubo-trust-badges {
	margin-top: 20px;
	padding-top: 16px;
	border-top: 1px dashed #e2e8f0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cubo-trust-item {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 13px;
	font-weight: 500;
	color: #64748b;
}

.cubo-trust-icon {
	width: 18px;
	height: 18px;
	flex-shrink: 0;
	fill: #10b981;
}

/* ==========================================================================
   TOUR MASTER LEAK OVERRIDES
   Zero out the 20px asymmetrical padding leaking from Tour Master on mobile (< 600px).
   ========================================================================== */
@media screen and (max-width: 600px) {
	.single-tour .tourmaster-single-main-content,
	.single-tour .tourmaster-with-sidebar .tourmaster-single-main-content,
	.single-tour .tourmaster-with-sidebar .tourmaster-tour-info-outer .tourmaster-tour-info-wrap,
	body.single-tour .tourmaster-single-main-content,
	body.single-tour .tourmaster-with-sidebar .tourmaster-single-main-content,
	body.single-tour .tourmaster-with-sidebar .tourmaster-tour-info-outer .tourmaster-tour-info-wrap {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	.cubo-footer-pricing-card {
		padding: 16px 14px !important;
	}
	.cubo-footer-guests-summary {
		font-size: 13px !important;
		gap: 5px !important;
	}
	.cubo-footer-rate-calc {
		font-size: 11px !important;
		padding: 2px 6px !important;
	}
}

/* ==========================================================================
   Tour Master Single Header Title Typography
   Forces Poppins Google Font and 60px display font size on desktop, 40px on mobile.
   ========================================================================== */
h1.tourmaster-single-header-title,
.single-tour h1.tourmaster-single-header-title,
.tourmaster-single-header-title-wrap .tourmaster-single-header-title,
.tourmaster-single-header-title {
	font-family: 'Poppins', sans-serif !important;
	font-size: 60px !important;
	font-weight: 700 !important;
	line-height: 1.15 !important;
	letter-spacing: -0.02em !important;
}

@media only screen and (max-width: 600px) {
	h1.tourmaster-single-header-title,
	.single-tour h1.tourmaster-single-header-title,
	.tourmaster-single-header-title-wrap .tourmaster-single-header-title,
	.tourmaster-single-header-title {
		font-size: 40px !important;
		line-height: 1.2 !important;
	}
}

/* ==========================================================================
   Elementor Container & Mobile Gap Elimination
   Prevents Elementor flex column stretch and stray empty widgets from creating
   massive dead space below the booking form on mobile.
   ========================================================================== */
@media screen and (max-width: 767px) {
	/* Normalize any Elementor container hosting the checkout shortcode */
	.e-con:has(.cubo-tm-checkout-wrapper),
	.elementor-element.elementor-element-dea4d6a {
		display: block !important;
		height: auto !important;
		min-height: 0 !important;
		margin-bottom: 0 !important;
		--margin-bottom: 0px !important;
	}

	.elementor-widget-shortcode:has(.cubo-tm-checkout-wrapper),
	.elementor-element.elementor-element-c66fdf9 {
		display: block !important;
		height: auto !important;
		min-height: 0 !important;
		margin-bottom: 0 !important;
	}

	.elementor-widget-shortcode:has(.cubo-tm-checkout-wrapper) .elementor-widget-container,
	.elementor-element.elementor-element-c66fdf9 .elementor-widget-container {
		height: auto !important;
	}

	/* Collapse empty/placeholder heading widget left in Elementor sidebar */
	.elementor-element-3064dfc {
		display: none !important;
	}

	/* Ensure clean, consistent margin after the checkout shortcode on mobile */
	.cubo-tm-checkout-wrapper {
		margin-bottom: 24px !important;
	}
}

/* ==========================================================================
   EMBEDDED PAYMENT GATEWAY STYLING (Stripe Elements & Forms)
   ========================================================================== */

.cubo-gateway-embed-target {
	margin-top: 20px;
}

.cubo-gateway-embed-target .goodlayers-payment-form,
#goodlayers-stripe-payment-form {
	background: #f8fafc;
	border: 1px solid var(--cubo-border-color, #e2e8f0);
	border-radius: var(--cubo-radius-md, 14px);
	padding: 22px 20px;
	box-shadow: 0 4px 12px rgba(15, 23, 42, 0.03);
}

.goodlayers-payment-form-field {
	margin-bottom: 18px;
}

.goodlayers-payment-field-head {
	display: block;
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--cubo-heading-color, #0f172a);
	margin-bottom: 8px;
}

#card-element {
	background: #ffffff;
	border: 1.5px solid #cbd5e1;
	border-radius: 10px;
	padding: 14px 16px;
	box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

#card-element.StripeElement--focus {
	border-color: var(--cubo-accent-color, #1e40af);
	box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}

#card-element.StripeElement--invalid {
	border-color: #ef4444;
	box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);
}

/* Stripe Submit Button */
#card-button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	padding: 16px 24px;
	background: linear-gradient(135deg, #1e40af 0%, #2563eb 100%);
	color: #ffffff;
	font-family: inherit;
	font-size: 16px;
	font-weight: 700;
	border: none;
	border-radius: 12px;
	cursor: pointer;
	box-shadow: 0 4px 14px rgba(37, 99, 235, 0.35);
	transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
	margin-top: 16px;
	position: relative;
	min-height: 52px;
}

#card-button:hover:not(:disabled) {
	background: linear-gradient(135deg, #1d4ed8 0%, #1d4ed8 100%);
	transform: translateY(-1px);
	box-shadow: 0 6px 20px rgba(37, 99, 235, 0.45);
}

#card-button:disabled,
#card-button.now-loading {
	opacity: 0.75;
	cursor: not-allowed;
	transform: none;
	box-shadow: none;
}

#card-button.now-loading::after {
	content: '';
	display: inline-block;
	width: 18px;
	height: 18px;
	margin-left: 10px;
	border: 2.5px solid rgba(255, 255, 255, 0.3);
	border-top-color: #ffffff;
	border-radius: 50%;
	animation: cubo-spin 0.75s linear infinite;
}

/* Stripe Payment Error Notices */
.goodlayers-stripe-payment-form .payment-errors,
#goodlayers-stripe-payment-form .payment-errors,
.goodlayers-payment-req-field {
	display: none;
	background: #fef2f2;
	border: 1px solid #fecaca;
	color: #b91c1c;
	font-size: 14px;
	font-weight: 500;
	padding: 12px 16px;
	border-radius: 10px;
	margin: 12px 0 16px;
	line-height: 1.5;
}


