: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}

/* --- Phase A: worklists, browse gallery, reports --- */
a.stat{text-decoration:none;display:block}
a.stat:active{border-color:var(--accent)}
.filterbar{display:flex;gap:.6rem;align-items:center;margin:.5rem 0}
.filterbar select{flex:1}
.filterbar .btn{width:auto;margin:0;padding:.6rem .9rem;white-space:nowrap}
.rows{list-style:none;padding:0;margin:0}
.rows li{border-bottom:1px solid var(--line)}
.rows a{display:flex;gap:.7rem;align-items:center;padding:.6rem 0;color:var(--fg);text-decoration:none}
.rowtext{min-width:0}
.rowtext .title{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumb{display:flex;align-items:center;justify-content:center;background:#0b0e12;border:1px solid var(--line);border-radius:.5rem;overflow:hidden;flex:none}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb.sm{width:52px;height:52px}
.noimg{color:var(--muted);font-size:.7rem;padding:.3rem;text-align:center}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.7rem}
.tile{display:block;text-decoration:none;color:var(--fg);background:var(--card);border:1px solid var(--line);border-radius:.7rem;overflow:hidden}
.tile .thumb{width:100%;aspect-ratio:1/1;border:0;border-radius:0}
.tile .cap{display:block;padding:.5rem .6rem}
.tile .cap .title{display:block;font-size:.9rem;line-height:1.25}
.pager{display:flex;gap:.7rem;align-items:center;justify-content:center;margin:1rem 0}
.pager .btn{width:auto;margin:0;padding:.6rem 1rem}
table.report{width:100%;border-collapse:collapse;margin:.4rem 0 1.2rem}
table.report th,table.report td{text-align:left;padding:.5rem .4rem;border-bottom:1px solid var(--line)}
table.report th{color:var(--muted);font-weight:600;font-size:.85rem}
table.report td:not(:first-child),table.report th:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}
h2{font-size:1.05rem;margin:1.2rem 0 .3rem}
.messages li.warning{background:#2e2a17;color:#e8d9a0}
