﻿/*
 * Outer shell: flex columns / narrow widget areas use min-width:auto on flex items; inner grids can then
 * force page-wide horizontal scroll. This wrapper + min-width:0 contains the widget width.
 */
.maid-svc-pb-root {
	display: block;
	box-sizing: border-box;
	min-width: 0;
	max-width: 100%;
	width: 100%;
	/* In Elementor flex columns, align-self:start avoids stretching to a sibling column’s height. */
	align-self: flex-start;
	height: auto;
	min-height: 0;
	/* overflow-x:hidden on this root breaks sticky summary on the aside. */
}

.maid-svc-pb-booking {
	--maid-svc-pb-green: #1a7f37;
	--maid-svc-pb-border: #e5e5e5;
	--maid-svc-pb-bg: #f7f7f8;
	--maid-svc-pb-radius: 10px;
	--maid-svc-pb-field-padding: 0.55rem 0.65rem;
	/* Main booking block: never wider than 1080px; full width on smaller viewports. */
	--maid-svc-pb-container-max: 1080px;
	/* Load Kepler via your theme or Adobe Fonts / Typekit for this name to apply */
	--maid-svc-pb-font: "Kepler Std Light", sans-serif;
	font-family: var(--maid-svc-pb-font);
	font-size: 18px;
	color: #222;
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	box-sizing: border-box;
	width: 100%;
	/* Cap to viewport so wide ancestors (page builders) cannot exceed the screen and trigger horizontal scroll. */
	max-width: min(var(--maid-svc-pb-container-max), 100%, 100vw);
	min-width: 0;
	margin: 1.5rem auto;
	padding-left: max(0.75rem, env(safe-area-inset-left, 0px));
	padding-right: max(0.75rem, env(safe-area-inset-right, 0px));
	/* No overflow-x on this root — sticky summary is a direct descendant of __layout; overflow ancestors break sticky. */
	/* Layout breakpoints follow this box width (fixes overflow when viewport is wide but the column is narrow). */
	container-type: inline-size;
	container-name: mspb;
	height: auto;
	min-height: 0;
}

/* Flex/grid parents: allow shrink. Do not set max-width here — it would override the 1080px cap above. */
.maid-svc-pb-booking[data-maid-svc-pb='1'] {
	min-width: 0;
}

.maid-svc-pb-booking *,
.maid-svc-pb-booking input,
.maid-svc-pb-booking select,
.maid-svc-pb-booking textarea,
.maid-svc-pb-booking button {
	box-sizing: border-box;
}

.maid-svc-pb-booking input,
.maid-svc-pb-booking select,
.maid-svc-pb-booking textarea,
.maid-svc-pb-booking button {
	font-family: var(--maid-svc-pb-font);
}

.maid-svc-pb-booking__layout {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
	align-items: start;
	align-content: start;
	width: 100%;
	min-width: 0;
	max-width: 100%;
	/* Clip wide form fields here would break sticky on aside — clip only .maid-svc-pb-booking__main */
}

.maid-svc-pb-booking__main,
.maid-svc-pb-summary,
.maid-svc-pb-step,
.maid-svc-pb-summary__panel {
	min-width: 0;
	max-width: 100%;
}

.maid-svc-pb-booking__main {
	align-self: start;
	margin: 0;
	width: 100%;
	min-width: 0;
	overflow-x: clip;
}

.maid-svc-pb-form {
	display: block;
	min-width: 0;
	max-width: 100%;
	margin: 0;
}

/*
 * Two columns only when the booking block is wide *and* the viewport is wide enough.
 * Without the viewport guard, a builder-wide inner width can make the container ≥901px while the
 * actual screen is narrow → side-by-side layout and overflow-x on the page.
 */
@container mspb (min-width: 901px) {
	@media (min-width: 901px) {
		.maid-svc-pb-booking__layout {
			grid-template-columns: minmax(0, 1fr) minmax(0, min(320px, 100%));
			align-items: start;
			align-content: start;
		}

		/* Summary sticky positioning is global (all viewports); only the grid splits here. */
	}
}

/*
 * Viewport-narrow: single column + summary UX. Elementor flex parents are constrained above so sticky
 * summary does not inflate ancestor height; width uses stretch + 100% to avoid collapse.
 */
@media (max-width: 900px) {
	/*
	 * Elementor: div.elementor-widget-shortcode (e.g. .elementor-element-e60afb5) can compute ~40k px height on
	 * mobile when a flex column stretches this widget to a tall sibling, or when inner layout + sticky interact.
	 * :has(.maid-svc-pb-root) scopes this to our shortcode only (no site-specific Elementor ID in selectors).
	 */
	/*
	 * Height inflation fix: avoid flex cross-axis stretch to a tall sibling (sticky + Elementor).
	 * Width collapse fix: align-self:flex-start on a column-direction flex parent makes items only as wide as
	 * min-content → razor-thin column + per-character wrap. Use stretch + explicit width on narrow viewports.
	 */
	.elementor-widget-shortcode:has(.maid-svc-pb-root),
	.elementor-column:has(.maid-svc-pb-root),
	.elementor-widget:has(.maid-svc-pb-root),
	.e-child:has(.maid-svc-pb-root) {
		align-self: stretch !important;
		flex-grow: 0 !important;
		flex-shrink: 0 !important;
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		height: auto !important;
		min-height: 0 !important;
		max-height: none !important;
	}

	.elementor-column-wrap:has(.maid-svc-pb-root),
	.elementor-widget-wrap:has(.maid-svc-pb-root) {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		height: auto !important;
		min-height: 0 !important;
		max-height: none !important;
	}

	.elementor-widget-shortcode:has(.maid-svc-pb-root) .elementor-widget-container,
	.elementor-widget:has(.maid-svc-pb-root) .elementor-widget-container {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		height: auto !important;
		min-height: 0 !important;
		max-height: none !important;
	}

	.maid-svc-pb-root,
	.maid-svc-pb-booking,
	.maid-svc-pb-booking__layout {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		height: auto !important;
		min-height: 0 !important;
		max-height: none !important;
	}

	.maid-svc-pb-booking .maid-svc-pb-booking__layout {
		grid-template-columns: minmax(0, 1fr);
		align-items: start;
		align-content: start;
		gap: 1rem;
	}

	.maid-svc-pb-frequency {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.maid-svc-pb-summary__toggle {
		display: flex;
	}

	.maid-svc-pb-booking .maid-svc-pb-summary {
		order: -1;
		position: sticky;
		top: max(1rem, env(safe-area-inset-top, 0px));
		z-index: 30;
		padding-top: 0.35rem;
		margin-top: 0;
		max-width: 100%;
		width: 100%;
		min-width: 0;
		background: #fff;
	}

	.maid-svc-pb-booking .maid-svc-pb-summary__toggle .maid-svc-pb-summary__toggle-total {
		flex-shrink: 0;
		text-align: right;
		color: #fff !important;
		background-color: #000;
		padding: 0.35rem 0.75rem;
		border-radius: 8px;
		line-height: 1.25;
	}

	.maid-svc-pb-summary__panel {
		display: block;
		width: 100%;
		min-width: 0;
		margin-top: 0.65rem;
		padding: 1rem;
		border-radius: 14px;
		overflow-x: clip;
		overflow-y: visible;
	}

	.maid-svc-pb-summary__panel[hidden] {
		display: none !important;
		margin-top: 0;
	}

	.maid-svc-pb-booking .maid-svc-pb-summary__title {
		font-size: 24px;
		text-align: left;
	}

	.maid-svc-pb-summary__table {
		table-layout: fixed;
	}

	.maid-svc-pb-summary__table th,
	.maid-svc-pb-summary__table td {
		padding: 0.8rem 0.75rem;
		font-size: 15px;
	}

	.maid-svc-pb-summary__table th {
		width: auto;
	}

	.maid-svc-pb-summary__total {
		font-size: 24px;
	}

	.maid-svc-pb-booking .maid-svc-pb-promo__row {
		grid-template-columns: minmax(0, 1fr);
		gap: 0.75rem;
		align-items: stretch;
		width: 100%;
		min-width: 0;
	}

	.maid-svc-pb-booking .maid-svc-pb-promo__row .maid-svc-pb-promo__input {
		min-width: 0;
	}

	.maid-svc-pb-booking .maid-svc-pb-promo__row .maid-svc-pb-promo__apply {
		width: 100% !important;
		max-width: none !important;
		justify-self: stretch;
	}

	.maid-svc-pb-booking .maid-svc-pb-step[data-step="8"] .maid-svc-pb-btn--primary {
		display: block !important;
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		box-sizing: border-box !important;
	}

	.maid-svc-pb-booking {
		margin-top: 1rem;
		margin-bottom: max(0.35rem, env(safe-area-inset-bottom, 0px));
	}

	.maid-svc-pb-form .maid-svc-pb-step:last-of-type {
		margin-bottom: 0.5rem;
	}

	.maid-svc-pb-booking .maid-svc-pb-payment-disclaimer {
		margin-top: 0.65rem;
		margin-bottom: 0.5rem;
	}

	.maid-svc-pb-booking .maid-svc-pb-step[data-step="8"] .maid-svc-pb-promo {
		margin-top: 1rem;
		margin-bottom: 0.65rem;
	}

	.maid-svc-pb-form-message {
		margin-top: 0.65rem;
		margin-bottom: 0;
	}
}

/* Viewport-narrow: stack multi-column form grids if container queries misreport width. */
@media (max-width: 767px) {
	.maid-svc-pb-booking .maid-svc-pb-grid--2,
	.maid-svc-pb-booking .maid-svc-pb-grid--3 {
		grid-template-columns: 1fr;
	}

	.maid-svc-pb-booking .maid-svc-pb-payment-grid {
		grid-template-columns: 1fr;
	}
}

.maid-svc-pb-step {
	background: #fff;
	border: 1px solid var(--maid-svc-pb-border);
	border-radius: var(--maid-svc-pb-radius);
	padding: 1.25rem 1.5rem;
	margin-bottom: 1.25rem;
}

/* Step titles: high specificity under plugin root only (no theme class names). */
.maid-svc-pb-booking .maid-svc-pb-step h2.maid-svc-pb-step__title,
.maid-svc-pb-booking h2.maid-svc-pb-step__title {
	margin: 0 0 0.35rem !important;
	font-family: var(--maid-svc-pb-font) !important;
	font-size: 24px !important;
	line-height: 1.3 !important;
	font-weight: 500 !important;
}

.maid-svc-pb-step__desc {
	margin: 0 0 1rem;
	color: #555;
	font-size: 18px;
	white-space: pre-line;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.maid-svc-pb-step__hint {
	margin: 0 0 0.85rem;
	color: #555;
	font-size: 16px;
	line-height: 1.45;
}

.maid-svc-pb-step__hint--payment {
	color: #444;
}

.maid-svc-pb-grid {
	display: grid;
	gap: 1rem;
	min-width: 0;
	max-width: 100%;
}

.maid-svc-pb-grid--2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.maid-svc-pb-grid--3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

@container mspb (max-width: 767px) {
	.maid-svc-pb-grid--2,
	.maid-svc-pb-grid--3 {
		grid-template-columns: 1fr;
	}

	.maid-svc-pb-payment-grid {
		grid-template-columns: 1fr;
	}
}

/* Step 2: 2×2 inputs (street | apt, city | zip) */
.maid-svc-pb-step2-grid .maid-svc-pb-field {
	margin-bottom: 0;
}

/* Step 3: Service Provider | Time inline */
.maid-svc-pb-step3-inline .maid-svc-pb-field {
	margin-bottom: 0;
}

/* Step 4: one field per row (17 rows) */
.maid-svc-pb-step4-grid {
	grid-template-columns: 1fr;
	gap: 0;
}

.maid-svc-pb-step4-grid .maid-svc-pb-field {
	margin-top: 12px;
	margin-bottom: 0;
}

.maid-svc-pb-step4-grid .maid-svc-pb-field:first-child {
	margin-top: 0;
}

.maid-svc-pb-field {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	margin-bottom: 1rem;
	/* Labels + inputs/placeholders: 16px (matches pre–18px body scale) */
	font-size: 16px;
}

.maid-svc-pb-field span {
	font-weight: 500;
}

.maid-svc-pb-booking .maid-svc-pb-input,
.maid-svc-pb-booking .maid-svc-pb-select,
.maid-svc-pb-booking .maid-svc-pb-textarea {
	width: 100%;
	padding: var(--maid-svc-pb-field-padding);
	border: 1px solid var(--maid-svc-pb-border);
	border-radius: 6px;
	font-family: inherit;
	font-size: 16px;
	line-height: inherit;
	font-weight: inherit;
	outline: none;
	box-shadow: none;
}

/* Placeholder tone + size (match label/input 16px; themes often bump placeholders) */
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-input::placeholder,
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-textarea::placeholder {
	font-size: 16px;
	color: #888;
	opacity: 1;
}

/* Focus: single 1px border (no theme double ring / 2px effect) */
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-input:not([type="hidden"]):not([type="radio"]):not([type="checkbox"]),
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-select,
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-textarea {
	border-width: 1px !important;
	border-style: solid !important;
}

.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-input:focus,
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-input:focus-visible,
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-select:focus,
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-select:focus-visible,
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-textarea:focus,
.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-textarea:focus-visible {
	border-width: 1px !important;
	border-style: solid !important;
	border-color: var(--maid-svc-pb-green) !important;
	outline: none !important;
	box-shadow: none !important;
}

.maid-svc-pb-field__hint {
	margin: 0.35rem 0 0;
	font-size: 16px;
	color: #666;
}

.maid-svc-pb-field__hint--inline {
	display: inline-block;
	line-height: 1.5;
}

.maid-svc-pb-fieldset {
	border: 0;
	margin: 0 0 1rem;
	padding: 0;
}

.maid-svc-pb-fieldset legend {
	font-weight: 500;
	margin-bottom: 0.5rem;
	font-size: 16px;
}

.maid-svc-pb-frequency {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0.75rem;
	min-width: 0;
	max-width: 100%;
}

.maid-svc-pb-freq-btn {
	cursor: pointer;
}

.maid-svc-pb-freq-btn input {
	position: absolute;
	opacity: 0;
}

.maid-svc-pb-freq-btn__face {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 0.95rem 0.75rem;
	border: 1px solid #cfd6dc;
	border-radius: 8px;
	background: #fff;
	min-height: 54px;
	min-width: 0;
	font-size: 16px;
	text-align: center;
	overflow-wrap: anywhere;
	word-break: break-word;
	transition: background-color 0.18s ease, border-color 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
}

.maid-svc-pb-freq-btn input:checked + .maid-svc-pb-freq-btn__face {
	border-color: #000;
	background: #000;
	color: #fff;
	box-shadow: 0 0 0 1px #000;
}

.maid-svc-pb-freq-btn__face strong {
	font-weight: 500;
}

.maid-svc-pb-freq-btn__face small {
	color: var(--maid-svc-pb-green);
	font-weight: 600;
}

.maid-svc-pb-freq-btn input:checked + .maid-svc-pb-freq-btn__face small {
	color: #fff;
}

.maid-svc-pb-tip {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
}

.maid-svc-pb-tip__preset {
	padding: 0.5rem 0.85rem;
	border: 1px solid var(--maid-svc-pb-border);
	border-radius: 6px;
	background: #fff;
	cursor: pointer;
	font: inherit;
}

.maid-svc-pb-tip__preset:hover {
	border-color: #bbb;
}

.maid-svc-pb-tip-custom.maid-svc-pb--hidden {
	display: none;
}

.maid-svc-pb-card-logos {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	font-size: 14px;
	color: #666;
}

.maid-svc-pb-card-logos span {
	padding: 0.3rem 0.5rem;
	border: 1px solid var(--maid-svc-pb-border);
	border-radius: 4px;
	background: #fafafa;
}

.maid-svc-pb-payment-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.15rem 1.5rem;
	margin-bottom: 0.75rem;
	min-width: 0;
	max-width: 100%;
}

.maid-svc-pb-payment-grid .maid-svc-pb-field {
	margin-bottom: 0;
}

.maid-svc-pb-payment-grid .maid-svc-pb-field--payment-full {
	grid-column: 1 / -1;
}

.maid-svc-pb-booking .maid-svc-pb-stripe-element {
	display: flex;
	align-items: center;
	width: 100%;
	max-width: 100%;
	min-width: 0;
	min-height: 44px;
	padding: var(--maid-svc-pb-field-padding);
	border: 1px solid var(--maid-svc-pb-border);
	border-radius: 6px;
	background: #fff;
	outline: none;
	box-shadow: none;
	transition: border-color 0.15s ease;
	overflow: hidden;
}

.maid-svc-pb-booking .maid-svc-pb-stripe-element iframe {
	max-width: 100% !important;
	pointer-events: auto !important;
}

.maid-svc-pb-booking .maid-svc-pb-stripe-element.StripeElement--focus {
	border-width: 1px !important;
	border-style: solid !important;
	border-color: var(--maid-svc-pb-green) !important;
	outline: none !important;
	box-shadow: none !important;
}

.maid-svc-pb-booking .maid-svc-pb-stripe-element.StripeElement--invalid {
	border-color: #b00020 !important;
}

/* Browser / Stripe autofill: soften default yellow and match field chrome. */
.maid-svc-pb-booking .maid-svc-pb-stripe-element.StripeElement--webkit-autofill,
.maid-svc-pb-booking .maid-svc-pb-stripe-element .maid-svc-pb-stripe-inner--autofill {
	transition: background-color 99999s ease-out;
}

.maid-svc-pb-booking .maid-svc-pb-stripe-element.StripeElement--webkit-autofill {
	border-color: var(--maid-svc-pb-green);
	background-color: #f4faf6;
}

.maid-svc-pb-booking input.maid-svc-pb-input:-webkit-autofill,
.maid-svc-pb-booking input.maid-svc-pb-input:-webkit-autofill:hover {
	-webkit-text-fill-color: #222;
	box-shadow: 0 0 0 30px #f4faf6 inset;
	transition: background-color 99999s ease-out;
}

/* Single column: card strip, then authorization copy (no side-by-side columns). */
.maid-svc-pb-payment-secure-block {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.85rem;
	margin: 0.5rem 0 0;
	width: 100%;
}

.maid-svc-pb-payment-secure-block .maid-svc-pb-field__hint {
	display: block;
	width: 100%;
	max-width: 100%;
}

.maid-svc-pb-booking .maid-svc-pb-payment-secure {
	display: block;
	width: 100%;
	max-width: 100%;
}

.maid-svc-pb-booking .maid-svc-pb-payment-secure__image {
	display: block;
	width: 100%;
	max-width: min(320px, 100%);
	height: auto;
}

.maid-svc-pb-payment-disclaimer {
	font-size: 18px;
	color: #555;
	margin: 1rem 0;
	line-height: 1.45;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.maid-svc-pb-promo {
	margin: 1.5rem 0 1.25rem;
}

.maid-svc-pb-promo__title {
	margin: 0 0 0.25rem;
	font-size: 24px;
	font-weight: 500;
	color: #444;
}

.maid-svc-pb-promo__desc {
	margin: 0 0 1rem;
	font-size: 15px;
	color: #8a8a8a;
}

.maid-svc-pb-promo__row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, auto);
	gap: 1.25rem;
	align-items: center;
	min-width: 0;
	max-width: 100%;
}

.maid-svc-pb-booking .maid-svc-pb-promo__input {
	width: 100%;
	padding: var(--maid-svc-pb-field-padding);
	border: 1px solid var(--maid-svc-pb-border);
	border-radius: 6px;
	font-family: inherit;
	font-size: 16px;
	line-height: inherit;
	font-weight: inherit;
	outline: none;
	box-shadow: none;
}

.maid-svc-pb-booking .maid-svc-pb-promo__input::placeholder {
	color: #b0b0b0;
}

.maid-svc-pb-booking .maid-svc-pb-promo__input:focus,
.maid-svc-pb-booking .maid-svc-pb-promo__input:focus-visible {
	border-width: 1px !important;
	border-style: solid !important;
	border-color: var(--maid-svc-pb-green) !important;
	outline: none !important;
	box-shadow: none !important;
}

.maid-svc-pb-booking .maid-svc-pb-field.maid-svc-pb-field--active .maid-svc-pb-stripe-element {
	border-width: 1px !important;
	border-style: solid !important;
	border-color: var(--maid-svc-pb-green) !important;
	outline: none !important;
	box-shadow: none !important;
}

.maid-svc-pb-promo__apply {
	min-height: 44px;
	padding: var(--maid-svc-pb-field-padding);
	border: 0;
	border-radius: 6px;
	background: #000;
	color: #fff;
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0.02em;
	cursor: pointer;
	box-sizing: border-box;
	line-height: normal;
	width: auto;
}

.maid-svc-pb-promo__apply:hover,
.maid-svc-pb-promo__apply:focus,
.maid-svc-pb-promo__apply:focus-visible {
	background: #1a7f37;
	filter: none;
}

/* Beat generic theme / builder button rules — selectors stay inside .maid-svc-pb-booking only. */
.maid-svc-pb-booking .maid-svc-pb-promo__apply,
.maid-svc-pb-booking button.maid-svc-pb-promo__apply,
.maid-svc-pb-booking input[type="button"].maid-svc-pb-promo__apply,
.maid-svc-pb-booking input[type="submit"].maid-svc-pb-promo__apply {
	min-height: 44px !important;
	padding: var(--maid-svc-pb-field-padding) !important;
	line-height: normal !important;
	box-sizing: border-box !important;
	width: auto !important;
	max-width: none !important;
}

.maid-svc-pb-btn {
	display: inline-block;
	font: inherit;
	font-weight: 700;
	cursor: pointer;
	border: 0;
	border-radius: 8px;
	padding: 0.9rem 1.5rem;
}

/* Match step field controls: same padding, radius, and type size as .maid-svc-pb-input / .maid-svc-pb-select */
.maid-svc-pb-btn--primary {
	width: 100%;
	padding: var(--maid-svc-pb-field-padding);
	border-radius: 6px;
	background: #000;
	color: #fff;
	font-size: 16px;
	line-height: inherit;
	font-weight: 700;
	letter-spacing: 0.02em;
}

.maid-svc-pb-btn--primary:hover,
.maid-svc-pb-btn--primary:focus,
.maid-svc-pb-btn--primary:focus-visible {
	background: #1a7f37;
	filter: none;
}

.maid-svc-pb-btn--primary:disabled {
	opacity: 0.65;
	cursor: not-allowed;
}

.maid-svc-pb-btn--primary:disabled:hover,
.maid-svc-pb-btn--primary:disabled:focus {
	background: #000 !important;
	background-color: #000 !important;
}

/* Beat theme / builder global button colors (e.g. #CC3366) — scoped to this plugin only. */
.maid-svc-pb-booking .maid-svc-pb-btn--primary {
	background: #000 !important;
	background-color: #000 !important;
	background-image: none !important;
	color: #fff !important;
	border-color: transparent !important;
	box-shadow: none !important;
}

.maid-svc-pb-booking .maid-svc-pb-btn--primary:hover,
.maid-svc-pb-booking .maid-svc-pb-btn--primary:focus,
.maid-svc-pb-booking .maid-svc-pb-btn--primary:focus-visible {
	background: #1a7f37 !important;
	background-color: #1a7f37 !important;
	background-image: none !important;
	color: #fff !important;
	border-color: transparent !important;
}

.maid-svc-pb-booking .maid-svc-pb-promo__apply {
	background: #000 !important;
	background-color: #000 !important;
	background-image: none !important;
	color: #fff !important;
	border-color: transparent !important;
	box-shadow: none !important;
}

.maid-svc-pb-booking .maid-svc-pb-promo__apply:hover,
.maid-svc-pb-booking .maid-svc-pb-promo__apply:focus,
.maid-svc-pb-booking .maid-svc-pb-promo__apply:focus-visible {
	background: #1a7f37 !important;
	background-color: #1a7f37 !important;
	background-image: none !important;
	color: #fff !important;
}

.maid-svc-pb-booking .maid-svc-pb-summary__toggle {
	background: #fff !important;
	background-color: #fff !important;
	background-image: none !important;
	color: #222 !important;
	border-color: var(--maid-svc-pb-border) !important;
	box-shadow: none !important;
}

/*
 * Themes and page builders often set large button padding globally.
 * Only form controls — excludes e.g. .maid-svc-pb-summary__toggle (outside the form).
 */
.maid-svc-pb-booking .maid-svc-pb-form button,
.maid-svc-pb-booking .maid-svc-pb-form input[type="button"],
.maid-svc-pb-booking .maid-svc-pb-form input[type="submit"] {
	padding: var(--maid-svc-pb-field-padding) !important;
	font-size: 16px !important;
	font-family: inherit !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	line-height: inherit !important;
}

.maid-svc-pb-booking button.maid-svc-pb-btn--primary,
.maid-svc-pb-booking input[type="submit"].maid-svc-pb-btn--primary {
	background: #000 !important;
	background-color: #000 !important;
	background-image: none !important;
	color: #fff !important;
}

.maid-svc-pb-booking .maid-svc-pb-btn--primary:disabled,
.maid-svc-pb-booking .maid-svc-pb-btn--primary:disabled:hover,
.maid-svc-pb-booking .maid-svc-pb-btn--primary:disabled:focus {
	background: #000 !important;
	background-color: #000 !important;
}

.maid-svc-pb-alert {
	margin: 0 0 1rem;
	padding: 0.85rem 1rem;
	border-radius: 6px;
	font-size: 16px;
	line-height: 1.45;
}

.maid-svc-pb-alert--https {
	background: #fff8e6;
	border: 1px solid #e8d4a8;
	color: #5c4a1a;
}

.maid-svc-pb-alert--https strong {
	display: block;
	margin-bottom: 0.35rem;
	font-size: 17px;
}

.maid-svc-pb-payment-secure-block--insecure .maid-svc-pb-payment-secure__image {
	opacity: 0.85;
}

.maid-svc-pb-alert--error {
	color: #b00020;
	font-size: 18px;
	margin: 0.5rem 0;
}

.maid-svc-pb-form-message {
	margin-top: 1rem;
	padding: 0.75rem;
	border-radius: 6px;
	font-size: 18px;
}

.maid-svc-pb-form-message.maid-svc-pb-msg--error {
	background: #fde8e8;
	color: #8a1212;
}

.maid-svc-pb-form-message.maid-svc-pb-msg--success {
	background: #e6f4ea;
	color: #14532a;
}

/* Booking summary: sticky on all viewports (right column on wide layout, top bar on narrow). */
.maid-svc-pb-booking .maid-svc-pb-summary {
	position: sticky;
	top: max(1rem, env(safe-area-inset-top, 0px));
	align-self: start;
	z-index: 10;
	margin: 0;
	width: 100%;
}

.maid-svc-pb-summary__toggle {
	display: none;
	width: 100%;
	justify-content: space-between;
	align-items: center;
	gap: 0.75rem;
	padding: 0.85rem 1rem;
	border: 1px solid var(--maid-svc-pb-border);
	border-radius: var(--maid-svc-pb-radius);
	background: #fff;
	font: inherit;
	font-weight: 500;
	cursor: pointer;
	text-align: left;
}

@container mspb (max-width: 900px) {
	/* Easier tap targets + readable labels when the booking block is narrow (phones, narrow columns). */
	.maid-svc-pb-frequency {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.maid-svc-pb-summary__toggle {
		display: flex;
	}

	.maid-svc-pb-booking .maid-svc-pb-summary {
		order: -1;
		position: sticky;
		top: max(1rem, env(safe-area-inset-top, 0px));
		z-index: 30;
		padding-top: 0.35rem;
		margin-top: 0;
		max-width: 100%;
		width: 100%;
		min-width: 0;
		background: #fff;
	}

	.maid-svc-pb-summary__toggle .maid-svc-pb-summary__toggle-total {
		flex-shrink: 0;
		text-align: right;
		color: #fff !important;
		background-color: #000;
		padding: 0.35rem 0.75rem;
		border-radius: 8px;
		line-height: 1.25;
	}

	.maid-svc-pb-summary__panel {
		display: block;
		width: 100%;
		min-width: 0;
		margin-top: 0.65rem;
		padding: 1rem;
		border-radius: 14px;
		overflow-x: clip;
		overflow-y: visible;
	}

	.maid-svc-pb-summary__panel[hidden] {
		display: none !important;
		margin-top: 0;
	}

	.maid-svc-pb-booking .maid-svc-pb-summary__title {
		font-size: 24px;
		text-align: left;
	}

	.maid-svc-pb-summary__table {
		table-layout: fixed;
	}

	.maid-svc-pb-summary__table th,
	.maid-svc-pb-summary__table td {
		padding: 0.8rem 0.75rem;
		font-size: 15px;
	}

	.maid-svc-pb-summary__table th {
		width: auto;
	}

	.maid-svc-pb-summary__total {
		font-size: 24px;
	}

	/*
	 * Promo row uses 1fr + 256px on wide layouts; in a narrow booking box that steals space from the input.
	 * Stack like desktop “full width” fields + full-width APPLY; align BOOK NOW with the same inset as inputs.
	 */
	.maid-svc-pb-booking .maid-svc-pb-promo__row {
		grid-template-columns: minmax(0, 1fr);
		gap: 0.75rem;
		align-items: stretch;
		width: 100%;
		min-width: 0;
	}

	.maid-svc-pb-booking .maid-svc-pb-promo__row .maid-svc-pb-promo__input {
		min-width: 0;
	}

	.maid-svc-pb-booking .maid-svc-pb-promo__row .maid-svc-pb-promo__apply {
		width: 100% !important;
		max-width: none !important;
		justify-self: stretch;
	}

	.maid-svc-pb-booking .maid-svc-pb-step[data-step="8"] .maid-svc-pb-btn--primary {
		display: block !important;
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		box-sizing: border-box !important;
	}

	/* Less dead space below the stacked form on phones (root margin + grid gap + last step / footer). */
	.maid-svc-pb-booking {
		margin-top: 1rem;
		margin-bottom: max(0.35rem, env(safe-area-inset-bottom, 0px));
	}

	.maid-svc-pb-booking__layout {
		gap: 1rem;
	}

	.maid-svc-pb-form .maid-svc-pb-step:last-of-type {
		margin-bottom: 0.5rem;
	}

	.maid-svc-pb-booking .maid-svc-pb-payment-disclaimer {
		margin-top: 0.65rem;
		margin-bottom: 0.5rem;
	}

	.maid-svc-pb-booking .maid-svc-pb-step[data-step="8"] .maid-svc-pb-promo {
		margin-top: 1rem;
		margin-bottom: 0.65rem;
	}

	.maid-svc-pb-form-message {
		margin-top: 0.65rem;
		margin-bottom: 0;
	}
}

.maid-svc-pb-summary__toggle-total {
	color: var(--maid-svc-pb-green);
	font-size: 18px;
}

.maid-svc-pb-summary__panel {
	background: linear-gradient(180deg, #ffffff 0%, #fbfcfb 100%);
	border: 1px solid #dfe7df;
	border-radius: 16px;
	padding: 1.35rem 1.35rem 1.2rem;
}

.maid-svc-pb-booking .maid-svc-pb-summary__title {
	margin: 0 0 1rem;
	font-family: var(--maid-svc-pb-font) !important;
	font-size: 30px;
	font-weight: 700 !important;
	letter-spacing: 0.01em;
	color: #1f2a1f;
	text-align: center;
}

/* Line items + address/date/arrival/frequency live in tbody.maid-svc-pb-summary__prefix */
.maid-svc-pb-summary__table.maid-svc-pb-summary__table--has-prefix tbody.maid-svc-pb-summary__rollup tr:first-child th,
.maid-svc-pb-summary__table.maid-svc-pb-summary__table--has-prefix tbody.maid-svc-pb-summary__rollup tr:first-child td {
	border-top: 2px solid #dbe6da;
}

.maid-svc-pb-summary__prefix tr.maid-svc-pb-summary__row--meta th {
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: #526052;
}

.maid-svc-pb-summary__prefix tr.maid-svc-pb-summary__row--meta td {
	font-weight: 600;
}

.maid-svc-pb-summary__table {
	width: 100%;
	border-collapse: collapse;
	font-size: 16px;
	margin-top: 0.35rem;
	table-layout: fixed;
	border: 1px solid #cfd8cf;
	background: #fff;
}

.maid-svc-pb-summary__table tbody tr:not(:last-child) {
	border-bottom: 1px solid #edf1ec;
}

.maid-svc-pb-summary__table th {
	font-weight: 600;
	text-align: left;
	padding: 0.95rem 1rem;
	color: #556355;
	width: 48%;
	border-right: 1px solid #cfd8cf;
	vertical-align: middle;
	overflow-wrap: anywhere;
}

.maid-svc-pb-summary__table td {
	text-align: right;
	font-variant-numeric: tabular-nums;
	padding: 0.95rem 1rem;
	font-weight: 700;
	color: #1f2a1f;
	vertical-align: middle;
	overflow-wrap: anywhere;
}

.maid-svc-pb-summary__table tfoot tr {
	border-top: 2px solid #dbe6da;
}

.maid-svc-pb-summary__table tfoot th,
.maid-svc-pb-summary__table tfoot td {
	padding-top: 1rem;
	padding-bottom: 1rem;
	background: #fbfcfb;
}

.maid-svc-pb-summary__total {
	font-size: 30px;
	font-weight: 800;
	color: var(--maid-svc-pb-green);
	letter-spacing: -0.02em;
}

@container mspb (max-width: 480px) {
	.maid-svc-pb-booking {
		font-size: 16px;
	}

	.maid-svc-pb-promo__title {
		font-size: 20px;
	}

	.maid-svc-pb-alert--error {
		font-size: 16px;
	}

	.maid-svc-pb-summary__toggle {
		padding: 0.75rem 0.85rem;
	}

	.maid-svc-pb-summary__toggle-total {
		font-size: 16px;
		color: #fff !important;
		background-color: #000;
		padding: 0.3rem 0.65rem;
		border-radius: 8px;
	}

	.maid-svc-pb-summary__panel {
		padding: 0.9rem;
	}

	.maid-svc-pb-summary__table th,
	.maid-svc-pb-summary__table td {
		padding: 0.7rem 0.65rem;
		font-size: 14px;
	}

	.maid-svc-pb-summary__total {
		font-size: 22px;
	}

	.maid-svc-pb-step {
		padding: 1rem 1rem;
		margin-bottom: 1rem;
	}

	.maid-svc-pb-booking .maid-svc-pb-step h2.maid-svc-pb-step__title,
	.maid-svc-pb-booking h2.maid-svc-pb-step__title {
		font-size: 20px !important;
	}

	.maid-svc-pb-step__desc {
		font-size: 16px;
	}

	.maid-svc-pb-payment-disclaimer {
		font-size: 16px;
	}

	.maid-svc-pb-form-message {
		font-size: 16px;
	}

	.maid-svc-pb-btn--primary {
		font-size: 16px;
		padding: var(--maid-svc-pb-field-padding);
	}
}

/*
 * Viewport fallbacks when container queries are unsupported (older WebViews).
 * Modern browsers use @container mspb above; wide viewport + narrow column is only handled there.
 */
@supports not (container-type: inline-size) {
	@media screen and (min-width: 901px) {
		.maid-svc-pb-booking .maid-svc-pb-booking__layout {
			grid-template-columns: minmax(0, 1fr) minmax(0, min(320px, 100%));
			align-items: start;
			align-content: start;
		}
	}

	@media screen and (max-width: 900px) {
		.maid-svc-pb-booking .maid-svc-pb-frequency {
			grid-template-columns: repeat(2, minmax(0, 1fr));
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__toggle {
			display: flex;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary {
			order: -1;
			position: sticky;
			top: max(1rem, env(safe-area-inset-top, 0px));
			z-index: 30;
			padding-top: 0.35rem;
			margin-top: 0;
			max-width: 100%;
			width: 100%;
			min-width: 0;
			background: #fff;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__toggle .maid-svc-pb-summary__toggle-total {
			flex-shrink: 0;
			text-align: right;
			color: #fff !important;
			background-color: #000;
			padding: 0.35rem 0.75rem;
			border-radius: 8px;
			line-height: 1.25;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__panel {
			display: block;
			width: 100%;
			min-width: 0;
			margin-top: 0.65rem;
			padding: 1rem;
			border-radius: 14px;
			overflow-x: clip;
			overflow-y: visible;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__panel[hidden] {
			display: none !important;
			margin-top: 0;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__title {
			font-size: 24px;
			text-align: left;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__table {
			table-layout: fixed;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__table th,
		.maid-svc-pb-booking .maid-svc-pb-summary__table td {
			padding: 0.8rem 0.75rem;
			font-size: 15px;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__table th {
			width: auto;
		}

		.maid-svc-pb-booking .maid-svc-pb-summary__total {
			font-size: 24px;
		}

		.maid-svc-pb-booking .maid-svc-pb-promo__row {
			grid-template-columns: minmax(0, 1fr);
			gap: 0.75rem;
			align-items: stretch;
			width: 100%;
			min-width: 0;
		}

		.maid-svc-pb-booking .maid-svc-pb-promo__row .maid-svc-pb-promo__input {
			min-width: 0;
		}

		.maid-svc-pb-booking .maid-svc-pb-promo__row .maid-svc-pb-promo__apply {
			width: 100% !important;
			max-width: none !important;
			justify-self: stretch;
		}

		.maid-svc-pb-booking .maid-svc-pb-step[data-step="8"] .maid-svc-pb-btn--primary {
			display: block !important;
			width: 100% !important;
			max-width: 100% !important;
			margin-left: 0 !important;
			margin-right: 0 !important;
			box-sizing: border-box !important;
		}

		.maid-svc-pb-booking {
			margin-top: 1rem;
			margin-bottom: max(0.35rem, env(safe-area-inset-bottom, 0px));
		}

		.maid-svc-pb-booking .maid-svc-pb-booking__layout {
			gap: 1rem;
		}

		.maid-svc-pb-booking .maid-svc-pb-form .maid-svc-pb-step:last-of-type {
			margin-bottom: 0.5rem;
		}

		.maid-svc-pb-booking .maid-svc-pb-payment-disclaimer {
			margin-top: 0.65rem;
			margin-bottom: 0.5rem;
		}

		.maid-svc-pb-booking .maid-svc-pb-step[data-step="8"] .maid-svc-pb-promo {
			margin-top: 1rem;
			margin-bottom: 0.65rem;
		}

		.maid-svc-pb-booking .maid-svc-pb-form-message {
			margin-top: 0.65rem;
			margin-bottom: 0;
		}
	}

	@media screen and (max-width: 767px) {
		.maid-svc-pb-booking .maid-svc-pb-grid--2,
		.maid-svc-pb-booking .maid-svc-pb-grid--3 {
			grid-template-columns: 1fr;
		}

		.maid-svc-pb-booking .maid-svc-pb-payment-grid {
			grid-template-columns: 1fr;
		}
	}
}
