body.contact-open { overflow: hidden; }
.contact-dialog {
  --form-space: 1rem;
  width: min(640px, calc(100% - 24px));
  max-height: calc(100dvh - 32px);
  margin: auto;
  padding: clamp(24px, 4vw, 36px);
  border: 1px solid var(--line);
  border-radius: 20px;
  background: #fff;
  color: var(--ink);
  box-shadow: 0 24px 90px #06133e45;
}
.contact-dialog::backdrop { background: #06133eaa; backdrop-filter: blur(5px); }
.contact-dialog h2 { font-size: clamp(26px, 3vw, 32px); padding-right: 36px; }
.contact-dialog .form-intro { margin: 12px 0 24px; color: #526187; font-size: 14px; }
.contact-close {
  position: absolute; right: 16px; top: 16px; width: 44px; height: 44px;
  border: 0; border-radius: 50%; background: var(--paper); color: var(--ink);
  font: inherit; font-size: 26px; cursor: pointer;
}
.contact-fields { display: grid; grid-template-columns: 1fr 1fr; gap: var(--form-space); }
.contact-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.contact-field.wide { grid-column: 1 / -1; }
.contact-field label { font-size: 14px; font-weight: 650; }
.contact-field input, .contact-field textarea {
  width: 100%; border: 1px solid #b6c3dc; border-radius: 8px; padding: 11px 12px;
  font: inherit; font-size: 16px; color: var(--ink); background: #fbfcff;
}
.contact-field textarea { resize: vertical; min-height: 110px; }
.contact-dialog :focus-visible { outline: 3px solid #0879ff; outline-offset: 3px; }
.contact-field input:user-invalid, .contact-field textarea:user-invalid { border-color: #ad302e; }
.contact-privacy, .contact-hint { font-size: 12px; line-height: 1.6; color: #526187; }
.contact-privacy { margin: 16px 0; }
.contact-privacy a { color: #1556b2; }
.contact-actions { display: flex; align-items: center; gap: 12px; min-height: 48px; }
.contact-send {
  background: var(--ink); color: #fff; border: 0; padding: 12px 28px;
  border-radius: 10px; font: inherit; font-weight: 700; cursor: pointer;
}
.contact-send:disabled { opacity: .65; cursor: wait; }
.contact-send[hidden], .contact-hint[hidden], .contact-form[hidden] { display: none; }
.contact-status { margin: 12px 0 0; font-size: 14px; }
.contact-status:empty { display: none; }
.contact-status.error { color: #a12b28; }
.contact-status.success { padding: 20px; background: #edf6ee; color: #20542d; border-radius: 10px; }
.contact-trap { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
@media (max-width: 520px) {
  .contact-fields { grid-template-columns: 1fr; gap: 12px; }
  .contact-dialog { padding: 24px 20px; }
}
