/* Toolkiz forms ([toolkiz_form]). Fields inherit the theme (Kapee); this file
 * adds only layout, states and focus. Brand dark #252A2D. No external resources.
 * Contrast (tests/test-forms-module.php): text >= 4.5:1, borders >= 3:1 on white. */
.toolkiz-form-wrap {
	box-sizing: border-box;
	max-width: 760px;
	color: #252A2D;
}
.toolkiz-form-wrap *,
.toolkiz-form-wrap *::before,
.toolkiz-form-wrap *::after {
	box-sizing: border-box;
}

/* One column on every width. */
.toolkiz-form__field,
.toolkiz-form__html,
.toolkiz-form__privacy,
.toolkiz-form__intro {
	margin: 0 0 18px;
}
.toolkiz-form__label {
	display: block;
	margin: 0 0 6px;
	font-weight: 700;
	color: #252A2D;
}
.toolkiz-form__req {
	font-weight: 400;
}
.toolkiz-form__help {
	margin: 0 0 6px;
	font-size: 0.9375em;
	color: #5b6166;
}
.toolkiz-form__intro {
	color: #5b6166;
}
.toolkiz-form input[type="text"],
.toolkiz-form input[type="email"],
.toolkiz-form input[type="tel"],
.toolkiz-form input[type="file"],
.toolkiz-form select,
.toolkiz-form textarea {
	display: block;
	width: 100%;
	max-width: 100%;
	min-height: 44px;
	font-size: max(1rem, 16px); /* No zoom on iOS. */
}
.toolkiz-form textarea {
	min-height: 140px;
	resize: vertical;
}

/* N1: visible field borders (WCAG 1.4.11) and text (1.4.3) regardless of the
 * theme (Kapee: #E9E9E9 border, page-coloured select/textarea). Specificity
 * (0,3,1) beats the theme without !important; the error state below is (0,4,1)
 * and so stays on top. #767676 = 4.54:1 on #fff, 4.1:1 on rgb(235,245,238). */
.toolkiz-form-wrap .toolkiz-form input[type="text"],
.toolkiz-form-wrap .toolkiz-form input[type="email"],
.toolkiz-form-wrap .toolkiz-form input[type="tel"],
.toolkiz-form-wrap .toolkiz-form input[type="file"],
.toolkiz-form-wrap .toolkiz-form select,
.toolkiz-form-wrap .toolkiz-form textarea {
	border: 1px solid #767676;
	background-color: #fff;
	color: #2b2b2b;
}
.toolkiz-form-wrap .toolkiz-form input::placeholder,
.toolkiz-form-wrap .toolkiz-form textarea::placeholder {
	color: #6b6b6b; /* 5.3:1 on #fff */
	opacity: 1;
}

/* Checkbox: input + label in one row, the box itself 24 x 24 px (F45-07). */
.toolkiz-form__check {
	display: flex;
	align-items: flex-start;
	gap: 10px;
}
.toolkiz-form__check input[type="checkbox"] {
	flex: 0 0 auto;
	width: 24px;
	height: 24px;
	margin: 0;
}
.toolkiz-form__check .toolkiz-form__label {
	margin: 0;
	min-height: 24px;
	font-weight: 400;
	cursor: pointer;
}

/* Errors: text + thicker border, never colour alone. */
.toolkiz-form__error {
	margin: 6px 0 0;
	font-weight: 700;
	color: #b32d2e;
}
.toolkiz-form-wrap .toolkiz-form .toolkiz-form__field.has-error input,
.toolkiz-form-wrap .toolkiz-form .toolkiz-form__field.has-error select,
.toolkiz-form-wrap .toolkiz-form .toolkiz-form__field.has-error textarea {
	border: 2px solid #b32d2e;
}

/* Summary of errors (focus target, no role=alert). */
.toolkiz-form__summary {
	margin: 0 0 20px;
	padding: 14px 16px;
	border: 2px solid #b32d2e;
	border-left-width: 6px;
	background: #fff;
	color: #252A2D;
}
.toolkiz-form__summary[hidden] {
	display: none;
}
.toolkiz-form__summary-title {
	margin: 0 0 8px;
	font-size: 1.125em;
	line-height: 1.4;
	color: #b32d2e;
	background: #fff;
}
.toolkiz-form__summary-list {
	margin: 0 0 0 1.25em;
	padding: 0;
}
.toolkiz-form__summary-list a {
	color: #b32d2e;
	background: #fff;
	text-decoration: underline;
}

/* Confirmation that replaces the form. */
.toolkiz-form__done {
	margin: 0 0 20px;
	padding: 14px 16px;
	border-left: 6px solid #1a7f37;
	background: #fff;
	color: #252A2D;
}
.toolkiz-form__done p:last-child {
	margin-bottom: 0;
}
.toolkiz-form__note {
	font-weight: 700;
}

/* Draft preview strip (U3). */
.toolkiz-form__preview {
	margin: 0 0 16px;
	padding: 10px 14px;
	font-weight: 700;
	color: #8a5200;
	background: #fff3e0;
	border: 1px solid #8a5200;
}

.toolkiz-form__privacy {
	font-size: 0.9375em;
	color: #5b6166;
}
.toolkiz-form__privacy a {
	color: #252A2D;
	text-decoration: underline;
}

.toolkiz-form__actions {
	margin: 0 0 12px;
}
.toolkiz-form__submit {
	min-height: 44px;
	min-width: 44px;
}
.toolkiz-form__submit[aria-disabled="true"] {
	opacity: 0.75;
	cursor: progress;
}
.toolkiz-form__status {
	margin: 0;
	min-height: 1.5em;
	color: #5b6166;
}

/* Visible focus, also where the theme removes outlines. */
.toolkiz-form :focus-visible,
.toolkiz-form__summary:focus,
.toolkiz-form__done:focus {
	outline: 3px solid #252A2D;
	outline-offset: 2px;
}

/* Anchor targets below the sticky header (Kapee). */
.toolkiz-form__summary,
.toolkiz-form__done,
.toolkiz-form__field,
.toolkiz-form input,
.toolkiz-form select,
.toolkiz-form textarea {
	scroll-margin-top: 120px;
}

@media (forced-colors: active) {
	.toolkiz-form__summary,
	.toolkiz-form__done,
	.toolkiz-form__field.has-error input,
	.toolkiz-form__field.has-error select,
	.toolkiz-form__field.has-error textarea {
		border-color: CanvasText;
	}
}
