:root{--bg:#0f1216;--card:#1a1f27;--fg:#e8ecf1;--muted:#9aa7b4;--accent:#2f9e6f;--warn:#c9962b;--line:#2a3038}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;background:#131820;border-bottom:1px solid var(--line);position:sticky;top:0}
.topbar .brand{font-weight:700;color:var(--fg);text-decoration:none}
.topbar nav a{color:var(--muted);text-decoration:none;margin-left:1rem}
main{max-width:640px;margin:0 auto;padding:1rem}
h1{font-size:1.3rem;margin:.3rem 0 1rem}
label{display:block;margin:1rem 0 .3rem;color:var(--muted);font-size:.9rem}
input,select{width:100%;padding:.9rem;font-size:1.1rem;background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:.6rem}
.btn{display:block;width:100%;text-align:center;padding:.9rem;margin:.8rem 0;background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:.6rem;text-decoration:none;font-size:1.05rem;cursor:pointer}
.btn.big{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.card{display:block;background:var(--card);border:1px solid var(--line);border-radius:.7rem;padding:1rem;margin:.7rem 0;text-decoration:none;color:var(--fg)}
.card.link:active{border-color:var(--accent)}
.lotid{font-weight:700;font-size:1.2rem}
.title{margin:.2rem 0}
.muted{color:var(--muted);font-size:.9rem}
.warn{color:var(--warn);margin-top:.5rem}
.stats{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1rem}
.stat{flex:1;min-width:6rem;background:var(--card);border:1px solid var(--line);border-radius:.6rem;padding:.7rem;text-align:center;color:var(--muted)}
.stat .n{display:block;font-size:1.6rem;font-weight:700;color:var(--fg)}
.results{list-style:none;padding:0}
.results li{padding:.6rem 0;border-bottom:1px solid var(--line)}
.results a{color:var(--fg);text-decoration:none;display:block}
.results .title{display:block}
.messages{list-style:none;padding:0}
.messages li{padding:.7rem 1rem;border-radius:.5rem;margin:.4rem 0;background:#16202a}
.messages li.success{background:#173026}
.messages li.error{background:#31201f}
#scanner{background:#000;border-radius:.7rem;overflow:hidden;margin-bottom:.6rem}
#cam{width:100%;max-height:50vh;object-fit:cover;display:block}
#scanstatus{padding:.5rem 1rem}
