/* shared */
:root{
  --bg:#0b0c10; --card:#12131a; --text:#e8ecf1; --muted:#9a9fb0; --border:#273043; --primary:#2e7dff;
}
@media (prefers-color-scheme: light){
  :root{ --bg:#f7f8fb; --card:#fff; --text:#0d1320; --muted:#5d667a; --border:#e8eaf0; --primary:#1d4ed8; }
}
*{box-sizing:border-box}
body{margin:0;font-family:ui-sans-serif,system-ui,Segoe UI,Roboto,Helvetica,Arial;background:var(--bg);color:var(--text)}
.topbar{position:sticky;top:0;border-bottom:1px solid var(--border);background:rgba(16,18,27,.6);backdrop-filter:blur(8px)}
.topbar .wrap{max-width:960px;margin:0 auto;padding:.7rem 1rem}
.page{max-width:960px;margin:1rem auto;padding:0 1rem}
.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:1rem}
.muted{color:var(--muted)}
.formgrid{display:grid;gap:.8rem}
.field{display:grid;gap:.3rem}
input{padding:.7rem .8rem;border-radius:10px;border:1px solid var(--border);background:transparent;color:var(--text)}
.actions{display:flex;gap:.5rem;justify-content:flex-end}
.btn{border:1px solid var(--border);background:transparent;color:var(--text);padding:.55rem .9rem;border-radius:10px;cursor:pointer}
.btn.primary{background:var(--primary);color:white;border-color:#0e3fb3}
.btn.ghost{opacity:.9}
.scanner{margin-top:1rem;display:grid;gap:.6rem}
video{width:100%;max-height:340px;border-radius:12px;border:1px solid var(--border)}
.resultBody{display:grid;gap:.35rem}
.badge{padding:.2rem .5rem;border-radius:999px;border:1px solid var(--border);font-size:.84rem}
.badge.ok{border-color:rgba(34,197,94,.5)}
.badge.warn{border-color:rgba(245,158,11,.5)}
