/*
 * Standalone Contact page — `/contact/`, page-scoped stylesheet.
 *
 * Built against `Swiftheat Contact.dc.html` — every value below is taken
 * from that file's own literal inline styles (the design tool's authored
 * source, cross-checked live in Chrome), reusing an existing token
 * wherever the value genuinely matches one, and left as a documented
 * literal where it does not — the same discipline used throughout this
 * project.
 *
 * This file only loads on `is_page('contact')` (see inc/enqueue.php) — it
 * never loads alongside home.css, about.css or any other page's own
 * stylesheet. Selectors are 2-class compounds with explicit colors from
 * the start, the established Elementor Kit collision defense used in
 * every section this project has built.
 *
 * Not to be confused with Home's own protected `.contact` classes
 * (template-parts/home/contact.php / home.css) — this is a visually
 * related but separate, independent implementation for a separate page.
 */

/* ---- Hero ---- */

.contact-page-hero {
	background: var(--color-indigo-hero);
	color: var(--text-on-dark);
	position: relative;
	overflow: hidden;
}

.contact-page-hero__inner {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 80px;
	align-items: center;
	padding: 96px var(--gutter-desktop);
	box-sizing: border-box;
}

.contact-page-hero__eyebrow {
	font-family: var(--font-mono);
	font-size: var(--fs-eyebrow);
	font-weight: var(--fw-semibold);
	letter-spacing: var(--ls-eyebrow);
	color: var(--color-red);
	margin-bottom: 26px;
}

.contact-page-hero .contact-page-hero__heading {
	font-family: var(--font-primary);
	font-size: var(--fs-h1-page);
	font-weight: var(--fw-extrabold);
	/* 1.0 is this element's own exact measured line-height — distinct
	   from --lh-tight (1.02), same convention as About Hero's title. */
	line-height: 1;
	letter-spacing: var(--ls-tight);
	color: var(--text-on-dark);
	margin: 0 0 26px;
}

.contact-page-hero__heading-dot {
	color: var(--color-red);
}

.contact-page-hero__text {
	font-family: var(--font-primary);
	font-size: 18.5px;
	line-height: var(--lh-body);
	color: var(--text-on-dark-body-alt);
	max-width: 540px;
	margin: 0;
}

.contact-page-hero__photo {
	position: relative;
	overflow: hidden;
	height: 400px;
	border: 1px solid rgba(150, 156, 230, 0.3);
	box-shadow: 0 50px 100px rgba(3, 4, 30, 0.6);
	background: var(--color-indigo-hero);
}

.contact-page-hero__photo-badge {
	position: absolute;
	top: 16px;
	right: 16px;
	font-family: var(--font-mono);
	font-size: var(--fs-micro);
	letter-spacing: 0.14em;
	background: var(--color-indigo-hero);
	color: var(--text-on-dark);
	padding: 8px 12px;
}

/* ---- Enquiry ---- */

.contact-page-enquiry {
	background: var(--color-bg-neutral);
	border-bottom: 1px solid var(--border-light);
}

.contact-page-enquiry__inner {
	display: grid;
	grid-template-columns: 1.2fr 0.8fr;
	gap: 64px;
	align-items: start;
	padding: var(--space-section-standard) var(--gutter-desktop);
	box-sizing: border-box;
}

.contact-page-panel {
	background: var(--color-bg-white);
	border: 1px solid var(--border-light);
	border-radius: var(--radius-card);
	padding: 48px;
	box-shadow: var(--shadow-card-rest);
	box-sizing: border-box;
}

.contact-page-panel__header {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 16px;
	margin-bottom: 12px;
}

.contact-page-panel__title {
	font-family: var(--font-primary);
	font-size: 26px;
	font-weight: var(--fw-extrabold);
	color: var(--color-navy);
}

.contact-page-panel__response {
	font-family: var(--font-mono);
	font-size: var(--fs-micro);
	letter-spacing: 0.14em;
	color: var(--text-faint-label);
	flex: none;
}

.contact-page-panel__intro {
	font-family: var(--font-primary);
	font-size: var(--fs-body-small);
	line-height: 1.65;
	color: var(--text-secondary);
	margin: 0 0 32px;
}

/* ---- Form ---- */

.contact-page-form__banner {
	font-family: var(--font-primary);
	font-size: var(--fs-body-small);
	line-height: var(--lh-body);
	padding: 16px 18px;
	border-radius: 8px;
	margin-bottom: 24px;
}

.contact-page-form__banner--success {
	background: #EAF7EF;
	color: #146C34;
	border: 1px solid #BFE6CC;
}

.contact-page-form__banner--error {
	background: #FDECEC;
	color: #A11212;
	border: 1px solid #F4C2C2;
}

.contact-page-form__row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
	margin-bottom: 16px;
}

.contact-page-field {
	min-width: 0;
}

.contact-page-field--full {
	margin-bottom: 16px;
}

.contact-page-form input[type="text"],
.contact-page-form input[type="email"],
.contact-page-form input[type="tel"],
.contact-page-form select,
.contact-page-form textarea {
	width: 100%;
	font-family: var(--font-primary);
	font-size: var(--fs-body-small);
	padding: 16px 18px;
	border: 1.5px solid var(--border-warm);
	background: var(--color-bg-white);
	color: var(--text-base);
	outline: none;
	box-sizing: border-box;
	transition: border-color var(--transition-fast);
}

.contact-page-form select {
	padding: 16px 14px;
	color: var(--text-secondary);
}

.contact-page-form input:focus,
.contact-page-form select:focus,
.contact-page-form textarea:focus {
	border-color: var(--color-blue-link-dark);
}

.contact-page-form textarea {
	resize: vertical;
}

.contact-page-dropzone {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	border: 1.5px dashed var(--border-dashed);
	background: var(--color-bg-dropzone);
	padding: 18px;
	font-family: var(--font-mono);
	font-size: var(--fs-micro);
	letter-spacing: 0.08em;
	color: var(--text-secondary);
	cursor: pointer;
	transition: border-color var(--transition-fast);
}

.contact-page-dropzone:hover {
	border-color: var(--color-blue-link-dark);
}

.contact-page-form input[type="file"]:focus-visible + .contact-page-dropzone {
	border-color: var(--color-blue-link-dark);
	outline: 2px solid var(--color-blue-link-dark);
	outline-offset: 2px;
}

.contact-page-form .contact-page-form__submit {
	display: block;
	width: 100%;
	padding: 18px;
	background: var(--color-red);
	color: var(--text-on-dark);
	font-family: var(--font-primary);
	font-size: 16px;
	font-weight: var(--fw-extrabold);
	border: 0;
	cursor: pointer;
	transition: background var(--transition-fast);
}

.contact-page-form .contact-page-form__submit:hover,
.contact-page-form .contact-page-form__submit:focus-visible {
	background: var(--color-navy);
}

/* ---- Aside: Reach us directly + Response time ---- */

.contact-page-aside {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.contact-page-reach {
	background: var(--color-bg-white);
	border: 1px solid var(--border-light);
	border-radius: var(--radius-card);
	padding: 40px;
	box-shadow: var(--shadow-card-rest);
	box-sizing: border-box;
}

.contact-page-reach__title {
	font-family: var(--font-primary);
	font-size: var(--fs-card-title);
	font-weight: var(--fw-extrabold);
	color: var(--color-navy);
	margin-bottom: 28px;
}

.contact-page-reach__list {
	display: flex;
	flex-direction: column;
	gap: 24px;
}

.contact-page-reach__row {
	display: flex;
	gap: 16px;
	align-items: flex-start;
}

.contact-page-reach__row svg {
	flex: none;
	margin-top: 2px;
	color: var(--color-blue-link);
}

.contact-page-reach__label {
	font-family: var(--font-mono);
	font-size: var(--fs-micro);
	letter-spacing: 0.14em;
	color: var(--text-faint-label);
	margin-bottom: 4px;
}

.contact-page-reach a.contact-page-reach__value,
.contact-page-reach div.contact-page-reach__value {
	font-family: var(--font-primary);
	font-size: 15.5px;
	font-weight: var(--fw-bold);
	color: var(--color-navy);
	line-height: 1.5;
	text-decoration: none;
}

.contact-page-reach a.contact-page-reach__value:hover {
	color: var(--color-red);
}

.contact-page-response-card {
	background: var(--color-navy);
	color: var(--text-on-dark);
	border-radius: var(--radius-card);
	padding: 36px 40px;
	box-sizing: border-box;
}

.contact-page-response-card__top {
	display: flex;
	gap: 14px;
	align-items: center;
	margin-bottom: 12px;
}

.contact-page-response-card__dot {
	width: 9px;
	height: 9px;
	border-radius: 50%;
	background: #35D07F;
	display: inline-block;
	flex: none;
}

.contact-page-response-card__label {
	font-family: var(--font-mono);
	font-size: 11.5px;
	letter-spacing: 0.14em;
	color: var(--text-on-dark-muted);
}

.contact-page-response-card__heading {
	font-family: var(--font-primary);
	font-size: var(--fs-body-large);
	font-weight: var(--fw-bold);
	line-height: 1.5;
}

.contact-page-response-card__text {
	font-family: var(--font-primary);
	font-size: var(--fs-body-small);
	line-height: 1.65;
	color: var(--text-on-dark-body);
	margin-top: 10px;
}

/* ---- Map ---- */

.contact-page-map {
	background: var(--color-bg-white);
}

.contact-page-map__inner {
	padding: var(--space-section-standard) var(--gutter-desktop);
	box-sizing: border-box;
}

.contact-page-map__header {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 40px;
	margin-bottom: 48px;
}

.contact-page-map__eyebrow {
	font-family: var(--font-mono);
	font-size: var(--fs-eyebrow);
	letter-spacing: var(--ls-eyebrow);
	color: var(--color-red);
	font-weight: var(--fw-semibold);
	margin-bottom: 20px;
}

.contact-page-map .contact-page-map__heading {
	font-family: var(--font-primary);
	font-size: var(--fs-h2-sub);
	font-weight: var(--fw-extrabold);
	letter-spacing: var(--ls-heading);
	line-height: var(--lh-heading);
	color: var(--color-navy);
	margin: 0;
}

.contact-page-map .contact-page-map__link {
	flex: none;
	font-family: var(--font-mono);
	font-size: 13px;
	font-weight: var(--fw-semibold);
	letter-spacing: 0.1em;
	color: var(--color-blue-link-dark);
	border-bottom: 2px solid var(--color-red);
	padding-bottom: 6px;
	text-decoration: none;
}

.contact-page-map .contact-page-map__link:hover {
	color: var(--color-red);
}

.contact-page-map__frame {
	border: 1px solid var(--border-light);
	border-radius: var(--radius-card);
	overflow: hidden;
	box-shadow: var(--shadow-card-rest);
	height: 480px;
}

/* ---- FAQ ---- */

.contact-page-faq {
	background: var(--color-bg-neutral);
	border-top: 1px solid var(--border-light);
}

.contact-page-faq__inner {
	display: grid;
	grid-template-columns: 0.8fr 1.2fr;
	gap: 80px;
	align-items: start;
	padding: var(--space-section-standard) var(--gutter-desktop);
	box-sizing: border-box;
}

.contact-page-faq__intro {
	position: sticky;
	top: 120px;
}

.contact-page-faq__eyebrow {
	font-family: var(--font-mono);
	font-size: var(--fs-eyebrow);
	letter-spacing: var(--ls-eyebrow);
	color: var(--color-red);
	font-weight: var(--fw-semibold);
	margin-bottom: 20px;
}

.contact-page-faq .contact-page-faq__heading {
	font-family: var(--font-primary);
	font-size: var(--fs-h2-sub);
	font-weight: var(--fw-extrabold);
	letter-spacing: var(--ls-heading);
	line-height: var(--lh-heading-loose);
	color: var(--color-navy);
	margin: 0;
}

.contact-page-faq__item {
	border-bottom: 1px solid var(--border-light);
}

.contact-page-faq__question {
	list-style: none;
	cursor: pointer;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
	width: 100%;
	padding: 26px 4px;
	font-family: var(--font-primary);
	font-size: 19px;
	font-weight: var(--fw-extrabold);
	color: var(--color-navy);
}

.contact-page-faq__question::-webkit-details-marker {
	display: none;
}

.contact-page-faq__question:focus-visible {
	outline: 2px solid var(--color-blue-link-dark);
	outline-offset: 2px;
}

.contact-page-faq__icon {
	color: var(--color-red);
	font-size: 22px;
	font-weight: var(--fw-semibold);
	flex: none;
}

.contact-page-faq__icon::before {
	content: "+";
}

.contact-page-faq__item[open] .contact-page-faq__icon::before {
	content: "\2212";
}

.contact-page-faq__answer {
	padding: 0 4px 28px;
	font-family: var(--font-primary);
	font-size: 15.5px;
	line-height: var(--lh-body);
	color: var(--text-body-muted);
	max-width: 640px;
}

/* ---- Final CTA ---- */

.contact-page-cta {
	background: var(--color-navy);
	color: var(--text-on-dark);
	border-top: 1px solid var(--color-navy-raised);
	overflow: hidden;
	position: relative;
}

.contact-page-cta__inner {
	padding: 120px var(--gutter-desktop);
	box-sizing: border-box;
	text-align: center;
	position: relative;
}

.contact-page-cta .contact-page-cta__heading {
	font-family: var(--font-primary);
	font-size: var(--fs-h2-feature);
	font-weight: var(--fw-extrabold);
	letter-spacing: var(--ls-heading);
	line-height: var(--lh-heading);
	color: var(--text-on-dark);
	max-width: 860px;
	margin: 0 auto 24px;
}

.contact-page-cta__text {
	font-family: var(--font-primary);
	font-size: 18px;
	line-height: var(--lh-body);
	color: var(--text-on-dark-body);
	max-width: 640px;
	margin: 0 auto 44px;
}

.contact-page-cta__actions {
	display: flex;
	gap: 16px;
	justify-content: center;
}

.contact-page-cta .contact-page-cta__button {
	display: inline-block;
	padding: 17px 36px;
	font-family: var(--font-primary);
	font-size: 15.5px;
	font-weight: var(--fw-extrabold);
	text-decoration: none;
	transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
}

.contact-page-cta .contact-page-cta__button--primary {
	background: var(--color-red);
	color: var(--text-on-dark);
	border: 1px solid var(--color-red);
}

.contact-page-cta .contact-page-cta__button--primary:hover,
.contact-page-cta .contact-page-cta__button--primary:focus-visible {
	background: var(--text-on-dark);
	color: var(--color-navy);
	border-color: var(--text-on-dark);
}

.contact-page-cta .contact-page-cta__button--secondary {
	border: 1px solid rgba(255, 255, 255, 0.3);
	color: var(--text-on-dark);
	background: transparent;
}

.contact-page-cta .contact-page-cta__button--secondary:hover,
.contact-page-cta .contact-page-cta__button--secondary:focus-visible {
	border-color: var(--text-on-dark);
	background: rgba(255, 255, 255, 0.06);
}

/* ---- Responsive ----
 * The approved design has zero @media queries anywhere in the design
 * folder (confirmed by grep, same check repeated every section this
 * project has built). Breakpoints/collapse patterns below reuse the
 * same 1024px/768px convention already established by every other page.
 */

@media (max-width: 1024px) {
	.contact-page-hero__inner {
		grid-template-columns: 1fr;
		gap: 48px;
	}

	.contact-page-hero__photo {
		height: 320px;
	}

	.contact-page-enquiry__inner {
		grid-template-columns: 1fr;
	}

	.contact-page-faq__inner {
		grid-template-columns: 1fr;
		gap: 40px;
	}

	.contact-page-faq__intro {
		position: static;
	}
}

@media (max-width: 768px) {
	.contact-page-hero__inner,
	.contact-page-enquiry__inner,
	.contact-page-map__inner,
	.contact-page-faq__inner,
	.contact-page-cta__inner {
		padding-left: var(--gutter-mobile);
		padding-right: var(--gutter-mobile);
	}

	.contact-page-hero .contact-page-hero__heading {
		font-size: 44px;
	}

	.contact-page-panel {
		padding: 28px;
	}

	.contact-page-form__row {
		grid-template-columns: 1fr;
	}

	.contact-page-reach,
	.contact-page-response-card {
		padding: 28px;
	}

	.contact-page-map__header {
		flex-direction: column;
		align-items: flex-start;
		gap: 20px;
	}

	.contact-page-map .contact-page-map__heading {
		font-size: 32px;
	}

	.contact-page-map__frame {
		height: 320px;
	}

	.contact-page-faq .contact-page-faq__heading {
		font-size: 32px;
	}

	.contact-page-cta .contact-page-cta__heading {
		font-size: 34px;
	}

	.contact-page-cta__actions {
		flex-direction: column;
		align-items: stretch;
	}
}
