/* ============================================
   Forms — contact form
   ============================================ */

.form {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
}

.form__row {
	display: grid;
	gap: var(--space-4);
}

@media (min-width: 576px) {
	.form__row--2col {
		grid-template-columns: 1fr 1fr;
	}
}


/* ── Field group ─────────────────────────── */

.field {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
}

.field__label {
	font-family: var(--font-mono);
	font-size: var(--text-xs);
	font-weight: var(--weight-medium);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--color-text-secondary);
}

.field__input,
.field__textarea {
	width: 100%;
	padding: var(--space-3) var(--space-4);
	background-color: var(--color-bg-elevated);
	color: var(--color-text-primary);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
	font-family: var(--font-body);
	font-size: var(--text-base);
	line-height: var(--leading-normal);
	transition:
		border-color var(--transition-fast),
		box-shadow var(--transition-fast);
}

.field__input::placeholder,
.field__textarea::placeholder {
	color: rgba(138, 171, 204, 0.4);
}

.field__input:focus,
.field__textarea:focus {
	outline: none;
	border-color: var(--color-cherenkov);
	box-shadow: 0 0 0 3px rgba(0, 223, 255, 0.15), var(--glow-sm);
}

.field__textarea {
	resize: vertical;
	min-height: 140px;
}


/* ── Error state ─────────────────────────── */

.field__input[aria-invalid="true"],
.field__textarea[aria-invalid="true"] {
	border-color: var(--color-error);
}

.field__input[aria-invalid="true"]:focus,
.field__textarea[aria-invalid="true"]:focus {
	box-shadow: 0 0 0 3px rgba(255, 78, 106, 0.15);
}

.field__error {
	font-family: var(--font-mono);
	font-size: var(--text-xs);
	color: var(--color-error);
	min-height: 1.2em;
}


/* ── Form success / error banners ────────── */

.form-banner {
	padding: var(--space-4);
	border-radius: var(--radius-md);
	font-size: var(--text-sm);
}

.form-banner--error {
	background-color: rgba(255, 78, 106, 0.1);
	border: 1px solid rgba(255, 78, 106, 0.3);
	color: #FF4E6A;
}


/* ── Success state ───────────────────────── */

.form-success {
	display: none;
	padding: var(--space-8);
	text-align: center;
	background-color: rgba(0, 229, 160, 0.06);
	border: 1px solid rgba(0, 229, 160, 0.2);
	border-radius: var(--radius-lg);
}

.form-success__icon {
	font-size: var(--text-4xl);
	margin-bottom: var(--space-4);
}

.form-success__title {
	margin-bottom: var(--space-3);
	font-size: var(--text-2xl);
	color: var(--color-success);
}

.form-success__message {
	font-size: var(--text-base);
}

/* Show success, hide form when submitted */
[data-contact-form].is-submitted {
	display: none;
}

[data-contact-form].is-submitted + .form-success {
	display: block;
}


/* ── Submit button row ───────────────────── */

.form__submit {
	margin-top: var(--space-2);
}


/* ── Contact info ────────────────────────── */

.contact-link {
	display: inline-flex;
	align-items: center;
	gap: var(--space-3);
	color: var(--color-text-secondary);
	font-size: var(--text-base);
	transition: color var(--transition-fast);
}

.contact-link:hover,
.contact-link:focus {
	color: var(--color-cherenkov);
}

.contact-link__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	background-color: rgba(0, 223, 255, 0.07);
	border: 1px solid var(--color-border);
	border-radius: var(--radius-md);
	color: var(--color-cherenkov);
}

.contact-link__icon svg {
	width: 16px;
	height: 16px;
}
