/* Contact Form 7
   Keep forms inside the same token and palette contract as every other section.
   The extra .bpt-form-section__form specificity intentionally wins over legacy
   CF7/UACF7 snippets that are printed after the theme stylesheet. */

.bpt-form-section__form .wpcf7-form {
	--cf7-control-bg: var(--bpt-color-surface);
	--cf7-control-border: var(--bpt-color-border);
	--cf7-control-fg: var(--bpt-color-text);
	--cf7-error: #b42318;
	--cf7-error-bg: #fef3f2;
	--cf7-success: #067647;
	--cf7-success-bg: #ecfdf3;
	color: var(--section-card-fg);
}

.bpt-form-section__form .wpcf7-form > p,
.bpt-form-section__form .wpcf7-form > div > p {
	margin: 0 0 var(--bpt-space-md);
}

.bpt-form-section__form .wpcf7-form .uacf7-form-wrapper-container {
	display: grid;
	gap: var(--bpt-space-md);
}

.bpt-form-section__form .wpcf7-form label {
	display: grid;
	gap: var(--bpt-space-xs);
	margin: 0;
	color: var(--section-card-fg);
	font-size: var(--bpt-text-base);
	font-weight: var(--bpt-weight-semibold);
	line-height: var(--bpt-leading-snug);
}

.bpt-form-section__form .wpcf7-form-control-wrap {
	display: block;
}

.bpt-form-section__form .wpcf7-form :is(
	input[type="text"],
	input[type="email"],
	input[type="tel"],
	input[type="url"],
	input[type="number"],
	input[type="date"],
	input[type="time"],
	input[type="search"],
	input[type="password"],
	select,
	textarea
) {
	width: 100%;
	min-height: 3.25rem;
	margin: 0;
	padding: var(--bpt-space-sm) var(--bpt-space-md);
	appearance: auto;
	-webkit-appearance: auto;
	background: var(--cf7-control-bg);
	color: var(--cf7-control-fg);
	border: var(--bpt-border-thin) solid var(--cf7-control-border);
	border-radius: var(--bpt-radius-sm);
	font-size: max(1rem, var(--bpt-text-base));
	line-height: var(--bpt-leading-normal);
	transition:
		background-color var(--bpt-duration-fast) var(--bpt-ease-standard),
		border-color var(--bpt-duration-fast) var(--bpt-ease-standard),
		box-shadow var(--bpt-duration-fast) var(--bpt-ease-standard);
}

.bpt-form-section__form .wpcf7-form textarea {
	min-height: 10rem;
	resize: vertical;
}

.bpt-form-section__form .wpcf7-form :is(input, select, textarea):hover:not(:disabled) {
	border-color: color-mix(in srgb, var(--cf7-control-fg) 48%, transparent);
}

.bpt-form-section__form .wpcf7-form :is(input, select, textarea):focus-visible {
	border-color: var(--section-accent);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--section-accent) 22%, transparent);
}

.bpt-form-section__form .wpcf7-form ::placeholder {
	color: color-mix(in srgb, var(--cf7-control-fg) 58%, transparent);
	opacity: 1;
}

.bpt-form-section__form .wpcf7-form input[type="file"] {
	width: 100%;
	min-height: 3.25rem;
	padding: var(--bpt-space-xs);
	background: var(--cf7-control-bg);
	color: var(--cf7-control-fg);
	border: var(--bpt-border-thin) solid var(--cf7-control-border);
	border-radius: var(--bpt-radius-sm);
}

.bpt-form-section__form .wpcf7-form input[type="file"]::file-selector-button {
	min-height: 2.5rem;
	margin-right: var(--bpt-space-sm);
	padding-inline: var(--bpt-space-md);
	background: var(--section-button-secondary-bg);
	color: var(--section-button-secondary-fg);
	border: var(--bpt-border-medium) solid var(--section-button-secondary-border);
	border-radius: var(--section-button-secondary-radius, var(--bpt-btn-radius, var(--bpt-radius-sm)));
	font-weight: var(--bpt-weight-semibold);
	cursor: pointer;
}

.bpt-form-section__form .wpcf7-form :is(.wpcf7-checkbox, .wpcf7-radio, .wpcf7-acceptance) {
	display: grid;
	gap: var(--bpt-space-xs);
	margin: 0;
}

.bpt-form-section__form .wpcf7-list-item {
	display: block;
	margin: 0;
}

.bpt-form-section__form .wpcf7-list-item > label {
	display: inline-flex;
	align-items: flex-start;
	gap: var(--bpt-space-xs);
	min-height: 2.75rem;
	cursor: pointer;
}

.bpt-form-section__form .wpcf7-form :is(input[type="checkbox"], input[type="radio"]) {
	flex: 0 0 auto;
	width: 1.25rem;
	height: 1.25rem;
	margin: 0.15em 0 0;
	accent-color: var(--section-accent);
}

.bpt-form-section__form .wpcf7-form input[type="range"] {
	width: 100%;
	accent-color: var(--section-accent);
}

.bpt-form-section__form .wpcf7-form :is(.wpcf7-submit, .uacf7-next, .uacf7-prev, .wpcf7-calculate_button) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 2.75rem;
	margin: var(--bpt-space-sm) 0 0;
	padding: var(--button-padding-y, var(--bpt-space-sm)) var(--button-padding-x, var(--bpt-space-lg));
	background: var(--section-button-primary-bg) !important;
	color: var(--section-button-primary-fg) !important;
	border: var(--bpt-border-medium) solid var(--section-button-primary-border) !important;
	border-radius: var(--section-button-primary-radius, var(--bpt-btn-radius, var(--bpt-radius-sm)));
	font-family: var(--bpt-font-body);
	font-size: var(--button-font-size, var(--bpt-text-sm));
	font-weight: var(--section-button-primary-weight, var(--bpt-weight-semibold));
	line-height: 1;
	cursor: pointer;
	transition:
		background-color var(--bpt-duration-fast) var(--bpt-ease-standard),
		border-color var(--bpt-duration-fast) var(--bpt-ease-standard),
		color var(--bpt-duration-fast) var(--bpt-ease-standard),
		transform var(--bpt-duration-fast) var(--bpt-ease-standard),
		box-shadow var(--bpt-duration-fast) var(--bpt-ease-standard);
}

.bpt-form-section__form .wpcf7-form :is(.wpcf7-submit, .uacf7-next, .wpcf7-calculate_button):is(:hover, :focus-visible) {
	background: var(--section-button-primary-hover-bg) !important;
	color: var(--section-button-primary-hover-fg) !important;
	border-color: var(--section-button-primary-hover-border) !important;
}

.bpt-form-section__form .wpcf7-form .uacf7-prev {
	background: var(--section-button-secondary-bg) !important;
	color: var(--section-button-secondary-fg) !important;
	border-color: var(--section-button-secondary-border) !important;
}

.bpt-form-section__form .wpcf7-form .uacf7-prev:is(:hover, :focus-visible) {
	background: var(--section-button-secondary-hover-bg) !important;
	color: var(--section-button-secondary-hover-fg) !important;
	border-color: var(--section-button-secondary-hover-border) !important;
}

.bpt-form-section__form .wpcf7-form :is(button, input, select, textarea):disabled {
	opacity: 0.58;
	cursor: not-allowed;
}

.bpt-form-section__form .wpcf7-spinner {
	margin-inline: var(--bpt-space-xs);
	vertical-align: middle;
}

.bpt-form-section__form .wpcf7-form :is(.wpcf7-not-valid, [aria-invalid="true"]) {
	border-color: var(--cf7-error);
	box-shadow: 0 0 0 1px var(--cf7-error);
}

.bpt-form-section__form .wpcf7-not-valid-tip {
	margin-top: var(--bpt-space-2xs);
	color: var(--cf7-error);
	font-size: var(--bpt-text-sm);
	font-weight: var(--bpt-weight-semibold);
}

.bpt-section[data-palette="dark"] .bpt-form-section__form .wpcf7-not-valid-tip,
.bpt-section[data-palette="image"] .bpt-form-section__form .wpcf7-not-valid-tip {
	color: #fda29b;
}

.bpt-form-section__form .wpcf7-form .wpcf7-response-output {
	margin: var(--bpt-space-md) 0 0;
	padding: var(--bpt-space-sm) var(--bpt-space-md);
	color: var(--section-card-fg);
	border: var(--bpt-border-thin) solid var(--section-border);
	border-radius: var(--bpt-radius-sm);
}

.bpt-form-section__form .wpcf7-form:is(.invalid, .unaccepted, .payment-required, .failed, .aborted, .spam) .wpcf7-response-output {
	background: var(--cf7-error-bg);
	color: var(--cf7-error);
	border-color: var(--cf7-error);
}

.bpt-form-section__form .wpcf7-form.sent .wpcf7-response-output {
	background: var(--cf7-success-bg);
	color: var(--cf7-success);
	border-color: var(--cf7-success);
}

@media (max-width: 640px) {
	.bpt-form-section__form {
		padding: var(--bpt-space-md);
	}

	.bpt-form-section__form .wpcf7-form :is(.wpcf7-submit, .uacf7-next, .uacf7-prev, .wpcf7-calculate_button) {
		width: 100%;
	}
}
