.vault{max-width:1080px;padding-block:40px 64px}
.vault-header,.vault-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.vault-header{border-bottom:1px solid var(--faint);padding-bottom:24px;margin-bottom:24px}
.vault h1{font-size:clamp(1.6rem,5vw,2.8rem);margin:8px 0 0;line-height:1.1}
.vault-note,.drop span{color:var(--muted);font-size:.9rem}
.vault-panel{background:var(--surface);border:1px solid var(--faint);border-radius:16px;padding:clamp(18px,3vw,28px);margin-bottom:32px}
#gate{max-width:520px;margin-inline:auto}
.fields{display:flex;flex-direction:column;gap:10px}
.fields h2{margin:0 0 12px}
.fields label{font-size:.9rem}
.fields input{width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--faint);border-radius:8px;padding:12px;font:inherit}
#confirmation label{display:block;margin-bottom:10px}
.upload-panel{display:grid;grid-template-columns:1fr 1.2fr;gap:24px}
.drop{border:2px dashed var(--faint);border-radius:12px;padding:28px 16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;cursor:pointer;min-height:220px}
.drop.over,.drop:hover{border-color:var(--accent);background:var(--raise)}
.drop input{max-width:100%;color:var(--muted)}
#filename{color:var(--accent);overflow-wrap:anywhere}
.certificate-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:20px}
.certificate-card{background:var(--surface);border:1px solid var(--faint);border-radius:12px;padding:20px;overflow-wrap:anywhere}
.certificate-card img{width:100%;height:180px;object-fit:contain;background:var(--raise);border-radius:8px}
.certificate-card h3{margin:16px 0 8px}
.certificate-card p{color:var(--muted);white-space:pre-wrap}
.certificate-card .vault-actions{justify-content:flex-start}
.certificate-pdf{height:140px;display:grid;place-items:center;background:var(--raise);border-radius:8px;color:var(--accent)}
#refresh-certificates{margin-top:20px}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
#message{min-height:1.6em;color:var(--accent)}
@media(max-width:760px){.upload-panel{grid-template-columns:1fr}.vault-header .brand{align-items:flex-start}}
