/* Application, qualification, and confirmation surfaces.
   Shared header/footer geometry remains in site-shell.css. */

/* Dialog defaults also serve the privacy summary and receipt. */
dialog {
  width: min(600px, calc(100% - 32px));
  max-height: calc(100dvh - 40px);
  padding: 35px;
  overflow-y: auto;
  border: 1px solid #dedede;
  border-radius: 7px;
  background: #fff;
  color: #111;
}
dialog::backdrop { background: #0006; }
dialog p { margin-top: 22px; font-size: 16px; }
dialog > .button { margin-top: 26px; }

/* With no enhancement the open application stays in document flow. */
.vault-dialog {
  --application-width: 900px;
  position: relative;
  width: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: #fff;
  color: #111;
}
.vault-dialog:not([open]) { display: none; }
.vault-dialog::backdrop { background: #fff; }
html[data-vault-open="true"] { overflow: hidden; }
html[data-vault-enhanced="true"] .vault-dialog {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100dvh;
  max-width: 100vw;
  max-height: 100dvh;
  overflow: hidden;
}
.vault-dialog .vault-form-room {
  position: relative;
  min-height: calc(100dvh - var(--application-header-height));
  padding: 32px 24px 0;
  background: #fff;
  scroll-padding-block: 24px;
  scrollbar-gutter: stable;
}
html[data-vault-enhanced="true"] .vault-dialog .vault-form-room {
  height: calc(100dvh - var(--application-header-height));
  overflow-y: auto;
  overscroll-behavior: contain;
  scroll-padding-block: 28px;
}
.vault-dialog .request-section {
  position: relative;
  display: block;
  width: min(var(--application-width), 100%);
  margin-inline: auto;
  padding: 36px 40px 40px;
  border: 1px solid #ddd;
  border-radius: 12px;
  background: #fff;
  color: #111;
}
.vault-dialog .request-intro { margin-bottom: 28px; }
.vault-dialog #request-title {
  margin: 0;
  font-family: var(--sans);
  font-size: clamp(32px, 3vw, 38px);
  font-weight: 600;
  line-height: 1.18;
  letter-spacing: -.035em;
  text-wrap: pretty;
  scroll-margin-top: 24px;
}
.vault-dialog #request-title:focus { outline: none; }
.vault-dialog .request-intro > p {
  max-width: 660px;
  margin-top: 12px;
  color: #505050;
  font-size: 16px;
  line-height: 1.6;
}
.vault-dialog .request-intro .application-step-label {
  margin: 0 0 16px;
  padding: 0;
  font-size: 14px;
  font-weight: 600;
  color: #505050;
}
.vault-dialog .request-body,
.vault-dialog #request-form,
.vault-dialog #request-fields { min-width: 0; }

fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.field { min-width: 0; }
.field-wide { grid-column: 1 / -1; }
.vault-dialog .application-group { background: transparent; }
.vault-dialog .application-group + .application-group { margin-top: 28px; }
.vault-dialog .application-group > legend {
  margin-bottom: 16px;
  padding: 0;
  color: #111;
  font-family: var(--sans);
  font-size: 19px;
  font-weight: 650;
  line-height: 1.35;
  letter-spacing: -.02em;
}
.form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}
.vault-dialog .contact-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.vault-dialog label {
  display: block;
  margin-bottom: 8px;
  color: #111;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.4;
}
.label-detail { color: #505050; font-weight: 400; }
.vault-dialog input,
.vault-dialog textarea {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  padding: 11px 12px;
  border: 1px solid #aaa;
  border-radius: 4px;
  background: #fff;
  color: #111;
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.5;
  caret-color: #111;
  transition: border-color .15s, background .15s;
}
.vault-dialog input { height: 50px; }
.vault-dialog textarea { min-height: 104px; resize: vertical; }
.vault-dialog input::placeholder,
.vault-dialog textarea::placeholder { color: #666; opacity: 1; }
.vault-dialog input:hover,
.vault-dialog textarea:hover { border-color: #555; }
.vault-dialog input:focus,
.vault-dialog textarea:focus { border-color: #111; }
.vault-dialog input:disabled,
.vault-dialog textarea:disabled { background: #f5f5f5; color: #666; border-color: #ccc; }
.vault-dialog input[aria-invalid="true"],
.vault-dialog textarea[aria-invalid="true"] { border: 2px solid var(--error); }
.vault-dialog :is(button, a, input, textarea):focus-visible {
  outline: 2px solid #111;
  outline-offset: 4px;
}
.amount-input { position: relative; }
.vault-dialog .amount-input input { padding-left: 30px; }
.vault-dialog .amount-input > span {
  position: absolute;
  top: 12px;
  left: 13px;
  color: #505050;
  font-size: 16px;
  pointer-events: none;
}
.field-hint,
.field-error { margin-top: 7px; font-size: 13px; line-height: 1.5; }
.field-hint { color: #505050; }

/* Adaptive inquiry: native choices, three grouped steps, no new visual theme. */
.vault-dialog [data-intake-step][hidden],
.vault-dialog [data-intake-when][hidden] { display: none !important; }
.intake-progress {
  display: flex;
  gap: 22px;
  margin: 0 0 26px;
  padding: 0 0 22px;
  list-style: none;
  border-bottom: 1px solid #ddd;
  color: #6a6a6a;
  font-size: 14px;
}
.intake-progress li { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.intake-progress li > span { display: grid; place-items: center; width: 26px; height: 26px; border: 1px solid #aaa; border-radius: 50%; font-size: 12px; }
.intake-progress [aria-current="step"] { color: #111; font-weight: 650; }
.intake-progress [aria-current="step"] > span { background: #111; color: #fff; border-color: #111; }
.intake-progress [data-complete="true"] > span { border-color: #111; color: #111; }
.vault-dialog .intake-step-title { margin: 0 0 10px; font: 600 25px/1.25 var(--sans); letter-spacing: -.025em; scroll-margin-top: 24px; }
.intake-step-title:focus { outline: none; }
.vault-dialog .intake-step-intro { margin: 0 0 28px; color: #505050; font-size: 15px; line-height: 1.6; }
.vault-dialog .intake-question { margin-top: 28px; }
.vault-dialog .intake-question > legend { margin-bottom: 12px; }
.intake-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.vault-dialog .intake-question-hint { margin: -4px 0 14px; font-size: 13px; }
.vault-dialog .intake-unknown { display: flex; align-items: center; gap: 9px; margin: 11px 0 0; min-height: 32px; font-size: 13px; color: #505050; cursor: pointer; }
.vault-dialog .intake-unknown input { flex: 0 0 18px; width: 18px; height: 18px; margin: 0; padding: 0; accent-color: #111; }
.vault-dialog .intake-conditional,
.vault-dialog .intake-date-field { margin-top: 20px; }
.vault-dialog .intake-project-numbers { margin-top: 28px; }
.vault-dialog .intake-project-numbers .intake-conditional { margin-top: 0; }
.vault-dialog .intake-actions-first { justify-content: flex-end; }
.vault-dialog .application-actions .application-next { margin-top: 0; }
.intake-review { margin: 0 0 28px; padding: 20px; border: 1px solid #d2d2d2; border-radius: 4px; background: #f7f7f7; }
.intake-review-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.intake-review-heading h4 { margin: 0; font: 650 18px/1.4 var(--sans); }
.intake-review-actions { display: flex; gap: 18px; font-size: 13px; }
.intake-review-actions button { min-height: 36px; }
.intake-review-summary { white-space: pre-line; overflow-wrap: anywhere; font-size: 14px; line-height: 1.8; color: #333; }
@media (max-width: 540px) {
  .intake-progress { justify-content: space-between; gap: 8px; font-size: 12px; }
  .intake-progress li { gap: 6px; }
  .intake-progress li > span { width: 23px; height: 23px; }
  .intake-choices { grid-template-columns: 1fr; }
  .intake-review { padding: 16px; }
  .vault-dialog .intake-step-title { font-size: 23px; }
}
.field-error { color: var(--error); font-weight: 650; }

/* Qualification controls use native radios and a native state selector. */
.vault-dialog .qualification-question { margin-bottom: 28px; }
.vault-dialog .qualification-question legend {
  margin-bottom: 12px;
  padding: 0;
  font-size: 16px;
  font-weight: 600;
}
.qualification-options { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.vault-dialog .qualification-option {
  display: flex;
  align-items: center;
  min-height: 52px;
  gap: 12px;
  margin: 0;
  padding: 12px 16px;
  border: 1px solid #aaa;
  border-radius: 4px;
  background: #fff;
  cursor: pointer;
}
.vault-dialog .qualification-option:has(input:checked) { border-color: #111; background: #f0f0f0; }
.vault-dialog .qualification-option:has(input[aria-invalid="true"]) { border-color: var(--error); }
.vault-dialog .qualification-option input {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  margin: 0;
  padding: 0;
  accent-color: #111;
}
.vault-dialog select {
  display: block;
  width: 100%;
  max-width: 100%;
  min-height: 50px;
  padding: 11px 12px;
  border: 1px solid #aaa;
  border-radius: 4px;
  background: #fff;
  color: #111;
  font: inherit;
  font-size: 16px;
  color-scheme: light;
}
.vault-dialog select[aria-invalid="true"] { border: 2px solid var(--error); }
.vault-dialog select:focus-visible { outline: 2px solid #111; outline-offset: 3px; }
.vault-dialog select:disabled,
.vault-dialog .qualification-option:has(input:disabled) { background: #f4f4f4; color: #606060; cursor: default; }
.vault-dialog input[type="date"] {
  /* iOS's native theme otherwise adds padding outside the control height. */
  -webkit-appearance: none;
  appearance: none;
  box-sizing: border-box;
  display: block;
  width: min(100%, 240px);
  height: 50px;
  min-height: 50px;
  padding: 11px 12px;
  text-align: left;
  font-variant-numeric: tabular-nums;
  color-scheme: light;
}
.vault-dialog input[type="date"]::-webkit-date-and-time-value {
  min-height: 1.5em;
  padding: 0;
  text-align: left;
}

/* Keep Back first in DOM order and preserve a clear security/status region. */
.vault-dialog .application-next { margin-top: 28px; min-height: 52px; }
.vault-dialog .application-actions {
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 16px;
  margin-top: 24px;
}
.vault-dialog .submit-button { min-width: 0; min-height: 52px; padding: 14px 20px; font-size: 16px; }
.vault-dialog .application-actions .submit-button { width: auto; margin: 0; }
.vault-dialog .application-back { min-height: 52px; border: 1px solid #aaa; background: #fff; color: #111; }
.vault-dialog .availability {
  margin: 0 0 24px;
  padding: 12px 14px;
  border: 1px solid #d2d2d2;
  border-radius: 4px;
  background: #f5f5f5;
  color: #333;
  font-size: 14px;
  line-height: 1.6;
}
.vault-dialog .application-security { display: flow-root; margin-top: 24px; overflow-anchor: none; }
.vault-dialog .turnstile-widget { display: block; max-width: 100%; min-height: 0; margin: 0; line-height: 0; }
.vault-dialog .turnstile-widget:empty { display: none; }
.vault-dialog .security-status { min-height: 0; margin: 0; color: #505050; font-size: 13px; line-height: 1.6; }
.vault-dialog .security-status:not(:empty) + .turnstile-widget:not(:empty) { margin-top: 12px; }
.vault-dialog .application-security:has(.turnstile-widget:empty):has(.security-status:empty) { margin-top: 0; }
.vault-dialog .security-status.unavailable { color: var(--error); }
.vault-dialog .disclosure { max-width: 72ch; color: #505050; font-size: 14px; line-height: 1.65; }
.vault-dialog .fee-summary h3 { margin: 0 0 12px; color: #111; font-family: var(--sans); font-size: 16px; line-height: 1.4; letter-spacing: 0; }
.vault-dialog .fee-summary p { margin: 0; font: inherit; }
.vault-dialog .fee-summary p + p { margin-top: 12px; }
.vault-dialog #request-fees { margin: 24px 0 0; }
.vault-dialog #request-disclosure { margin: 16px 0 0; }
.inline-button {
  display: inline;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  font-size: inherit;
  line-height: inherit;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.form-result,
.notice {
  margin-top: 24px;
  padding: 19px 21px;
  overflow-wrap: anywhere;
  border-left: 3px solid #bcbcbc;
  background: #f5f5f5;
  color: #111;
  font-size: 16px;
  line-height: 1.6;
}
.vault-dialog .form-result { border: 1px solid #bcbcbc; border-radius: 4px; font-size: 15px; }
.vault-dialog .form-result[data-state="error"] { border-color: #777; background: #f1f1f1; }
.form-result:focus { outline: 2px solid #111; outline-offset: 5px; }

/* Mobile application mode uses one ordinary document scroller for keyboards. */
html[data-vault-page="true"],
html[data-vault-page="true"] body { overflow: visible; height: auto; scroll-behavior: auto; }
html[data-vault-page="true"] body > .site-header,
html[data-vault-page="true"] body > .site-footer,
html[data-vault-page="true"] body > .skip-link,
html[data-vault-page="true"] #main > :not(#vault-dialog) { display: none; }
html[data-vault-page="true"] .vault-dialog {
  position: relative;
  inset: auto;
  width: 100%;
  max-width: none;
  height: auto;
  max-height: none;
  overflow: visible;
}
html[data-vault-page="true"] .vault-dialog .vault-form-room {
  height: auto;
  min-height: 0;
  overflow: visible;
  overscroll-behavior: auto;
  scrollbar-gutter: auto;
}
html[data-vault-page="true"]:has(#privacy-dialog[open]),
html[data-vault-page="true"] body:has(#privacy-dialog[open]),
html[data-vault-page="true"]:has(#receipt-dialog[open]),
html[data-vault-page="true"] body:has(#receipt-dialog[open]) { overflow: hidden; }
.contact-continue { display: none; }
html[data-vault-page="true"] .contact-continue {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 44px;
  margin-top: 8px;
  padding: 8px 0;
  border: 0;
  background: transparent;
  color: #111;
  font-size: 14px;
  font-weight: 650;
  text-decoration: underline;
  text-underline-offset: 4px;
  cursor: pointer;
}

/* Privacy summary. */
#privacy-dialog { border-color: #d5d5d5; }
#privacy-dialog p { color: #505050; }
.dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.dialog-heading h2 { font-size: 37px; line-height: 1.07; letter-spacing: -.035em; }
.dialog-heading .close-dialog { min-width: 44px; min-height: 44px; border: 0; background: transparent; font-size: 30px; line-height: 1; }

/* Confirmation remains available after a successful request. */
#receipt-dialog {
  position: fixed;
  inset: 0;
  width: min(480px, calc(100% - 32px));
  max-height: calc(100dvh - 32px);
  margin: auto;
  padding: 36px 28px 28px;
  overflow-y: auto;
  border: 1px solid #ddd;
  border-radius: 16px;
  text-align: center;
}
.receipt-close {
  position: absolute;
  top: 8px;
  right: 8px;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #111;
  cursor: pointer;
}
#receipt-title { margin: 18px 0 12px; font-family: var(--sans); font-size: 36px; font-weight: 700; line-height: 1.1; letter-spacing: -.02em; }
#receipt-title:focus { outline: none; }
#receipt-description { margin: 0; color: #444; font-size: 16px; line-height: 1.6; }
.receipt-case { margin-top: 24px; }
.receipt-case > span { display: block; color: #505050; font-size: 14px; }
#receipt-case-number { display: block; margin-top: 4px; font-size: 32px; font-variant-numeric: tabular-nums; }
#receipt-dialog .receipt-note { margin: 20px 0 0; color: #606060; font-size: 13px; }
#receipt-home { width: 100%; min-height: 50px; margin-top: 24px; }

@media (hover: hover) and (pointer: fine) {
  .vault-dialog input:hover,
  .vault-dialog textarea:hover { border-color: #555; }
  .vault-dialog .qualification-option:hover,
  .vault-dialog select:hover { border-color: #111; }
}
@media (min-width: 961px) {
  .vault-dialog .vault-form-room { padding-inline: 32px; background: #fff; }
  html[data-interior-artwork] .vault-dialog[open] .vault-form-room { background: #fff url('/assets/white-vault/interior.webp') center / cover no-repeat; }
  .vault-dialog .request-section { padding: 32px; background: rgb(255 255 255 / 85%); }
  .vault-dialog .contact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vault-dialog .contact-grid > :first-child { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .vault-dialog .contact-grid { grid-template-columns: 1fr; }
  .vault-dialog .request-section { padding: 28px; }
  .vault-dialog #request-title { max-width: 640px; }
}
@media (max-width: 540px) {
  dialog { padding: 24px; }
  .vault-dialog .vault-form-room { padding-top: 24px; }
  .vault-dialog .request-section { padding: 0; border: 0; border-radius: 0; }
  .vault-dialog #request-title { font-size: 32px; }
  .vault-dialog .form-grid { grid-template-columns: 1fr; gap: 20px; }
  .vault-dialog .application-actions { flex-direction: column; gap: 12px; }
  .vault-dialog .application-actions .submit-button { width: 100%; }
  .vault-dialog .application-actions .application-back { align-self: flex-start; }
  .vault-dialog .application-next { width: 100%; }
  .dialog-heading h2 { font-size: 31px; }
}
