/* ==========================================================================
   CONTACT PAGE
   1. Hero (same look as the service pages, no image)
   2. "Let's work together" list + form + "Prefer to talk it out?" column
   3. FAQ (shared .faq accordion from components.css)
   4. Scheduling lightbox (extends .lightbox in components.css)
   Content: _source/build/contact.main.html
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. HERO
   -------------------------------------------------------------------------- */
.contact-hero {
  position: relative;
  padding: var(--header-offset) 0 var(--space-xl);
  background: var(--blue-900);
  color: var(--white);
  text-align: center;
  isolation: isolate;
}

/* Purple wash over the navy background (same as the service pages) */
.contact-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--purple-900);
  opacity: 0.7;
}

.contact-hero__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.contact-hero__title {
  font-size: var(--text-7xl);
  font-weight: var(--weight-regular);
  line-height: var(--leading-tight);
}

/* --------------------------------------------------------------------------
   2. FORM + ASIDE
   -------------------------------------------------------------------------- */
.contact {
  padding: var(--space-xl) 0 var(--space-section);
  background: var(--gray-100);
}

.contact__grid {
  display: grid;
  grid-template-columns: repeat(var(--grid-columns), minmax(0, 1fr));
  column-gap: var(--grid-gap);
  row-gap: var(--space-xl);
  align-items: start;
}

/* Three columns on the guide lines: list (3 columns) · one empty · form (4) ·
   one empty · "Prefer to talk" (3). The list and "Prefer to talk" are the same
   width, the form is the widest, and both gaps are one column. On wide screens
   this section draws a guide line at every column so each block starts on one. */
.contact-intro { grid-column: 1 / 4; }
.contact-card  { grid-column: 5 / 9; }
.contact-aside { grid-column: 10 / -1; }

@media (min-width: 1200px) {
  .contact { --grid-line-bands: 12; }
}

.contact-intro__title {
  color: var(--color-primary);
  font-size: var(--text-xl);
  font-weight: var(--weight-regular);
  line-height: var(--leading-compact);
}

.contact-intro__list {
  display: grid;
  gap: 14px;
  margin: 28px 0 0;
  padding-left: 1.1em;
  font-size: var(--text-16);
  line-height: var(--leading-normal);
}

.contact-intro__list li::marker {
  color: var(--color-primary);
}

.contact-aside__title {
  font-size: var(--text-xl);
  font-weight: var(--weight-regular);
  line-height: var(--leading-compact);
}

.contact-card__title {
  font-size: var(--text-2xl);
  font-weight: var(--weight-regular);
  line-height: var(--leading-compact);
}

.contact-card__title { color: var(--color-primary); }
.contact-aside__title { color: var(--color-primary); }

.contact-card__text,
.contact-aside__text {
  max-width: 620px;
  margin-top: 16px;
  font-size: var(--text-16);
  line-height: var(--leading-relaxed);
}

/* ---------- Form fields ----------
   One column of open fields: no box, just a line underneath and the field
   name written inside (Mike, 7-oct-2026; model: arpeggio.framer.website/contact) */
.contact-form {
  display: grid;
  gap: 10px;
  margin-top: 32px;
}

.contact-form[hidden] { display: none; }

.field {
  min-width: 0;
}

.field__control {
  display: block;
  width: 100%;
  min-height: 60px;
  padding: 18px 4px;
  border: 0;
  border-bottom: 1px solid var(--gray-500);
  border-radius: 0;
  background: none;
  color: var(--color-text);
  font-size: var(--text-18);
  line-height: var(--leading-normal);
  appearance: none;
}

.field__control::placeholder {
  color: var(--color-text);
  opacity: 1;
}

textarea.field__control {
  min-height: 110px;
  resize: vertical;
}

.field__control:focus-visible {
  outline: none;
  border-bottom-color: var(--color-primary);
  box-shadow: 0 1px 0 var(--color-primary);
}

/* Fields the visitor touched and left invalid (set by main.js) */
.field__control[aria-invalid="true"] {
  border-bottom-color: var(--gold-700);
  box-shadow: 0 1px 0 var(--gold-700);
  background: var(--gold-100);
}

/* Select: native list, our own chevron on top */
.field__select {
  position: relative;
}

.field__select .field__control {
  padding-right: 40px;
  cursor: pointer;
}

.field__chevron {
  position: absolute;
  top: 50%;
  right: 4px;
  width: 20px;
  height: 20px;
  margin-top: -10px;
  color: var(--color-primary);
  pointer-events: none;
}

/* Honeypot: out of sight, but still in the page for bots */
.contact-form__trap {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.contact-form__error {
  padding: 12px 16px;
  border-left: 4px solid var(--gold-500);
  background: var(--gold-100);
  font-size: var(--text-14);
  line-height: var(--leading-relaxed);
}

.contact-form__error[hidden] { display: none; }

.contact-form__footer {
  margin-top: 22px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 20px 32px;
}

.contact-form__note {
  flex: 1 1 260px;
  font-size: var(--text-14);
  line-height: var(--leading-relaxed);
}

.contact-form__note a:hover { color: var(--color-primary); }

.contact-form__footer .btn { flex: none; }

/* ---------- Success message (replaces the form) ---------- */
.contact-success {
  margin-top: 32px;
  padding: 40px 0 24px;
}

.contact-success[hidden] { display: none; }

/* main.js moves focus here after sending; no ring around the message */
.contact-success:focus { outline: none; }

.contact-success__icon {
  width: 56px;
  height: 56px;
  color: var(--color-primary);
}

.contact-success__title {
  margin-top: 20px;
  font-size: var(--text-2xl);
  font-weight: var(--weight-regular);
  line-height: var(--leading-compact);
}

.contact-success__text {
  margin-top: 12px;
  font-size: var(--text-18);
}

/* ---------- Right column ---------- */
.contact-aside__text { max-width: 480px; }

.contact-call,
.contact-schedule {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  border-radius: var(--radius-card);
  text-decoration: none;
  text-align: left;
}

.contact-call {
  margin-top: 28px;
  padding: 24px;
  background: var(--white);
  color: var(--color-text);
}

.contact-call__body {
  display: grid;
  gap: 4px;
}

.contact-call__label {
  font-size: var(--text-14);
  font-weight: var(--weight-bold);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
}

.contact-call__number {
  font-family: var(--font-display);
  font-size: var(--text-l);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-compact);
  white-space: nowrap;
}

.contact-call__icon {
  width: 34px;
  height: 34px;
  flex: none;
  color: var(--color-primary);
}

.contact-call:hover .contact-call__number { color: var(--color-primary); }

.contact-schedule {
  margin-top: 16px;
  padding: 26px 28px;
  background: var(--gold-500);
  color: var(--black);
  font-family: var(--font-display);
  font-size: var(--text-l);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-compact);
}

.contact-schedule .icon {
  width: 34px;
  height: 34px;
  flex: none;
  color: var(--color-primary);
}

.contact-schedule:hover {
  background: var(--color-primary);
  color: var(--white);
}

.contact-schedule:hover .icon { color: var(--gold-500); }

.contact-hours {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-top: 28px;
}

.contact-hours__icon {
  width: 30px;
  height: 30px;
  flex: none;
  color: var(--color-primary);
}

.contact-hours__title {
  font-size: var(--text-18);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-cozy);
}

.contact-hours__text {
  margin-top: 2px;
  font-size: var(--text-16);
}

/* Social profiles: same icon column as the working hours row */
.contact-social {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 32px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

.contact-social__link {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  color: var(--color-text);
  font-size: var(--text-18);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-cozy);
  text-decoration: none;
}

.contact-social__link .icon {
  width: 30px;
  height: 30px;
  color: var(--color-primary);
}

.contact-social__link:hover { color: var(--color-primary); }

.contact-aside__subtitle {
  margin-top: 44px;
  padding-top: 28px;
  border-top: 1px solid var(--gray-300);
  color: var(--color-primary);
  font-size: var(--text-24);
  font-weight: var(--weight-regular);
  line-height: var(--leading-snug);
}

.contact-next {
  display: grid;
  gap: 22px;
  margin: 22px 0 0;
  padding: 0;
  list-style: none;
}

.contact-next__item {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 12px;
  font-size: var(--text-16);
  line-height: var(--leading-relaxed);
}

.contact-next__number {
  color: var(--color-text-strong);
  font-family: var(--font-display);
  font-size: var(--text-20);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-cozy);
}

/* --------------------------------------------------------------------------
   3. FAQ
   Same layout as the service pages. Accordion styles: components.css (.faq).
   -------------------------------------------------------------------------- */
.contact-faq {
  padding: var(--space-section) 0;
  background: var(--white);
}

.contact-faq__inner {
  display: grid;
  grid-template-columns: repeat(var(--grid-columns), minmax(0, 1fr));
  column-gap: var(--grid-gap);
  row-gap: 54px;
}

.contact-faq__inner > :first-child { grid-column: 1 / 5; }
.contact-faq__inner > :last-child  { grid-column: 5 / -1; }

.contact-faq__title {
  font-size: var(--text-3xl);
  font-weight: var(--weight-regular);
  line-height: var(--leading-tight);
}

/* --------------------------------------------------------------------------
   RESPONSIVE
   -------------------------------------------------------------------------- */
@media (max-width: 1199px) {
  .contact-intro,
  .contact-card,
  .contact-aside { grid-column: 1 / -1; }

  .contact-aside__text { max-width: 620px; }
}

@media (max-width: 991px) {
  .contact-faq__inner > :first-child,
  .contact-faq__inner > :last-child { grid-column: 1 / -1; }

  .contact-faq__inner { row-gap: 32px; }
}

@media (max-width: 767px) {
  .contact { padding-block: var(--space-l) var(--space-xl); }

  .contact-faq { padding-block: var(--space-section); }

  .contact-hero { padding-bottom: var(--space-l); }

  .contact-form__footer .btn { width: 100%; }
}
