:root{--ink: #1f2a37;--ink-2: #4b5563;--muted: #6b7280;--paper: #f6f4ef;--card: #ffffff;--line: #e5e1d8;--accent: #f59e0b;--accent-ink: #92400e;--accent-soft: #fef3c7;--ok: #15803d;--ok-soft: #dcfce7;--danger: #b91c1c;--danger-soft: #fee2e2;--radius: 14px;--nav-h: 64px;--shadow: 0 1px 2px rgb(31 42 55 / 6%), 0 4px 16px rgb(31 42 55 / 6%);color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:var(--paper);-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);overflow-x:hidden}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;line-height:1.2}h1{font-size:1.35rem}h2{font-size:1.1rem}h3{font-size:1rem}p{margin:0}.num,.money{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.small{font-size:.85rem}.stack{display:flex;flex-direction:column;gap:12px}.stack-sm{display:flex;flex-direction:column;gap:6px}.row{display:flex;align-items:center;gap:10px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:420px){.grid-2.collapse{grid-template-columns:1fr}}.app{display:flex;flex-direction:column;min-height:100%}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));background:var(--ink);color:#fff}.topbar .shop{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .who{font-size:.8rem;opacity:.75}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:#22c55e}.status-dot.off{background:#f97316}.content{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:16px 16px calc(var(--nav-h) + 24px)}.page-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:center;background:var(--card);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.bottomnav-inner{display:flex;width:100%;max-width:640px}.bottomnav a,.bottomnav button{flex:1;height:var(--nav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:none;color:var(--muted);text-decoration:none;font-size:.75rem;font-weight:600;cursor:pointer}.bottomnav svg{width:24px;height:24px}.bottomnav a.active{color:var(--ink)}.bottomnav a.active svg{color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border-radius:12px;border:1px solid var(--line);background:var(--card);font-weight:600;cursor:pointer;text-decoration:none;color:var(--ink);transition:transform .05s ease,background .15s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn-accent{background:var(--accent);border-color:var(--accent);color:#1f1300}.btn-ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn-danger{background:var(--danger-soft);border-color:#fecaca;color:var(--danger)}.btn-ghost{background:transparent;border-color:transparent}.btn-lg{min-height:58px;font-size:1.1rem;border-radius:14px}.btn-block{width:100%}.btn-sm{min-height:36px;padding:0 12px;font-size:.9rem;border-radius:10px}.icon-btn{width:48px;height:48px;border-radius:12px;border:1px solid var(--line);background:var(--card);display:inline-flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;cursor:pointer}.icon-btn:active{background:var(--accent-soft)}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:.85rem;font-weight:600;color:var(--ink-2)}.input,select.input,textarea.input{width:100%;min-height:48px;padding:10px 14px;border-radius:12px;border:1px solid var(--line);background:var(--card);outline:none}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-lg{min-height:58px;font-size:1.4rem;font-weight:700;text-align:right}.check{display:flex;align-items:center;gap:10px;min-height:44px;font-weight:500}.check input{width:22px;height:22px;accent-color:var(--ink)}.search{position:relative}.search input{padding-left:42px}.search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted)}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-weight:600;cursor:pointer;white-space:nowrap}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow)}.card-flat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}.alert{padding:12px 14px;border-radius:12px;font-weight:500}.alert-error{background:var(--danger-soft);color:var(--danger)}.alert-ok{background:var(--ok-soft);color:var(--ok)}.alert-warn{background:var(--accent-soft);color:var(--accent-ink)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.75rem;font-weight:700;background:var(--line);color:var(--ink-2)}.badge-warn{background:var(--accent-soft);color:var(--accent-ink)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-ok{background:var(--ok-soft);color:var(--ok)}.list{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.list-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line);min-height:64px}.list>*{flex-shrink:0}.list-item:last-child{border-bottom:0}.list-item.tap{cursor:pointer}.list-item.tap:active{background:var(--paper)}.list-item .title{font-weight:600}.empty{padding:28px 16px;text-align:center;color:var(--muted)}.pos{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}.pos>section{min-width:0}@media(min-width:900px){.pos{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}.pos-cart{position:sticky;top:76px}}.product-results{max-height:46vh;overflow-y:auto}.product-results .list-item{gap:10px;padding:10px 12px}.product-results .title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25}.product-results .meta .stock{white-space:nowrap}.product-results .price{text-align:right;line-height:1.2}.product-results .price .per{display:block;font-size:.75rem;font-weight:600}@media(min-width:900px){.product-results{max-height:calc(100vh - 220px)}}.price{font-weight:700;white-space:nowrap}.qty-control{display:flex;align-items:center;gap:6px}.qty-control input{width:74px;min-height:44px;text-align:center;font-weight:700;padding:6px}.cart-line{display:grid;grid-template-columns:1fr auto;gap:6px 10px;padding:12px 14px;border-bottom:1px solid var(--line)}.cart-line:last-child{border-bottom:0}.cart-line .line-total{text-align:right;font-weight:700}.total-bar{position:sticky;bottom:calc(var(--nav-h) + 8px);z-index:5;display:flex;align-items:center;gap:12px;padding:12px;border-radius:16px;background:var(--ink);color:#fff;box-shadow:0 8px 24px #1f2a3740}.total-bar .label{font-size:.8rem;opacity:.75}.total-bar .value{font-size:1.5rem;font-weight:800}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#11182773;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;max-height:94vh;overflow-y:auto;background:var(--paper);border-radius:20px 20px 0 0;padding:18px 16px calc(18px + env(safe-area-inset-bottom));animation:up .18s ease-out}@media(min-width:700px){.sheet-backdrop{align-items:center}.sheet{border-radius:20px}}@keyframes up{0%{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.due{display:flex;justify-content:space-between;align-items:baseline}.due .value{font-size:1.8rem;font-weight:800}.change{border-radius:16px;padding:16px;text-align:center;background:var(--ok-soft);color:var(--ok)}.change .label{font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:.85rem}.change .value{font-size:2.6rem;font-weight:800;line-height:1.1}.change.bad{background:var(--danger-soft);color:var(--danger)}.receipt{background:#fff;border-radius:14px;padding:16px;border:1px dashed #cfc8b8;font-size:.95rem}.receipt .r-line{display:flex;justify-content:space-between;gap:10px}.receipt hr{border:0;border-top:1px dashed #cfc8b8;margin:10px 0}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.kpi .k{font-size:.8rem;color:var(--muted);font-weight:600}.kpi .v{font-size:1.3rem;font-weight:800;margin-top:4px}.table-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--radius)}table.t{border-collapse:collapse;width:100%;font-size:.9rem}table.t th,table.t td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}table.t th{background:#faf8f3;font-size:.8rem;color:var(--ink-2);position:sticky;top:0}table.t td.n,table.t th.n{text-align:right;font-variant-numeric:tabular-nums}table.t tfoot td{font-weight:800;background:#faf8f3}.diff-pos{color:var(--ok);font-weight:700}.diff-neg{color:var(--danger);font-weight:700}.login{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:var(--ink)}.login .card{width:100%;max-width:380px;padding:24px}.login .brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}.login .brand img{width:48px;height:48px}.sync-status{display:flex;align-items:center;flex-wrap:wrap;gap:0 2px;background:none;border:0;padding:0;color:inherit;font:inherit;font-size:.8rem;text-align:left;cursor:pointer;min-height:24px}.sync-status .badge{font-size:.7rem;padding:1px 6px}
