/**
 * Custom Booking System - Frontend Styles
 * This file will be populated as frontend modules (Product Archive,
 * Single Product, Cart, Checkout, Dashboard) are generated.
 */

:root {
	--cbs-color-text: #1f2440;
	--cbs-color-muted: #6b7280;
	--cbs-color-border: #e9e9f2;
	--cbs-color-bg: #ffffff;
	--cbs-color-bg-subtle: #f7f7fb;
	--cbs-color-success: #16a34a;
	--cbs-color-warning: #d97706;
	--cbs-color-danger: #dc2626;
	--cbs-radius-lg: 18px;
	--cbs-radius-md: 12px;
	--cbs-radius-pill: 999px;

	/* Hero banner */
	--cbs-hero-start: #8467f2;
	--cbs-hero-end: #6f4de0;
	--cbs-hero-text: #ffffff;

	/* Primary call-to-action */
	--cbs-cta: #ff6f6f;
	--cbs-cta-hover: #f95a5a;
	--cbs-cta-text: #ffffff;

	/* Secondary accent (links, focus states) */
	--cbs-accent: #6f4de0;
}

/**
 * GLOBAL: the [hidden] attribute must always win, regardless of any
 * class also applied to the same element setting display:flex/grid/
 * block elsewhere in this stylesheet. Without this, `hidden` silently
 * does nothing on any element that also has a class like .cbs-price-row
 * or .cbs-form-grid (both set display explicitly) — a bug class that
 * has bitten this plugin more than once. Fixing it globally here means
 * every current AND future use of the hidden attribute just works.
 */
[hidden] {
	display: none !important;
}

/**
 * GLOBAL: ensure padding/border are included in the declared width of
 * every form control, so two fields side-by-side in a grid never
 * overflow their column and overlap their neighbor.
 */
input,
select,
textarea,
button {
	box-sizing: border-box;
}

/* -----------------------------------------------------------
 * Hero banner
 * ---------------------------------------------------------- */
.cbs-hero {
	position: relative;
	background: linear-gradient(135deg, var(--cbs-hero-start), var(--cbs-hero-end));
	padding: 56px 20px 88px;
	text-align: center;
	color: var(--cbs-hero-text);
	overflow: hidden;
}

.cbs-hero-has-image {
	padding: 64px 20px;
}

.cbs-hero-overlay {
	position: absolute;
	inset: 0;
	z-index: 1;
}

.cbs-hero-inner {
	position: relative;
	z-index: 2;
	max-width: 880px;
	margin: 0 auto;
}

.cbs-hero-title {
	font-size: 34px;
	font-weight: 800;
	margin: 0 0 18px;
	color: var(--cbs-hero-text);
	letter-spacing: -0.01em;
}

.cbs-hero-description {
	font-size: 15px;
	line-height: 1.75;
	color: rgba(255, 255, 255, 0.92);
}

.cbs-hero-description p {
	margin: 0 0 14px;
}

.cbs-hero-description p:last-child {
	margin-bottom: 0;
}

.cbs-hero-description strong,
.cbs-hero-description b {
	color: #ffffff;
}

.cbs-hero-description a {
	color: #ffffff;
	text-decoration: underline;
}

.cbs-hero-wave {
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	line-height: 0;
}

.cbs-hero-wave svg {
	display: block;
	width: 100%;
	height: 56px;
}

.cbs-hero-wave path {
	fill: var(--cbs-color-bg);
}

/* -----------------------------------------------------------
 * Archive layout
 * ---------------------------------------------------------- */
.cbs-archive-wrap {
	max-width: 1240px;
	margin: 0 auto;
	padding: 0 20px 72px;
	color: var(--cbs-color-text);
}

.cbs-results-count {
	color: var(--cbs-color-muted);
	font-size: 14px;
	margin: 0 0 20px;
}

/* -----------------------------------------------------------
 * Filter bar — elevated card floating over the hero wave
 * ---------------------------------------------------------- */
.cbs-filter-bar {
	background: var(--cbs-color-bg);
	border-radius: var(--cbs-radius-lg);
	box-shadow: 0 12px 32px rgba(31, 36, 64, 0.12);
	padding: 20px;
	margin: -56px auto 40px;
	position: relative;
	z-index: 2;
}

.cbs-filter-row {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: flex-end;
}

.cbs-filter-field {
	display: flex;
	flex-direction: column;
	flex: 1 1 170px;
	position: relative;
}

.cbs-filter-label {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--cbs-color-muted);
	margin-bottom: 6px;
}

.cbs-filter-field input[type="text"],
.cbs-filter-field input[type="date"],
.cbs-filter-field select {
	padding: 11px 14px;
	border: 1px solid var(--cbs-color-border);
	border-radius: 10px;
	font-size: 14px;
	background: var(--cbs-color-bg-subtle);
	color: var(--cbs-color-text);
	min-width: 0;
	width: 100%;
}

.cbs-filter-field input:focus,
.cbs-filter-field select:focus {
	outline: none;
	border-color: var(--cbs-accent);
	background: #fff;
}

.cbs-filter-search input[type="text"] {
	padding-left: 14px;
}

.cbs-filter-submit {
	flex: 0 0 auto;
}

.cbs-filter-clear-row {
	margin-top: 12px;
	text-align: right;
}

.cbs-filter-clear {
	font-size: 13px;
	color: var(--cbs-color-muted);
	text-decoration: none;
}

.cbs-filter-clear:hover {
	color: var(--cbs-color-danger);
}

/* -----------------------------------------------------------
 * Buttons
 * ---------------------------------------------------------- */
.cbs-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 12px 24px;
	border-radius: var(--cbs-radius-pill);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
	cursor: pointer;
	border: none;
	line-height: 1.2;
	white-space: nowrap;
}

.cbs-btn-primary {
	background: var(--cbs-accent);
	color: #fff;
}

.cbs-btn-primary:hover {
	background: #5d3fce;
	color: #fff;
}

/* -----------------------------------------------------------
 * Product grid + card
 * ---------------------------------------------------------- */
.cbs-product-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}

.cbs-product-card {
	border-radius: var(--cbs-radius-lg);
	overflow: hidden;
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	box-shadow: 0 2px 10px rgba(31, 36, 64, 0.05);
	display: flex;
	flex-direction: column;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.cbs-product-card:hover {
	box-shadow: 0 16px 32px rgba(31, 36, 64, 0.12);
	transform: translateY(-3px);
}

.cbs-product-card-image-link {
	display: block;
}

.cbs-product-card-image {
	position: relative;
	aspect-ratio: 4 / 3;
	background: var(--cbs-color-bg-subtle);
	overflow: hidden;
}

.cbs-product-card-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.cbs-product-card-image-placeholder {
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, #eef2f7, #e2e8f0);
}

.cbs-badge {
	position: absolute;
	top: 12px;
	right: 12px;
	padding: 5px 12px;
	border-radius: var(--cbs-radius-pill);
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: #fff;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
}

.cbs-badge-available {
	background: var(--cbs-color-success);
}

.cbs-badge-limited {
	background: var(--cbs-color-warning);
}

.cbs-product-card-image .cbs-badge-limited {
	display: none;
}

.cbs-badge-booked,
.cbs-badge-blocked {
	background: var(--cbs-color-danger);
}

.cbs-product-card-body {
	padding: 20px 20px 22px;
	display: flex;
	flex-direction: column;
	flex: 1;
	text-align: center;
}

.cbs-product-card-title {
	font-size: 18px;
	font-weight: 700;
	margin: 0 0 8px;
	line-height: 1.35;
}

.cbs-product-card-title a {
	color: var(--cbs-color-text);
	text-decoration: none;
}

.cbs-product-card-title a:hover {
	color: var(--cbs-accent);
}

.cbs-product-card-price {
	font-size: 14px;
	color: var(--cbs-color-muted);
	margin: 0 0 18px;
}

.cbs-product-card-cta {
	display: block;
	margin-top: auto;
	padding: 13px 20px;
	border-radius: var(--cbs-radius-pill);
	background: var(--cbs-cta);
	color: var(--cbs-cta-text);
	font-size: 13px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	text-align: center;
	text-decoration: none;
	transition: background 0.15s ease;
}

.cbs-product-card-cta:hover {
	background: var(--cbs-cta-hover);
	color: var(--cbs-cta-text);
}

/* -----------------------------------------------------------
 * No results
 * ---------------------------------------------------------- */
.cbs-no-results {
	padding: 56px 20px;
	text-align: center;
	color: var(--cbs-color-muted);
	background: var(--cbs-color-bg-subtle);
	border-radius: var(--cbs-radius-lg);
}

/* -----------------------------------------------------------
 * Pagination
 * ---------------------------------------------------------- */
.cbs-pagination {
	margin-top: 40px;
	display: flex;
	justify-content: center;
}

.cbs-pagination ul.page-numbers {
	display: flex;
	gap: 6px;
	list-style: none;
	padding: 0;
	margin: 0;
}

.cbs-pagination .page-numbers li a,
.cbs-pagination .page-numbers li span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 38px;
	height: 38px;
	padding: 0 10px;
	border: 1px solid var(--cbs-color-border);
	border-radius: 10px;
	text-decoration: none;
	color: var(--cbs-color-text);
	font-size: 14px;
}

.cbs-pagination .page-numbers li span.current {
	background: var(--cbs-accent);
	border-color: var(--cbs-accent);
	color: #fff;
}

.cbs-pagination .page-numbers li a:hover {
	border-color: var(--cbs-accent);
	color: var(--cbs-accent);
}

/* -----------------------------------------------------------
 * Responsive breakpoints
 * ---------------------------------------------------------- */
@media (max-width: 900px) {
	.cbs-product-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 20px;
	}

	.cbs-hero {
		padding: 44px 20px 96px;
	}

	.cbs-hero-title {
		font-size: 26px;
	}
}

@media (max-width: 640px) {
	.cbs-product-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 12px;
	}

	.cbs-product-card {
		border-radius: 14px;
	}

	.cbs-product-card-image {
		aspect-ratio: 1 / 1;
	}

	.cbs-badge {
		top: 8px;
		right: 8px;
		left: 8px;
		padding: 4px 8px;
		font-size: 9px;
		text-align: center;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}

	.cbs-product-card-body {
		padding: 12px 10px 14px;
	}

	.cbs-product-card-title {
		font-size: 14px;
		margin: 0 0 4px;
		line-height: 1.3;
		display: -webkit-box;
		-webkit-line-clamp: 2;
		-webkit-box-orient: vertical;
		overflow: hidden;
	}

	.cbs-product-card-price {
		font-size: 12px;
		margin: 0 0 12px;
	}

	.cbs-product-card-cta {
		padding: 9px 10px;
		font-size: 11px;
		border-radius: 999px;
	}

	.cbs-filter-row {
		flex-direction: column;
		align-items: stretch;
	}

	.cbs-filter-field {
		flex: 1 1 auto;
	}

	.cbs-filter-submit .cbs-btn {
		width: 100%;
	}

	.cbs-filter-bar {
		margin-top: -40px;
	}

	.cbs-hero {
		padding: 36px 20px 84px;
	}
}

/* =============================================================
 * Single Product Page
 * ============================================================ */
.cbs-single-wrap {
	max-width: 1200px;
	margin: 0 auto;
	padding: 28px 20px 72px;
	color: var(--cbs-color-text);
}

.cbs-breadcrumbs {
	font-size: 13px;
	color: var(--cbs-color-muted);
	margin-bottom: 20px;
}

.cbs-breadcrumbs a {
	color: var(--cbs-color-muted);
	text-decoration: none;
}

.cbs-breadcrumbs a:hover {
	color: var(--cbs-accent);
}

.cbs-breadcrumb-sep {
	margin: 0 6px;
}

.cbs-breadcrumb-current {
	color: var(--cbs-color-text);
	font-weight: 600;
}

/* -----------------------------------------------------------
 * Two-column top section: gallery + info/booking
 * ---------------------------------------------------------- */
.cbs-single-main {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: 44px;
	align-items: start;
}

/* Gallery */
.cbs-gallery {
	display: flex;
	flex-direction: row-reverse;
	gap: 14px;
	align-items: flex-start;
}

.cbs-gallery-main {
	position: relative;
	flex: 1 1 auto;
	min-width: 0;
	border-radius: var(--cbs-radius-lg);
	overflow: hidden;
	background: var(--cbs-color-bg-subtle);
	aspect-ratio: 4 / 3;
	border: 1px solid var(--cbs-color-border);
	cursor: zoom-in;
}

.cbs-gallery-main img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.15s ease;
}

.cbs-gallery-main.is-zooming img {
	transform: scale(2.2);
}

.cbs-gallery-zoom-hint {
	position: absolute;
	bottom: 12px;
	right: 12px;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	color: var(--cbs-color-text);
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 2px 8px rgba(31, 36, 64, 0.15);
	pointer-events: none;
}

.cbs-gallery-zoom-hint svg {
	width: 18px;
	height: 18px;
}

.cbs-gallery-main-placeholder {
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, #eef2f7, #e2e8f0);
}

.cbs-gallery-thumbs-col {
	display: flex;
	flex-direction: column;
	flex: 0 0 84px;
	align-items: center;
	gap: 8px;
}

.cbs-gallery-thumb-nav {
	width: 100%;
	height: 22px;
	padding: 0;
	border: 1px solid var(--cbs-color-border);
	border-radius: 6px;
	background: #fff;
	color: var(--cbs-color-muted);
	font-size: 10px;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background 0.15s ease, color 0.15s ease;
}

.cbs-gallery-thumb-nav:hover {
	background: var(--cbs-color-bg-subtle);
	color: var(--cbs-accent);
}

.cbs-gallery-thumb-nav:disabled {
	opacity: 0.35;
	cursor: default;
	background: #fff;
	color: var(--cbs-color-muted);
}

.cbs-gallery-thumbs-viewport {
	width: 100%;
	max-height: 366px;
	overflow-y: auto;
	overflow-x: hidden;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-ms-overflow-style: none;
	-webkit-overflow-scrolling: touch;
}

.cbs-gallery-thumbs-viewport::-webkit-scrollbar {
	display: none;
}

.cbs-gallery-thumbs {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.cbs-gallery-thumb {
	width: 84px;
	height: 84px;
	padding: 0;
	border: 2px solid transparent;
	border-radius: 10px;
	overflow: hidden;
	cursor: pointer;
	background: var(--cbs-color-bg-subtle);
	transition: border-color 0.15s ease;
}

.cbs-gallery-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.cbs-gallery-thumb.is-active,
.cbs-gallery-thumb:hover {
	border-color: var(--cbs-accent);
}

@media (max-width: 640px) {
	.cbs-gallery {
		flex-direction: column;
	}

	.cbs-gallery-thumbs-col {
		flex-direction: row;
		align-items: center;
		flex: 0 0 auto;
		width: 100%;
		max-width: 100%;
		margin: 12px 0 0;
		gap: 8px;
	}

	.cbs-gallery-thumb-nav {
		display: flex;
		flex: 0 0 28px;
		width: 28px;
		height: 56px;
	}

	.cbs-gallery-thumb-nav-up {
		transform: rotate(-90deg);
	}

	.cbs-gallery-thumb-nav-down {
		transform: rotate(-90deg);
	}

	.cbs-gallery-thumbs-viewport {
		max-height: none;
		max-width: 100%;
		overflow-x: auto;
		overflow-y: hidden;
		flex: 1 1 auto;
	}

	.cbs-gallery-thumbs {
		flex-direction: row;
		gap: 8px;
	}

	.cbs-gallery-thumb {
		width: 56px;
		height: 56px;
	}
}

/* Info column */
.cbs-single-categories {
	margin-bottom: 10px;
}

.cbs-single-category-tag {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--cbs-accent);
	text-decoration: none;
	margin-right: 10px;
}

.cbs-single-category-tag:hover {
	text-decoration: underline;
}

.cbs-single-title {
	font-size: 30px;
	font-weight: 800;
	line-height: 1.25;
	margin: 0 0 12px;
	letter-spacing: -0.01em;
}

.cbs-badge-inline {
	position: static;
	display: inline-flex;
	box-shadow: none;
	margin-bottom: 16px;
}

.cbs-single-short-description {
	font-size: 15px;
	line-height: 1.7;
	color: var(--cbs-color-muted);
	margin: 0 0 24px;
}

/* -----------------------------------------------------------
 * Booking Summary card
 * ---------------------------------------------------------- */
.cbs-booking-summary {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	box-shadow: 0 8px 28px rgba(31, 36, 64, 0.08);
	padding: 24px;
}

.cbs-booking-price-line {
	margin-bottom: 18px;
}

.cbs-booking-price {
	font-size: 26px;
	font-weight: 800;
	color: var(--cbs-color-text);
}

.cbs-booking-price-unit {
	font-size: 14px;
	color: var(--cbs-color-muted);
	margin-left: 4px;
}

.cbs-booking-field-row {
	display: flex;
	gap: 12px;
	margin-bottom: 14px;
}

.cbs-booking-field {
	flex: 1;
	display: flex;
	flex-direction: column;
}

.cbs-booking-field label {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--cbs-color-muted);
	margin-bottom: 6px;
}

.cbs-booking-field input[type="date"],
.cbs-booking-field input[type="number"] {
	padding: 11px 12px;
	border: 1px solid var(--cbs-color-border);
	border-radius: 10px;
	font-size: 14px;
	background: var(--cbs-color-bg-subtle);
	width: 100%;
}

.cbs-booking-field input:focus {
	outline: none;
	border-color: var(--cbs-accent);
	background: #fff;
}

.cbs-booking-checkbox-field label {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	font-weight: 500;
	text-transform: none;
	letter-spacing: normal;
	color: var(--cbs-color-text);
	cursor: pointer;
}

.cbs-booking-checkbox-field input[type="checkbox"] {
	width: 16px;
	height: 16px;
}

.cbs-price-breakdown {
	margin: 18px 0;
	padding-top: 16px;
	border-top: 1px dashed var(--cbs-color-border);
}

.cbs-price-row {
	display: flex;
	justify-content: space-between;
	font-size: 14px;
	padding: 6px 0;
}

.cbs-price-row-muted {
	color: var(--cbs-color-muted);
	font-size: 13px;
}

.cbs-price-row-total {
	border-top: 1px solid var(--cbs-color-border);
	margin-top: 8px;
	padding-top: 12px;
	font-size: 17px;
	font-weight: 800;
}

.cbs-booking-error {
	background: #fef2f2;
	color: var(--cbs-color-danger);
	border: 1px solid #fecaca;
	border-radius: 8px;
	padding: 10px 12px;
	font-size: 13px;
	margin-bottom: 14px;
}

.cbs-booking-submit {
	width: 100%;
	font-size: 14px;
	padding: 15px 20px;
	border: none;
	cursor: pointer;
}

.cbs-booking-submit:disabled {
	background: #d1d5db;
	color: #6b7280;
	cursor: not-allowed;
}

/* -----------------------------------------------------------
 * Product/Rental details section
 * ---------------------------------------------------------- */
.cbs-single-details {
	margin-top: 56px;
}

.cbs-details-heading {
	font-size: 21px;
	font-weight: 800;
	margin: 0 0 18px;
}

.cbs-details-section {
	margin-bottom: 40px;
}

.cbs-single-gallery-description {
	margin-top: 24px;
	margin-bottom: 0;
}

.cbs-details-content {
	font-size: 15px;
	line-height: 1.8;
	color: var(--cbs-color-text);
}

.cbs-info-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
	margin-bottom: 20px;
}

.cbs-info-table th,
.cbs-info-table td {
	text-align: left;
	padding: 12px 14px;
	border-bottom: 1px solid var(--cbs-color-border);
}

.cbs-info-table th {
	width: 40%;
	color: var(--cbs-color-muted);
	font-weight: 600;
}

.cbs-info-table td {
	font-weight: 600;
}

.cbs-rental-instructions {
	background: var(--cbs-color-bg-subtle);
	border-radius: var(--cbs-radius-md);
	padding: 18px 20px;
}

.cbs-rental-instructions h3 {
	font-size: 15px;
	margin: 0 0 8px;
}

.cbs-rental-instructions p {
	font-size: 14px;
	line-height: 1.7;
	color: var(--cbs-color-muted);
	margin: 0;
}

/* -----------------------------------------------------------
 * Availability Calendar
 * ---------------------------------------------------------- */
.cbs-availability-calendar {
	background: var(--cbs-color-bg-subtle);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 18px;
	margin-bottom: 20px;
}

.cbs-calendar-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 14px;
}

.cbs-calendar-title {
	font-size: 15px;
	font-weight: 800;
	margin: 0;
}

.cbs-calendar-nav {
	display: flex;
	align-items: center;
	gap: 10px;
}

.cbs-calendar-nav-btn {
	width: 26px;
	height: 26px;
	border: 1px solid var(--cbs-color-border);
	border-radius: 8px;
	background: var(--cbs-color-bg-subtle);
	cursor: pointer;
	font-size: 15px;
	line-height: 1;
	color: var(--cbs-color-text);
}

.cbs-calendar-nav-btn:hover {
	border-color: var(--cbs-accent);
	color: var(--cbs-accent);
}

.cbs-calendar-month-label {
	font-size: 13px;
	font-weight: 700;
	min-width: 92px;
	text-align: center;
}

.cbs-calendar-weekdays {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	font-size: 11px;
	font-weight: 700;
	color: var(--cbs-color-muted);
	text-align: center;
	margin-bottom: 6px;
}

.cbs-calendar-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 4px;
}

.cbs-cal-day {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1;
	border-radius: 8px;
	font-size: 12px;
	font-weight: 600;
	color: var(--cbs-color-text);
}

.cbs-cal-day-empty {
	visibility: hidden;
}

.cbs-cal-day-past {
	color: #cbd5e1;
}

.cbs-cal-day-available {
	background: #ecfdf3;
	color: #15803d;
}

.cbs-cal-day-limited {
	background: #fffbeb;
	color: #b45309;
}

.cbs-cal-day-booked {
	background: #fef2f2;
	color: #b91c1c;
	text-decoration: line-through;
}

.cbs-cal-day-blocked {
	background: #f3f4f6;
	color: #9ca3af;
	text-decoration: line-through;
}

.cbs-calendar-loading {
	grid-column: 1 / -1;
	text-align: center;
	font-size: 12px;
	color: var(--cbs-color-muted);
	padding: 20px 0;
}

.cbs-calendar-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid var(--cbs-color-border);
}

.cbs-calendar-legend-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	color: var(--cbs-color-muted);
}

.cbs-cal-dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	display: inline-block;
}

.cbs-cal-dot-available {
	background: #16a34a;
}

.cbs-cal-dot-limited {
	background: #d97706;
}

.cbs-cal-dot-booked {
	background: #dc2626;
}

.cbs-cal-dot-blocked {
	background: #9ca3af;
}

/* -----------------------------------------------------------
 * Related products
 * ---------------------------------------------------------- */
.cbs-related-products {
	margin-top: 56px;
	grid-column: 1 / -1;
}

/* -----------------------------------------------------------
 * Responsive
 * ---------------------------------------------------------- */
@media (max-width: 900px) {
	.cbs-single-main,
	.cbs-single-details {
		grid-template-columns: 1fr;
	}

	.cbs-availability-calendar {
		position: static;
	}

	.cbs-single-title {
		font-size: 24px;
	}
}

/* -----------------------------------------------------------
 * Pricing tiers table (rate card style)
 * ---------------------------------------------------------- */
.cbs-pricing-tiers {
	margin-bottom: 24px;
}

.cbs-pricing-logic {
	font-size: 14px;
	line-height: 1.7;
	color: var(--cbs-color-muted);
	margin: 0 0 14px;
}

.cbs-pricing-table {
	width: 100%;
	border-collapse: collapse;
	border: 1px solid var(--cbs-color-text);
	font-size: 14px;
}

.cbs-pricing-table th,
.cbs-pricing-table td {
	border: 1px solid var(--cbs-color-text);
	padding: 12px 16px;
	text-align: left;
}

.cbs-pricing-table thead th {
	background: #d9d9d9;
	font-weight: 700;
}

.cbs-pricing-table-price-col {
	text-align: right;
}

.cbs-pricing-table tbody td:first-child {
	font-weight: 500;
}

.cbs-pricing-table tbody td.cbs-pricing-table-price-col {
	font-weight: 700;
}

/* =============================================================
 * Read-only Event Dates box (single product page)
 * ============================================================ */
.cbs-event-dates-box {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	margin-bottom: 20px;
}

.cbs-event-dates-line {
	margin: 0;
	font-size: 15px;
	font-weight: 700;
	color: var(--cbs-color-text);
}

.cbs-event-dates-label {
	font-size: 15px;
	font-weight: 700;
	color: var(--cbs-color-text);
	text-transform: none;
	letter-spacing: normal;
}

.cbs-event-dates-value {
	font-weight: 700;
	color: var(--cbs-color-text);
}

.cbs-event-dates-line .cbs-event-dates-label {
	margin-right: 4px;
}

.cbs-event-dates-value {
	font-size: 14px;
	font-weight: 700;
	color: var(--cbs-color-text);
}

.cbs-event-dates-change {
	display: inline-block;
	background: none;
	border: none;
	color: var(--cbs-accent);
	padding: 0;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	white-space: nowrap;
	text-decoration: underline;
}

.cbs-event-dates-change:hover {
	background: var(--cbs-accent);
	color: #fff;
}

/* =============================================================
 * Pricing Package Cards (Day Rental / Extra Day Rental / Weekend Rental)
 * ============================================================ */
.cbs-pricing-packages {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 20px;
}

.cbs-pricing-package {
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-md);
	padding: 14px 16px;
	background: #fff;
}

.cbs-pricing-package-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 8px;
}

.cbs-pricing-package-title {
	font-size: 15px;
	font-weight: 700;
	color: var(--cbs-color-text);
}

.cbs-pricing-package-price {
	font-size: 17px;
	font-weight: 800;
	color: var(--cbs-accent);
}

.cbs-pricing-package-badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	font-weight: 700;
	padding: 6px 12px;
	border-radius: var(--cbs-radius-pill);
	background: #fef3c7;
	color: #92400e;
}

.cbs-pricing-package-badge-star {
	font-size: 11px;
}

/* =============================================================
 * Damage Waiver global note
 * ============================================================ */
.cbs-damage-waiver-note {
	display: flex;
	align-items: center;
	gap: 10px;
	background: #eff6ff;
	border: 1px solid #bfdbfe;
	border-radius: var(--cbs-radius-md);
	padding: 12px 14px;
	font-size: 13px;
	color: #1e40af;
	margin-bottom: 20px;
}

.cbs-damage-waiver-icon {
	font-size: 16px;
}

/* =============================================================
 * Responsive: modal
 * ============================================================ */
@media (max-width: 480px) {
	.cbs-event-dates-line {
		font-size: 14px;
	}
}

/* =============================================================
 * Shopping Cart
 * ============================================================ */
.cbs-cart-wrap {
	max-width: 1100px;
	margin: 0 auto;
	padding: 32px 20px 72px;
	color: var(--cbs-color-text);
}

.cbs-cart-flash {
	padding: 12px 16px;
	border-radius: var(--cbs-radius-md);
	font-size: 14px;
	margin-bottom: 20px;
}

.cbs-cart-flash-success {
	background: #ecfdf3;
	color: #15803d;
	border: 1px solid #bbf7d0;
}

.cbs-cart-flash-error {
	background: #fef2f2;
	color: #b91c1c;
	border: 1px solid #fecaca;
}

.cbs-cart-empty {
	text-align: center;
	padding: 64px 20px;
	background: var(--cbs-color-bg-subtle);
	border-radius: var(--cbs-radius-lg);
}

.cbs-cart-empty p {
	font-size: 16px;
	color: var(--cbs-color-muted);
	margin: 0 0 20px;
}

.cbs-cart-layout {
	display: grid;
	grid-template-columns: 1fr 340px;
	gap: 32px;
	align-items: start;
	max-width: 100%;
	overflow-x: hidden;
}

.cbs-cart-items {
	display: flex;
	flex-direction: column;
	gap: 16px;
	max-width: 100%;
	min-width: 0;
}

.cbs-cart-row {
	display: flex;
	gap: 16px;
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 16px;
}

.cbs-cart-row-image {
	flex: 0 0 96px;
	width: 96px;
	height: 96px;
	border-radius: var(--cbs-radius-md);
	overflow: hidden;
	background: var(--cbs-color-bg-subtle);
	display: block;
}

.cbs-cart-row-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.cbs-cart-row-image-placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: linear-gradient(135deg, #eef2f7, #e2e8f0);
}

.cbs-cart-row-body {
	flex: 1;
	min-width: 0;
}

.cbs-cart-row-header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px;
}

.cbs-cart-row-title {
	font-size: 16px;
	font-weight: 700;
	margin: 0;
}

.cbs-cart-row-title a {
	color: var(--cbs-color-text);
	text-decoration: none;
}

.cbs-cart-row-title a:hover {
	color: var(--cbs-accent);
}

.cbs-cart-row-line-total {
	font-size: 16px;
	font-weight: 800;
	color: var(--cbs-accent);
	white-space: nowrap;
}

.cbs-cart-row-meta {
	font-size: 13px;
	color: var(--cbs-color-muted);
	margin: 4px 0 14px;
}

.cbs-cart-row-fields {
	display: flex;
	align-items: flex-end;
	gap: 10px;
	flex-wrap: wrap;
}

.cbs-cart-row-field {
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.cbs-cart-row-field label {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--cbs-color-muted);
}

.cbs-cart-row-field input {
	padding: 8px 10px;
	border: 1px solid var(--cbs-color-border);
	border-radius: 8px;
	font-size: 13px;
	background: var(--cbs-color-bg-subtle);
}

.cbs-cart-row-field input[type="number"] {
	width: 70px;
}

.cbs-cart-remove-btn {
	margin-left: auto;
	background: none;
	border: 1px solid var(--cbs-color-border);
	color: var(--cbs-color-danger);
	border-radius: var(--cbs-radius-pill);
	padding: 8px 16px;
	font-size: 12px;
	font-weight: 700;
	cursor: pointer;
}

.cbs-cart-remove-btn:hover {
	background: #fef2f2;
	border-color: #fecaca;
}

.cbs-cart-actions-row {
	display: flex;
	align-items: center;
	gap: 16px;
	margin-top: 8px;
}

.cbs-btn-secondary {
	background: #fff;
	color: var(--cbs-accent);
	border: 1px solid var(--cbs-accent);
}

.cbs-btn-secondary:hover {
	background: var(--cbs-accent);
	color: #fff;
}

.cbs-cart-clear-link {
	background: none;
	border: none;
	color: var(--cbs-color-muted);
	font-size: 13px;
	text-decoration: underline;
	cursor: pointer;
}

.cbs-cart-clear-link:hover {
	color: var(--cbs-color-danger);
}

/* Cart summary sidebar */
.cbs-cart-summary {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 22px;
	position: sticky;
	top: 20px;
}

.cbs-cart-summary-title {
	font-size: 17px;
	font-weight: 800;
	margin: 0 0 16px;
}

.cbs-cart-summary-note {
	font-size: 12px;
	color: var(--cbs-color-muted);
	margin: 14px 0 18px;
	line-height: 1.6;
}

.cbs-cart-checkout-btn {
	display: block;
	text-align: center;
}

.cbs-cart-checkout-btn-disabled {
	opacity: 0.45;
	cursor: not-allowed;
	pointer-events: none;
}

.cbs-cart-checkout-blocked-note {
	margin: 8px 0 0;
	font-size: 12.5px;
	color: var(--cbs-color-danger);
	text-align: center;
}

.cbs-cart-row-unavailable {
	border-color: var(--cbs-color-danger) !important;
	background: #fef2f2;
}

/* Responsive */
@media (max-width: 860px) {
	.cbs-cart-layout {
		grid-template-columns: 1fr;
	}

	.cbs-cart-row {
		flex-direction: column;
	}

	.cbs-cart-row-image {
		width: 100%;
		height: 160px;
	}

	.cbs-cart-summary {
		position: static;
	}
}

/* =============================================================
 * Cart: Damage Waiver checkbox per line
 * ============================================================ */
.cbs-cart-row-waiver {
	margin-top: 10px;
	padding-top: 10px;
	border-top: 1px dashed var(--cbs-color-border);
}

.cbs-cart-row-waiver label {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--cbs-color-text);
	cursor: pointer;
}

.cbs-cart-row-waiver input[type="checkbox"] {
	width: 16px;
	height: 16px;
}

/* =============================================================
 * Cart: Coupon box
 * ============================================================ */
.cbs-price-row-discount {
	color: var(--cbs-color-success);
}

.cbs-coupon-box {
	margin-bottom: 16px;
	padding-bottom: 16px;
	border-bottom: 1px dashed var(--cbs-color-border);
}

.cbs-discount-toggle-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: none;
	border: none;
	padding: 0;
	color: var(--cbs-accent);
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
}

.cbs-discount-toggle-link:hover {
	text-decoration: underline;
}

.cbs-discount-toggle-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
	font-size: 13px;
	line-height: 1;
}

.cbs-coupon-input-row {
	display: flex;
	gap: 8px;
}

.cbs-coupon-input-row input[type="text"] {
	flex: 1;
	padding: 10px 12px;
	border: 1px solid var(--cbs-color-border);
	border-radius: 8px;
	font-size: 13px;
	background: var(--cbs-color-bg-subtle);
	min-width: 0;
}

.cbs-coupon-error {
	color: var(--cbs-color-danger);
	font-size: 12px;
	margin: 8px 0 0;
}

.cbs-coupon-applied {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	background: #ecfdf3;
	border: 1px solid #bbf7d0;
	border-radius: 8px;
	padding: 10px 12px;
	font-size: 13px;
	color: #15803d;
	font-weight: 600;
}

.cbs-coupon-remove-btn {
	background: none;
	border: none;
	color: var(--cbs-color-danger);
	font-size: 12px;
	font-weight: 700;
	text-decoration: underline;
	cursor: pointer;
}

/* =============================================================
 * Checkout: layout
 * ============================================================ */
.cbs-checkout-wrap {
	max-width: 1200px;
	margin: 0 auto;
	padding: 32px 20px 72px;
	color: var(--cbs-color-text);
}

.cbs-checkout-layout {
	display: grid;
	grid-template-columns: 1fr 380px;
	gap: 32px;
	align-items: start;
}

.cbs-checkout-main {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 28px;
}

/* Step nav */
.cbs-checkout-steps-nav {
	display: flex;
	justify-content: space-between;
	gap: 6px;
	margin-bottom: 24px;
	flex-wrap: wrap;
}

.cbs-checkout-step-dot {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	font-size: 11px;
	color: var(--cbs-color-muted);
	flex: 1;
	text-align: center;
	cursor: default;
}

.cbs-checkout-step-dot span {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--cbs-color-bg-subtle);
	border: 1px solid var(--cbs-color-border);
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	color: var(--cbs-color-muted);
}

.cbs-checkout-step-dot.is-active span {
	background: var(--cbs-accent);
	border-color: var(--cbs-accent);
	color: #fff;
}

.cbs-checkout-step-dot.is-active {
	color: var(--cbs-color-text);
	font-weight: 700;
}

.cbs-checkout-step-dot.is-complete span {
	background: var(--cbs-color-success);
	border-color: var(--cbs-color-success);
	color: #fff;
}

.cbs-checkout-step-dot.is-complete {
	cursor: pointer;
}

/* Steps */
.cbs-checkout-step {
	display: none;
}

.cbs-checkout-step.is-active {
	display: block;
}

.cbs-checkout-step-title {
	font-size: 20px;
	font-weight: 800;
	margin: 0 0 20px;
}

.cbs-checkout-step-actions {
	display: flex;
	justify-content: space-between;
	margin-top: 28px;
	padding-top: 20px;
	border-top: 1px solid var(--cbs-color-border);
}

/* Form grid */
.cbs-form-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}

.cbs-form-field-full {
	grid-column: 1 / -1;
}

.cbs-form-field {
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.cbs-form-field label {
	font-size: 12px;
	font-weight: 700;
	color: var(--cbs-color-muted);
}

.cbs-form-field input[type="text"],
.cbs-form-field input[type="email"],
.cbs-form-field input[type="tel"],
.cbs-form-field input[type="date"],
.cbs-form-field input[type="time"],
.cbs-form-field input[type="url"],
.cbs-form-field select,
.cbs-form-field textarea {
	padding: 11px 12px;
	border: 1px solid var(--cbs-color-border);
	border-radius: 10px;
	font-size: 14px;
	background: var(--cbs-color-bg-subtle);
	width: 100%;
	font-family: inherit;
}

.cbs-form-field input:focus,
.cbs-form-field select:focus,
.cbs-form-field textarea:focus {
	outline: none;
	border-color: var(--cbs-accent);
	background: #fff;
}

.cbs-form-field input[readonly] {
	background: #f3f4f6;
	color: var(--cbs-color-muted);
}

.cbs-checkbox-field label {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: var(--cbs-color-text);
	text-transform: none;
	font-weight: 500;
}

.cbs-field-description {
	font-size: 12px;
	color: var(--cbs-color-muted);
	margin: 0 0 8px;
}

/* Choice buttons (Setup Area, Power Outlet) */
.cbs-button-group {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cbs-choice-btn {
	padding: 10px 18px;
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-pill);
	background: var(--cbs-color-bg-subtle);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	color: var(--cbs-color-text);
}

.cbs-choice-btn.is-selected {
	background: var(--cbs-accent);
	border-color: var(--cbs-accent);
	color: #fff;
}

.cbs-button-group-small .cbs-choice-btn {
	padding: 8px 24px;
}

.cbs-button-group-full {
	display: flex;
	gap: 12px;
}

.cbs-button-group-full .cbs-choice-btn {
	flex: 1;
	padding: 14px 20px;
	border-radius: var(--cbs-radius-pill);
}

.cbs-power-outlet-field {
	background: var(--cbs-color-bg-subtle);
	border-radius: var(--cbs-radius-md);
	padding: 16px;
}

/* Checkout info rows (Step 3) */
.cbs-checkout-info-row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 12px 16px;
	background: var(--cbs-color-bg-subtle);
	border-radius: var(--cbs-radius-md);
	margin-bottom: 12px;
	font-size: 14px;
}

.cbs-checkout-info-row-right {
	display: flex;
	align-items: center;
	gap: 12px;
}

/* Toggle switch */
.cbs-switch {
	position: relative;
	display: inline-block;
	width: 42px;
	height: 24px;
	cursor: pointer;
}

.cbs-switch input {
	opacity: 0;
	width: 0;
	height: 0;
	position: absolute;
}

.cbs-switch-track {
	position: absolute;
	inset: 0;
	background: #d1d5db;
	border-radius: var(--cbs-radius-pill);
	transition: background 0.15s ease;
}

.cbs-switch-thumb {
	position: absolute;
	top: 3px;
	left: 3px;
	width: 18px;
	height: 18px;
	background: #fff;
	border-radius: 50%;
	transition: transform 0.15s ease;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

.cbs-switch input:checked + .cbs-switch-track {
	background: var(--cbs-color-success);
}

.cbs-switch input:checked + .cbs-switch-track .cbs-switch-thumb {
	transform: translateX(18px);
}

/* Tip card */
.cbs-protect-order-card {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 20px;
	margin: 20px 0;
	box-shadow: 0 1px 3px rgba(31, 36, 64, 0.04);
}

.cbs-protect-order-header {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 8px;
}

.cbs-protect-order-icon {
	font-size: 20px;
	line-height: 1;
}

.cbs-protect-order-title {
	font-size: 16px;
	font-weight: 800;
	margin: 0;
	color: var(--cbs-color-text);
}

.cbs-protect-order-desc {
	font-size: 13px;
	color: var(--cbs-color-muted);
	line-height: 1.6;
	margin: 0 0 16px;
}

.cbs-protect-order-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.cbs-protect-order-buttons .cbs-choice-btn {
	padding: 10px 20px;
}

.cbs-protect-order-buttons .cbs-choice-btn.is-selected.cbs-protect-order-add {
	background: var(--cbs-accent);
	border-color: var(--cbs-accent);
	color: #fff;
}

.cbs-protect-order-buttons .cbs-choice-btn.is-selected.cbs-protect-order-decline {
	background: var(--cbs-color-bg-subtle);
	border-color: var(--cbs-color-border);
	color: var(--cbs-color-muted);
}

.cbs-cart-row-waiver-note {
	font-size: 12px;
	color: var(--cbs-color-muted);
}

.cbs-tip-card {
	background: linear-gradient(135deg, #f5f3ff, #fdf2f8);
	border: 1px solid #e9d5ff;
	border-radius: var(--cbs-radius-lg);
	padding: 20px;
	margin: 20px 0;
}

.cbs-tip-card-title {
	font-size: 16px;
	font-weight: 800;
	margin: 0 0 4px;
}

.cbs-tip-card-subtitle {
	font-size: 13px;
	color: var(--cbs-color-muted);
	margin: 0 0 16px;
}

.cbs-tip-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cbs-tip-btn {
	padding: 10px 20px;
	border: 1px solid #d8b4fe;
	border-radius: var(--cbs-radius-pill);
	background: #fff;
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	color: #6b21a8;
}

.cbs-tip-btn.is-selected {
	background: #7c3aed;
	border-color: #7c3aed;
	color: #fff;
}

.cbs-tip-custom-row {
	margin-top: 12px;
	display: flex;
	flex-direction: column;
	gap: 6px;
	max-width: 200px;
}

.cbs-tip-custom-row label {
	font-size: 12px;
	font-weight: 700;
	color: var(--cbs-color-muted);
}

.cbs-tip-custom-row input {
	padding: 10px 12px;
	border: 1px solid #d8b4fe;
	border-radius: 10px;
	background: #fff;
}

.cbs-tip-percentage-row {
	margin-top: 12px;
	display: flex;
	flex-direction: column;
	gap: 6px;
	max-width: 240px;
}

.cbs-tip-percentage-row label {
	font-size: 12px;
	font-weight: 700;
	color: var(--cbs-color-muted);
}

.cbs-tip-percentage-row select {
	padding: 10px 12px;
	border: 1px solid #d8b4fe;
	border-radius: 10px;
	background: #fff;
	font-size: 13px;
}

.cbs-tip-fixed-row {
	margin-top: 12px;
}

.cbs-tip-fixed-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cbs-tip-fixed-btn {
	padding: 8px 16px;
	border: 1px solid #d8b4fe;
	border-radius: var(--cbs-radius-pill);
	background: #fff;
	font-size: 13px;
	font-weight: 700;
	cursor: pointer;
	color: #6b21a8;
}

.cbs-tip-fixed-btn.is-selected {
	background: #7c3aed;
	border-color: #7c3aed;
	color: #fff;
}

/* Order review table (Step 4) */
.cbs-order-review-row {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 0;
	border-bottom: 1px solid var(--cbs-color-border);
}

.cbs-order-review-image {
	width: 64px;
	height: 64px;
	border-radius: 10px;
	overflow: hidden;
	background: var(--cbs-color-bg-subtle);
	flex: 0 0 64px;
}

.cbs-order-review-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cbs-order-review-details {
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.cbs-order-review-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	font-size: 12px;
	color: var(--cbs-color-muted);
}

.cbs-order-review-total {
	font-weight: 800;
	white-space: nowrap;
}

.cbs-order-review-totals {
	margin-top: 16px;
	padding-top: 16px;
}

/* Agreements (Step 5) */
.cbs-agreements-list {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 24px;
}

.cbs-agreement-row {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 12px 16px;
	background: var(--cbs-color-bg-subtle);
	border-radius: var(--cbs-radius-md);
	font-size: 14px;
}

.cbs-agreement-row label {
	display: flex;
	align-items: center;
	gap: 10px;
}

.cbs-agreement-row a {
	font-size: 12px;
	font-weight: 700;
	color: var(--cbs-accent);
	text-decoration: none;
	white-space: nowrap;
}

/* Signature pad */
.cbs-signature-block {
	margin-top: 8px;
}

.cbs-signature-label {
	display: block;
	font-size: 12px;
	font-weight: 700;
	color: var(--cbs-color-muted);
	margin: 16px 0 8px;
}

.cbs-signature-pad-wrap {
	position: relative;
	border: 2px dashed var(--cbs-color-border);
	border-radius: var(--cbs-radius-md);
	background: #fff;
}

.cbs-signature-canvas {
	width: 100%;
	height: 180px;
	display: block;
	cursor: crosshair;
	touch-action: none;
}

.cbs-signature-placeholder {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	color: #cbd5e1;
	font-size: 14px;
	pointer-events: none;
}

.cbs-signature-actions {
	margin-top: 8px;
	text-align: right;
}

.cbs-signature-clear-btn {
	background: none;
	border: none;
	color: var(--cbs-color-muted);
	font-size: 12px;
	text-decoration: underline;
	cursor: pointer;
}

/* Payment list (Step 5) */
.cbs-payment-cards-v2 {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 20px;
}

.cbs-payment-card-v2 {
	position: relative;
	display: block;
	width: 100%;
	padding: 22px 24px;
	border: 2px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	background: var(--cbs-color-bg);
	cursor: pointer;
	box-sizing: border-box;
	box-shadow: 0 1px 3px rgba(31, 36, 64, 0.04);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.cbs-payment-card-v2:hover {
	border-color: #c4b5fd;
	box-shadow: 0 4px 14px rgba(111, 77, 224, 0.1);
}

.cbs-payment-card-v2 input[type="radio"] {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.cbs-payment-card-v2-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 8px;
}

.cbs-payment-card-v2-title {
	font-weight: 800;
	font-size: 16px;
	color: var(--cbs-color-text);
}

.cbs-payment-card-v2-badge {
	flex: 0 0 auto;
	background: var(--cbs-color-bg-subtle);
	color: var(--cbs-accent);
	font-size: 12px;
	font-weight: 700;
	padding: 4px 12px;
	border-radius: var(--cbs-radius-pill);
}

.cbs-payment-card-v2-desc {
	font-size: 13px;
	color: var(--cbs-color-muted);
	line-height: 1.6;
	margin: 0 0 16px;
}

.cbs-payment-card-v2-policy {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: 10px;
	padding: 12px 14px;
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--cbs-color-text);
	margin: 0 0 16px;
}

.cbs-payment-card-v2-rows {
	padding-top: 14px;
	border-top: 1px solid var(--cbs-color-border);
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.cbs-payment-card-v2:has(input:checked) {
	border-color: var(--cbs-accent);
	background: #faf9ff;
	box-shadow: 0 4px 16px rgba(111, 77, 224, 0.14);
}

.cbs-payment-card-v2:has(input:checked) .cbs-payment-card-v2-badge {
	background: var(--cbs-accent);
	color: #fff;
}

.cbs-payment-card-v2:focus-within {
	outline: 2px solid var(--cbs-accent);
	outline-offset: 2px;
}

@media (max-width: 600px) {
	.cbs-payment-card-v2 {
		padding: 18px;
	}

	.cbs-payment-card-v2-header {
		flex-wrap: wrap;
	}
}

.cbs-payment-summary {
	background: var(--cbs-color-bg-subtle);
	border-radius: var(--cbs-radius-md);
	padding: 18px 20px;
	margin-top: 4px;
	margin-bottom: 20px;
	clear: both;
	overflow: hidden;
}

.cbs-checkout-payment-note {
	font-size: 12px;
	color: var(--cbs-color-muted);
	background: #fffbeb;
	border: 1px solid #fde68a;
	border-radius: 8px;
	padding: 12px;
	line-height: 1.6;
}

.cbs-place-order-btn {
	padding: 14px 32px;
}

/* =============================================================
 * Checkout: sticky summary sidebar
 * ============================================================ */
.cbs-checkout-summary {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 22px;
	position: sticky;
	top: 20px;
}

.cbs-checkout-summary-items {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-bottom: 16px;
	padding-bottom: 16px;
	border-bottom: 1px solid var(--cbs-color-border);
}

.cbs-checkout-summary-item {
	display: flex;
	align-items: center;
	gap: 10px;
}

.cbs-checkout-summary-item-image {
	position: relative;
	width: 44px;
	height: 44px;
	border-radius: 8px;
	overflow: hidden;
	background: var(--cbs-color-bg-subtle);
	flex: 0 0 44px;
}

.cbs-checkout-summary-item-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cbs-checkout-summary-item-qty {
	position: absolute;
	top: -6px;
	right: -6px;
	background: var(--cbs-accent);
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
}

.cbs-checkout-summary-item-body {
	flex: 1;
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.cbs-checkout-summary-item-title {
	font-size: 13px;
	font-weight: 700;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.cbs-checkout-summary-item-meta {
	font-size: 11px;
	color: var(--cbs-color-muted);
}

.cbs-checkout-summary-item-total {
	font-size: 13px;
	font-weight: 700;
	white-space: nowrap;
}

.cbs-checkout-payment-split {
	margin-top: 8px;
	padding-top: 8px;
	border-top: 1px dashed var(--cbs-color-border);
}

/* =============================================================
 * Order confirmation
 * ============================================================ */
.cbs-confirmation-wrap {
	max-width: 900px;
	margin: 0 auto;
	padding: 40px 20px 72px;
}

.cbs-confirmation-header {
	text-align: center;
	margin-bottom: 32px;
}

.cbs-confirmation-icon {
	width: 76px;
	height: 76px;
	margin: 0 auto 18px;
	color: var(--cbs-color-success);
}

.cbs-confirmation-icon svg {
	width: 100%;
	height: 100%;
}

.cbs-confirmation-icon-circle {
	stroke-dasharray: 157;
	stroke-dashoffset: 157;
	animation: cbs-draw-circle 0.5s ease-out forwards;
}

.cbs-confirmation-icon-check {
	stroke-dasharray: 34;
	stroke-dashoffset: 34;
	animation: cbs-draw-check 0.35s ease-out 0.45s forwards;
}

@keyframes cbs-draw-circle {
	to { stroke-dashoffset: 0; }
}

@keyframes cbs-draw-check {
	to { stroke-dashoffset: 0; }
}

.cbs-confirmation-note {
	text-align: center;
	font-size: 12px;
	color: var(--cbs-color-muted);
	margin-top: 16px;
}

.cbs-confirmation-header h1 {
	font-size: 26px;
	font-weight: 800;
	margin: 0 0 8px;
}

.cbs-confirmation-subtitle {
	color: var(--cbs-color-muted);
	font-size: 15px;
}

.cbs-confirmation-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 28px;
	margin-bottom: 32px;
}

.cbs-confirmation-section {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 22px;
}

.cbs-confirmation-section h2 {
	font-size: 15px;
	font-weight: 800;
	margin: 0 0 14px;
}

.cbs-confirmation-section h2:not(:first-child) {
	margin-top: 22px;
}

.cbs-confirmation-section p {
	font-size: 13px;
	line-height: 1.8;
	color: var(--cbs-color-text);
}

/* =============================================================
 * Confirmation page redesign (v2) — branded header banner, full-
 * width stacked sections, structured info tables, products table,
 * and colored highlight cards for admin-configured content.
 * ============================================================ */
.cbs-confirmation-wrap-v2 {
	max-width: 720px;
}

.cbs-confirmation-brand-banner {
	background: linear-gradient(135deg, var(--cbs-hero-start) 0%, var(--cbs-hero-end) 100%);
	color: #fff;
	text-align: center;
	padding: 28px 24px;
	border-radius: var(--cbs-radius-lg);
	margin-bottom: 28px;
}

.cbs-confirmation-brand-logo {
	max-height: 56px;
	max-width: 220px;
	margin: 0 auto 10px;
	display: block;
}

.cbs-confirmation-brand-tagline {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.18em;
	opacity: 0.85;
	margin-bottom: 4px;
}

.cbs-confirmation-brand-name {
	font-size: 20px;
	font-weight: 800;
}

.cbs-confirmation-section-full {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 22px;
	margin-bottom: 20px;
}

.cbs-confirmation-section-full h2 {
	font-size: 15px;
	font-weight: 800;
	margin: 0 0 14px;
}

.cbs-confirmation-section-full h2:not(:first-child) {
	margin-top: 24px;
}

.cbs-confirmation-info-table {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.cbs-confirmation-info-row {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	font-size: 13px;
	padding-bottom: 8px;
	border-bottom: 1px solid var(--cbs-color-border);
}

.cbs-confirmation-info-row:last-child {
	border-bottom: none;
	padding-bottom: 0;
}

.cbs-confirmation-info-row span {
	color: var(--cbs-color-muted);
	flex: 0 0 auto;
}

.cbs-confirmation-info-row strong {
	text-align: right;
}

.cbs-confirmation-products-table-wrap {
	overflow-x: auto;
	margin-bottom: 22px;
}

.cbs-confirmation-products-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}

.cbs-confirmation-products-table th,
.cbs-confirmation-products-table td {
	padding: 10px 8px;
	text-align: left;
	border-bottom: 1px solid var(--cbs-color-border);
}

.cbs-confirmation-products-table th {
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--cbs-color-muted);
	font-weight: 700;
}

.cbs-confirmation-num {
	text-align: right !important;
}

.cbs-confirmation-info-card {
	background: var(--cbs-color-bg-subtle);
	border-left: 4px solid var(--cbs-accent);
	border-radius: var(--cbs-radius-md);
	padding: 20px 22px;
	margin-bottom: 20px;
}

.cbs-confirmation-info-card-purple {
	background: #f3f0fd;
	border-left-color: var(--cbs-accent);
}

.cbs-confirmation-info-card-orange {
	background: #fdf1e7;
	border-left-color: #d97706;
}

.cbs-confirmation-info-card h3 {
	font-size: 15px;
	font-weight: 800;
	margin: 0 0 12px;
}

.cbs-confirmation-info-card-body {
	font-size: 13px;
	line-height: 1.7;
}

.cbs-confirmation-info-card-body ul {
	margin: 0;
	padding-left: 20px;
}

.cbs-confirmation-info-card-body li {
	margin-bottom: 6px;
}

.cbs-confirmation-footer {
	text-align: center;
	margin-top: 32px;
	padding-top: 20px;
	border-top: 1px solid var(--cbs-color-border);
}

.cbs-confirmation-footer-name {
	font-size: 15px;
	font-weight: 800;
	color: var(--cbs-accent);
	margin: 0 0 4px;
}

.cbs-confirmation-footer-meta {
	font-size: 12px;
	color: var(--cbs-color-muted);
	margin: 0;
}

@media (max-width: 640px) {
	.cbs-confirmation-brand-banner {
		padding: 22px 16px;
	}

	.cbs-confirmation-section-full,
	.cbs-confirmation-info-card {
		padding: 16px;
	}

	.cbs-confirmation-info-row {
		flex-direction: column;
		gap: 2px;
	}

	.cbs-confirmation-info-row strong {
		text-align: left;
	}

	.cbs-confirmation-products-table th,
	.cbs-confirmation-products-table td {
		font-size: 12px;
		padding: 8px 6px;
	}
}

.cbs-confirmation-actions {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 12px;
}

/* Mobile-only checkout action bar — hidden by default (desktop); the
   960px breakpoint below overrides this to display: flex. Must stay
   defined BEFORE that media query in source order, since both rules
   target the same selector with equal specificity and CSS resolves
   ties by source order regardless of the media query condition. */
.cbs-checkout-mobile-actions {
	display: none;
	gap: 12px;
	margin-top: 20px;
}

.cbs-checkout-mobile-actions button {
	flex: 1;
}

/* =============================================================
 * Responsive: checkout
 * ============================================================ */
@media (max-width: 960px) {
	.cbs-checkout-layout {
		grid-template-columns: 1fr;
	}

	.cbs-checkout-summary {
		position: static;
	}

	/* Desktop shows Back/Next buttons inside each step; on mobile
	   those are hidden and the single synced action bar below the
	   Order Summary (see #cbs-checkout-mobile-actions) is used instead,
	   so the actions appear after the totals rather than mid-form. */
	.cbs-checkout-step-actions {
		display: none;
	}

	.cbs-checkout-mobile-actions {
		display: flex;
	}

	.cbs-form-grid {
		grid-template-columns: 1fr;
	}

	.cbs-confirmation-grid {
		grid-template-columns: 1fr;
	}

	.cbs-checkout-step-dot span {
		width: 22px;
		height: 22px;
		font-size: 11px;
	}

	.cbs-checkout-step-dot {
		font-size: 9px;
	}

	/* Buttons that sit side-by-side on desktop stack or shrink
	   gracefully on mobile, rather than overflowing or getting
	   squeezed unreadably small. */
	.cbs-choice-btn {
		flex: 1 1 auto;
		text-align: center;
		padding: 10px 14px;
		font-size: 13px;
	}

	.cbs-button-group-full {
		flex-direction: column;
	}

	.cbs-tip-btn,
	.cbs-tip-fixed-btn {
		flex: 1 1 auto;
		text-align: center;
	}

	.cbs-payment-card-v2-header {
		flex-wrap: wrap;
		row-gap: 6px;
	}

	.cbs-coupon-input-row {
		flex-wrap: wrap;
	}

	.cbs-coupon-input-row input[type="text"] {
		flex-basis: 100%;
	}

	.cbs-coupon-input-row button {
		flex: 1;
	}

	.cbs-coupon-applied {
		flex-wrap: wrap;
		row-gap: 8px;
	}

	.cbs-agreement-row {
		flex-wrap: wrap;
		row-gap: 6px;
	}

	.cbs-checkout-mobile-actions button {
		min-height: 46px;
		font-size: 14px;
	}
}

/* =============================================================
 * Print Receipt (hidden on screen, shown only when printing)
 * ============================================================ */
.cbs-receipt-print-view {
	display: none;
}

@media print {
	body * {
		visibility: hidden;
	}

	#cbs-receipt-print-view,
	#cbs-receipt-print-view * {
		visibility: visible;
	}

	.cbs-receipt-print-view {
		display: block !important;
		position: absolute;
		left: 0;
		top: 0;
		width: 100%;
	}

	@page {
		size: A4;
		margin: 14mm;
	}

	.cbs-receipt-print-view {
		font-family: Arial, Helvetica, sans-serif;
		color: #1f2440;
		font-size: 12px;
	}

	.cbs-receipt-header-table,
	.cbs-receipt-parties-table,
	.cbs-receipt-products-table,
	.cbs-receipt-totals-table {
		width: 100%;
		border-collapse: collapse;
		margin-bottom: 18px;
	}

	.cbs-receipt-header-table td {
		vertical-align: top;
		padding: 0;
	}

	.cbs-receipt-company-cell {
		width: 60%;
	}

	.cbs-receipt-meta-cell {
		width: 40%;
		text-align: right;
	}

	.cbs-receipt-logo {
		max-height: 50px;
		max-width: 180px;
		margin-bottom: 8px;
	}

	.cbs-receipt-company-name {
		font-size: 16px;
		font-weight: bold;
	}

	.cbs-receipt-company-line {
		font-size: 11px;
		color: #6b7280;
	}

	.cbs-receipt-title {
		font-size: 22px;
		font-weight: bold;
		letter-spacing: 2px;
		color: #6f4de0;
		margin-bottom: 8px;
	}

	.cbs-receipt-meta-row {
		font-size: 11px;
		margin-bottom: 3px;
	}

	.cbs-receipt-meta-row span {
		color: #6b7280;
		margin-right: 6px;
	}

	.cbs-receipt-parties-table td {
		width: 50%;
		vertical-align: top;
		padding: 12px;
		border: 1px solid #e5e7eb;
		font-size: 11px;
		line-height: 1.6;
	}

	.cbs-receipt-section-label {
		font-size: 10px;
		font-weight: bold;
		text-transform: uppercase;
		letter-spacing: 0.05em;
		color: #6f4de0;
		margin-bottom: 6px;
	}

	.cbs-receipt-products-table th,
	.cbs-receipt-products-table td {
		border: 1px solid #e5e7eb;
		padding: 6px 8px;
		font-size: 11px;
		text-align: left;
	}

	.cbs-receipt-products-table th {
		background: #f4f4f7;
		font-weight: bold;
	}

	.cbs-receipt-num {
		text-align: right !important;
	}

	.cbs-receipt-totals-table {
		max-width: 320px;
		margin-left: auto;
	}

	.cbs-receipt-totals-table td {
		padding: 4px 0;
		font-size: 11px;
	}

	.cbs-receipt-grand-total-row td {
		border-top: 1px solid #1f2440;
		padding-top: 8px;
		font-weight: bold;
		font-size: 13px;
	}

	.cbs-receipt-footer {
		margin-top: 24px;
		padding-top: 12px;
		border-top: 1px solid #e5e7eb;
		text-align: center;
	}

	.cbs-receipt-footer p {
		font-size: 10px;
		color: #6b7280;
		margin: 4px 0;
	}

	.cbs-receipt-terms-line {
		font-style: italic;
	}
}

/* =============================================================
 * Terms/Agreement document modal (Step 4)
 * ============================================================ */
.cbs-agreement-view-btn {
	background: none;
	border: 1px solid var(--cbs-accent);
	color: var(--cbs-accent);
	border-radius: var(--cbs-radius-pill);
	padding: 5px 14px;
	font-size: 12px;
	font-weight: 700;
	cursor: pointer;
	white-space: nowrap;
}

.cbs-agreement-view-btn:hover {
	background: var(--cbs-accent);
	color: #fff;
}

.cbs-doc-modal-overlay {
	display: none;
	position: fixed;
	inset: 0;
	background: rgba(15, 15, 25, 0.6);
	z-index: 100000;
	align-items: center;
	justify-content: center;
	padding: 20px;
}

.cbs-doc-modal-overlay.is-visible {
	display: flex;
}

body.cbs-modal-open {
	overflow: hidden;
}

.cbs-doc-modal {
	background: #fff;
	border-radius: var(--cbs-radius-lg);
	width: 80%;
	max-width: 900px;
	height: 85vh;
	display: flex;
	flex-direction: column;
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
	overflow: hidden;
}

.cbs-doc-modal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 16px 20px;
	border-bottom: 1px solid var(--cbs-color-border);
	flex: 0 0 auto;
}

.cbs-doc-modal-header h3 {
	font-size: 16px;
	font-weight: 800;
	margin: 0;
}

.cbs-doc-modal-close {
	width: 32px;
	height: 32px;
	border: none;
	background: var(--cbs-color-bg-subtle);
	border-radius: 50%;
	font-size: 18px;
	cursor: pointer;
	color: var(--cbs-color-muted);
}

.cbs-doc-modal-close:hover {
	background: #eee;
	color: var(--cbs-color-text);
}

.cbs-doc-modal-body {
	flex: 1;
	overflow: auto;
}

.cbs-doc-modal-body iframe {
	width: 100%;
	height: 100%;
	border: none;
	display: block;
}

.cbs-doc-modal-content {
	padding: 24px 28px;
	font-size: 14px;
	line-height: 1.7;
	color: var(--cbs-color-text);
	overflow-y: auto;
	height: 100%;
	box-sizing: border-box;
}

.cbs-doc-modal-content p {
	margin: 0 0 14px;
}

.cbs-doc-modal-content h1,
.cbs-doc-modal-content h2,
.cbs-doc-modal-content h3 {
	margin: 20px 0 10px;
}

.cbs-doc-modal-fallback {
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	gap: 16px;
	padding: 40px 20px;
}

.cbs-doc-modal-fallback p {
	font-size: 15px;
	color: var(--cbs-color-muted);
	margin: 0;
}

@media (max-width: 700px) {
	.cbs-doc-modal {
		width: 100%;
		height: 90vh;
	}
}

.cbs-single-unit-note {
	background: var(--cbs-color-bg-subtle);
	border: 1px dashed var(--cbs-color-border);
	color: var(--cbs-color-muted);
	border-radius: 8px;
	padding: 10px 12px;
	font-size: 12px;
	font-style: italic;
	margin: 0 0 14px;
}

/* =============================================================
 * Reusable hover tooltip (Damage Waiver, etc.)
 * ============================================================ */
.cbs-tooltip {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--cbs-color-border);
	color: var(--cbs-color-muted);
	font-size: 11px;
	font-weight: 700;
	cursor: help;
	margin-left: 6px;
	vertical-align: middle;
}

.cbs-tooltip .cbs-tooltip-bubble {
	position: absolute;
	bottom: calc(100% + 8px);
	left: 50%;
	transform: translateX(-50%);
	width: 240px;
	background: #1f2440;
	color: #fff;
	font-size: 12px;
	font-weight: 400;
	line-height: 1.5;
	padding: 10px 12px;
	border-radius: 8px;
	text-align: left;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.15s ease;
	z-index: 20;
	pointer-events: none;
}

.cbs-tooltip .cbs-tooltip-bubble::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
	border: 6px solid transparent;
	border-top-color: #1f2440;
}

.cbs-tooltip:hover .cbs-tooltip-bubble,
.cbs-tooltip:focus .cbs-tooltip-bubble {
	opacity: 1;
	visibility: visible;
}

@media (max-width: 480px) {
	.cbs-tooltip .cbs-tooltip-bubble {
		width: 200px;
	}
}

/* =============================================================
 * Related Products Carousel ("You Might Also Like")
 * ============================================================ */
.cbs-related-carousel-section {
	margin-top: 40px;
	padding-top: 32px;
	border-top: 1px solid var(--cbs-color-border);
}

.cbs-related-carousel-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 18px;
}

.cbs-related-carousel-header .cbs-details-heading {
	margin: 0;
}

.cbs-carousel-nav {
	display: flex;
	gap: 8px;
}

.cbs-carousel-btn {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: 1px solid var(--cbs-color-border);
	background: #fff;
	color: var(--cbs-color-text);
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
}

.cbs-carousel-btn:hover {
	background: var(--cbs-accent);
	border-color: var(--cbs-accent);
	color: #fff;
}

.cbs-carousel-btn:disabled {
	opacity: 0.35;
	cursor: default;
	pointer-events: none;
}

.cbs-carousel-track {
	display: flex;
	gap: 18px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	padding-bottom: 8px;
	-webkit-overflow-scrolling: touch;
}

.cbs-carousel-track::-webkit-scrollbar {
	height: 6px;
}

.cbs-carousel-track::-webkit-scrollbar-thumb {
	background: var(--cbs-color-border);
	border-radius: 999px;
}

.cbs-carousel-slide {
	flex: 0 0 260px;
	scroll-snap-align: start;
}

.cbs-carousel-slide .cbs-product-card {
	height: 100%;
}

@media (max-width: 600px) {
	.cbs-carousel-slide {
		flex-basis: 78%;
	}
}

/* =============================================================
 * "Add More to Your Order" carousel (Cart page) — uses the exact
 * same proven native-scroll approach as the Related Products
 * carousel elsewhere (overflow-x: auto + scroll-snap), rather than
 * a custom JS-driven transform slider. Native scrolling avoids an
 * entire class of flexbox sizing edge cases (e.g. flex items
 * refusing to shrink below their content's natural size), and gets
 * smooth touch/swipe support on mobile for free, since it's just
 * the browser's own scrolling behavior.
 * ============================================================ */
.cbs-cart-add-more-section .cbs-add-more-viewport {
	width: 0;
	min-width: 100%;
	max-width: 100%;
	overflow-x: auto;
	overflow-y: hidden;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.cbs-cart-add-more-section .cbs-add-more-viewport::-webkit-scrollbar {
	display: none;
}

.cbs-cart-add-more-section .cbs-carousel-track {
	display: flex;
	gap: 18px;
	overflow: visible;
	scroll-snap-type: x mandatory;
	padding-bottom: 0;
	-webkit-overflow-scrolling: auto;
}

.cbs-cart-add-more-section .cbs-carousel-slide {
	flex: 0 0 calc((100% - 2 * 18px) / 3);
	scroll-snap-align: start;
}

@media (max-width: 1024px) and (min-width: 601px) {
	.cbs-cart-add-more-section .cbs-carousel-slide {
		flex: 0 0 calc((100% - 18px) / 2);
	}
}

@media (max-width: 600px) {
	.cbs-cart-add-more-section .cbs-carousel-slide {
		flex: 0 0 100%;
	}
}

/* Generator add-on box (Park Rental) */
.cbs-generator-addon-box {
	margin-top: 14px;
	padding: 14px 16px;
	background: #fffbeb;
	border: 1px solid #fde68a;
	border-radius: var(--cbs-radius-md);
}

.cbs-generator-addon-box .cbs-checkbox-field {
	margin-top: 8px;
}

/* Stake anchoring disclaimer */
.cbs-stake-disclaimer {
	background: #fef2f2;
	border: 1px solid #fecaca;
	border-radius: 8px;
	padding: 10px 12px;
	margin-top: 10px;
	color: #991b1b;
	font-size: 12px;
	line-height: 1.6;
}

.cbs-field-error {
	color: var(--cbs-color-danger);
	font-size: 12px;
	font-weight: 600;
	margin: 8px 0 0;
}

.cbs-field-synced {
	background: var(--cbs-color-bg-subtle) !important;
	cursor: not-allowed;
}

.cbs-checkout-mobile-actions button {
	flex: 1;
}

/* =============================================================
 * Cart Page: "Add More to Your Order" carousel
 * ============================================================ */
.cbs-cart-add-more-section {
	margin: 28px 0;
	padding: 24px 0;
	border-top: 1px solid var(--cbs-color-border);
	border-bottom: 1px solid var(--cbs-color-border);
	max-width: 100%;
	min-width: 0;
	width: 100%;
	overflow-x: hidden;
	box-sizing: border-box;
}

.cbs-add-more-card {
	border-radius: var(--cbs-radius-lg);
	overflow: hidden;
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	box-shadow: 0 2px 10px rgba(31, 36, 64, 0.05);
	display: flex;
	flex-direction: column;
	height: 100%;
	padding-bottom: 14px;
	transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.cbs-add-more-card:hover {
	box-shadow: 0 12px 26px rgba(31, 36, 64, 0.1);
	transform: translateY(-2px);
}

.cbs-add-more-card-image {
	display: block;
	aspect-ratio: 4 / 3;
	background: var(--cbs-color-bg-subtle);
	overflow: hidden;
}

.cbs-add-more-card-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.cbs-add-more-card-title {
	display: block;
	font-size: 14px;
	font-weight: 700;
	color: var(--cbs-color-text);
	text-decoration: none;
	padding: 12px 14px 2px;
	line-height: 1.35;
}

.cbs-add-more-card-title:hover {
	color: var(--cbs-accent);
}

.cbs-add-more-card-price {
	display: block;
	font-size: 13px;
	font-weight: 700;
	color: var(--cbs-accent);
	padding: 0 14px 10px;
}

.cbs-add-more-card-info-btn,
.cbs-add-more-card-add-btn {
	margin: 4px 14px 0;
	text-align: center;
	font-size: 13px;
	padding: 9px 12px;
}

/* =============================================================
 * Stripe card element (Checkout Step 5)
 * ============================================================ */
.cbs-stripe-card-section {
	background: var(--cbs-color-bg);
	border: 1px solid var(--cbs-color-border);
	border-radius: var(--cbs-radius-lg);
	padding: 24px;
	margin-bottom: 20px;
	box-shadow: 0 1px 3px rgba(31, 36, 64, 0.04);
}

.cbs-stripe-card-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 16px;
}

.cbs-stripe-card-label {
	display: block;
	font-weight: 800;
	font-size: 15px;
	color: var(--cbs-color-text);
}

.cbs-stripe-secure-badge {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	font-weight: 700;
	color: var(--cbs-color-muted);
	letter-spacing: 0.02em;
}

.cbs-stripe-secure-badge svg {
	width: 12px;
	height: 12px;
	flex: 0 0 auto;
}

.cbs-stripe-test-banner {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	background: #fffbeb;
	border: 1px solid #fde68a;
	color: #92400e;
	border-radius: 8px;
	padding: 10px 14px;
	font-size: 12.5px;
	line-height: 1.5;
	margin: 0 0 16px;
}

#cbs-stripe-card-element {
	padding: 14px 16px;
	border: 1.5px solid var(--cbs-color-border);
	border-radius: 10px;
	background: #fff;
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

#cbs-stripe-card-element.StripeElement--focus {
	border-color: var(--cbs-accent);
	box-shadow: 0 0 0 3px rgba(111, 77, 224, 0.12);
}

#cbs-stripe-card-element.StripeElement--complete {
	border-color: #16a34a;
}

#cbs-stripe-card-element.StripeElement--invalid {
	border-color: var(--cbs-color-danger);
}

.cbs-stripe-card-error {
	color: var(--cbs-color-danger);
	font-size: 12.5px;
	font-weight: 600;
	margin: 10px 0 0;
	min-height: 16px;
}

.cbs-stripe-card-footer {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 14px;
	font-size: 11.5px;
	color: var(--cbs-color-muted);
}

/* =============================================================
 * Pay Remaining Balance page — standalone, professional layout
 * ============================================================ */
.cbs-pay-balance-page {
	max-width: 520px;
	margin: 0 auto;
	padding: 56px 20px;
	position: relative;
}

/* Breaks out of the theme's normal content column to wash the full
   viewport width in a soft background — without this, the card can
   look like it's floating awkwardly on the theme's bare page
   background, disconnected from everything else on the page. */
.cbs-pay-balance-page::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: 50%;
	width: 100vw;
	margin-left: -50vw;
	background: linear-gradient(180deg, #f6f4fd 0%, #fafafa 100%);
	z-index: -1;
}

.cbs-pay-balance-brand {
	text-align: center;
	font-size: 15px;
	font-weight: 800;
	color: var(--cbs-color-text);
	margin: 0 0 20px;
	letter-spacing: 0.01em;
}

.cbs-pay-balance-card {
	background: var(--cbs-color-bg);
	border-radius: 20px;
	box-shadow: 0 20px 50px rgba(31, 36, 64, 0.1);
	overflow: hidden;
}

.cbs-pay-balance-amount-block {
	background: linear-gradient(135deg, var(--cbs-accent) 0%, #5b3fc4 100%);
	color: #fff;
	padding: 36px 32px;
	text-align: center;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.cbs-pay-balance-label {
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	opacity: 0.85;
}

.cbs-pay-balance-amount {
	font-size: 42px;
	font-weight: 800;
	line-height: 1.1;
}

.cbs-pay-balance-booking-ref {
	font-size: 13px;
	opacity: 0.85;
	margin-top: 4px;
}

.cbs-pay-balance-page .cbs-stripe-card-section {
	border-radius: 0;
	padding: 28px 32px 32px;
}

.cbs-pay-balance-submit-btn {
	width: 100%;
	margin-top: 18px;
	font-size: 16px;
	padding: 14px;
}

@media (max-width: 560px) {
	.cbs-pay-balance-page {
		padding: 28px 16px;
	}

	.cbs-pay-balance-amount {
		font-size: 34px;
	}

	.cbs-pay-balance-amount-block,
	.cbs-pay-balance-page .cbs-stripe-card-section {
		padding-left: 22px;
		padding-right: 22px;
	}
}

/* =============================================================
 * Floating Cart Icon - visible on every frontend page (except the
 * Cart and Checkout pages themselves), fixed to the viewport so it
 * works regardless of the active theme's own header markup.
 * ============================================================ */
.cbs-floating-cart-icon {
	position: fixed;
	bottom: 24px;
	right: 24px;
	z-index: 9999;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: var(--cbs-accent, #6f4de0);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 8px 24px rgba(111, 77, 224, 0.35);
	text-decoration: none;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.cbs-floating-cart-icon:hover {
	transform: translateY(-2px);
	box-shadow: 0 12px 28px rgba(111, 77, 224, 0.45);
	color: #fff;
}

.cbs-floating-cart-icon svg {
	width: 26px;
	height: 26px;
}

.cbs-floating-cart-badge {
	position: absolute;
	top: -4px;
	right: -4px;
	min-width: 22px;
	height: 22px;
	padding: 0 5px;
	border-radius: 999px;
	background: var(--cbs-cta, #ff6f6f);
	color: #fff;
	font-size: 11px;
	font-weight: 800;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 2px solid #fff;
	line-height: 1;
}

@media (max-width: 640px) {
	.cbs-floating-cart-icon {
		bottom: 16px;
		right: 16px;
		width: 50px;
		height: 50px;
	}

	.cbs-floating-cart-icon svg {
		width: 22px;
		height: 22px;
	}
}

.cbs-readonly-field {
	background: var(--cbs-color-bg-subtle);
	color: var(--cbs-color-text);
	cursor: not-allowed;
	opacity: 1;
}

/* =============================================================
 * Product Gallery Lightbox — fullscreen image viewer with
 * navigation, zoom, and swipe support (mobile).
 * ============================================================ */
.cbs-lightbox-overlay {
	display: none;
	position: fixed;
	inset: 0;
	background: rgba(10, 10, 18, 0.94);
	z-index: 100001;
	flex-direction: column;
}

.cbs-lightbox-overlay.is-visible {
	display: flex;
}

.cbs-lightbox-toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 16px 20px;
	color: #fff;
}

.cbs-lightbox-counter {
	font-size: 14px;
	opacity: 0.85;
}

.cbs-lightbox-toolbar-actions {
	display: flex;
	gap: 10px;
}

.cbs-lightbox-btn {
	width: 38px;
	height: 38px;
	border-radius: 50%;
	border: none;
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: background 0.15s ease;
}

.cbs-lightbox-btn:hover {
	background: rgba(255, 255, 255, 0.22);
}

.cbs-lightbox-stage {
	flex: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
	padding: 0 70px 20px;
	touch-action: pan-y;
}

.cbs-lightbox-stage img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
	transition: transform 0.2s ease;
	user-select: none;
}

.cbs-lightbox-nav {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 48px;
	height: 48px;
	border-radius: 50%;
	border: none;
	background: rgba(255, 255, 255, 0.12);
	color: #fff;
	font-size: 28px;
	line-height: 1;
	cursor: pointer;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
}

.cbs-lightbox-nav:hover {
	background: rgba(255, 255, 255, 0.22);
}

.cbs-lightbox-prev {
	left: 16px;
}

.cbs-lightbox-next {
	right: 16px;
}

@media (max-width: 640px) {
	.cbs-lightbox-stage {
		padding: 0 12px 12px;
	}

	.cbs-lightbox-nav {
		width: 40px;
		height: 40px;
		font-size: 22px;
	}

	.cbs-lightbox-prev {
		left: 6px;
	}

	.cbs-lightbox-next {
		right: 6px;
	}
}
