/**
 * TDS Forms and Dialogs.
 *
 * Generic interface typography and rhythm for public forms. Bootstrap remains
 * responsible for the underlying control and modal behavior.
 */

.uh-form,
.uh-modal {
	font-family: var(--tds-font-system);
}

.uh-modal .modal-header,
.uh-modal .modal-body,
.uh-modal .modal-footer {
	font-family: var(--tds-font-system);
}

.uh-modal .modal-header {
	padding: var(--tds-space-03) var(--tds-space-04);
}

.uh-modal .modal-body {
	padding: var(--tds-space-03) var(--tds-space-04);
}

.uh-modal .modal-footer {
	justify-content: flex-end;
	gap: var(--tds-space-02);
	padding: var(--tds-space-03) var(--tds-space-04);
}

.uh-modal-title {
	font-family: var(--tds-font-system);
	font-size: var(--tds-type-h3);
	font-weight: var(--tds-weight-semibold);
	line-height: var(--tds-type-line-h3);
	color: var(--tds-text-main);
}

.uh-modal-intro {
	margin: 0 0 var(--tds-space-03);
	font-family: var(--tds-font-system);
	font-size: var(--tds-type-size-body);
	line-height: var(--tds-type-line-interface);
	color: var(--tds-text-muted);
}

.uh-form-grid {
	--bs-gutter-x: var(--tds-space-03);
	--bs-gutter-y: var(--tds-space-02);
}

.uh-form .form-label,
.uh-form .form-check-label {
	font-family: var(--tds-font-system);
	font-size: var(--tds-type-size-meta);
	font-weight: var(--tds-weight-medium);
	line-height: var(--tds-type-line-interface);
	color: var(--tds-text-main);
}

.uh-form .form-label {
	display: inline-block;
	margin-bottom: var(--tds-space-01);
}

.uh-form .form-control,
.uh-form .form-select {
	min-height: var(--tds-tap-target-min);
	padding: var(--tds-space-02) var(--tds-space-03);
	font-family: var(--tds-font-system);
	font-size: var(--tds-type-size-body);
	line-height: var(--tds-type-line-interface);
	color: var(--tds-text-main);
}

.uh-form textarea.form-control {
	min-height: 6rem;
	resize: vertical;
}

.uh-form-optional {
	font-size: var(--tds-type-size-meta);
	font-weight: var(--tds-weight-regular);
	color: var(--tds-text-muted);
}

.uh-form .form-check {
	font-family: var(--tds-font-system);
}

.uh-form-consent {
	display: flex;
	align-items: flex-start;
	gap: var(--tds-space-02);
	min-height: var(--tds-tap-target-min);
	margin-top: var(--tds-space-03);
	padding-left: 0;
}

.uh-form-consent .form-check-input {
	position: static;
	flex: 0 0 auto;
	margin: var(--tds-space-01) 0 0;
}

.uh-form-consent__copy {
	min-width: 0;
	flex: 1 1 auto;
	padding-left: 0;
}

.uh-form-consent__label {
	display: block;
	min-height: var(--tds-tap-target-min);
}

.uh-form-help {
	margin: var(--tds-space-01) 0 0;
	font-family: var(--tds-font-system);
	font-size: var(--tds-type-size-meta);
	line-height: var(--tds-type-line-interface);
	color: var(--tds-text-muted);
}

.uh-form .invalid-feedback,
.uh-form .valid-feedback {
	font-family: var(--tds-font-system);
	font-size: var(--tds-type-size-meta);
	line-height: var(--tds-type-line-interface);
}

@media (max-width: 575.98px) {
	.uh-modal .modal-header,
	.uh-modal .modal-body,
	.uh-modal .modal-footer {
		padding-right: var(--tds-space-03);
		padding-left: var(--tds-space-03);
	}

	.uh-modal .modal-footer {
		justify-content: stretch;
	}

	.uh-modal .modal-footer .btn {
		flex: 1 1 auto;
	}
}
