/* =========================================================================
   Contact page
   ========================================================================= */
.contact__lead { margin:0 0 2rem; max-width:60ch; }
.contact__grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:1.5rem; align-items:start; }

.contact__card {
  padding:clamp(1.25rem,3vw,2rem); background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-l); box-shadow:var(--shadow-1);
}
.contact__title { margin:0; font-family:var(--font-display); font-weight:800; font-size:1.375rem; letter-spacing:-.015em; color:var(--ink); }
.contact__intro { margin:0.5rem 0 1.5rem; color:var(--muted); font-size:0.9375rem; line-height:1.5; }

/* ---- Form ---- */
.contact-form { margin:0; }
.contact-form__row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.contact-form__field { margin:0 0 1rem; }
.contact-form__field label {
  display:block; margin-bottom:0.375rem;
  font-family:var(--font-display); font-weight:600; font-size:0.8125rem; color:var(--ink);
}
.contact-form__field label span, .contact-form__consent label > span { color:var(--red); }
.contact-form__field input, .contact-form__field textarea { font-size:1rem; padding:0.75rem 0.875rem; }
.contact-form__field textarea { min-height:9rem; }
.contact-form__hint { display:block; margin-top:0.3125rem; font-size:0.75rem; line-height:1.4; color:var(--muted); }
.contact-form .has-error .contact-form__hint { color:var(--red); }
.contact-form .has-error input, .contact-form .has-error textarea { border-color:var(--red); background:var(--tint); }

/* Present for scripts, absent for people: not display:none, which some bots skip. */
.contact-form__trap { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.contact-form__consent { display:flex; align-items:flex-start; gap:0.625rem; margin:0.25rem 0 1.25rem; font-size:0.875rem; line-height:1.45; color:var(--muted); }
.contact-form__consent input { flex:0 0 auto; width:1.125rem; height:1.125rem; margin:0.125rem 0 0; accent-color:var(--red); }
.contact-form__consent a { color:var(--ink); font-weight:600; text-decoration:underline; }
.contact-form__consent.has-error { color:var(--red); }

.contact-form__footer { display:flex; align-items:center; flex-wrap:wrap; gap:0.75rem 1.25rem; }
.contact-form__submit {
  border:0; border-radius:0.75rem; font-family:var(--font-display); font-weight:600;
  display:inline-flex; align-items:center; justify-content:center;
}
.contact-form__submit { height:3.125rem; padding:0 1.75rem; font-size:1rem; cursor:pointer; }
.contact-form__submit:disabled { opacity:.6; cursor:progress; }
.contact-form__note { margin:0; font-size:0.8125rem; color:var(--muted); }

.contact-form__status { margin:1rem 0 0; font-size:0.9375rem; line-height:1.45; }
.contact-form__status:empty { display:none; }
.contact-form__allow {
  margin-top:0.5rem; padding:0.5rem 0.875rem; border:0; border-radius:0.5rem; cursor:pointer;
  background:var(--ink); color:var(--surface); font-family:var(--font-display); font-weight:600; font-size:0.875rem;
}
.contact-form__status.is-success,
.contact-form__status.is-error { padding:0.875rem 1rem; border-radius:0.75rem; border:1px solid; font-weight:500; }
.contact-form__status.is-success { background:var(--green-tint); border-color:var(--green); color:var(--green-text); }
.contact-form__status.is-error { background:var(--tint); border-color:var(--red); color:var(--red); }
:root[data-theme="dark"] .contact-form__status.is-success { color:#8fd694; }
:root[data-theme="dark"] .contact-form__status.is-error,
:root[data-theme="dark"] .contact-form__consent.has-error,
:root[data-theme="dark"] .contact-form__field label span { color:var(--red-on-dark); }
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]) .contact-form__status.is-success { color:#8fd694; }
  :root:not([data-theme="light"]) .contact-form__status.is-error,
  :root:not([data-theme="light"]) .contact-form__consent.has-error,
  :root:not([data-theme="light"]) .contact-form__field label span { color:var(--red-on-dark); }
}

/* ---- Contact details ---- */
.contact__side { display:flex; flex-direction:column; gap:0.75rem; min-width:0; }
.contact__method {
  display:flex; align-items:center; gap:1rem; padding:1.125rem 1.25rem; text-decoration:none;
  background:var(--surface); border:1px solid var(--line); border-radius:1.125rem; box-shadow:var(--shadow-1); color:var(--ink);
  font-family:var(--font-display); font-weight:700; font-size:1.1875rem; line-height:1.2;
  transition:transform .2s cubic-bezier(.4,0,.2,1), border-color .2s ease, box-shadow .25s ease, background .2s ease;
}
.contact__method svg { width:1.5rem; height:1.5rem; flex-shrink:0; }
.contact__method span { display:flex; flex-direction:column; min-width:0; overflow-wrap:anywhere; }
.contact__method small { margin-bottom:0.1875rem; font-family:var(--font-label); font-weight:500; font-size:0.6875rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }
.contact__method:hover { transform:translateY(-0.125rem); border-color:var(--red); box-shadow:var(--shadow-2); color:var(--ink); }
.contact__method--phone { background:var(--red); border-color:transparent; color:#fff; box-shadow:var(--shadow-red); }
.contact__method--phone small { color:rgba(255,255,255,.8); }
.contact__method--phone:hover { background:var(--red-strong); border-color:transparent; color:#fff; }
.contact__method:focus-visible { outline:none; box-shadow:0 0 0 3px var(--focus); }

.contact__info {
  margin:0.25rem 0 0; padding:0.25rem 1.25rem; background:var(--surface); border:1px solid var(--line);
  border-radius:1.125rem; box-shadow:var(--shadow-1);
}
.contact__info > div { padding:1rem 0; }
.contact__info > div + div { border-top:1px solid var(--line); }
.contact__info dt { margin:0 0 0.25rem; font-family:var(--font-label); font-weight:600; font-size:0.6875rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }
.contact__info dd { margin:0; font-size:0.9375rem; line-height:1.5; color:var(--ink); overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }

/* ---- Map ---- */
.contact-map {
  margin-top:1.5rem; overflow:hidden;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-l); box-shadow:var(--shadow-1);
}
.contact-map__head {
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:0.75rem 1.5rem;
  padding:1.25rem clamp(1.25rem,3vw,2rem);
}
.contact-map__title { margin:0; font-family:var(--font-display); font-weight:800; font-size:1.375rem; letter-spacing:-.015em; color:var(--ink); }
.contact-map__address { margin:0.25rem 0 0; color:var(--muted); font-size:0.9375rem; }
.contact-map__link {
  display:inline-flex; align-items:center; gap:0.375rem; color:var(--ink); text-decoration:none;
  font-family:var(--font-display); font-weight:600; font-size:0.9375rem;
}
.contact-map__link svg { width:1.125rem; height:1.125rem; transition:transform .2s ease; }
.contact-map__link:hover { color:var(--red); }
.contact-map__link:hover svg { transform:translate(0.125rem,-0.125rem); }
:root[data-theme="dark"] .contact-map__link:hover { color:var(--red-on-dark); }
.contact-map__frame { width:100%; height:26rem; border:0; display:block; }
.contact-map__frame[hidden] { display:none; }
.contact-map .cookie-embed, .contact-map > .contact-map__frame { border-top:1px solid var(--line); }

@media (max-width:900px){
  .contact__grid { grid-template-columns:minmax(0,1fr); }
}
@media (max-width:560px){
  .contact-form__row { grid-template-columns:minmax(0,1fr); gap:0; }
  .contact-form__submit { width:100%; }
  .contact__method { font-size:1.0625rem; }
}
