/* form.css — Contact Form 7 styling, plus the fallback shown when no form exists.
   CF7 emits its own markup, so these selectors target what it actually renders
   rather than classes we control. Field tokens were absent from the design (the
   frame has no form at all) so the values here derive from the button and card
   metrics that ARE in it: same radius family, same 18px body, same brand border. */

.gnt-formwrap {
	max-width: 40rem;
	padding: var(--space-10);
	background-color: var(--color-surface-raised);
}

.gnt-formwrap p { margin: 0 0 var(--space-5); }

.gnt-formwrap label {
	display: block;
	margin-bottom: var(--space-2);
	font-size: var(--text-body);
	line-height: var(--text-body-lh);
	font-weight: var(--font-weight-medium);
}

.gnt-formwrap input[type="text"],
.gnt-formwrap input[type="email"],
.gnt-formwrap input[type="tel"],
.gnt-formwrap select,
.gnt-formwrap textarea {
	width: 100%;
	padding: var(--space-3) var(--space-4);
	font-family: var(--font-body);
	font-size: var(--text-body-lg);
	line-height: var(--text-body-lg-lh);
	color: var(--color-text-body);
	background-color: var(--color-surface-page);
	border: var(--border-width-thin) solid var(--color-text-body);
	border-radius: var(--radius-sm);
}

.gnt-formwrap textarea { min-height: 9rem; resize: vertical; }

.gnt-formwrap input:focus-visible,
.gnt-formwrap select:focus-visible,
.gnt-formwrap textarea:focus-visible {
	border-color: var(--color-state-focus);
}

/* MISSED BY THE 2026-09-09 BUTTON REBUILD, found 2026-09-10.
   buttons.css was rewritten because "the primary button used to be a pale tint
   (#e6eff7) with black text ... the main call to action read as a DISABLED control".
   That rebuild never reached this file, so the contact form -- the one place on the
   site where a visitor actually converts -- kept the pale fill for another day. It
   measured rgb(230,239,247) on a real render.

   Matched to gnt-btn--primary rather than approximated: same fill, same white label,
   same 3rem min-height, same 8px radius. White on #0000CD is 11.16:1. */
.gnt-formwrap input[type="submit"],
.gnt-formwrap .wpcf7-submit {
	width: auto;
	min-height: 3rem;
	padding: var(--space-3) var(--space-6);
	font-size: var(--text-body);
	font-weight: var(--font-weight-semibold);
	color: var(--color-text-inverse);
	background-color: var(--color-brand-primary);
	border: var(--border-width-thin) solid var(--color-brand-primary);
	border-radius: var(--radius-sm);
	cursor: pointer;
	transition: background-color var(--duration-base) var(--easing-standard);
}

.gnt-formwrap input[type="submit"]:hover,
.gnt-formwrap .wpcf7-submit:hover {
	background-color: var(--blue-500);
	border-color: var(--blue-500);
}

/* CF7 status messages. Its defaults are a 1px dashed border in colours that belong
   to no palette; these bring them into the token set. */
.wpcf7 form .wpcf7-response-output {
	margin: var(--space-6) 0 0;
	padding: var(--space-4) var(--space-5);
	border: 0;
	border-left: 4px solid var(--color-brand-primary);
	background-color: var(--color-surface-page);
	font-size: var(--text-body);
}

.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output { border-left-color: var(--color-state-error); }

.wpcf7-not-valid-tip {
	display: block;
	margin-top: var(--space-2);
	font-size: var(--text-body);
	color: var(--color-state-error);
}

/* Shown when no contact form exists yet. Better than an empty box or a raw
   unrendered shortcode, and it tells whoever is looking exactly what to do. */
.gnt-formwrap--missing {
	border-left: 4px solid var(--color-state-notice);
	background-color: var(--color-state-notice-bg);
}

.gnt-formwrap--missing p:last-child { margin-bottom: 0; }
