/**
 * Forminator, theme styled, from Contact 22:2993 and the form spec 22:3599.
 *
 * Every form is set to Forminator's "none" design, so the plugin ships layout
 * only and the fields inherit the base field rules in resha. This file covers
 * what Forminator's markup adds on top: its grid spacing, the select, the
 * submit button, error text and the response message.
 *
 * Forminator's grid rules carry three classes and an attribute, so these
 * selectors start at the same weight and add the body element to win.
 */

/* Fields stack 24 apart, as drawn. */
body .forminator-ui.forminator-custom-form[data-grid] .forminator-row:not(:last-child),
body .forminator-ui.forminator-custom-form[data-grid] .forminator-col:not(:last-child) {
	margin-bottom: var(--wp--preset--spacing--24);
}

/* The honeypot follows the submit row, so that row is never the last child. */
body .forminator-ui.forminator-custom-form[data-grid] .forminator-row-last {
	margin-bottom: 0;
}

body .forminator-ui.forminator-custom-form .forminator-field {
	position: relative;
}

/* The label's asterisk stays, quieter than the label, so required fields are
   marked in words and colour both. */
body .forminator-ui.forminator-custom-form .forminator-required {
	color: var(--wp--preset--color--contrast-muted);
}

/* Fields run the full column and sit 14 inside their border, as drawn. */
body .forminator-ui.forminator-custom-form :is(.forminator-input, .forminator-textarea, select) {
	display: block;
	width: 100%;
	padding-block: calc(var(--wp--preset--spacing--12) + var(--wp--preset--spacing--2));
}

body .forminator-ui.forminator-custom-form .forminator-textarea {
	min-height: calc(var(--wp--preset--spacing--128) + var(--wp--preset--spacing--32));
	resize: vertical;
}

/* The select draws its own disclosure triangle, pointing down. */
body .forminator-ui.forminator-custom-form select {
	padding-inline-end: calc(var(--wp--preset--spacing--16) * 2 + var(--wp--custom--marker--disclosure-long));
	appearance: none;
	cursor: pointer;
}

body .forminator-ui.forminator-custom-form .forminator-field-select .forminator-field::after {
	content: "";
	position: absolute;
	right: var(--wp--preset--spacing--16);
	bottom: calc(var(--wp--custom--field--height) / 2 + var(--wp--preset--spacing--2));
	width: var(--wp--custom--marker--disclosure-long);
	height: var(--wp--custom--marker--disclosure-short);
	background-color: var(--wp--preset--color--contrast);
	clip-path: polygon(0 0, 100% 0, 50% 100%);
	pointer-events: none;
}

/* An error thickens the border and says what to do, in full ink under the
   field. Never colour alone. */
body .forminator-ui.forminator-custom-form .forminator-has_error :is(.forminator-input, .forminator-textarea, select) {
	border-width: var(--wp--custom--stroke--error);
}

/* Focus still wins over an error, so the field being typed in is never lost. */
body .forminator-ui.forminator-custom-form :is(.forminator-input, .forminator-textarea, select):focus-visible {
	border-color: var(--wp--preset--color--accent);
	border-width: var(--wp--custom--focus--width);
}

body .forminator-ui.forminator-custom-form .forminator-error-message {
	display: block;
	margin-top: var(--wp--preset--spacing--8);
	color: var(--wp--preset--color--contrast);
	font-size: var(--wp--preset--font-size--body-s);
	line-height: 1.5625;
}

body .forminator-ui.forminator-custom-form .forminator-description {
	display: block;
	margin-top: var(--wp--preset--spacing--8);
	color: var(--wp--preset--color--contrast-muted);
	font-size: var(--wp--preset--font-size--body-s);
	line-height: 1.5625;
}

/* The submit button is the theme's primary button. Forminator does not add
   the element class, so the button element's values are repeated here. */
body .forminator-ui.forminator-custom-form .forminator-button-submit {
	padding: var(--wp--preset--spacing--12) var(--wp--preset--spacing--24);
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	background-color: var(--wp--preset--color--inverse);
	color: var(--wp--preset--color--on-inverse);
	font-family: inherit;
	font-size: var(--wp--preset--font-size--label);
	font-weight: 500;
	letter-spacing: 0.005em;
	line-height: 1.429;
	cursor: pointer;
	transition: background-color var(--wp--custom--duration--fast) var(--wp--custom--easing--enter);
}

body .forminator-ui.forminator-custom-form .forminator-button-submit:is(:hover, :active) {
	background-color: var(--wp--preset--color--contrast);
}

body .forminator-ui.forminator-custom-form .forminator-button-submit:disabled {
	cursor: progress;
	opacity: 0.6;
}

/* The response after sending: a ruled note above the form, not a toast. */
body .forminator-ui.forminator-custom-form .forminator-response-message:not(:empty) {
	margin-bottom: var(--wp--preset--spacing--24);
	padding: var(--wp--preset--spacing--16);
	border: var(--wp--custom--stroke--field) solid var(--wp--preset--color--line);
	font-size: var(--wp--preset--font-size--body-m);
}

body .forminator-ui.forminator-custom-form .forminator-response-message.forminator-error:not(:empty) {
	border-width: var(--wp--custom--stroke--error);
}

/* Forminator lists every error at the top as well, announced as an alert. */
body .forminator-ui.forminator-custom-form .forminator-response-message :is(p, ul) {
	margin: 0;
}

body .forminator-ui.forminator-custom-form .forminator-response-message ul {
	padding-inline-start: var(--wp--preset--spacing--24);
}

/* On a phone the button runs the full width, as drawn at 390. */
@media (max-width: 599px) {
	body .forminator-ui.forminator-custom-form .forminator-button-submit {
		width: 100%;
	}
}
