/* ════════════════════════════════════════════════════════════════
   CONTACT FORM — Shared component
   Template uses: .contact-form > .contact-form__header + form.contact-form__fields
   Inside form: .form-group > .form-group__label + .form-group__field
   ════════════════════════════════════════════════════════════════ */

@layer components {

/* Wrapper — card-like container */
.contact-form {
	max-inline-size: 35rem;
	margin-inline: auto;
	padding: var(--space-xl);
	background: var(--surface-raised);
	border: 1px solid var(--border-subtle);
	border-radius: var(--radius-l);
	box-shadow: var(--shadow-m);
}

/* Header */
.contact-form__header {
	margin-block-end: var(--space-l);
}

.contact-form__title {
	font-family: var(--font-heading);
	font-size: var(--heading-s);
	font-weight: var(--weight-bold);
	color: var(--text-main);
	margin: 0;
}

.contact-form__subtitle {
	font-size: var(--text-s);
	color: var(--text-muted);
	margin-block-start: var(--space-2xs);
}

/* Form fields container */
.contact-form__fields {
	display: flex;
	flex-direction: column;
	gap: var(--space-m);
}

/* Two-column row (first name + last name) */
.contact-form__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--space-m);
}

@media (max-width: 30em) {
	.contact-form__row {
		grid-template-columns: 1fr;
	}
}

/* Form group — label + input pair */
.form-group {
	display: flex;
	flex-direction: column;
	gap: var(--space-2xs);
}

.form-group__label {
	font-size: var(--text-s);
	font-weight: var(--weight-semibold);
	color: var(--text-main);
}

.form-group__field {
	font-family: var(--font-body);
	font-size: var(--text-m);
	line-height: var(--leading-normal);
	padding: var(--space-xs) var(--space-s);
	background: var(--white);
	border: 1px solid var(--border-default);
	border-radius: var(--radius-s);
	color: var(--text-main);
	transition: border-color var(--duration-fast) var(--ease-default);
	width: 100%;
}

.form-group__field:hover {
	border-color: var(--border-strong);
}

.form-group__field:focus {
	outline: none;
	border-color: var(--border-focus);
	box-shadow: 0 0 0 3px color-mix(in oklch, var(--border-focus) 15%, transparent);
}

.form-group__field::placeholder {
	color: var(--text-subtle);
}

/* Textarea */
textarea.form-group__field {
	resize: vertical;
	min-height: 6rem;
}

/* Select */
select.form-group__field {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right var(--space-s) center;
	padding-inline-end: var(--space-xl);
}

/* Submit button */
.contact-form__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	padding: var(--space-s) var(--space-l);
	background: var(--surface-primary);
	color: var(--text-on-primary);
	border: none;
	border-radius: var(--radius-m);
	font-family: var(--font-body);
	font-size: var(--text-m);
	font-weight: var(--weight-semibold);
	cursor: pointer;
	transition: background-color var(--duration-fast) var(--ease-default);
	width: 100%;
}

.contact-form__submit:hover {
	background: var(--primary-hover);
}

.contact-form__submit-icon {
	width: 1rem;
	height: 1rem;
}

/* Status message */
.contact-form__status {
	padding: var(--space-s);
	border-radius: var(--radius-s);
	font-size: var(--text-s);
	text-align: center;
}

/* Validation */
.form-group__field:invalid:not(:placeholder-shown) {
	border-color: var(--feedback-error, #dc2626);
}

.form-group__field:valid:not(:placeholder-shown) {
	border-color: var(--feedback-success, #16a34a);
}

} /* end @layer components */
