:root {
	--duvase-booking-green: var(--duvase-green, #2fc279);
	--duvase-booking-green-dark: var(--duvase-green-dark, #25a866);
	--duvase-booking-border: #e6e8eb;
	--duvase-booking-muted: #6b7280;
	--duvase-booking-text: #111827;
}

.duvase-booking-trigger__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.35rem;
	width: 100%;
	padding: 0.95rem 1.25rem;
	border: 0;
	border-radius: 999px;
	background: var(--duvase-booking-green);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition: background 0.15s ease;
}

.duvase-booking-trigger__btn:hover,
.duvase-booking-trigger__btn:focus,
.duvase-booking-trigger__btn:focus-visible {
	background: var(--duvase-booking-green-dark) !important;
	border-color: var(--duvase-booking-green-dark) !important;
	color: #fff !important;
	outline: none;
	box-shadow: none;
}

.duvase-booking[hidden] {
	display: none !important;
}

.duvase-booking {
	position: fixed;
	inset: 0;
	z-index: 99999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
}

.duvase-booking__overlay {
	position: absolute;
	inset: 0;
	background: rgba(17, 24, 39, 0.55);
}

.duvase-booking__dialog {
	position: relative;
	display: flex;
	flex-direction: column;
	width: min(100%, 560px);
	max-height: min(92vh, 760px);
	background: #fff;
	border-radius: 20px;
	box-shadow: 0 24px 48px rgba(0, 0, 0, 0.18);
	overflow: hidden;
}

.duvase-booking__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 1.25rem 1.5rem 0.75rem;
}

.duvase-booking__title {
	margin: 0;
	font-size: 1.35rem;
	font-weight: 700;
	color: var(--duvase-booking-text);
}

.duvase-booking__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border: 0;
	border-radius: 999px;
	background: transparent;
	color: var(--duvase-booking-muted);
	font-size: 1.5rem;
	line-height: 1;
	cursor: pointer;
}

.duvase-booking__close:hover,
.duvase-booking__close:focus,
.duvase-booking__close:focus-visible {
	background: #f3f4f6;
	color: var(--duvase-booking-text);
	outline: none;
	box-shadow: none;
}

.duvase-booking__stepper {
	padding: 0 1.5rem 1rem;
	border-bottom: 1px solid var(--duvase-booking-border);
}

.duvase-booking__steps {
	display: flex;
	align-items: center;
	gap: 0.35rem;
	margin: 0;
	padding: 0;
	list-style: none;
	flex-wrap: wrap;
}

.duvase-booking__step {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	color: var(--duvase-booking-muted);
	font-size: 0.85rem;
}

.duvase-booking__step.is-active,
.duvase-booking__step.is-done {
	color: var(--duvase-booking-text);
	font-weight: 600;
}

.duvase-booking__step-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.65rem;
	height: 1.65rem;
	border-radius: 999px;
	background: #eef0f2;
	color: var(--duvase-booking-muted);
	font-size: 0.8rem;
	font-weight: 700;
}

.duvase-booking__step.is-active .duvase-booking__step-badge,
.duvase-booking__step.is-done .duvase-booking__step-badge {
	background: var(--duvase-booking-green);
	color: #fff;
}

.duvase-booking__step-sep {
	color: #cbd5e1;
	font-size: 0.75rem;
}

.duvase-booking__body {
	flex: 1 1 auto;
	overflow: auto;
	padding: 1.25rem 1.5rem;
}

.duvase-booking__panel[hidden] {
	display: none !important;
}

.duvase-booking__panel-title {
	margin: 0 0 0.35rem;
	font-size: 1rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--duvase-booking-muted);
}

.duvase-booking__hint {
	margin: 0 0 1rem;
	color: var(--duvase-booking-muted);
	font-size: 0.95rem;
}

.duvase-booking__summary {
	margin: 0;
	padding: 1rem 1.1rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 16px;
	background: #fafbfc;
}

.duvase-booking__summary-row {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.45rem 0;
}

.duvase-booking__summary-row dt {
	margin: 0;
	color: var(--duvase-booking-muted);
	font-weight: 500;
}

.duvase-booking__summary-row dd {
	margin: 0;
	text-align: right;
	font-weight: 700;
	color: var(--duvase-booking-text);
}

.duvase-booking__summary-row--deposit {
	margin-top: 0.5rem;
	padding-top: 0.75rem;
	border-top: 1px solid var(--duvase-booking-border);
}

.duvase-booking__summary-row--deposit dd {
	color: var(--duvase-booking-green);
}

.duvase-booking__counter {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 1rem;
	padding: 0.85rem 1rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 14px;
}

.duvase-booking__counter-controls {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
}

.duvase-booking__counter-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.75rem;
	height: 1.75rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 999px;
	background: #fff;
	color: var(--duvase-booking-text);
	font-size: 1rem;
	line-height: 1;
	cursor: pointer;
}

.duvase-booking__counter-btn:hover,
.duvase-booking__counter-btn:focus,
.duvase-booking__counter-btn:focus-visible {
	border-color: var(--duvase-booking-green);
	background: #fff;
	color: var(--duvase-booking-text);
	outline: none;
	box-shadow: none;
}

.duvase-booking__counter-value {
	min-width: 1.5rem;
	text-align: center;
	font-weight: 700;
}

.duvase-booking__passenger {
	margin-bottom: 0.75rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 14px;
	overflow: hidden;
}

.duvase-booking__passenger-toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	padding: 0.65rem 0.85rem;
	border: 0;
	background: #fff;
	color: var(--duvase-booking-text);
	font: inherit;
	font-size: 0.95rem;
	font-weight: 600;
	cursor: pointer;
}

.duvase-booking__passenger-toggle:hover,
.duvase-booking__passenger-toggle:focus,
.duvase-booking__passenger-toggle:focus-visible {
	background: #f9fafb;
	color: var(--duvase-booking-text);
	outline: none;
	box-shadow: none;
}

.duvase-booking__passenger-fields {
	display: grid;
	gap: 0.75rem;
	padding: 0 1rem 1rem;
}

.duvase-booking__passenger-fields[hidden] {
	display: none !important;
}

.duvase-booking__field label {
	display: block;
	margin-bottom: 0.35rem;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--duvase-booking-text);
}

.duvase-booking__field input,
.duvase-booking__field select {
	width: 100%;
	min-height: 0;
	height: auto;
	padding: 0.45rem 0.65rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 8px;
	background: #fff;
	color: var(--duvase-booking-text);
	font: inherit;
	font-size: 0.875rem;
	line-height: 1.35;
	box-sizing: border-box;
}

.duvase-booking__field input:hover,
.duvase-booking__field select:hover {
	border-color: #cbd5e1;
}

.duvase-booking__field input:focus,
.duvase-booking__field input:focus-visible,
.duvase-booking__field select:focus,
.duvase-booking__field select:focus-visible {
	outline: none;
	border-color: var(--duvase-booking-green);
	box-shadow: 0 0 0 2px rgba(47, 194, 121, 0.18);
	background: #fff;
	color: var(--duvase-booking-text);
}

.duvase-booking__field-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.75rem;
}

.duvase-booking__checklist {
	margin-top: 1rem;
}

.duvase-booking__checklist-title {
	margin: 0 0 0.75rem;
	font-size: 0.95rem;
	font-weight: 700;
}

.duvase-booking__checklist-list {
	margin: 0;
	padding: 0.85rem 1rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 14px;
	list-style: none;
}

.duvase-booking__checklist-item {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.25rem 0;
	color: var(--duvase-booking-muted);
	font-size: 0.9rem;
}

.duvase-booking__checklist-item.is-done {
	color: var(--duvase-booking-text);
}

.duvase-booking__checklist-item::before {
	content: "";
	flex: 0 0 1rem;
	height: 1rem;
	border-radius: 999px;
	border: 1px solid #cbd5e1;
	background: #fff;
}

.duvase-booking__checklist-item.is-done::before {
	border-color: var(--duvase-booking-green);
	background: var(--duvase-booking-green);
	box-shadow: inset 0 0 0 2px #fff;
}

.duvase-booking__payment-options {
	display: grid;
	gap: 0.75rem;
}

.duvase-booking__payment-option {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 0.75rem;
	padding: 1rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 14px;
	cursor: pointer;
}

.duvase-booking__payment-option.is-selected {
	border-color: var(--duvase-booking-green);
	box-shadow: 0 0 0 1px var(--duvase-booking-green);
}

.duvase-booking__payment-option input {
	margin: 0;
	accent-color: var(--duvase-booking-green);
}

.duvase-booking__payment-option:hover {
	border-color: #cbd5e1;
}

.duvase-booking__payment-option.is-selected:hover {
	border-color: var(--duvase-booking-green);
}

.duvase-booking__payment-option-title {
	font-weight: 700;
}

.duvase-booking__payment-option-desc {
	margin: 0.15rem 0 0;
	color: var(--duvase-booking-muted);
	font-size: 0.85rem;
}

.duvase-booking__payment-option-total {
	font-weight: 700;
	white-space: nowrap;
}

.duvase-booking__payment-summary {
	margin-top: 1rem;
	padding: 0.85rem 1rem;
	border: 1px solid var(--duvase-booking-border);
	border-radius: 14px;
	background: #fafbfc;
}

.duvase-booking__payment-summary-row {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.25rem 0;
}

.duvase-booking__error {
	margin: 0.75rem 0 0;
	color: #b42318;
	font-size: 0.9rem;
}

.duvase-booking__footer {
	display: flex;
	gap: 0.75rem;
	padding: 1rem 1.5rem 1.25rem;
	border-top: 1px solid var(--duvase-booking-border);
}

.duvase-booking__btn {
	flex: 1 1 auto;
	padding: 0.7rem 1rem;
	border-radius: 999px;
	font: inherit;
	font-size: 0.95rem;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
}

.duvase-booking__btn--primary {
	border: 1px solid var(--duvase-booking-green);
	background: var(--duvase-booking-green);
	color: #fff;
}

.duvase-booking__btn--primary:hover,
.duvase-booking__btn--primary:focus,
.duvase-booking__btn--primary:focus-visible {
	background: var(--duvase-booking-green-dark);
	border-color: var(--duvase-booking-green-dark);
	color: #fff;
	outline: none;
	box-shadow: none;
}

.duvase-booking__btn--ghost {
	border: 1px solid var(--duvase-booking-border);
	background: #fff;
	color: var(--duvase-booking-text);
}

.duvase-booking__btn--ghost:hover,
.duvase-booking__btn--ghost:focus,
.duvase-booking__btn--ghost:focus-visible {
	background: #f9fafb;
	border-color: var(--duvase-booking-border);
	color: var(--duvase-booking-text);
	outline: none;
	box-shadow: none;
}

.duvase-booking__btn[disabled] {
	opacity: 0.65;
	cursor: wait;
}

@media (max-width: 520px) {
	.duvase-booking__field-grid {
		grid-template-columns: 1fr;
	}

	.duvase-booking__footer {
		flex-direction: column-reverse;
	}
}

/* Neutralize Elementor / theme button styles inside the modal */
.duvase-booking button,
.duvase-booking input[type="button"],
.duvase-booking input[type="submit"] {
	text-decoration: none;
	text-transform: none;
	letter-spacing: normal;
}

.duvase-booking button:not(.duvase-booking__btn--primary):not(.duvase-booking-trigger__btn) {
	background-color: #fff;
	color: var(--duvase-booking-text);
}

.duvase-booking .duvase-booking__btn--primary {
	background-color: var(--duvase-booking-green) !important;
	border-color: var(--duvase-booking-green) !important;
	color: #fff !important;
}

.duvase-booking .duvase-booking__btn--primary:hover,
.duvase-booking .duvase-booking__btn--primary:focus,
.duvase-booking .duvase-booking__btn--primary:focus-visible {
	background-color: var(--duvase-booking-green-dark) !important;
	border-color: var(--duvase-booking-green-dark) !important;
	color: #fff !important;
}

.duvase-booking .duvase-booking__btn--ghost:hover,
.duvase-booking .duvase-booking__btn--ghost:focus,
.duvase-booking .duvase-booking__btn--ghost:focus-visible,
.duvase-booking .duvase-booking__passenger-toggle:hover,
.duvase-booking .duvase-booking__passenger-toggle:focus,
.duvase-booking .duvase-booking__passenger-toggle:focus-visible,
.duvase-booking .duvase-booking__counter-btn:hover,
.duvase-booking .duvase-booking__counter-btn:focus,
.duvase-booking .duvase-booking__counter-btn:focus-visible {
	background-color: #f9fafb !important;
	color: var(--duvase-booking-text) !important;
}
