/**
 * Lang Horizon — Contact
 * Form, contact channels, and the scrolling partner strip.
 */

.gs-contact__head-inner {
	max-width: calc(720px + (var(--gs-gutter) * 2));
	text-align: center;
}

.gs-contact__head .gs-catalog__intro {
	margin-inline: auto;
}

.gs-contact__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr);
	gap: 40px;
	align-items: start;
}

/* -------------------------------------------------- Notice */

.gs-notice {
	display: flex;
	align-items: flex-start;
	gap: 11px;
	margin: 0 0 24px;
	padding: 15px 18px;
	border-radius: var(--gs-radius);
	font-size: 15px;
	line-height: 1.55;
}

.gs-notice .gs-icon {
	margin-top: 2px;
}

.gs-notice--success {
	background: var(--gs-green-50);
	border: 1px solid #b9e6cd;
	color: #0c6b3d;
}

.gs-notice--error {
	background: #fdeced;
	border: 1px solid #f5c4c9;
	color: #a4232f;
}

/* -------------------------------------------------- Form */

.gs-form {
	padding: 32px 32px 34px;
	background: #fff;
	border: 1px solid var(--gs-line);
	border-radius: var(--gs-radius-lg);
	box-shadow: var(--gs-shadow-sm);
}

.gs-form__title {
	margin: 0 0 8px;
	font-size: clamp(1.25rem, 1.1rem + 0.6vw, 1.5rem);
	font-weight: 800;
	line-height: 1.28;
	letter-spacing: -0.015em;
	color: var(--gs-navy);
}

.gs-form__lead {
	margin: 0 0 26px;
	font-size: 15px;
	line-height: 1.6;
	color: var(--gs-ink-soft);
}

.gs-form__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 18px;
}

.gs-form .gs-field {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 7px;
}

.gs-field--wide {
	grid-column: 1 / -1;
}

.gs-form label {
	font-size: 13.5px;
	font-weight: 600;
	color: #45536b;
}

.gs-required {
	color: var(--gs-blue);
}

.gs-form input[type="text"],
.gs-form input[type="email"],
.gs-form input[type="tel"],
.gs-form textarea {
	width: 100%;
	padding: 11px 13px;
	background: #fff;
	border: 1px solid var(--gs-line);
	border-radius: var(--gs-radius-xs);
	font-family: inherit;
	font-size: 14.5px;
	line-height: 1.5;
	color: #33405a;
}

.gs-form textarea {
	resize: vertical;
	min-height: 130px;
}

.gs-form input:focus,
.gs-form textarea:focus,
.gs-form select:focus {
	border-color: var(--gs-blue);
	outline: none;
	box-shadow: 0 0 0 3px rgba(26, 107, 216, 0.14);
}

.gs-form input::placeholder,
.gs-form textarea::placeholder {
	color: #9aa8bd;
}

.gs-form .gs-select select {
	padding: 11px 32px 11px 13px;
	font-size: 14.5px;
}

/* The honeypot must be reachable by bots but invisible to people. */
.gs-honeypot {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.gs-field--consent {
	margin-top: 20px !important;
}

.gs-field--consent label {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 13.5px;
	font-weight: 400;
	line-height: 1.55;
	color: #56637b;
	cursor: pointer;
}

.gs-field--consent input {
	margin-top: 2px;
	width: 17px;
	height: 17px;
	flex: none;
	accent-color: var(--gs-blue);
}

.gs-form__submit {
	margin: 24px 0 0;
}

/* -------------------------------------------------- Aside */

.gs-contact__aside {
	display: flex;
	flex-direction: column;
	gap: 20px;
	position: sticky;
	top: 24px;
}

.gs-contact__card {
	padding: 26px 26px 28px;
	background: #fff;
	border: 1px solid var(--gs-line);
	border-radius: var(--gs-radius-lg);
	box-shadow: var(--gs-shadow-sm);
}

.gs-contact__card--soft {
	background: var(--gs-blue-50);
	border-color: var(--gs-blue-100);
	box-shadow: none;
}

.gs-contact__card--soft p {
	margin: 0 0 14px;
	font-size: 14.5px;
	line-height: 1.6;
	color: #4f5d76;
}

.gs-contact__card--soft p:last-child {
	margin-bottom: 0;
}

.gs-contact__card-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.gs-contact__card-actions .gs-btn {
	flex: 1 1 auto;
	padding: 10px 16px;
	font-size: 13.5px;
	background: #fff;
}

.gs-contact__card-title {
	margin: 0 0 18px;
	font-size: 16px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--gs-navy);
}

.gs-channels {
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin: 0;
	padding: 0;
}

.gs-channel {
	display: flex;
	align-items: flex-start;
	gap: 13px;
}

.gs-channel__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 38px;
	height: 38px;
	flex: none;
	border-radius: 50%;
	background: var(--gs-blue-50);
	color: var(--gs-blue);
}

.gs-channel__label {
	display: block;
	font-size: 12.5px;
	color: var(--gs-ink-soft);
}

.gs-channel__value {
	display: block;
	margin-top: 2px;
	font-size: 15px;
	font-weight: 600;
	line-height: 1.45;
	color: var(--gs-navy);
	text-decoration: none;
}

a.gs-channel__value:hover {
	color: var(--gs-blue);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* -------------------------------------------------- Partners marquee */

.gs-partners {
	background: var(--gs-surface-soft);
	border-top: 1px solid var(--gs-line-soft);
	overflow: hidden;
}

.gs-marquee {
	position: relative;
	margin-top: 6px;
	/* Fade the strip out at both ends so it reads as continuous. */
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.gs-marquee__viewport {
	overflow: hidden;
}

.gs-marquee__track {
	list-style: none;
	display: flex;
	align-items: center;
	gap: 56px;
	margin: 0;
	padding: 12px 0;
	width: max-content;
	animation: gs-marquee 42s linear infinite;
}

.gs-marquee:hover .gs-marquee__track,
.gs-marquee:focus-within .gs-marquee__track {
	animation-play-state: paused;
}

@keyframes gs-marquee {
	from {
		transform: translateX(0);
	}
	to {
		/* Half the track: the second pass is an exact clone. */
		transform: translateX(-50%);
	}
}

.gs-partner {
	display: flex;
	align-items: center;
	gap: 12px;
	flex: none;
	color: var(--gs-navy);
	opacity: 0.55;
	filter: grayscale(1);
	transition: opacity 0.22s ease, filter 0.22s ease;
}

.gs-partner:hover {
	opacity: 1;
	filter: grayscale(0);
}

.gs-partner__logo {
	display: block;
	width: auto;
	max-width: 170px;
	max-height: 52px;
	object-fit: contain;
}

.gs-partner__mark {
	flex: none;
	color: var(--gs-navy-600);
}

.gs-partner__wordmark {
	display: flex;
	flex-direction: column;
	line-height: 1.15;
}

.gs-partner__initials {
	font-size: 11px;
	font-weight: 800;
	letter-spacing: 0.16em;
	color: var(--gs-blue);
}

.gs-partner__name {
	font-size: 15.5px;
	font-weight: 700;
	letter-spacing: -0.01em;
	white-space: nowrap;
	color: var(--gs-navy);
}

/* -------------------------------------------------- Responsive */

@media (max-width: 1024px) {
	.gs-contact__grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 26px;
	}

	.gs-contact__aside {
		position: static;
	}
}

@media (max-width: 720px) {
	.gs-form {
		padding: 24px 20px 26px;
	}

	.gs-form__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.gs-field--wide {
		grid-column: auto;
	}

	.gs-form__submit .gs-btn {
		width: 100%;
	}

	.gs-marquee__track {
		gap: 38px;
		animation-duration: 30s;
	}
}

@media (prefers-reduced-motion: reduce) {
	/* No auto-scroll: let people swipe or use the keyboard instead. */
	.gs-marquee__viewport {
		overflow-x: auto;
	}

	.gs-marquee__track {
		animation: none;
	}

	.gs-partner {
		transition: none;
	}
}
