/* Contact Form UI V2. Presentation only; field and submission contracts live in gfd-site-core. */
:root {
	--gfd-form-surface: #fff;
	--gfd-form-border: #c8d7d8;
	--gfd-form-radius: 12px;
	--gfd-form-field-height: 50px;
	--gfd-form-field-bg: #f8fbfb;
	--gfd-form-field-border: #aabfc3;
	--gfd-form-focus: #087e79;
	--gfd-form-gap: 18px;
	--gfd-form-label-color: #173b43;
	--gfd-form-error: #9d2f33;
	--gfd-form-button-background: var(--gfd-header-background, #0d4f5c);
}

body :is(.form-card, .contact-form-card):has(> .gfd-contact-form),
body .gfd-form-box:has(.gfd-contact-form) {
	background: var(--gfd-form-surface);
	border: 1px solid var(--gfd-form-border);
	border-top: 4px solid #0f766e;
	border-radius: var(--gfd-form-radius);
	box-shadow: 0 12px 28px rgb(8 47 58 / 10%);
	padding: clamp(22px, 3vw, 34px);
}

body .gfd-form-box .gfd-shortcode-note:has(> .gfd-contact-form) {
	background: transparent;
	border: 0;
	box-shadow: none;
	padding: 0;
}

body .gfd-form-box:has(.gfd-contact-form) > p {
	color: var(--gfd-form-label-color);
	margin-bottom: 20px;
	line-height: 1.55;
}

body .gfd-contact-form {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gfd-form-gap);
	width: 100%;
	max-width: none;
	min-width: 0;
}

body .gfd-contact-form > .gfd-contact-form__field,
body .gfd-contact-form > .gfd-contact-form__error,
body .gfd-contact-form > button.gfd-contact-form__submit {
	grid-column: 1 / -1;
	min-width: 0;
}

body .gfd-contact-form__field {
	display: grid;
	align-content: start;
	gap: 7px;
	min-width: 0;
}

body .gfd-contact-form__field > label {
	color: var(--gfd-form-label-color);
	font-size: 14px;
	font-weight: 650;
	line-height: 1.4;
	margin: 0;
	text-transform: none;
}

body .gfd-contact-form__field > label span[aria-hidden="true"] {
	color: var(--gfd-form-error);
	font-weight: 700;
}

body .gfd-contact-form .gfd-contact-form__field :is(input, select, textarea) {
	appearance: none;
	box-sizing: border-box;
	width: 100%;
	min-width: 0;
	max-width: 100%;
	min-height: var(--gfd-form-field-height);
	margin: 0;
	padding: 12px 14px;
	border: 1px solid var(--gfd-form-field-border);
	border-radius: 6px;
	background: var(--gfd-form-field-bg);
	box-shadow: inset 0 1px 2px rgb(8 47 58 / 3%);
	color: #173b43;
	font: inherit;
	font-size: 15px;
	line-height: 1.4;
	text-transform: none;
}

body .gfd-contact-form .gfd-contact-form__field textarea {
	min-height: 146px;
	resize: vertical;
}

body .gfd-contact-form .gfd-contact-form__field :is(input, select, textarea)::placeholder {
	color: #5e777e;
	opacity: 1;
}

body .gfd-contact-form .gfd-contact-form__field :is(input, select, textarea):focus-visible,
body .gfd-contact-form > button.gfd-contact-form__submit:focus-visible,
body .gfd-quote-dialog__close:focus-visible {
	border-color: var(--gfd-form-focus);
	outline: 2px solid var(--gfd-form-focus);
	outline-offset: 2px;
	box-shadow: 0 0 0 4px rgb(8 126 121 / 16%);
}

body .gfd-contact-form .gfd-contact-form__field :is(input, select, textarea):user-invalid {
	border-color: var(--gfd-form-error);
	background: #fffafa;
}

body .gfd-contact-form > .gfd-contact-form__error:not([hidden]) {
	display: block;
	margin: 0;
	padding: 12px 14px;
	border: 1px solid #d69b9d;
	border-left: 4px solid var(--gfd-form-error);
	border-radius: 4px;
	background: #fff5f5;
	color: #7d2529;
	font-size: 14px;
	line-height: 1.5;
	overflow-wrap: anywhere;
}

body .gfd-contact-form > button.gfd-contact-form__submit {
	justify-self: start;
	min-width: 196px;
	min-height: 52px;
	margin: 2px 0 0;
	padding: 12px 26px;
	border: 1px solid #0b605c;
	border-radius: 6px;
	background: var(--gfd-form-button-background);
	box-shadow: 0 3px 8px rgb(8 47 58 / 12%);
	color: #fff;
	font: inherit;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: .03em;
	line-height: 1.3;
	text-transform: none;
	cursor: pointer;
}

body .gfd-contact-form > button.gfd-contact-form__submit:hover:not([disabled]) {
	filter: brightness(1.08);
}

body .gfd-contact-form > button.gfd-contact-form__submit[disabled] {
	opacity: .64;
	cursor: wait;
}

body .gfd-quote-dialog {
	box-sizing: border-box;
	width: min(740px, calc(100vw - 24px));
	max-height: calc(100dvh - 24px);
	padding: clamp(20px, 3vw, 30px);
	border: 1px solid var(--gfd-form-border);
	border-top: 4px solid #0f766e;
	border-radius: var(--gfd-form-radius);
	background: var(--gfd-form-surface);
	box-shadow: 0 24px 56px rgb(3 27 32 / 27%);
	color: var(--gfd-form-label-color);
	overscroll-behavior: contain;
}

body .gfd-quote-dialog::backdrop { background: rgb(3 27 32 / 68%); }

body:has(#gfd-quote-dialog[open]) .gfd-contact-float { display: none !important; }

body .gfd-quote-dialog__heading {
	align-items: center;
	gap: 16px;
	margin: 0 0 22px;
	padding: 0 0 16px;
	border-bottom: 1px solid var(--gfd-form-border);
}

body .gfd-quote-dialog__heading h2 {
	margin: 0;
	color: var(--gfd-form-label-color);
	font-size: clamp(21px, 3vw, 27px);
	font-weight: 700;
	line-height: 1.25;
	text-transform: none;
}

body .gfd-quote-dialog__close {
	appearance: none;
	display: grid;
	place-items: center;
	flex: none;
	width: 44px;
	height: 44px;
	min-width: 44px;
	min-height: 44px;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 8px;
	background: transparent;
	box-shadow: none;
	color: var(--gfd-form-label-color);
	font-size: 28px;
	line-height: 1;
}

body .gfd-quote-dialog__close:hover { background: #eef5f5; }
body .gfd-quote-dialog__close:active { background: #e3eeee; }

@media (min-width: 680px) {
	body .gfd-contact-form { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 16px; }
	body .gfd-contact-form > .gfd-contact-form__field:has(> input[name="your-name"]),
	body .gfd-contact-form > .gfd-contact-form__field:has(> input[name="your-email"]) { grid-column: auto; }
}

@media (max-width: 679px) {
	body .gfd-contact-form > button.gfd-contact-form__submit { width: 100%; justify-self: stretch; }
	body .gfd-quote-dialog__heading { margin-bottom: 18px; }
}
