
:root{
  --font-display: "Zilla Slab", Georgia, "Times New Roman", serif;
  --font-body: "Karla", -apple-system, "Segoe UI", Arial, sans-serif;
}

/* ---------- intro band ---------- */
.contact-hero{
  padding:48px 24px 40px;
  background:linear-gradient(180deg, var(--brand-soft) 0%, var(--paper) 100%);
  text-align:center;
}
.contact-hero h1{
  font-family:var(--font-display);
  font-size:clamp(1.7rem, 1.35rem + 1.6vw, 2.5rem);
  font-weight:600;
  color:var(--ink);
  margin:0 0 12px;
}
.contact-hero p{
  font-family:var(--font-body);
  color:var(--muted);
  font-size:1.02rem;
  max-width:56ch;
  margin:0 auto;
  line-height:1.6;
}

/* ---------- layout ---------- */
.contact-wrap{
  max-width:760px;
  margin:0 auto;
  padding:40px 24px 72px;
}

.contact-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:16px;
  box-shadow:0 20px 45px -28px rgba(16,26,48,.35);
  padding:36px 32px;
}

.contact-card h2{
  font-family:var(--font-display);
  font-size:1.3rem;
  font-weight:600;
  color:var(--ink);
  margin:0 0 20px;
}
.contact-card h2:not(:first-child){margin-top:8px;}

/* ---------- alerts ---------- */
.contact-alert{
  font-family:var(--font-body);
  font-size:.9rem;
  padding:12px 14px;
  border-radius:10px;
  margin:0 0 20px;
  line-height:1.5;
}
.contact-alert-error{
  background:#fbe9e7;
  color:#8c2a20;
  border:1px solid #f2c4bc;
}
.contact-alert-notice{
  background:var(--accent-soft);
  color:var(--accent-ink);
  border:1px solid var(--accent-soft);
}

/* ---------- fields ---------- */
.contact-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:0 20px;
}
@media (max-width:600px){
  .contact-grid{grid-template-columns:1fr;}
}

.contact-field{margin:0 0 18px;}
.contact-field label{
  display:block;
  font-family:var(--font-body);
  font-weight:600;
  font-size:.85rem;
  color:var(--ink-soft);
  margin:0 0 6px;
}
.contact-required{color:var(--accent-ink);}

.contact-field input[type="text"],
.contact-field input[type="email"],
.contact-field input[type="tel"],
.contact-field input[type="url"],
.contact-field textarea{
  width:100%;
  font-family:var(--font-body);
  font-size:1rem;
  color:var(--ink);
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:10px;
  padding:11px 14px;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.contact-field textarea{
  min-height:140px;
  resize:vertical;
  line-height:1.5;
}
.contact-field input:focus-visible,
.contact-field textarea:focus-visible{
  outline:none;
  border-color:var(--brand);
  box-shadow:0 0 0 3px var(--brand-soft);
}
.contact-field input.contact-input-invalid,
.contact-field textarea.contact-input-invalid{
  border-color:#c0392b;
}

.contact-field-error{
  font-family:var(--font-body);
  font-size:.8rem;
  color:#8c2a20;
  margin:6px 0 0;
  line-height:1.4;
  display:none;
}
.contact-field-error.visible{display:block;}

/* ---------- submit ---------- */
.contact-btn-row{margin:10px 0 0;}
.contact-btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-family:var(--font-body);
  font-weight:700;
  font-size:1rem;
  padding:13px 30px;
  border-radius:999px;
  border:none;
  cursor:pointer;
  text-decoration:none;
  transition:background-color .2s ease, transform .2s ease;
}
.contact-btn-primary{
  background:var(--accent);
  color:#fff;
}
.contact-btn-primary:hover{background:var(--accent-ink);transform:translateY(-1px);}
.contact-btn-primary:focus-visible{outline:3px solid var(--accent-soft);outline-offset:2px;}
.contact-btn-primary:disabled{opacity:.6;cursor:progress;transform:none;}

.contact-recaptcha-note{
  font-family:var(--font-body);
  text-align:left;
  font-size:.75rem;
  color:var(--muted);
  margin:16px 0 0;
  line-height:1.5;
}
.contact-recaptcha-note a{color:var(--muted);}

@media (max-width:600px){
  .contact-wrap{padding:32px 16px 56px;}
  .contact-card{padding:26px 20px;}
}
