:root{--bg:#0b1220;--surface:#141d31;--surface-2:#1c2740;--border:#2a3654;--text:#eef2fb;--muted:#93a0bd;--primary:#22c55e;--primary-press:#16a34a;--danger:#ef4444;--warn:#f59e0b;--radius:14px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);height:100%;margin:0;padding:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px}#root{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;display:flex}h1,h2,h3{margin:0}h2{font-size:1.1rem}.screen{flex-direction:column;flex:1;min-height:100dvh;display:flex}.screen.center{justify-content:center;align-items:center}.pad{padding:14px}.center-col{flex-direction:column;align-items:stretch;gap:14px;display:flex}.muted{color:var(--muted)}.error{color:var(--danger)}.topbar{z-index:20;padding:10px 12px;padding-top:calc(10px + env(safe-area-inset-top));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#0b1220eb;justify-content:space-between;align-items:center;gap:8px;display:flex;position:sticky;top:0}.topbar-title{align-items:center;gap:8px;min-width:0;display:flex}.topbar-title strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.topbar-actions{gap:6px;display:flex}.dot{border-radius:50%;flex:none;width:10px;height:10px}.dot.ok{background:var(--primary);box-shadow:0 0 6px var(--primary)}.dot.off{background:var(--danger)}.badge{background:var(--warn);color:#201200;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:700}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:var(--radius);cursor:pointer;touch-action:manipulation;padding:10px 14px;font-size:.95rem;font-weight:600}.btn:active{transform:scale(.98)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#04120a}.btn.primary:active{background:var(--primary-press)}.btn.primary:disabled{opacity:.45}.btn.ghost{background:0 0}.btn.ghost.active{border-color:var(--primary);color:var(--primary)}.btn.big{padding:16px;font-size:1.05rem}.btn.full{width:100%}.btn.grow{flex:1}.btn.list{text-align:left;width:100%;margin-bottom:8px;padding:14px;font-size:1rem}.btn.danger{color:var(--danger)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.login-card{flex-direction:column;gap:14px;width:min(92vw,380px);display:flex}.brand{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.brand-badge{background:var(--primary);color:#04120a;border-radius:16px;justify-content:center;align-items:center;width:56px;height:56px;font-size:2rem;font-weight:800;display:flex}label{color:var(--muted);flex-direction:column;gap:6px;font-size:.85rem;display:flex}input{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:10px;width:100%;padding:12px;font-size:1rem}input:focus{outline:2px solid var(--primary);border-color:#0000}.profile-list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.list-btn{text-align:left;cursor:pointer;width:100%;color:var(--text);font-weight:600}.invoice-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.scanner{border-bottom:1px solid var(--border);background:#000;flex:none;height:32dvh;min-height:180px;position:relative;overflow:hidden}.scanner video{object-fit:cover;width:100%;height:100%}.scanner-error{height:100%;color:var(--muted);text-align:center;justify-content:center;align-items:center;padding:16px;display:flex}.scan-line{height:2px;box-shadow:0 0 12px var(--primary);background:#22c55ee6;animation:2.2s ease-in-out infinite scanline;position:absolute;top:50%;left:8%;right:8%}@keyframes scanline{0%,to{transform:translateY(-34px)}50%{transform:translateY(34px)}}.torch-btn{color:#fff;background:#0000008c;border:1px solid #ffffff40;border-radius:10px;padding:8px 12px;font-size:1rem;position:absolute;bottom:10px;right:10px}.torch-btn.on{background:var(--warn);color:#201200}.search-row{gap:8px;padding:10px 12px;display:flex}.item-grid{flex:1;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;padding:0 12px 260px;display:grid;overflow-y:auto}.item-card{background:var(--surface);border:1px solid var(--border);text-align:center;color:var(--text);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:8px;display:flex}.item-card:active{border-color:var(--primary)}.item-card img,.item-thumb{object-fit:cover;border-radius:10px;width:52px;height:52px}.item-thumb{background:var(--surface-2);color:var(--muted);text-transform:uppercase;justify-content:center;align-items:center;font-weight:700;display:flex}.item-name{-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.3em;font-size:.78rem;line-height:1.15;display:-webkit-box;overflow:hidden}.item-meta{color:var(--primary);font-size:.78rem;font-weight:700}.item-meta em{color:var(--muted);font-style:normal;font-weight:500}.item-meta em.out{color:var(--danger)}.cart-sheet{background:var(--surface);border-top:2px solid var(--primary);width:100%;max-width:560px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));z-index:30;border-radius:18px 18px 0 0;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -8px 30px #00000073}.cart-lines{max-height:32dvh;overflow-y:auto}.cart-line{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 0;display:flex}.cart-line-name{flex-direction:column;flex:1;min-width:0;display:flex}.cart-line-name span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cart-line-amt{white-space:nowrap;font-weight:700}.line-del{color:var(--muted);background:0 0;border:none;padding:6px;font-size:1rem}.qty-ctrl{align-items:center;gap:2px;display:flex}.qty-ctrl button{border:1px solid var(--border);background:var(--surface-2);width:34px;height:34px;color:var(--text);border-radius:8px;font-size:1.2rem;line-height:1}.qty-ctrl span{text-align:center;min-width:34px;font-weight:700}.cart-actions{gap:8px;margin-top:10px;display:flex}.pay-total{flex-direction:column;align-items:center;gap:4px;padding:8px 0;display:flex}.pay-total strong{font-size:2.2rem}.mode-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:8px 16px;font-weight:600}.chip.active{border-color:var(--primary);color:var(--primary)}.amount-display{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px;font-size:1.9rem;font-weight:800}.amount-display.small{flex-direction:column;gap:2px;font-size:1.2rem;display:flex}.change{color:var(--primary);font-size:1rem;display:block}.change.neg{color:var(--danger)}.numpad{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.numpad button{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:16px;font-size:1.35rem;font-weight:700}.numpad button:active{background:var(--surface-2)}.receipt{color:#111;background:#fff;width:100%;font-family:Courier New,monospace}.receipt hr{border:none;border-top:1px dashed #999}.receipt-head{text-align:center;flex-direction:column;align-items:center;gap:2px;display:flex}.receipt-head .muted{color:#555}.receipt-line{justify-content:space-between;gap:12px;padding:2px 0;font-size:.92rem;display:flex}.receipt-line.total{font-size:1.05rem;font-weight:800}.receipt-foot{text-align:center;color:#555;font-size:.85rem}.overlay{z-index:50;background:#0000008c;justify-content:center;align-items:flex-end;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.menu{width:100%;max-width:560px;padding-bottom:calc(14px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0}.menu h3{margin-bottom:10px}.held-card{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.totals-card{width:100%}.toast{bottom:calc(24px + env(safe-area-inset-bottom));background:var(--surface-2);border:1px solid var(--border);color:var(--text);z-index:100;border-radius:999px;max-width:90vw;padding:10px 18px;font-size:.9rem;animation:.2s ease-out toast-in;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000080}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%)}}@media print{body{background:#fff}body *{visibility:hidden}#receipt,#receipt *{visibility:visible}#receipt{border:none;width:72mm;padding:2mm;position:absolute;top:0;left:0}}
