*{box-sizing:border-box}
:root{
  --bg:#f7f8f9; --ink:#1d242b; --muted:#5c6b77; --line:#dbe1e6; --card:#ffffff;
  --accent:#e5f4d9; --accent-ink:#0b3d0b; --ghost:#eef3f6; --btn:#ffffff; --btn-ink:#0b1320;
}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
.hidden{display:none}
.h1{font-size:1.6rem;margin:0 0 8px}
.h2{font-size:1.25rem;margin:0 0 8px}
.small{font-size:.9rem}
.topbar{position:sticky;top:0;z-index:2;background:#fff;backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--line);padding:12px 16px;display:flex;align-items:center;justify-content:flex-start}
.brand{font-weight:800;letter-spacing:.3px;color:var(--ink)}
.badge{font-size:.75rem;background:var(--ghost);padding:2px 8px;border-radius:999px;margin-left:6px;color:var(--muted);border:1px solid var(--line)}
#app{max-width:980px;margin:20px auto;padding:0 16px}
.panel{display:none}
.panel.show{display:block}
.grid2{display:grid;grid-template-columns:1fr;gap:14px}
.grid2.tall .card-btn{min-height:120px}
@media(min-width:820px){.grid2{grid-template-columns:1fr 1fr}}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.right{justify-content:flex-end}
.center{display:flex;flex-direction:column;align-items:center;justify-content:center}
.gap{gap:12px}
.card,.card-btn{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:0 10px 20px rgba(0,0,0,.04)}
.card-btn{cursor:pointer;text-align:left}
.card-btn:hover{transform:translateY(-2px);transition:.15s}
.card-title{font-weight:800;color:var(--ink)}
.card-sub{color:var(--muted);font-size:.95rem;margin-top:4px}
.label{font-weight:800;margin-bottom:8px;color:var(--ink)}
input,textarea,select{flex:1;min-width:200px;background:var(--btn);border:1px solid var(--line);border-radius:12px;color:var(--btn-ink);padding:12px 12px;outline:none}
textarea{resize:vertical}
.btn{appearance:none;border:1px solid var(--line);background:var(--btn);color:var(--btn-ink);font-weight:800;border-radius:12px;padding:12px 16px;cursor:pointer;box-shadow:0 2px 0 rgba(0,0,0,.04)}
.btn:hover{filter:brightness(.98)}
.btn.ghost{background:var(--ghost);color:var(--btn-ink)}
.link{background:transparent;border:none;color:#2a67f6;cursor:pointer;padding:0}
.link.small{font-size:.9rem;margin-top:6px}
.muted{color:var(--muted)}
.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:820px){.tiles{grid-template-columns:repeat(3,1fr)}}
.tile{border:1px solid var(--line);border-radius:12px;padding:12px;cursor:pointer;background:var(--btn);color:var(--btn-ink);text-align:left;box-shadow:0 1px 0 rgba(0,0,0,.03)}
.tile:hover{border-color:#cbd7e1}
.tile.active{outline:2px solid #9ad06d;outline-offset:2px}
.ref{font-size:1.3rem;letter-spacing:.5px;border:1px dashed var(--line);padding:10px 12px;border-radius:10px;background:var(--ghost);margin-bottom:8px;color:var(--ink)}
.meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.meta .pill{border:1px solid var(--line);border-radius:999px;padding:6px 10px;color:var(--muted);background:#fff}
.qrcode{width:220px;height:220px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:12px;overflow:hidden;border:1px solid #ddd}
.details{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.details .pill{border:1px solid var(--line);border-radius:999px;padding:6px 10px;background:#fff;color:var(--ink)}
.details .k{opacity:.65;margin-right:6px}

/* Password gate */
.gate{position:fixed;inset:0;background:rgba(15,15,16,.55);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:999}
.box{background:#fff;border:1px solid var(--line);border-radius:16px;max-width:420px;width:92%;padding:18px;box-shadow:0 20px 50px rgba(0,0,0,.15)}
.box h1{font-size:1.25rem;margin:0 0 8px;color:#111}
.input{width:100%;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 12px;margin:8px 0 10px;color:#0a1220}
.error{color:#c62828;font-weight:700;margin-top:6px}
