:root{--navy:#1e3a5f;--green:#89B71A;--red:#c62828;--amber:#e07b00;--grey:#6c757d;--bg:#f5f6f8;--line:#d9dde3;--card:#fff}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:#1a1a1a;font:15px/1.45 -apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
header#top{position:sticky;top:0;z-index:10;background:var(--navy);color:#fff;display:flex;justify-content:space-between;align-items:center;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top,0px))}
.brand{display:flex;align-items:center;gap:8px;font-size:15px}.brand .sq{width:12px;height:12px;background:var(--green);display:inline-block;border-radius:2px}
#userbox{font-size:13px;display:flex;gap:10px;align-items:center}#userbox button{padding:4px 10px;font-size:12px}
main{max-width:1100px;margin:0 auto;padding:16px;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}
h1{font-size:20px;margin:6px 0 12px;color:var(--navy)}h2{font-size:16px;margin:18px 0 8px;color:var(--navy)}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px;margin-bottom:14px}
button,.btn{background:var(--navy);color:#fff;border:0;border-radius:6px;padding:10px 16px;font-size:15px;cursor:pointer;font-family:inherit;text-decoration:none;display:inline-block}
button.green{background:var(--green)}button.red{background:var(--red)}button.ghost{background:#fff;color:var(--navy);border:1px solid var(--navy)}button.small{padding:5px 10px;font-size:13px}
button:disabled{opacity:.45;cursor:not-allowed}
input,select,textarea{font:inherit;padding:9px 10px;border:1px solid var(--line);border-radius:6px;width:100%;background:#fff}
input.big{font-size:22px;padding:14px;font-weight:600;letter-spacing:.5px}
label{display:block;font-size:12px;color:var(--grey);margin:8px 0 3px;text-transform:uppercase;letter-spacing:.3px}
.row{display:flex;gap:10px;flex-wrap:wrap}.row>*{flex:1 1 180px}.row.tight>*{flex:0 0 auto}
.badge{display:inline-block;padding:2px 9px;border-radius:12px;font-size:12px;font-weight:600;color:#fff;background:var(--grey);white-space:nowrap}
.badge.neu,.badge.erkennung{background:var(--amber)}.badge.erfasst,.badge.geprueft{background:#3b82c4}.badge.zaehlung{background:#7a5cc4}.badge.gezaehlt{background:var(--navy)}.badge.gebucht{background:var(--green)}.badge.abgeschlossen{background:#2e7d32}.badge.fehler{background:var(--red)}
.list a.item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}.list a.item:hover{background:#f0f3f7}
.list .meta{font-size:13px;color:var(--grey)}
.tabs{display:flex;gap:4px;overflow-x:auto;margin-bottom:12px}.tabs button{background:#fff;color:var(--navy);border:1px solid var(--line);border-radius:6px 6px 0 0;padding:9px 12px;white-space:nowrap;font-size:14px}.tabs button.active{background:var(--navy);color:#fff}
table{width:100%;border-collapse:collapse;font-size:14px}th{background:var(--navy);color:#fff;text-align:left;padding:7px 8px;font-weight:600;font-size:12px}td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
tr.diff td{background:#fde8e8}tr.ok td{background:#eef7dc}tr.ignored td{color:var(--grey);text-decoration:line-through}
.tablewrap{overflow-x:auto}td input,td select{padding:6px 8px;min-width:70px}td input.w-s{width:70px}td input.w-m{width:110px}td input.w-l{min-width:220px}
.diffnum{color:var(--red);font-weight:700}.oknum{color:#2e7d32;font-weight:700}
.scanline{display:flex;gap:8px;align-items:flex-end}.scanline>div{flex:1}
.serials{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.chip{padding:4px 9px;border-radius:14px;font-size:13px;background:#e9ecf1;border:1px solid var(--line)}.chip.scanned{background:#eef7dc;border-color:var(--green)}.chip.missing{background:#fde8e8;border-color:var(--red)}.chip.extra{background:#fff3e0;border-color:var(--amber)}.chip.booked{background:#dcedc8}.chip b{cursor:pointer;margin-left:6px;color:var(--red)}
.big-feedback{font-size:22px;font-weight:700;padding:14px;border-radius:8px;margin:10px 0;text-align:center}.big-feedback.ok{background:#dcedc8;color:#2e7d32}.big-feedback.warn{background:#fff3e0;color:var(--amber)}.big-feedback.err{background:#fde8e8;color:var(--red)}
.muted{color:var(--grey);font-size:13px}.err{color:var(--red)}.warn{color:var(--amber)}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#222;color:#fff;padding:10px 16px;border-radius:8px;opacity:0;transition:opacity .2s;pointer-events:none;max-width:90vw;z-index:50}#toast.show{opacity:.95}
.login{max-width:380px;margin:40px auto}.steps{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 14px}.steps span{font-size:12px;padding:3px 8px;border-radius:10px;background:#e9ecf1}.steps span.done{background:#dcedc8}.steps span.cur{background:var(--navy);color:#fff}
.fileitem{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.lineblock{border:1px solid var(--line);border-radius:8px;padding:10px;margin-bottom:10px;background:#fff}.lineblock.active{border-color:var(--navy);box-shadow:0 0 0 2px #1e3a5f22}
.lineblock h3{margin:0 0 4px;font-size:15px}.kv{font-size:13px;color:var(--grey)}
video#cam{width:100%;max-height:260px;background:#000;border-radius:8px}
@media(max-width:600px){main{padding:10px}.card{padding:10px}th,td{padding:5px 5px;font-size:13px}}
@media print{header,#toast,.tabs,button{display:none!important}}
