:root{--bg:#0b0f17;--panel:#131a26;--panel-2:#1a2231;--line:#243043;--text:#e5e7eb;--muted:#8b97ab;--accent:#4ade80;--accent-ink:#052e16;--warn:#fbbf24;--bad:#f87171;--radius:14px}*{-webkit-tap-highlight-color:transparent}body{background:var(--bg);color:var(--text);overscroll-behavior-y:none}.app{max-width:640px;min-height:100dvh;margin:0 auto;padding:0 0 84px}.boot{min-height:100dvh;color:var(--muted);place-items:center;display:grid}.login-wrap{place-items:center;min-height:100dvh;padding:24px;display:grid}.login{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:12px;width:100%;max-width:360px;padding:28px 22px;display:flex}.login h1{letter-spacing:-.02em;margin:0;font-size:28px}.login p{margin:0}.topbar{background:linear-gradient(var(--bg) 78%, transparent);z-index:5;justify-content:space-between;align-items:center;padding:18px 16px 10px;display:flex;position:sticky;top:0}.topbar h1{letter-spacing:-.02em;margin:0;font-size:22px}.banner{color:#fde68a;background:#fbbf241f;border:1px solid #fbbf2459;border-radius:10px;margin:0 16px 12px;padding:10px 12px;font-size:13px}main{padding:0 16px}.screen{flex-direction:column;gap:14px;display:flex}.screen h2{letter-spacing:-.01em;margin:4px 0 0;font-size:20px}.screen h3{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:10px 0 0;font-size:15px}.tabbar{border-top:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding-bottom:env(safe-area-inset-bottom);z-index:10;background:#0b0f17f0;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:12px 4px 14px;font-size:12px;display:flex;position:relative}.tab.active{color:var(--accent)}.badge{background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:1px 5px;font-size:10px;font-weight:700;position:absolute;top:6px;right:22%}input,select{background:var(--panel-2);border:1px solid var(--line);color:var(--text);border-radius:10px;width:100%;min-width:0;padding:11px 12px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}label{color:var(--muted);flex-direction:column;flex:120px;gap:4px;font-size:12px;display:flex}label input,label select{color:var(--text)}button{border:1px solid var(--line);background:var(--panel-2);color:var(--text);cursor:pointer;border-radius:10px;min-height:44px;padding:11px 16px;font-weight:600}button:active{transform:translateY(1px)}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.ghost{background:0 0}button.small{min-height:34px;padding:7px 11px;font-size:13px}button:disabled{opacity:.5;cursor:default}.row{align-items:center;gap:8px;display:flex}.row.gap{gap:10px}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:12px;padding:14px;display:flex}.preview{flex-direction:column;display:flex}.thumb{object-fit:contain;background:#fff;border-radius:10px;flex:none;width:56px;height:56px}.name{overflow-wrap:anywhere;font-weight:600;line-height:1.3}.muted{color:var(--muted)}.tiny{font-size:12px}.aisle{color:var(--accent);margin-top:2px;font-size:13px}.price{font-variant-numeric:tabular-nums;font-weight:700}.was{color:var(--muted);margin-left:6px;font-weight:400;text-decoration:line-through}.qty{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.expiry{white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:700}.expiry.ok{color:var(--accent);background:#4ade8024}.expiry.soon{color:var(--warn);background:#fbbf2429}.expiry.today{color:var(--warn);background:#fbbf243d}.expiry.expired{color:var(--bad);background:#f871712e}.error{color:#fecaca;background:#f8717124;border:1px solid #f8717166;border-radius:10px;padding:9px 12px;font-size:13px}.list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.listrow{background:var(--panel);border:1px solid var(--line);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;display:flex}.listrow input[type=checkbox]{width:22px;height:22px;accent-color:var(--accent);flex:none}.scanner{flex-direction:column;gap:8px;display:flex}.scanner-view{border-radius:var(--radius);aspect-ratio:4/3;border:1px solid var(--line);background:#000;position:relative;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%;display:block}.scanner-reticle{border:2px solid #4ade80d9;border-radius:12px;position:absolute;inset:18% 12%;box-shadow:0 0 0 100vmax #00000047}.scanner-note,.scanner-error{color:var(--text);background:#000000b8;border-radius:10px;padding:9px 12px;font-size:13px;position:absolute;bottom:12px;left:12px;right:12px}.scanner-error{color:#fecaca;border:1px solid #f8717180}.scanner-hint{color:var(--muted);margin:0;font-size:12px}.stats{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}.stat .n{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:700}.toast{background:var(--panel-2);border:1px solid var(--line);z-index:20;text-align:center;border-radius:10px;max-width:90vw;padding:11px 16px;font-size:14px;position:fixed;bottom:92px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000073}
