/* Contact Form Pro — Styles */

.cfp-wrapper { width: 100%; --cfp-error: #c0392b; }

.cfp-section {
	background-color: #fffdfb;
	width: 100%;
	box-sizing: border-box;
	padding: 70px 60px;
	position: relative;
}

.cfp-grid {
	display: grid;
	grid-template-columns: 1.15fr 1fr;
	gap: 70px;
	align-items: start;
}

/* ---------------- Form column ---------------- */
.cfp-col-form {
	position: relative;
}

.cfp-form-title {
	font-family: Georgia, 'Times New Roman', serif;
	font-size: 32px;
	font-weight: 400;
	color: #3a281d;
	margin: 0 0 12px 0;
}

.cfp-form-subtitle {
	font-size: 14px;
	line-height: 1.65;
	color: #6b5d51;
	margin: 0 0 32px 0;
	max-width: 460px;
}

.cfp-fields-grid {
	display: flex;
	flex-wrap: wrap;
	gap: 22px 20px;
}

.cfp-field-full { flex: 1 1 100%; }
.cfp-field-half { flex: 1 1 calc(50% - 10px); min-width: 200px; }

.cfp-field-label {
	display: block;
	font-size: 13px;
	font-weight: 600;
	color: #3a281d;
	margin-bottom: 8px;
}

.cfp-required {
	font-weight: 400;
	font-size: 11px;
	color: #a5613a;
	margin-left: 4px;
}

.cfp-input,
.cfp-textarea,
.cfp-select {
	width: 100%;
	box-sizing: border-box;
	background-color: #ffffff;
	border: 1px solid #e3d2c0;
	border-radius: 4px;
	padding: 13px 14px;
	font-size: 14px;
	color: #3a281d;
	font-family: inherit;
	transition: border-color 0.3s ease;
	outline: none;
}

.cfp-input:focus,
.cfp-textarea:focus,
.cfp-select:focus {
	border-color: #a5613a;
}

.cfp-textarea {
	resize: vertical;
	min-height: 100px;
}

.cfp-select {
	appearance: none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23a5613a'%3E%3Cpath d='M5.5 7.5l4.5 4.5 4.5-4.5' stroke='%23a5613a' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	padding-right: 36px;
	cursor: pointer;
}

/* Number field with +/- buttons */
.cfp-number-wrap {
	display: flex;
	align-items: stretch;
	border: 1px solid #e3d2c0;
	border-radius: 4px;
	overflow: hidden;
	background-color: #ffffff;
}

.cfp-number-btn {
	flex: 0 0 44px;
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: #f8f0e8;
	color: #a5613a;
	border: none;
	font-size: 18px;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
	-webkit-appearance: none;
	appearance: none;
	transition: background-color 0.25s ease, color 0.25s ease;
}

.cfp-number-btn:hover {
	background-color: #a5613a;
	color: #ffffff;
}

.cfp-number-btn:active {
	transform: scale(0.94);
}

.cfp-number-input {
	flex: 1;
	min-width: 0;
	width: auto;
	border: none;
	border-left: 1px solid #e3d2c0;
	border-right: 1px solid #e3d2c0;
	border-radius: 0;
	text-align: center;
	/* Native spinner is intentionally hidden here — we provide our own
	   +/- buttons above, which always show regardless of theme/browser
	   CSS resets that otherwise strip the native one. */
	-moz-appearance: textfield;
}

.cfp-number-input::-webkit-outer-spin-button,
.cfp-number-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

/* ---------------- Booking calendar ---------------- */
.cfp-cal-wrap {
	position: relative;
}

/* Lifts the field above the blocks that follow it while its calendar is open. */
.cfp-field.cfp-field-raised {
	position: relative;
	z-index: 40;
}

.cfp-cal-trigger {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	cursor: pointer;
	font-family: inherit;
	text-align: left;
}

.cfp-cal-trigger-text {
	color: #3a281d;
}

.cfp-cal-wrap.cfp-cal-has-value .cfp-cal-trigger-text {
	font-weight: 600;
}

.cfp-cal-trigger-icon {
	opacity: 0.7;
}

.cfp-cal-popup {
	display: none;
	position: absolute;
	top: calc(100% + 8px);
	left: 0;
	z-index: 30;
	width: 300px;
	max-width: 90vw;
	background-color: #ffffff;
	border: 1px solid #e3d2c0;
	border-radius: 8px;
	box-shadow: 0 20px 45px -12px rgba(58, 40, 29, 0.25);
	padding: 16px;
	box-sizing: border-box;
}

.cfp-cal-popup.cfp-cal-open {
	display: block;
	animation: cfp-cal-in 0.2s ease;
}

@keyframes cfp-cal-in {
	from { opacity: 0; transform: translateY(-6px); }
	to   { opacity: 1; transform: translateY(0); }
}

.cfp-cal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 12px;
}

.cfp-cal-nav {
	background: transparent;
	border: none;
	font-size: 16px;
	color: #6b5d51;
	cursor: pointer;
	padding: 4px 8px;
	transition: color 0.2s ease;
	-webkit-appearance: none;
	appearance: none;
}

.cfp-cal-month-label {
	font-size: 14px;
	font-weight: 700;
	color: #3a281d;
}

.cfp-cal-weekdays,
.cfp-cal-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 2px;
}

.cfp-cal-weekdays {
	margin-bottom: 6px;
}

.cfp-cal-weekdays span {
	text-align: center;
	font-size: 10px;
	font-weight: 700;
	color: #a6998c;
	text-transform: uppercase;
}

.cfp-cal-day {
	aspect-ratio: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	color: #3a281d;
	background: transparent;
	border: 1px solid transparent;
	border-radius: 6px;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
	-webkit-appearance: none;
	appearance: none;
	font-family: inherit;
}

.cfp-cal-day:hover:not(.is-disabled):not(.is-blocked):not(.is-empty) {
	background-color: #f8f0e8;
	border-color: #e3d2c0;
}

.cfp-cal-day.is-empty {
	visibility: hidden;
	cursor: default;
}

.cfp-cal-day.is-disabled {
	color: #d8cec3;
	cursor: default;
}

.cfp-cal-day.is-blocked {
	color: #e3d2c0;
	text-decoration: line-through;
	cursor: not-allowed;
}

.cfp-cal-day.is-selected {
	background-color: #a5613a;
	border-color: #a5613a;
	color: #ffffff;
	font-weight: 700;
}

.cfp-cal-legend {
	display: flex;
	align-items: center;
	gap: 6px;
	margin-top: 12px;
	font-size: 11px;
	color: #8a7c6f;
}

.cfp-cal-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
}

.cfp-cal-dot.is-blocked {
	background-color: #e3d2c0;
}

.cfp-field-error {
	display: none;
	align-items: center;
	gap: 7px;
	margin-top: 8px;
	color: var(--cfp-error, #c0392b);
	font-size: 12px;
	font-weight: 600;
	line-height: 1.4;
}

.cfp-field-error::before {
	content: "!";
	flex: 0 0 15px;
	width: 15px;
	height: 15px;
	border-radius: 50%;
	background-color: var(--cfp-error, #c0392b);
	color: #ffffff;
	font-size: 10px;
	font-weight: 700;
	line-height: 15px;
	text-align: center;
}

.cfp-field-error.cfp-show {
	display: flex;
	animation: cfp-error-in 0.25s ease;
}

@keyframes cfp-error-in {
	from { opacity: 0; transform: translateY(-4px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Invalid state. !important because Elementor's own per-widget CSS for the
   border colour is more specific than anything written here. */
.cfp-field.cfp-has-error .cfp-input,
.cfp-field.cfp-has-error .cfp-textarea,
.cfp-field.cfp-has-error .cfp-select,
.cfp-field.cfp-has-error .cfp-number-wrap,
.cfp-field.cfp-has-error .cfp-phone-wrap,
.cfp-field.cfp-has-error .cfp-checkbox-box {
	border-color: var(--cfp-error, #c0392b) !important;
}

/* Checkbox */
.cfp-checkbox-row {
	display: flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	font-size: 13px;
	color: #3a281d;
}

.cfp-checkbox {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
}

.cfp-checkbox-box {
	width: 18px;
	height: 18px;
	border: 1px solid #e3d2c0;
	border-radius: 3px;
	flex-shrink: 0;
	position: relative;
	transition: background-color 0.25s ease, border-color 0.25s ease;
}

.cfp-checkbox:checked + .cfp-checkbox-box {
	background-color: #a5613a;
	border-color: #a5613a;
}

.cfp-checkbox:checked + .cfp-checkbox-box::after {
	content: "";
	position: absolute;
	left: 5px;
	top: 1px;
	width: 5px;
	height: 9px;
	border: solid #ffffff;
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}

.cfp-checkbox:focus-visible + .cfp-checkbox-box {
	outline: 2px solid #a5613a;
	outline-offset: 2px;
}

/* ---------------- Phone with country dial code ---------------- */
.cfp-phone-wrap {
	display: flex;
	align-items: stretch;
	background-color: #ffffff;
	border: 1px solid #e3d2c0;
	border-radius: 4px;
	overflow: hidden;
	transition: border-color 0.3s ease;
}

.cfp-phone-wrap:focus-within {
	border-color: #a5613a;
}

.cfp-phone-code {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	min-width: 30px;
	padding: 0 14px;
	background-color: #f8f0e8;
	color: #a5613a;
	border-right: 1px solid #e3d2c0;
	font-size: 14px;
	font-weight: 600;
	white-space: nowrap;
}

.cfp-phone-no-code .cfp-phone-code {
	display: none;
}

.cfp-phone-wrap .cfp-phone-input {
	flex: 1;
	min-width: 0;
	width: auto;
	border: none;
	border-radius: 0;
}

/* ---------------- Pricing summary ---------------- */
.cfp-pricing {
	--cfp-price-accent: #a5613a;
	margin-top: 30px;
	padding: 26px 28px 24px 28px;
	background-color: #fbf6f0;
	border: 1px solid #e3d2c0;
	border-radius: 6px;
	box-sizing: border-box;
}

.cfp-pricing-title {
	margin-bottom: 14px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1.8px;
	text-transform: uppercase;
	color: var(--cfp-price-accent);
}

.cfp-pricing-rate {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	padding-bottom: 16px;
	color: #3a281d;
	font-family: Georgia, 'Times New Roman', serif;
}

.cfp-pricing-rate-label {
	font-size: 18px;
}

.cfp-pricing-rate-value {
	font-size: 28px;
	line-height: 1;
	white-space: nowrap;
}

.cfp-pricing-rate {
	flex-wrap: wrap;
	row-gap: 6px;
}

.cfp-pricing-rate-suffix {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13px;
	color: #8a7c6f;
	letter-spacing: 0.2px;
}

.cfp-pricing-min-note {
	flex: 1 1 100%;
	text-align: right;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: var(--cfp-price-accent);
}

.cfp-pricing-rows {
	border-top: 1px solid #e3d2c0;
}

.cfp-price-row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	padding: 11px 0;
	border-bottom: 1px solid #e3d2c0;
	font-size: 14px;
	line-height: 1.5;
}

.cfp-price-row[hidden],
.cfp-pricing-hint[hidden] {
	display: none;
}

.cfp-price-label {
	color: #6b5d51;
}

.cfp-price-amount,
.cfp-price-total-amount {
	display: inline-block;
	flex: 0 0 auto;
	color: #3a281d;
	font-weight: 600;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.cfp-price-total {
	margin-top: -1px;
	padding: 16px 0 2px 0;
	border-bottom: none;
	border-top: 2px solid var(--cfp-price-accent);
	font-family: Georgia, 'Times New Roman', serif;
}

.cfp-price-total-label {
	font-size: 17px;
	color: #3a281d;
}

.cfp-price-total-amount {
	font-size: 26px;
	line-height: 1;
	color: var(--cfp-price-accent);
}

.cfp-pricing-hint {
	margin: 14px 0 0 0;
	font-size: 13px;
	font-style: italic;
	color: #8a7c6f;
}

.cfp-pricing-schedule {
	margin-top: 20px;
	padding: 16px 18px 5px 18px;
	background-color: #ffffff;
	border-left: 3px solid var(--cfp-price-accent);
	border-radius: 0 4px 4px 0;
}

.cfp-pricing-schedule-title {
	margin-bottom: 3px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	color: #8a7c6f;
}

.cfp-pricing-schedule .cfp-price-row:last-child {
	border-bottom: none;
}

.cfp-price-due {
	display: block;
	margin-top: 2px;
	font-size: 12px;
	color: #8a7c6f;
}

.cfp-price-due:empty {
	display: none;
}

.cfp-price-desc,
.cfp-price-sub {
	display: block;
	margin-top: 3px;
	font-size: 12px;
	line-height: 1.5;
	color: #8a7c6f;
}

.cfp-price-sub {
	font-style: italic;
}

.cfp-price-sub:empty {
	display: none;
}

.cfp-price-instalment .cfp-price-label {
	min-width: 0;
}

.cfp-pricing-note {
	margin: 14px 0 0 0;
	font-size: 12px;
	line-height: 1.6;
	color: #8a7c6f;
}

.cfp-price-flash {
	animation: cfp-price-flash 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes cfp-price-flash {
	from { opacity: 0; transform: translateY(5px); }
	to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
	.cfp-price-flash,
	.cfp-field-error.cfp-show {
		animation: none;
	}
}

/* Submit button */
.cfp-submit-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background-color: #a5613a;
	color: #ffffff;
	border: none;
	padding: 17px 32px;
	font-size: 12px;
	letter-spacing: 1.5px;
	font-weight: 700;
	cursor: pointer;
	margin-top: 28px;
	transition: background-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
	-webkit-appearance: none;
	appearance: none;
	outline: none;
}

.cfp-submit-btn:hover {
	background-color: #7c4527;
	box-shadow: 0 14px 32px -8px rgba(165, 97, 58, 0.35);
	transform: translateY(-2px);
}

.cfp-submit-btn:disabled {
	opacity: 0.65;
	cursor: not-allowed;
	transform: none;
}

.cfp-btn-arrow {
	display: inline-block;
	transition: transform 0.3s ease;
}

.cfp-submit-btn:hover .cfp-btn-arrow {
	transform: translateX(4px);
}

.cfp-response-note {
	font-size: 12px;
	color: #8a8175;
	margin-top: 12px;
}

.cfp-form-message {
	font-size: 13px;
	font-weight: 600;
	margin-top: 14px;
	padding: 0;
	border-radius: 4px;
	max-height: 0;
	overflow: hidden;
	opacity: 0;
	transition: max-height 0.4s ease, opacity 0.4s ease, padding 0.4s ease;
}

.cfp-form-message.cfp-show {
	max-height: 220px;
	opacity: 1;
	padding: 12px 16px;
}

.cfp-form-message.cfp-success {
	background-color: #e7f2e5;
	color: #35662f;
}

.cfp-form-message.cfp-error {
	background-color: #f8e3dc;
	color: #a5432a;
}

.cfp-honeypot {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.cfp-decor {
	position: absolute;
	bottom: -10px;
	right: 30px;
	width: 90px;
	height: 90px;
	color: #d8b596;
	opacity: 0.6;
	pointer-events: none;
}

/* ---------------- Side column ---------------- */
.cfp-methods-title {
	font-family: Georgia, 'Times New Roman', serif;
	font-size: 20px;
	font-weight: 400;
	color: #3a281d;
	margin: 0 0 24px 0;
}

.cfp-methods-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 16px;
	margin-bottom: 44px;
}

.cfp-method-card {
	text-align: center;
	padding: 20px 12px;
	border-radius: 8px;
	transition: box-shadow 0.4s ease, transform 0.4s ease;
}

.cfp-method-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 18px 36px -14px rgba(165, 97, 58, 0.18);
}

.cfp-method-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 52px;
	margin: 0 auto 14px auto;
	border-radius: 50%;
	background-color: #f0ddc9;
	color: #a5613a;
	font-size: 18px;
	transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.cfp-method-icon svg {
	width: 1em;
	height: 1em;
	fill: currentColor;
}

.cfp-method-card:hover .cfp-method-icon {
	transform: scale(1.1);
}

.cfp-method-label {
	font-size: 13px;
	font-weight: 700;
	color: #3a281d;
	margin-bottom: 4px;
}

.cfp-method-value {
	font-size: 13px;
	font-weight: 600;
	color: #a5613a;
	margin-bottom: 4px;
	word-break: break-word;
}

.cfp-method-desc {
	font-size: 12px;
	line-height: 1.5;
	color: #6b5d51;
}

/* ---------- Addon services card ---------- */
.cfp-wrapper .cfp-addons {
	--cfp-addon-hover: #a5613a;
	margin: 0 0 32px 0;
	padding: 24px 28px 20px;
	border: 1px solid #ead9c6;
	border-radius: 8px;
	background-color: #faf3ec;
	box-shadow: 0 14px 30px -24px rgba(90, 55, 30, 0.35);
	container-type: inline-size;
	transition: box-shadow 0.4s ease, transform 0.4s ease;
}

.cfp-wrapper .cfp-addons:hover {
	box-shadow: 0 20px 38px -24px rgba(90, 55, 30, 0.45);
}

.cfp-wrapper .cfp-addons-title {
	margin: 0 0 10px 0;
	padding: 0;
	font-family: Georgia, 'Times New Roman', serif;
	font-size: 26px;
	font-weight: 400;
	line-height: 1.25;
	color: #2a1d14;
	text-transform: none;
}

.cfp-wrapper .cfp-addons-intro {
	margin: 0 0 8px 0;
	font-size: 13px;
	line-height: 1.6;
	color: #6b5d51;
}

.cfp-wrapper ul.cfp-addons-list {
	margin: 0 !important;
	padding: 0 !important;
	list-style: none !important;
}

.cfp-wrapper li.cfp-addon {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 40px auto;
	align-items: center;
	margin: 0 !important;
	padding: 10px 0;
	list-style: none !important;
	border-top: 1px solid transparent;
	transition: color 0.3s ease;
}

.cfp-wrapper li.cfp-addon::before,
.cfp-wrapper li.cfp-addon::marker {
	content: none !important;
}

.cfp-wrapper .cfp-addons-sep-none li.cfp-addon {
	grid-template-columns: minmax(0, 1fr) auto;
	column-gap: 16px;
}

.cfp-wrapper .cfp-addons-sep-dots li.cfp-addon {
	grid-template-columns: auto minmax(24px, 1fr) auto;
	column-gap: 10px;
}

.cfp-wrapper .cfp-addon-name {
	min-width: 0;
	font-size: 15px;
	line-height: 1.4;
	color: #6b5d51;
	transition: color 0.3s ease, transform 0.4s ease;
}

.cfp-wrapper .cfp-addon-note {
	display: block;
	margin-top: 2px;
	font-size: 12px;
	opacity: 0.8;
}

.cfp-wrapper .cfp-addon-sep {
	text-align: center;
	font-size: 15px;
	line-height: 1;
	color: #8a7a6c;
}

.cfp-wrapper .cfp-addons-sep-dots .cfp-addon-sep {
	align-self: end;
	height: 0;
	margin-bottom: 0.45em;
	border-bottom: 1.5px dotted;
	opacity: 0.6;
}

.cfp-wrapper .cfp-addon-price {
	font-size: 15px;
	font-weight: 700;
	line-height: 1.4;
	color: #4a3a2e;
	text-align: right;
	white-space: nowrap;
	transition: color 0.3s ease;
}

/* Narrow card (e.g. a slim side column): price goes under the service name */
@container (max-width: 240px) {
	.cfp-wrapper li.cfp-addon,
	.cfp-wrapper .cfp-addons-sep-dots li.cfp-addon,
	.cfp-wrapper .cfp-addons-sep-none li.cfp-addon {
		grid-template-columns: minmax(0, 1fr) !important;
		row-gap: 2px;
	}
	.cfp-wrapper .cfp-addon-sep { display: none !important; }
	.cfp-wrapper .cfp-addon-price { text-align: left !important; white-space: normal !important; max-width: none !important; }
}

@media (hover: hover) and (pointer: fine) {
	.cfp-wrapper li.cfp-addon:hover .cfp-addon-name {
		color: var(--cfp-addon-hover);
		transform: translateX(3px);
	}
	.cfp-wrapper li.cfp-addon:hover .cfp-addon-price {
		color: var(--cfp-addon-hover);
	}
}

.cfp-question-block {
	padding-top: 32px;
	border-top: 1px solid #f0e2d5;
}

.cfp-question-title {
	font-family: Georgia, 'Times New Roman', serif;
	font-size: 26px;
	font-weight: 400;
	color: #3a281d;
	margin: 0 0 12px 0;
}

.cfp-question-desc {
	font-size: 14px;
	line-height: 1.7;
	color: #6b5d51;
	margin: 0 0 24px 0;
}

.cfp-image-wrap {
	position: relative;
	border-radius: 8px;
	overflow: hidden;
}

.cfp-image {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4/3;
	object-fit: cover;
	transition: transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

.cfp-image-wrap:hover .cfp-image {
	transform: scale(1.06);
}

.cfp-quote-card {
	position: absolute;
	right: 18px;
	bottom: 18px;
	left: 18px;
	max-width: 220px;
	margin-left: auto;
	background-color: #8a4a2c;
	color: #ffffff;
	font-family: Georgia, 'Times New Roman', serif;
	font-style: italic;
	font-size: 14px;
	line-height: 1.5;
	padding: 18px 20px;
	border-radius: 4px;
	text-align: center;
}

/* ---------------- Entrance animation ---------------- */
.cfp-wrapper[data-entrance="true"] .cfp-entrance-item {
	opacity: 0;
	transform: translateY(20px);
}

.cfp-wrapper[data-entrance="true"] .cfp-entrance-item.cfp-in-view {
	animation-name: cfpFadeUp;
	animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
	animation-fill-mode: forwards;
}

@keyframes cfpFadeUp {
	from { opacity: 0; transform: translateY(20px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* ---------------- Theme-proofing ----------------
   Many themes — and Elementor's own Site Settings → Buttons — style EVERY
   <button> on the page: big padding, orange background, uppercase text,
   a minimum height. The form's own small buttons (calendar days and
   arrows, the date field, the +/- steppers) must not inherit that, or the
   calendar blows up to several times its size. They are reset here with
   selectors strong enough to win over the theme. Colours are left without
   !important so the Style tab controls still apply. */
.cfp-wrapper .cfp-cal-popup button,
.cfp-wrapper button.cfp-cal-trigger,
.cfp-wrapper button.cfp-number-btn {
	-webkit-appearance: none !important;
	appearance: none !important;
	margin: 0 !important;
	min-width: 0 !important;
	min-height: 0 !important;
	max-width: none !important;
	box-shadow: none !important;
	text-transform: none !important;
	letter-spacing: normal !important;
	text-decoration: none !important;
	text-shadow: none !important;
	white-space: normal !important;
	float: none !important;
	opacity: 1 !important;
	font-family: inherit !important;
	outline-offset: 2px;
}

/* Date field (the button that opens the calendar) */
.cfp-wrapper .cfp-cal-wrap button.cfp-cal-trigger {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	width: 100% !important;
	height: auto !important;
	padding: 13px 14px !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 1.4 !important;
	text-align: left !important;
	background-color: #ffffff;
	color: #3a281d;
	border: 1px solid #e3d2c0;
	border-radius: 4px;
}

/* Month arrows */
.cfp-wrapper .cfp-cal-popup button.cfp-cal-nav {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 34px !important;
	height: 34px !important;
	padding: 0 !important;
	font-size: 16px !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	border-radius: 50% !important;
	background-color: transparent;
	border: 1px solid transparent;
	color: #6b5d51;
}

.cfp-wrapper .cfp-cal-popup button.cfp-cal-nav:hover,
.cfp-wrapper .cfp-cal-popup button.cfp-cal-nav:focus-visible {
	background-color: #f8f0e8;
	border-color: #e3d2c0;
	color: #a5613a;
}

/* Days */
.cfp-wrapper .cfp-cal-popup button.cfp-cal-day {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 100% !important;
	height: auto !important;
	aspect-ratio: 1;
	padding: 0 !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	line-height: 1 !important;
	border-radius: 6px !important;
	background-color: transparent;
	border: 1px solid transparent;
	color: #3a281d;
	cursor: pointer;
}

.cfp-wrapper .cfp-cal-popup button.cfp-cal-day:hover:not(.is-disabled):not(.is-blocked),
.cfp-wrapper .cfp-cal-popup button.cfp-cal-day:focus-visible {
	background-color: #f8f0e8;
	border-color: #e3d2c0;
	color: #3a281d;
}

.cfp-wrapper .cfp-cal-popup button.cfp-cal-day.is-disabled {
	background-color: transparent;
	border-color: transparent;
	color: #d8cec3;
	cursor: default;
}

.cfp-wrapper .cfp-cal-popup button.cfp-cal-day.is-blocked {
	background-color: transparent;
	border-color: transparent;
	color: #e3d2c0;
	text-decoration: line-through !important;
	cursor: not-allowed;
}

.cfp-wrapper .cfp-cal-popup button.cfp-cal-day.is-selected {
	background-color: #a5613a;
	border-color: #a5613a;
	color: #ffffff;
	font-weight: 700 !important;
}

/* +/- steppers */
.cfp-wrapper .cfp-number-wrap button.cfp-number-btn {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	flex: 0 0 44px !important;
	width: 44px !important;
	height: auto !important;
	padding: 0 !important;
	font-size: 18px !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	border: none !important;
	border-radius: 0 !important;
	/* Themes / Elementor Kits often style every <button> (colour, gradient
	   or texture image, even text-fill). The shorthand below wipes all of it;
	   colours come from the widget's Style tab through the variables. */
	background: var(--cfp-step-bg, #f8f0e8) !important;
	color: var(--cfp-step-color, #a5613a) !important;
	-webkit-text-fill-color: currentColor !important;
	filter: none !important;
	outline-offset: -2px;
}

.cfp-wrapper .cfp-number-wrap button.cfp-number-btn:hover,
.cfp-wrapper .cfp-number-wrap button.cfp-number-btn:focus-visible {
	background: var(--cfp-step-hover-bg, #a5613a) !important;
	color: var(--cfp-step-hover-color, #ffffff) !important;
}

/* The − / + are drawn as SVG strokes, so no theme font, text colour or
   text-transform can hide them. */
.cfp-wrapper .cfp-number-wrap button.cfp-number-btn svg.cfp-step-icon {
	display: block !important;
	width: 14px !important;
	height: 14px !important;
	min-width: 14px !important;
	max-width: none !important;
	margin: 0 !important;
	fill: none !important;
	stroke: currentColor !important;
	stroke-width: 2.2px !important;
	stroke-linecap: round !important;
	opacity: 1 !important;
	visibility: visible !important;
	pointer-events: none;
}

/* ---------------- Responsive ----------------
   !important throughout: Elementor prints its own per-widget CSS after this
   file, so without it some of these mobile rules lose on real devices. Each
   one only applies inside its media query. */
@media (max-width: 991px) {
	.cfp-grid { grid-template-columns: 1fr !important; gap: 50px !important; }
	.cfp-methods-grid { grid-template-columns: repeat(3, 1fr) !important; }
	.cfp-section { padding: 50px 32px !important; }
}

@media (max-width: 600px) {
	.cfp-field-half { flex: 1 1 100% !important; }
	.cfp-methods-grid { grid-template-columns: 1fr !important; }
	.cfp-section { padding: 40px 20px !important; }
	.cfp-submit-btn { width: 100% !important; justify-content: center !important; }
	.cfp-form-title { font-size: 27px !important; }

	.cfp-pricing { padding: 22px 18px 20px 18px !important; }
	.cfp-pricing-rate-label { font-size: 16px !important; }
	.cfp-pricing-rate-value { font-size: 24px !important; }
	.cfp-price-row { font-size: 13px !important; gap: 12px !important; }
	.cfp-price-total-label { font-size: 15px !important; }
	.cfp-price-total-amount { font-size: 22px !important; }
	.cfp-pricing-schedule { padding: 14px 14px 4px 14px !important; }
	.cfp-pricing-rate-suffix { font-size: 12px !important; }
	.cfp-pricing-min-note { text-align: left !important; font-size: 11px !important; }
	.cfp-price-desc, .cfp-price-sub { font-size: 11.5px !important; }
	.cfp-phone-code { padding: 0 11px !important; }
	.cfp-cal-popup { width: 100% !important; }
	.cfp-wrapper .cfp-addons { padding: 20px 18px 16px !important; }
	.cfp-wrapper .cfp-addons-title { font-size: 23px !important; }
	.cfp-wrapper li.cfp-addon { grid-template-columns: minmax(0, 1fr) 24px auto !important; }
	.cfp-wrapper .cfp-addons-sep-dots li.cfp-addon { grid-template-columns: auto minmax(14px, 1fr) auto !important; column-gap: 8px !important; }
	.cfp-wrapper .cfp-addons-sep-none li.cfp-addon { grid-template-columns: minmax(0, 1fr) auto !important; }
	.cfp-wrapper .cfp-addon-name, .cfp-wrapper .cfp-addon-price { font-size: 14px !important; }
	.cfp-wrapper .cfp-addon-price { white-space: normal !important; max-width: 150px; }
}

@media (max-width: 380px) {
	.cfp-section { padding: 34px 14px !important; }
	.cfp-pricing { padding: 20px 14px 18px 14px !important; }
	.cfp-pricing-rate-value { font-size: 22px !important; }
	.cfp-wrapper .cfp-number-wrap button.cfp-number-btn { flex-basis: 40px !important; width: 40px !important; }
}
