.recovery-vault { max-width: 1080px; margin: 0 auto; display: grid; gap: 18px; }
.recovery-vault button, .recovery-vault .button-link { appearance: none; display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: 10px 15px; border: 1px solid #bac5d1; border-radius: 8px; background: #fff; color: #19334c; font-family: inherit; font-size: 14px; font-weight: 600; line-height: 1.4; text-decoration: none; cursor: pointer; }
.recovery-vault button.primary { color: #fff; background: #19334c; border-color: #19334c; }
.recovery-vault button:hover:not(:disabled), .recovery-vault .button-link:hover { filter: brightness(.94); }
.recovery-vault button:disabled { opacity: .55; cursor: not-allowed; }
.recovery-vault :focus-visible { outline: 3px solid #a47c3c; outline-offset: 3px; }
.recovery-vault select, .recovery-vault input:not([type=checkbox]):not([type=file]) { box-sizing: border-box; width: 100%; min-height: 42px; padding: 10px 12px; border: 1px solid #bac5d1; border-radius: 8px; background: #fff; color: #19334c; font: inherit; }
.recovery-vault .vault-header { padding: 0; border: 0; background: transparent; height: auto; min-height: 0; }
.vault-header, .vault-section-heading, .vault-entry { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; }
.vault-header h1 { font-size: clamp(28px, 4vw, 42px); margin: 5px 0 10px; }
.vault-header p, .vault-panel p { color: var(--muted, #64676c); margin: 6px 0; }
.vault-application { max-width: 460px; display: grid; gap: 7px; font-weight: 650; }
.vault-panel, .vault-status { border: 1px solid var(--line, #d9dce2); border-radius: 14px; padding: 20px; background: var(--surface, #fff); }
.vault-panel summary { cursor: pointer; font-size: 17px; font-weight: 700; }
.vault-panel[open] summary { margin-bottom: 16px; }
.vault-panel h2 { font-size: 20px; margin: 0 0 8px; }
.vault-panel h3 { font-size: 17px; margin: 0; }
.vault-status { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; background: var(--soft, #f2f5f8); }
.vault-status span, .vault-status strong { display: block; }
.vault-status span { font-size: 12px; color: var(--muted, #64676c); margin-bottom: 6px; }
.vault-entries { display: grid; gap: 14px; }
.vault-entry { border-top: 1px solid var(--line, #d9dce2); padding-top: 16px; margin-top: 8px; }
.vault-entry code { display: block; font-size: 11px; overflow-wrap: anywhere; margin-top: 8px; }
.vault-entry details summary { font-size: 12px; font-weight: 500; }
.vault-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.vault-panel form { display: grid; gap: 14px; max-width: 680px; }
.vault-panel form label:not(.vault-checkbox), .vault-mfa label { display: grid; gap: 7px; font-weight: 600; }
.vault-panel input[type=file] { width: 100%; padding: 12px; border: 1px dashed var(--line, #bbb); }
.vault-checkbox { display: flex; gap: 10px; align-items: flex-start; }
.vault-checkbox input { width: auto; }
.vault-help { color: var(--muted, #64676c); font-size: 13px; line-height: 1.6; }
.vault-notice:empty { display: none; }
.vault-notice:not(:empty) { padding: 14px; border: 1px solid #b5d9c7; border-radius: 10px; background: #effaf4; color: #244b39; }
.vault-warning { border-color: #d7b786; background: #fff7e9; color: #624b22; }
.vault-audit { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.vault-audit li { display: flex; justify-content: space-between; gap: 18px; font-size: 13px; }
.vault-audit time { color: var(--muted, #64676c); }
.vault-mfa { width: min(460px, calc(100vw - 32px)); border: 1px solid #cbd2db; border-radius: 16px; padding: 24px; }
.vault-mfa::backdrop { background: #10203088; }
.vault-mfa form { display: grid; gap: 14px; }
.vault-mfa h2, .vault-mfa p { margin: 0; }
.vault-mfa [role=alert] { color: #923b32; }
@media (max-width: 700px) {
  .vault-header, .vault-section-heading, .vault-entry { flex-direction: column; gap: 12px; }
  .vault-status { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vault-panel { padding: 16px; }
  .vault-audit li { flex-direction: column; gap: 3px; }
}
