:root{
  --yellow:#FCCC0C; --yellow-d:#e0b400; --yellow-l:#fff6cf;
  --ink:#252726; --muted:#6b6f6d; --line:#e7e6df; --bg:#f6f5f0; --card:#fff;
  --ok:#1f8a4c; --ok-l:#e3f5ea; --warn:#a86a00; --warn-l:#fff1cf; --bad:#c62828; --bad-l:#fde7e7;
  --r:14px; --tabs:64px;
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font-size:16px;line-height:1.4}
body.noscroll{overflow:hidden}
h1,h2,h3,p{margin:0}
h3{font-size:1rem}
button,input,select,textarea{font:inherit;color:inherit}
.hidden{display:none!important}
.muted{color:var(--muted)} .small{font-size:.82rem} .center{text-align:center}
.red{color:var(--bad)} .big{font-size:1.4rem} .grow{flex:1;min-width:0}
.row{display:flex;align-items:center} .row.end{justify-content:flex-end} .row.gap{gap:.6rem} .wrap{flex-wrap:wrap}
.between{display:flex;align-items:center;justify-content:space-between;gap:.6rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
@media(max-width:380px){.grid2{grid-template-columns:1fr}}

/* kuanza / kuingia */
.boot{min-height:100vh;display:grid;place-items:center} .boot img{width:min(70vw,320px)}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:1rem}
.login-card{width:min(100%,380px);background:var(--card);border-radius:20px;padding:1.4rem;box-shadow:0 12px 40px rgba(0,0,0,.08);display:grid;gap:.9rem}
.login-logo{width:80%;margin:0 auto}

/* fomu */
.field{display:grid;gap:.3rem;margin-bottom:.7rem} .label{font-size:.85rem;font-weight:600}
input,select,textarea{width:100%;padding:.7rem .8rem;border:1.5px solid var(--line);border-radius:10px;background:#fff;min-height:44px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--yellow-d);box-shadow:0 0 0 3px rgba(252,204,12,.35)}
input[type=checkbox]{width:auto;min-height:0}
.hint{color:var(--muted);font-size:.8rem} .ok-text{color:var(--ok)}
.form-error{color:var(--bad);font-size:.88rem;min-height:1px}
.search{margin:.6rem 0}
.switch{display:inline-flex;align-items:center;gap:.5rem;font-weight:600;cursor:pointer}
.switch input{width:20px;height:20px;accent-color:var(--ink)}

/* vitufe */
.btn{border:0;border-radius:12px;padding:.7rem 1.1rem;font-weight:700;cursor:pointer;min-height:44px}
.btn.sm{min-height:36px;padding:.4rem .8rem;font-size:.9rem}
.btn.block{display:block;width:100%}
.btn.primary{background:var(--yellow);color:var(--ink)} .btn.primary:active{background:var(--yellow-d)}
.btn.ghost{background:#efeee8;color:var(--ink)}
.btn.danger{background:var(--bad);color:#fff}
.btn:disabled{opacity:.5;cursor:not-allowed}
.link{background:none;border:0;color:var(--muted);text-decoration:underline;cursor:pointer;padding:.3rem}
.icon-btn{background:none;border:0;font-size:1.3rem;min-width:40px;min-height:40px;border-radius:10px;cursor:pointer;position:relative}

/* kichwa na menyu ya chini */
.top{position:sticky;top:0;z-index:20;background:#fff;border-bottom:3px solid var(--yellow);display:flex;align-items:center;gap:.5rem;padding:.4rem .8rem;padding-top:calc(.4rem + env(safe-area-inset-top))}
.top h1{font-size:1.05rem;flex:1}
.top-logo{height:30px;width:auto}
.bell .count{position:absolute;top:2px;right:0;background:var(--bad);color:#fff;border-radius:999px;font-size:.65rem;min-width:18px;height:18px;align-items:center;justify-content:center;padding:0 4px;font-weight:700}
#view{max-width:720px;margin:0 auto;padding:.8rem .8rem calc(var(--tabs) + 7.5rem + env(safe-area-inset-bottom))}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;background:#fff;border-top:1px solid var(--line);display:grid;padding-bottom:env(safe-area-inset-bottom)}
.tab{display:grid;justify-items:center;gap:1px;padding:.45rem 0;font-size:.68rem;color:var(--muted);text-decoration:none;font-weight:600;min-height:var(--tabs);align-content:center}
.tab-icon{font-size:1.25rem}
.tab.on{color:var(--ink);box-shadow:inset 0 3px 0 var(--yellow);background:var(--yellow-l)}

/* kadi na orodha */
.card{background:var(--card);border-radius:var(--r);padding:.9rem;margin-bottom:.7rem;box-shadow:0 1px 2px rgba(0,0,0,.05);display:grid;gap:.5rem}
.list{display:grid;gap:.1rem}
.empty{text-align:center;color:var(--muted);padding:1.6rem .5rem}
.day{margin:.8rem 0 .3rem;font-size:.85rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.section{margin:1.1rem 0 .5rem}
.summary{grid-auto-flow:column;align-items:center;justify-content:space-between}

/* bidhaa */
.prow{display:flex;align-items:center;gap:.7rem;background:var(--card);padding:.6rem;border-radius:var(--r);margin-bottom:.45rem;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.prow.flat{box-shadow:none;margin:0;padding:.2rem;cursor:pointer} .prow.off{opacity:.55}
.thumb{width:48px;height:48px;border-radius:10px;object-fit:cover;flex:none}
.thumb.ph{display:grid;place-items:center;background:var(--yellow);font-weight:800}
.pname{font-weight:700;display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.psub{font-size:.82rem;color:var(--muted)}
.stepper{display:flex;align-items:center;gap:.25rem}
.step{width:38px;height:38px;border-radius:10px;border:0;background:#efeee8;font-size:1.3rem;font-weight:700;cursor:pointer}
.step:disabled{opacity:.35}
.qty-input{width:56px;text-align:center;padding:.4rem .2rem;min-height:38px}
.stockbox{text-align:right;min-width:56px} .stockbox b{font-size:1.2rem}
.product.inactive,.card.inactive{opacity:.6}
.batches{border-top:1px dashed var(--line);padding-top:.5rem;display:grid;gap:.4rem}
.brow{display:flex;justify-content:space-between;align-items:center;gap:.5rem;font-size:.9rem;padding:.2rem 0}
.photo-preview{max-width:160px;border-radius:10px;margin:.2rem 0 .5rem}

/* alama */
.badge{display:inline-block;font-size:.7rem;font-weight:700;padding:.15rem .5rem;border-radius:999px;background:#efeee8;color:var(--muted);white-space:nowrap}
.badge.ok{background:var(--ok-l);color:var(--ok)} .badge.warn{background:var(--warn-l);color:var(--warn)}
.badge.bad{background:var(--bad-l);color:var(--bad)} .badge.off{background:#eee;color:#888}
.alert{padding:.7rem .9rem;border-radius:12px;background:var(--yellow-l);font-size:.9rem;margin-bottom:.7rem}
.alert.warn{background:var(--warn-l);color:#6b4300} .alert.ok{background:var(--ok-l);color:#14582f}

/* kikapu cha mauzo */
.cartbar{position:fixed;left:0;right:0;bottom:calc(var(--tabs) + env(safe-area-inset-bottom));z-index:15;background:#fff;border-top:3px solid var(--yellow);padding:.7rem .9rem;display:grid;gap:.5rem;max-width:720px;margin:0 auto;box-shadow:0 -6px 20px rgba(0,0,0,.08)}
.cart-top{display:flex;justify-content:space-between;align-items:center}
.cart-total{font-size:1.35rem;font-weight:800}

/* oda */
.order .lines{list-style:none;margin:0;padding:0;display:grid;gap:.15rem;font-size:.92rem}
.order .lines li{display:flex;justify-content:space-between;gap:.5rem}
.total{font-size:1.1rem}

/* chips */
.chips{display:flex;gap:.4rem;overflow-x:auto;padding:.2rem 0 .6rem;scrollbar-width:none}
.chip{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:.4rem .9rem;font-weight:600;font-size:.88rem;white-space:nowrap;cursor:pointer}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}

/* takwimu na majedwali */
.stats{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin:.4rem 0 .6rem}
.stat{background:#fff;border-radius:var(--r);padding:.8rem;display:grid;gap:.15rem;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.stat span{font-size:.78rem;color:var(--muted)} .stat b{font-size:1.1rem}
.stat.bad b{color:var(--bad)} .stat.good{background:var(--ok-l)} .stat.good b{color:var(--ok)}
.table{background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.trow{display:grid;grid-template-columns:2fr 1.2fr 1.4fr 1.4fr;gap:.4rem;padding:.6rem .8rem;border-top:1px solid var(--line);font-size:.88rem}
.trow.three{grid-template-columns:2fr 1.2fr 1.4fr}
.trow.head{background:var(--yellow-l);font-weight:700;border-top:0;font-size:.78rem}
.trow span:not(:first-child){text-align:right}
.meter{height:8px;background:#efeee8;border-radius:999px;overflow:hidden} .meter i{display:block;height:100%;background:var(--bad)}
.event .small{color:var(--ink)}

/* menyu ya Zaidi */
.menu{padding:0}
.menu-item{display:flex;align-items:center;gap:.8rem;background:none;border:0;border-bottom:1px solid var(--line);padding:.9rem;text-align:left;width:100%;cursor:pointer}
.menu-item:last-child{border-bottom:0}
.menu-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--yellow-l);flex:none}
.note{display:flex;gap:.7rem;padding:.7rem;border-radius:12px;margin-top:.5rem;background:#faf9f5}
.note.unread{background:var(--yellow-l)}

/* dirisha la chini */
.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:50;display:flex;align-items:flex-end;justify-content:center}
.sheet{background:#fff;width:100%;max-width:560px;max-height:92vh;border-radius:20px 20px 0 0;display:flex;flex-direction:column;animation:up .2s ease-out}
@media(min-width:640px){.backdrop{align-items:center}.sheet{border-radius:20px}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1rem;border-bottom:1px solid var(--line)}
.sheet-body{padding:1rem;overflow:auto;padding-bottom:calc(1rem + env(safe-area-inset-bottom))}
.confirm-text{margin-bottom:1rem}
@keyframes up{from{transform:translateY(30px);opacity:.5}to{transform:none;opacity:1}}

/* toast na kusakinisha */
#toast{position:fixed;left:50%;bottom:calc(var(--tabs) + 5.5rem);transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:.7rem 1rem;border-radius:12px;max-width:min(92vw,460px);z-index:80;opacity:0;pointer-events:none;transition:.2s;font-size:.92rem}
#toast.show{opacity:1;transform:translateX(-50%)} #toast.err{background:var(--bad)} #toast.ok{background:var(--ok)}
.install-bar{position:fixed;top:0;left:0;right:0;z-index:70;background:var(--ink);color:#fff;display:flex;align-items:center;gap:.6rem;padding:.5rem .8rem}
.install-bar span{flex:1;font-size:.9rem} .install-bar .icon-btn{color:#fff}

/* bill */
.bill-preview{background:#faf9f5;border-radius:12px;padding:.9rem;margin-bottom:1rem}
.bill .row,.bill .c{display:flex}
.bill{font-size:.92rem;display:grid;gap:.25rem}
.bill img{max-width:70%;margin:0 auto .3rem;display:block}
.bill .c{justify-content:center;text-align:center}
.bill .muted{color:var(--muted);font-size:.8rem}
.bill .row{justify-content:space-between;gap:.5rem}
.bill hr{border:0;border-top:1px dashed #bbb;width:100%;margin:.4rem 0}
.bill .tot{font-size:1.1rem;font-weight:800}
.bill .tag{border:1.5px solid var(--ink);padding:.1rem .7rem;border-radius:999px;font-weight:700;font-size:.8rem}
.print-only{display:none}

@media print{
  .top,.tabs,.cartbar,.no-print,.chips,#toast,#install{display:none!important}
  .print-only{display:block;font-weight:700;margin-bottom:.5rem}
  body{background:#fff} #view{padding:0;max-width:none}
  .card,.stat,.table{box-shadow:none;border:1px solid #ddd}
}
