/*
 * Section: Contact.
 *
 * Dark section: 12-column form/sidebar split on lg, stacked below.
 * Every rule is scoped under .tra-contact.
 */

.tra-contact__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 5rem;
	align-items: start;
}

@media (min-width: 1024px) {
	.tra-contact__grid {
		grid-template-columns: repeat(12, minmax(0, 1fr));
	}

	.tra-contact__main {
		grid-column: span 7 / span 7;
	}

	.tra-contact__aside {
		grid-column: span 5 / span 5;
	}
}

/* --------------------------------------------------------------- heading */

.tra-contact__heading {
	font-size: var(--tra-fs-4xl);
	margin-bottom: 3rem;
}

@media (min-width: 768px) {
	.tra-contact__heading {
		font-size: var(--tra-fs-6xl);
	}
}

/* ------------------------------------------------------------------ form */

.tra-contact__notice {
	margin-bottom: 1.5rem;
}

.tra-contact .tra-notice {
	padding: 1rem 1.5rem;
	border-radius: var(--tra-r-md);
	background-color: rgb(255 255 255 / 0.05);
	border: 1px solid var(--tra-hairline);
	font-size: var(--tra-fs-sm);
	font-weight: 700;
	color: #fff;
}

.tra-contact .tra-notice--ok {
	border-color: var(--tra-gold);
}

.tra-contact .tra-notice--error {
	border-color: var(--tra-accent);
}

/* Honeypot: present for bots, off-screen for humans. */
.tra-contact .tra-hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.tra-contact__form {
	position: relative;
	display: grid;
	gap: 1.5rem;
}

.tra-contact__row {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
}

@media (min-width: 768px) {
	.tra-contact__row {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	/* Optional third field must not leave a dead half-column. */
	.tra-contact__row > .tra-contact__field:nth-child(3):last-child {
		grid-column: 1 / -1;
	}
}

/*
 * Hello Elementor's reset targets `input[type=text]` (0,1,1), which outranks a
 * bare class. Qualifying the class with the element keeps our field styling
 * without resorting to !important.
 */
.tra-contact input.tra-contact__field,
.tra-contact select.tra-contact__field,
.tra-contact textarea.tra-contact__field {
	width: 100%;
	padding: 1.25rem 2rem;
	background-color: rgb(255 255 255 / 0.05);
	border: 1px solid rgb(255 255 255 / 0.1);
	border-radius: var(--tra-r-md);
	outline: none;
	color: #fff;
	font-family: inherit;
	font-size: var(--tra-fs-base);
	line-height: 1.5;
	transition: border-color var(--tra-transition);
}

.tra-contact .tra-contact__field::placeholder {
	color: rgb(255 255 255 / 0.45);
	opacity: 1;
}

.tra-contact input.tra-contact__field:focus,
.tra-contact select.tra-contact__field:focus,
.tra-contact textarea.tra-contact__field:focus,
.tra-contact input.tra-contact__field:focus-visible,
.tra-contact select.tra-contact__field:focus-visible,
.tra-contact textarea.tra-contact__field:focus-visible {
	border-color: var(--tra-accent);
	outline: none;
}

.tra-contact__field--select {
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	cursor: pointer;
}

/* Native dropdown lists render on the OS surface, not the dark section. */
.tra-contact__field--select option {
	background-color: var(--tra-surface);
	color: var(--tra-primary);
}

.tra-contact__field--textarea {
	display: block;
	resize: vertical;
}

.tra-contact__submit {
	width: 100%;
	padding: 1.5rem;
	background-color: var(--tra-accent);
	border: 0;
	border-radius: var(--tra-r-md);
	box-shadow: var(--tra-shadow-2xl);
	color: #fff;
	font-family: inherit;
	font-size: var(--tra-fs-base);
	font-weight: 900;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color var(--tra-transition);
}

.tra-contact__submit:hover,
.tra-contact__submit:focus-visible {
	background-color: var(--tra-gold);
}

/* --------------------------------------------------------------- sidebar */

.tra-contact__aside {
	display: grid;
	gap: 3rem;
	align-content: start;
}

.tra-contact__info {
	border-left: 4px solid var(--tra-gold);
}

.tra-contact__info-title {
	margin-bottom: 2.5rem;
	letter-spacing: 0.4em;
}

.tra-contact__rows {
	display: grid;
	gap: 2rem;
}

.tra-contact__item {
	display: flex;
	gap: 1.5rem;
}

.tra-contact__icon {
	flex-shrink: 0;
	margin-top: 0.25rem;
	color: var(--tra-gold);
	font-size: var(--tra-fs-xl);
	line-height: 1;
}

.tra-contact__label {
	margin-bottom: 0.25rem;
	font-size: var(--tra-fs-xs);
	font-weight: 700;
	text-transform: uppercase;
	color: rgb(255 255 255 / 0.4);
}

.tra-contact__value {
	font-size: var(--tra-fs-lg);
	font-weight: 700;
	line-height: 1.625;
	color: #fff;
}

/* ------------------------------------------------------------------- map */

.tra-contact__map {
	height: 400px;
	overflow: hidden;
	border: 1px solid rgb(255 255 255 / 0.1);
	border-radius: var(--tra-r-3xl);
	box-shadow: var(--tra-shadow-2xl);
}

.tra-contact__map iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

/* Source leading: text-4xl 36/40, md:text-6xl 60/60. */
.tra-contact__heading {
	line-height: 1.1111;
}

@media (min-width: 768px) {
	.tra-contact__heading {
		line-height: 1;
	}
}
