.cabo-booking-form {
	max-width: 895px;
	margin: auto;
	background: #fff;
	padding: clamp(20px, 2.5vw, 48px);
	border-radius: 14px;
	box-shadow: 0 20px 50px rgba(0, 0, 0, 0.06);
}

.cabo-form-section+.cabo-form-section {
	margin-top: 32px;
}

.cabo-form-section h3 {
	margin: 0 0 24px;
	padding-bottom: 8px;
	border-bottom: 1px solid #e9ecef;
	font-size: 24px;
	font-weight: 700;
	color: #0f5b3f;
}

.cabo-form-row {
	display: flex;
	gap: 24px;
	margin-bottom: 24px;
}

.cabo-form-field {
	flex: 1;
	min-width: 200px;
}

.cabo-form-field-full {
	flex-basis: 100%;
}

.cabo-form-field label {
	display: block;
	font-size: 14px;
	font-weight: 700;
	margin-bottom: 8px;
	color: #374151;
}

.cabo-form-field input,
.cabo-form-field select,
.cabo-form-field textarea {
	width: 100% !important;
	padding: 12px !important;
	border-radius: 4px !important;
	border: 1px solid #d1d5db !important;
	background: #fff;
	font-size: 16px;
}

.cabo-form-field input:focus,
.cabo-form-field select:focus,
.cabo-form-field textarea:focus {
	outline: 1px solid #C8A35F;
    outline-offset: 0px;
	border: 1px solid #C8A35F !important;
}

.cabo-form-consent {
	display: flex;
	flex-direction: column;
	margin: 0;
	gap: 12px;
}

.cabo-form-consent label {
	font-size: 16px;
	display: flex;
	align-items: center;
	gap: 12px;
}

.cabo-form-consent label input {
	width: 20px;
	height: 20px;
}

.cabo-consent-box {
	border: 1px solid #e5e7eb;
	border-radius: 4px;
	padding: 24px;
	background: #f9fafb;
}

.cabo-consent-box p {
	margin: 0 0 16px;
	font-size: 16px;
	color: #1f2937;
	font-weight: 700;
}

.cabo-submit-button {
	width: 100% !important;
	background-color: #C8A35F !important;
	color: #fff !important;
	border: none !important;
	padding: 15px 18px !important;
	font-size: 20px !important;
	font-weight: 600 !important;
	box-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);
}

.cabo-submit-button:hover {
	background-color: #c8a35fe6 !important;
}

.cabo-form-actions {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	gap: 10px;
	margin-top: 18px;
}

.cabo-form-message {
	font-size: 14px;
	order: 2;
}

.cabo-form-message.cabo-success {
	color: #1d7a4b;
}

.cabo-form-message.cabo-error {
	color: #b3261e;
}

.cabo-field-error {
	border-color: #b3261e !important;
}

.cabo-inline-error {
	margin-top: 6px;
	font-size: 12px;
	color: #b3261e;
}

/* Keep inline errors from breaking row alignment too much */
.cabo-form-field .cabo-inline-error {
	max-width: 100%;
}

/* Calendar */

.cabo-availability-calendar {
	width: 100%;
	max-width: 992px;
	margin: auto;
	background: #fff;
	padding: 32px;
	border-radius: 16px;
	box-shadow: 0 18px 40px rgba(0, 0, 0, 0.06);
	overflow-x: auto;
}

.cabo-calendar-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 28px;
	/* more space between header and dates */
	padding: 6px 4px;
}

.cabo-calendar-header button {
	padding: 8px;
	border-radius: 50%;
	background: transparent;
	border: none;
	width: 40px;
	height: 40px;
	display: flex;
	justify-content: center;
	align-items: center;
}

.cabo-calendar-header button:hover,
.cabo-calendar-header button:focus {
	background: #f3f4f6;
}

.cabo-calendar-title {
	font-size: 30px;
	font-weight: 700;
	color: #0f5b3f;
	margin: 0;
	letter-spacing: 0.3px;
}

.cabo-calendar-prev,
.cabo-calendar-next {
	width: 44px;
	height: 44px;
	border-radius: 999px;
	border: 0;
	background: transparent;
	color: #0f5b3f;
	cursor: pointer;
	font-size: 34px;
	/* chevron size */
	line-height: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
}

.cabo-calendar-prev:hover,
.cabo-calendar-next:hover {
	background: rgba(15, 91, 63, 0.08);
}

.cabo-calendar-prev:focus,
.cabo-calendar-next:focus {
	outline: none;
	box-shadow: 0 0 0 3px rgba(15, 91, 63, 0.18);
}

.cabo-calendar-grid {
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
}

@media (min-width: 900px) {
	.cabo-calendar-grid {
		min-width: 760px;
		/* keep large desktop tiles */
	}
}

.cabo-calendar-row {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 8px;
}

.cabo-calendar-weekdays div {
	text-align: center;
	font-size: 13px;
	font-weight: 700;
	color: #8a95a3;
	text-transform: uppercase;
	letter-spacing: 0.12em;
}

.cabo-calendar-cell {
	aspect-ratio: 1 / 1;
	min-height: 86px;
	border-radius: 6px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	font-weight: 500;
}

.cabo-calendar-cell span {
	display: inline-block;
}

.cabo-calendar-cell.cabo-available {
	background-color: #e9f9ee;
	color: #0f5b3f;
}

.cabo-calendar-cell.cabo-booked {
	background-color: #f7d7d7;
	color: #b3261e;
}

.cabo-calendar-cell.cabo-empty {
	background: transparent;
}

.cabo-calendar-legend {
	margin-top: 16px;
	display: flex;
	gap: 16px;
	font-size: 13px;
	justify-content: center;
}

.cabo-calendar-legend-item::before {
	content: '';
	display: inline-block;
	width: 12px;
	height: 12px;
	border-radius: 4px;
	margin-right: 6px;
	vertical-align: middle;
}

.cabo-legend-available::before {
	background-color: #e8f6eb;
}

.cabo-legend-booked::before {
	background-color: #fbe1e1;
}

@media (max-width: 768px) {

	.cabo-booking-form,
	.cabo-availability-calendar {
		padding: 20px;
	}

	/* Calendar: fit full 7-column grid on mobile; never crop */
	.cabo-availability-calendar {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}

	.cabo-calendar-header {
		margin-bottom: 18px;
	}

	.cabo-calendar-title {
		font-size: 22px;
	}

	.cabo-calendar-prev,
	.cabo-calendar-next {
		width: 36px;
		height: 36px;
		font-size: 28px;
	}

	.cabo-calendar-row {
		gap: 8px;
	}

	.cabo-calendar-weekdays div {
		font-size: 11px;
		letter-spacing: 0.10em;
	}

	.cabo-calendar-cell {
		min-height: 44px;
	}

	.cabo-form-row {
		gap: 15px;
		margin-bottom: 15px;
		flex-direction: column;
	}

	.cabo-consent-box {
		padding: 10px;
	}

	.cabo-submit-button {
		padding: 10px !important;
		font-size: 16px !important;
	}

	.cabo-form-section h3 {
		margin: 0 0 20px;
	}
}

@media (max-width: 420px) {
	.cabo-availability-calendar {
		padding: 16px;
	}

	.cabo-calendar-title {
		font-size: 20px;
	}

	.cabo-calendar-grid,
	.cabo-calendar-row {
		gap: 6px;
	}

	.cabo-calendar-cell {
		min-height: 40px;
		font-size: 14px;
	}
}