.contact-page {
  background: var(--color-warm-ivory);
  overflow: hidden;
}

.contact-page__container {
  width: min(100% - 5rem, 90rem);
  margin-inline: auto;
}

.contact-hero,
.contact-direct,
.contact-prompts,
.contact-form-section,
.contact-location,
.contact-discovery,
.contact-evening,
.contact-closing {
  padding-block: clamp(var(--space-9), 10vw, var(--space-10));
}

.contact-hero {
  padding-block-start: clamp(var(--space-8), 9vw, var(--space-10));
}

.contact-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(1.5rem, 1fr) minmax(0, 6fr);
  align-items: center;
  gap: var(--space-6);
}

.contact-hero__copy,
.contact-hero__figure,
.contact-direct__heading,
.contact-card,
.contact-prompts__intro,
.contact-prompt,
.contact-form-section__main,
.contact-form-section__aside,
.contact-location__copy,
.contact-location__visual,
.contact-location__note,
.contact-discovery__intro,
.contact-discovery-card,
.contact-evening__copy,
.contact-evening__figure,
.contact-closing__panel {
  min-width: 0;
}

.contact-hero__copy {
  grid-column: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-5);
}

.contact-hero__copy .eyebrow,
.contact-hero__copy h1,
.contact-hero__copy p,
.contact-hero__copy a {
  margin: 0;
}

.contact-hero__copy h1 {
  max-width: 24rem;
  font-size: clamp(4rem, 6.7vw, 5.5rem);
}

.contact-hero__intro {
  max-width: 48rem;
  font-size: var(--text-intro);
  line-height: var(--leading-intro);
}

.contact-hero__action {
  min-height: 3rem;
}

.contact-hero__separator {
  grid-column: 2;
  width: 1px;
  min-height: 20rem;
  margin-inline: auto;
  background: var(--color-juniper-green);
  position: relative;
}

.contact-hero__separator::before,
.contact-hero__separator::after {
  content: "";
  position: absolute;
  width: 0.75rem;
  height: 0.75rem;
  border: 1px solid var(--color-juniper-green);
  border-radius: 50%;
  background: var(--color-warm-ivory);
  inset-inline-start: 50%;
  transform: translateX(-50%);
}

.contact-hero__separator::before { inset-block-start: 2rem; }
.contact-hero__separator::after { inset-block-end: 2rem; }

.contact-hero__figure {
  grid-column: 3;
  width: 100%;
  margin: 0;
}

.contact-hero__figure img {
  width: 100%;
  max-width: none;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center;
}

.contact-hero__figure figcaption {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-2);
  max-width: 34rem;
  margin-block: var(--space-3) 0;
}

.contact-direct {
  border-block: 1px solid var(--color-border);
  background: var(--color-paper-white);
}

.contact-direct__heading {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  max-width: 38rem;
  margin-block-end: var(--space-7);
}

.contact-direct__heading > * { margin: 0; }

.contact-direct__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-5);
}

.contact-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  gap: var(--space-4);
  padding: var(--space-6);
  border: 1px solid var(--color-border);
  background: var(--color-paper-white);
}

.contact-card--address { background: #eee7dc; }
.contact-card > * { margin: 0; }
.contact-card h3 { max-width: 18rem; }
.contact-card__label,
.contact-card__direction,
.contact-card__note {
  color: var(--color-muted-ink);
  font-size: var(--text-meta);
  font-weight: 700;
  letter-spacing: 0.12em;
  line-height: var(--leading-meta);
  text-transform: uppercase;
}

.contact-card__link {
  max-width: 100%;
  color: var(--color-juniper-green);
  font-size: clamp(1.15rem, 1.7vw, 1.4rem);
  font-weight: 700;
  line-height: 1.35;
  overflow-wrap: anywhere;
  text-decoration-thickness: 1px;
}

.contact-card address {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.45;
}

.contact-card__map-link,
.contact-location__map-link {
  color: var(--color-juniper-green);
  font-weight: 700;
}

.contact-prompts__intro {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  max-width: 44rem;
  margin-block-end: var(--space-7);
}

.contact-prompts__intro > * { margin: 0; }

.contact-prompts__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-6);
}

.contact-prompt {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  padding-block-start: var(--space-5);
  border-block-start: 1px solid var(--color-juniper-green);
}

.contact-prompt--three {
  padding-inline: var(--space-5);
  padding-block-end: var(--space-5);
  border: 1px solid var(--color-border-strong);
  background: var(--color-juniper-mist);
}

.contact-prompt > * { margin: 0; }
.contact-prompt h3 { max-width: 19rem; }
.contact-prompt p:not(.contact-prompt__number) { max-width: 32rem; }
.contact-prompt__number {
  color: var(--color-persimmon);
  font-family: var(--font-heading);
  font-size: 2rem;
  font-weight: 600;
  line-height: 1;
}
.contact-prompt--two .contact-prompt__number { color: var(--color-juniper-green); }
.contact-prompt--three .contact-prompt__number { color: var(--color-deep-aubergine); }

.contact-form-section {
  background: #efe9df;
}

.contact-form-section__grid {
  display: grid;
  grid-template-columns: minmax(0, 8fr) minmax(0, 3fr);
  column-gap: clamp(var(--space-6), 5vw, var(--space-9));
  row-gap: var(--space-6);
  align-items: start;
}

.contact-form-section__main {
  grid-column: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
}

.contact-form-section__main > * { margin: 0; }
.contact-form-section__lead { max-width: 38rem; font-family: var(--font-heading); font-size: 1.35rem; line-height: 1.35; }

.contact-form-panel {
  width: 100%;
  padding: clamp(var(--space-5), 3vw, var(--space-6));
  border: 1px solid var(--color-border);
  border-radius: var(--radius-panel);
  background: var(--color-paper-white);
}

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

.contact-form__status:empty { display: none; }
.contact-form__status { padding: var(--space-3); border-inline-start: 2px solid var(--color-deep-aubergine); background: var(--color-juniper-mist); }

.contact-form__two-up {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-5);
}

.contact-form__field {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-2);
  min-width: 0;
}

.contact-form__field label { margin: 0; font-size: var(--text-meta); letter-spacing: 0.12em; text-transform: uppercase; }
.contact-form__field input,
.contact-form__field textarea { min-width: 0; min-height: 3rem; }
.contact-form__field textarea { min-height: 9rem; }
.contact-form__error { min-height: 1.2em; margin: 0; color: #8b2e21; font-size: var(--text-utility); line-height: var(--leading-utility); }
.contact-form__field input[aria-invalid="true"],
.contact-form__field textarea[aria-invalid="true"] { border-color: #8b2e21; }
.contact-form__submit { align-self: flex-start; min-height: 3rem; }

.contact-form-section__aside {
  grid-column: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  margin-block-start: var(--space-9);
  padding: var(--space-5);
  border-block-start: 1px solid var(--color-juniper-green);
}
.contact-form-section__aside > * { margin: 0; }
.contact-form-section__aside-label { font-size: var(--text-meta); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }

.contact-location__grid {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 1fr) minmax(0, 6fr);
  gap: var(--space-6);
  align-items: start;
}

.contact-location__copy {
  grid-column: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
}
.contact-location__copy > * { margin: 0; }
.contact-location__copy > p { max-width: 46rem; }
.contact-location__copy h3 { margin-block-start: var(--space-3); }
.contact-location__copy address { font-family: var(--font-heading); font-size: clamp(1.75rem, 3vw, 2.25rem); font-weight: 600; line-height: 1.05; }

.contact-location__visual {
  grid-column: 3;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-5);
}
.contact-location__figure { width: 100%; margin: 0; }
.contact-location__figure img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; object-position: center; }
.contact-location__figure figcaption { margin-block: var(--space-3) 0; }
.contact-location__note { width: min(100%, 32rem); margin-inline-start: clamp(0rem, 8vw, 6rem); padding: var(--space-5); background: var(--color-juniper-mist); border: 1px solid var(--color-border-strong); }
.contact-location__note > * { margin: 0; }
.contact-location__note p + p { margin-block-start: var(--space-3); }
.contact-location__note-label { color: var(--color-juniper-green); font-size: var(--text-meta); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; }

.contact-discovery {
  border-block: 1px solid var(--color-border);
  background: var(--color-paper-white);
}
.contact-discovery__intro { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); max-width: 46rem; margin-block-end: var(--space-7); }
.contact-discovery__intro > * { margin: 0; }
.contact-discovery__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-4); }
.contact-discovery-card { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-4); min-height: 100%; padding: var(--space-5); border: 1px solid var(--color-border); background: var(--color-paper-white); transition: box-shadow var(--transition-base), border-color var(--transition-base); }
.contact-discovery-card > * { margin: 0; }
.contact-discovery-card p:not(.contact-discovery-card__index) { max-width: 30rem; }
.contact-discovery-card__index { color: var(--color-juniper-green); font-family: var(--font-heading); font-size: 2rem; font-weight: 600; line-height: 1; }
.contact-discovery-card a { margin-block-start: auto; color: var(--color-juniper-green); font-weight: 700; }
.contact-discovery-card--two { border-block-start: 3px solid var(--color-persimmon); }
.contact-discovery-card--three { background: var(--color-juniper-mist); }
.contact-discovery-card--four { border-color: var(--color-deep-aubergine); background: var(--color-deep-aubergine); color: var(--color-warm-ivory); }
.contact-discovery-card--four h3,
.contact-discovery-card--four .contact-discovery-card__index { color: var(--color-warm-ivory); }
.contact-discovery-card--four a { color: var(--color-sky-blue); }
.contact-discovery-card:hover { box-shadow: inset 0 0 0 2px var(--color-juniper-green); }
.contact-discovery-card--four:hover { box-shadow: inset 0 0 0 2px var(--color-sky-blue); }

.contact-evening { background: var(--color-deep-aubergine); color: var(--color-warm-ivory); }
.contact-evening__grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 1fr) minmax(0, 6fr); gap: var(--space-6); align-items: center; }
.contact-evening__copy { grid-column: 1; display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-5); }
.contact-evening__copy > * { margin: 0; }
.contact-evening h2 { color: var(--color-warm-ivory); max-width: 42rem; }
.contact-evening__marker { color: var(--color-sky-blue); max-width: 42rem; }
.contact-evening__unit { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); max-width: 44rem; padding-block-start: var(--space-4); border-block-start: 1px solid rgb(246 241 231 / 35%); }
.contact-evening__unit > * { margin: 0; }
.contact-evening__label { color: var(--color-sky-blue); font-size: var(--text-meta); font-weight: 700; letter-spacing: 0.12em; line-height: var(--leading-meta); text-transform: uppercase; }
.contact-evening__unit--link { border-block-start-color: var(--color-sky-blue); }
.contact-evening__unit a { color: var(--color-sky-blue); font-weight: 700; }
.contact-evening__figure { grid-column: 3; width: 100%; margin: 0; }
.contact-evening__figure img,
.contact-evening__mobile-image img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; object-position: center; }
.contact-evening__figure figcaption { color: var(--color-warm-ivory); margin-block: var(--space-3) 0; }
.contact-evening__mobile-image { display: none; width: 100%; }

.contact-closing { padding-block-end: clamp(var(--space-10), 12vw, var(--space-11)); }
.contact-closing__panel { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-5); width: min(100%, 60rem); margin-inline: auto; padding: clamp(var(--space-6), 5vw, var(--space-8)); border: 1px solid var(--color-juniper-green); background: var(--color-paper-white); }
.contact-closing__panel > * { margin: 0; }
.contact-closing__panel h2 { max-width: 40rem; }
.contact-closing__panel p:not(.eyebrow) { max-width: 40rem; }
.contact-closing__action { min-height: 3rem; }

.contact-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

@media (max-width: 68.6875rem) {
  .contact-direct__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contact-card--address { grid-column: 1 / -1; }
  .contact-prompts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .contact-prompt--three { grid-column: 1 / -1; }
  .contact-discovery__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 67.4375rem) {
  .contact-form-section__grid { grid-template-columns: minmax(0, 1fr); }
  .contact-form-section__main,
  .contact-form-section__aside { grid-column: 1; }
  .contact-form-section__aside { width: 100%; margin-block-start: 0; }
  .contact-location__grid { grid-template-columns: minmax(0, 1fr); }
  .contact-location__copy,
  .contact-location__visual { grid-column: 1; }
  .contact-location__visual { width: 100%; }
  .contact-location__note { margin-inline-start: 0; }
  .contact-evening__grid { grid-template-columns: minmax(0, 1fr); }
  .contact-evening__copy,
  .contact-evening__figure { grid-column: 1; }
}

@media (max-width: 61.25rem) {
  .contact-hero__grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
  .contact-hero__copy,
  .contact-hero__figure { grid-column: 1; }
  .contact-hero__separator { display: none; }
  .contact-hero__figure { order: -1; }
  .contact-hero__figure img { aspect-ratio: 4 / 3; }
  .contact-hero__copy h1 { max-width: 40rem; }
}

@media (max-width: 51.25rem) {
  .contact-prompts__grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
  .contact-prompt--three { grid-column: 1; }
}

@media (max-width: 47.9375rem) {
  .contact-page__container { width: min(100% - 2.25rem, 90rem); }
  .contact-hero,
  .contact-direct,
  .contact-prompts,
  .contact-form-section,
  .contact-location,
  .contact-discovery,
  .contact-evening,
  .contact-closing { padding-block: clamp(var(--space-8), 16vw, var(--space-9)); }
  .contact-hero { padding-block-start: var(--space-7); }
  .contact-hero__copy h1 { font-size: 2.625rem; line-height: 0.98; }
  .contact-hero__intro { font-size: var(--text-body); line-height: var(--leading-body); }
  .contact-hero__action,
  .contact-closing__action,
  .contact-form__submit { width: 100%; min-height: 3rem; }
  .contact-direct__grid,
  .contact-discovery__grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-4); }
  .contact-card--address { grid-column: 1; }
  .contact-card { padding: var(--space-5); }
  .contact-card__link { font-size: 1.1rem; }
  .contact-form-panel { padding: var(--space-5); }
  .contact-form__two-up { grid-template-columns: minmax(0, 1fr); gap: var(--space-5); }
  .contact-form-section__lead { font-size: 1.2rem; }
  .contact-location__figure img { aspect-ratio: 4 / 3; }
  .contact-location__copy address { font-size: 1.75rem; }
  .contact-discovery-card { padding: var(--space-5); }
  .contact-evening__figure { display: none; }
  .contact-evening__mobile-image { display: block; order: 0; }
  .contact-evening__copy { gap: var(--space-5); }
  .contact-evening__unit { max-width: none; }
  .contact-closing__panel { width: 100%; padding: var(--space-5); }
  .contact-closing__panel h2 { font-size: 2rem; }
}

@media (prefers-reduced-motion: reduce) {
  .contact-discovery-card { transition: none; }
}
