/* Contact form page: fields, inline errors, consent checkbox and the hidden spam trap. No JavaScript. */

@layer components {
  .contact-page {
    display: grid;
    gap: var(--space-6);
    padding-block: var(--space-8);
    max-width: calc(var(--measure) + 2 * var(--gutter));
  }

  .contact-page-header {
    display: grid;
    gap: var(--space-3);
  }

  .contact-page-header p { color: var(--ink-muted); }

  .contact-form {
    display: grid;
    gap: var(--space-5);
  }

  .contact-field {
    display: grid;
    gap: var(--space-2);
  }


  .contact-field-hint {
    color: var(--ink-muted);
    font-size: var(--step--1);
  }

  .contact-field input,
  .contact-field textarea {
    min-height: 44px;
    padding: var(--space-3);
    border: 1px solid var(--line);
    border-radius: var(--radius-s);
    background: var(--surface);
    color: var(--ink);
    font: inherit;
    transition: border-color var(--dur-fast) var(--ease-out);
  }

  .contact-field textarea { resize: vertical; }

  .contact-field input:hover,
  .contact-field textarea:hover { border-color: var(--line-strong); }

  .contact-consent {
    display: grid;
    grid-template-columns: 24px 1fr;
    gap: var(--space-3);
    align-items: start;
    color: var(--ink-muted);
    font-size: var(--step--1);
  }

  .contact-consent input {
    width: 24px;
    height: 24px;
    margin: 0;
    accent-color: var(--accent);
  }

  /* Errors show only after the person touched the field or tried to send (:user-invalid). */
  .contact-field-error {
    display: none;
    color: var(--warm-ink);
    font-size: var(--step--1);
  }

  .contact-field input:user-invalid,
  .contact-field textarea:user-invalid { border-color: var(--warm-ink); }

  .contact-field :user-invalid ~ .contact-field-error,
  .contact-consent :user-invalid ~ .contact-field-error { display: block; }

  .contact-consent .contact-field-error { grid-column: 2; }

  .contact-trap {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
  }

  .contact-form .button { justify-self: start; }

  .contact-page-alt { color: var(--ink-muted); }

  @media (min-width: 64rem) {
    .contact-page { padding-block: var(--space-9); }
  }
}
