:root{--bg:#0b1020;--fg:#e8ecf1;--muted:#a9b2c3;--card:#131a2f;--primary:#4ea1ff;--ok:#16a34a;--warn:#f59e0b;--danger:#ef4444}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--fg)}
.container{max-width:960px;margin:24px auto;padding:0 16px}h1{font-size:28px;margin:0 0 8px}h2{margin:0 0 12px}.muted{color:var(--muted)}
.card{background:var(--card);border:1px solid #1f2a44;border-radius:14px;padding:16px;margin:16px 0}.btn-link{color:var(--primary);text-decoration:underline}
.row{display:flex;gap:10px;align-items:center;margin:8px 0;flex-wrap:wrap}.scanbox{background:#0d1428;border:2px dashed #2a3a66;border-radius:16px;padding:24px;text-align:center}
.scaninput{opacity:0;position:absolute;left:-9999px}.big{font-size:20px}
table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px;border-bottom:1px solid #253253}
.status-chip{display:inline-block;padding:4px 8px;border-radius:999px;border:1px solid #2a3a66}.status-chip.ok{color:var(--ok);border-color:var(--ok)}
.status-chip.warn{color:var(--warn);border-color:var(--warn)}.status-chip.danger{color:var(--danger);border-color:var(--danger)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.badgecard{background:#0d1428;border:1px solid #2a3a66;border-radius:12px;padding:10px;text-align:center}.badgecard img{width:160px;height:160px;object-fit:contain;background:#fff;padding:6px;border-radius:8px}@media print{.no-print{display:none}body{background:#fff;color:#000}.badgecard{border-color:#ddd}}
