/* =============================================================================
   PAGONI — CONTACT
   What is on the contact slide (the slide itself is css/overlay.css): the
   heading and the ways to reach us on one side, the form on the other.
   ============================================================================= */

/* --- content ---------------------------------------------------------------- */
.overlay__body.contact {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
  grid-template-areas: 'head form' 'channels form';
  align-content: start;
  gap: var(--raw-spacing-lg) var(--raw-spacing-xl);
}
.contact .drawer__head { grid-area: head; }
.contact .contact__form { grid-area: form; }
.contact .contact__channels { grid-area: channels; }

.drawer__head { display: flex; flex-direction: column; gap: var(--raw-spacing-sm); }
.drawer__heading { font-size: 2.25rem; line-height: 2rem; color: var(--foreground); }
.drawer__lead { color: var(--foreground-muted); }

.contact__channels {
  display: flex;
  flex-direction: column;
  gap: var(--raw-spacing-md);
  padding-top: var(--raw-spacing-lg);
  border-top: 1px solid var(--border-soft);
}
.contact__channel { display: flex; flex-direction: column; gap: 0.25rem; }
.contact__channelLabel { color: var(--foreground-faint); }
.contact__channelValue {
  color: var(--foreground);
  font-size: var(--raw-text-lead);
  border-bottom: 1px solid transparent;
  align-self: flex-start;
  transition: border-color var(--raw-duration-fast) var(--raw-ease-entrance);
}
.contact__channelValue:hover { border-color: var(--foreground-signal); }

/* --- form ------------------------------------------------------------------- */
.contact__form { display: flex; flex-direction: column; gap: var(--raw-spacing-md); }
.contact__row { display: flex; flex-direction: column; gap: var(--raw-spacing-md); }

.contact__field { display: flex; flex-direction: column; gap: var(--raw-spacing-xs); min-width: 0; }
.contact__label { color: var(--foreground-faint); text-transform: uppercase; }

.contact__input {
  width: 100%;
  padding: 0.75rem 0.875rem;
  border-radius: var(--raw-radius-sm);
  border: 1px solid var(--border-hairline);
  background: rgb(4 16 13 / 0.5);
  color: var(--foreground);
  font-size: var(--raw-text-body);
  transition: border-color var(--raw-duration-fast) var(--raw-ease-entrance);
}
.contact__input::placeholder { color: var(--foreground-faint); }
.contact__input:focus { outline: none; border-color: var(--foreground-signal); }

.contact__textarea { resize: vertical; min-height: 7rem; line-height: 1.5rem; }

/* Invalid is marked on the FIELD, not the input, so the label turns with it —
   a ring around a box whose label is still calm reads as a rendering bug. */
.contact__field[data-invalid="true"] .contact__input { border-color: var(--raw-mint-500); }
.contact__field[data-invalid="true"] .contact__label { color: var(--raw-mint-500); }

.contact__submit {
  display: flex;
  align-items: center;
  gap: var(--raw-spacing-md);
  flex-wrap: wrap;
}
.contact__responseNote { color: var(--foreground-faint); }

.contact__status { min-height: 1rem; color: var(--foreground-faint); }
.contact__status[data-state="ok"]    { color: var(--foreground-signal); }
.contact__status[data-state="error"] { color: var(--raw-mint-500); }

@media (max-width: 860px) {
  .overlay__body.contact { grid-template-columns: 1fr; grid-template-areas: 'head' 'form' 'channels'; }
}
@media (max-width: 640px) {
  .drawer__heading { font-size: 1.875rem; line-height: 1.7rem; }
}
