:root{--bg:#f1f3f4;--cd:#fff;--ink:#1c2125;--mut:#66727c;--ac:#c8102e;--ln:#dce1e4;--ok:#1f7a4d;--bad:#b3261e;--wd:#b98a4e}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding:0 0 24px;font-variant-numeric:tabular-nums}
header{padding:16px 16px 0;max-width:720px;margin:auto}
h1{font-size:21px;margin:0;letter-spacing:-.01em;flex:1}
.hamburger{background:none;border:0;font-size:22px;line-height:1;padding:4px 10px 4px 0;cursor:pointer;color:var(--ink)}
main{padding:8px 12px;max-width:720px;margin:auto}
.c{background:var(--cd);border:1px solid var(--ln);border-left:4px solid var(--wd);border-radius:6px;padding:12px;margin:10px 0}
.c .c{border-left-width:1px;background:#fafbfb}
h2{font-size:15px;margin:0 0 8px}
label{display:block;font-size:12.5px;color:var(--mut);margin:6px 0}
input,select{width:100%;font:inherit;padding:9px;border:1px solid var(--ln);border-radius:6px;background:#fff;color:var(--ink);margin-top:2px}
input:focus,select:focus,button:focus-visible{outline:2px solid var(--ac);outline-offset:1px}
.g{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:0 10px}
table{width:100%;border-collapse:collapse}
td,th{padding:7px 4px;border-bottom:1px solid var(--ln);text-align:right}
td:first-child,th:first-child{text-align:left}
th{font-size:12.5px;color:var(--mut);font-weight:600}
.t td{font-weight:700;border-top:2px solid var(--ink);border-bottom:0}
.big{font-size:20px;font-weight:700;color:var(--ac)}
button{font:inherit;border:0;border-radius:6px;padding:9px 13px;background:var(--ac);color:#fff;cursor:pointer}
button.s{background:#e4e8ea;color:var(--ink)}
button.x{background:none;color:var(--bad);padding:6px 8px}
button.icon,a.icon{background:none;color:var(--ink);padding:5px 8px;font-size:17px;line-height:1;border-radius:6px;display:inline-block;text-decoration:none}
a.icon.wa{color:#1f9d6b}
button.icon:hover{background:#eceff1}
button.icon.danger:hover{background:#fbe7e5}
.price{font-size:19px;font-weight:700;color:var(--ac)}
#backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:40;opacity:0;pointer-events:none;transition:opacity .2s}
#backdrop.open{opacity:1;pointer-events:auto}
nav{position:fixed;top:0;left:0;bottom:0;width:250px;max-width:78vw;background:var(--cd);z-index:50;transform:translateX(-100%);transition:transform .2s ease;overflow-y:auto;box-shadow:2px 0 16px rgba(0,0,0,.18);padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
nav.open{transform:translateX(0)}
nav button{display:block;width:100%;text-align:left;background:none;color:var(--ink);border-radius:0;padding:15px 20px;font-size:15px}
nav .on{color:var(--ac);font-weight:700;background:#fbe9ec;box-shadow:inset 3px 0 var(--ac)}
.v{padding:10px;border-radius:6px;font-weight:600}
.ok{background:#e2f3ea;color:var(--ok)}.bad{background:#fbe7e5;color:var(--bad)}
.r{display:flex;gap:8px;align-items:end}.r>label{flex:1}.r>.x{flex:0 0 auto;margin-bottom:6px}
.m{color:var(--mut);font-size:13px;margin:6px 0}
.hg{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:8px}
.hc{background:var(--cd);border:1px solid var(--ln);border-radius:8px;padding:14px;cursor:pointer}
.hc h2{margin:0 0 4px}
.seg{display:flex;gap:6px;overflow-x:auto;margin:0 0 10px;padding-bottom:2px;-webkit-overflow-scrolling:touch}
.seg button{background:var(--cd);border:1px solid var(--ln);color:var(--mut);padding:7px 13px;border-radius:20px;white-space:nowrap;flex:0 0 auto}
.seg .on2{background:var(--ac);color:#fff;border-color:var(--ac)}
.back{background:none;color:var(--ac);padding:6px 0;font-weight:600;margin-bottom:6px;display:inline-flex;align-items:center;gap:4px}
@media (min-width:900px){
 .hamburger{display:none}
 #backdrop{display:none}
 nav{transform:none;box-shadow:none;border-right:1px solid var(--ln);width:230px}
 body{padding-left:230px}
 header,main{max-width:960px}
 .hg{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
}

/* Dashboard analytics widgets */
.stgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;margin-bottom:16px}
.stcard{border-radius:8px;padding:10px 12px}
.stnum{font-size:22px;font-weight:800;line-height:1.1}
.stlbl{font-size:11.5px;color:var(--mut);margin-top:2px}
.metgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:20px}
.metcard{border-radius:10px;padding:16px;color:#fff}
.metlbl{font-size:12.5px;opacity:.92}
.metnum{font-size:22px;font-weight:800;margin-top:4px}
.barrow{display:flex;align-items:center;gap:8px;margin:7px 0;font-size:13px}
.barlbl{flex:0 0 42%;max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bartrack{flex:1;background:#eceef1;border-radius:6px;height:16px;overflow:hidden}
.barfill{height:100%;border-radius:6px;transition:width .3s}
.barval{flex:0 0 auto;text-align:right;font-weight:600;white-space:nowrap}

/* Calendar */
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.calcell{background:var(--cd);border:1px solid var(--ln);border-radius:6px;min-height:64px;padding:4px;font-size:10.5px;overflow:hidden}
.calcell.empty{background:transparent;border:none}
.calcell.dowhead{background:none;border:none;text-align:center;font-weight:700;color:var(--mut);min-height:auto;padding:2px 0}
.calcell.today{border-color:var(--ac);border-width:2px}
.calday{font-weight:700;margin-bottom:2px}
.calorder{background:#eee;border-radius:4px;padding:2px 4px;margin-bottom:2px;font-size:9.5px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:600px){
 .calcell{min-height:48px;font-size:9px;padding:2px}
 .calorder{font-size:8.5px}
}

/* Nested sidebar nav (Tempahan / Pelanggan groups) */
.navparent{display:flex;align-items:center;justify-content:space-between;width:100%;text-align:left;background:none;color:var(--ink);border-radius:0;padding:15px 20px;font-size:15px;cursor:pointer}
.navcaret{font-size:11px;color:var(--mut);margin-left:8px}
.navchildren button{padding-left:42px;font-size:14px}
.navparent.on{color:var(--ac);font-weight:700;background:#fbe9ec;box-shadow:inset 3px 0 var(--ac)}

/* Dashboard (rombakan) */
.dhead{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.dhead h2{margin:0}
.tgt{background:linear-gradient(135deg,#1c2125,#3b464e);color:#fff;border-radius:12px;padding:16px;margin-bottom:12px}
.tgthd{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px}
.tgtbtn{background:rgba(255,255,255,.16);color:#fff;border:0;border-radius:6px;padding:4px 10px;font-size:12px;cursor:pointer;white-space:nowrap;flex:0 0 auto}
.tgtnums{display:flex;justify-content:space-between;align-items:flex-end;gap:8px;margin:10px 0 12px}
.tgtbig{font-size:26px;font-weight:800;line-height:1.1;display:block}
.tgtof{font-size:13px;opacity:.8;margin-top:2px;display:block}
.tgtpct{font-size:28px;font-weight:800;line-height:1}
.tgtbar{position:relative;height:14px;border-radius:8px;background:rgba(255,255,255,.18)}
.tgtfill{height:100%;border-radius:8px}
.tgtmark{position:absolute;top:-4px;bottom:-4px;width:2px;background:#fff;opacity:.9}
.tgtstat{display:inline-block;margin-top:10px;padding:3px 10px;border-radius:999px;font-size:12.5px;font-weight:700}
.tgt .tgtstat{color:#fff}
.tgtstat.neutral{background:rgba(255,255,255,.2)}
.tgtstat.ok{background:#16a34a}
.tgtstat.warn{background:#d97706}
.tgtsub{margin-top:8px;font-size:12.5px;opacity:.9}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px}
@media (max-width:520px){.kpis{grid-template-columns:1fr 1fr}.kpis .kpi:nth-child(3){grid-column:1/-1}}
.kpi{background:var(--cd);border:1px solid var(--ln);border-radius:10px;padding:12px}
.kpilbl{font-size:12px;color:var(--mut)}
.kpival{font-size:20px;font-weight:800;margin:2px 0}
.delta{font-size:11.5px;font-weight:700;color:var(--mut)}
.delta.up{color:var(--ok)}
.delta.down{color:var(--bad)}
.delta small{font-weight:400;color:var(--mut)}
.dgrid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;margin-bottom:12px}
.dgrid2 .c{margin:0}
.chartnote{font-size:11.5px;color:var(--mut);margin:6px 0 0}
.prow{display:flex;align-items:center;gap:10px;margin:12px 0}
.medal{font-size:24px}
.pinfo{flex:1;min-width:0}
.pinfo b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pbar{height:8px;border-radius:5px;background:#eceef1;margin-top:4px;overflow:hidden}
.pbar div{height:100%;border-radius:5px}
.pval{text-align:right;font-weight:700;white-space:nowrap}
.pval small{display:block;font-weight:400;color:var(--mut);font-size:11.5px}
.stcard{cursor:pointer}

/* ===== Responsif: telefon & laptop ===== */
/* tab sentiasa terbungkus (semua pilihan nampak, tiada yang tersorok di kanan) */
.seg{flex-wrap:wrap}
/* jadual dalam kad boleh skrol mendatar jika terlalu lebar (dibungkus automatik dalam render) */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
/* kad jumlah lebih padat */
.metgrid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
/* rekod jam pekerja: senarai (bukan jadual) supaya muat di telefon */
.logrow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--ln)}
.logmain{flex:1;min-width:0}
.logmain .m{margin:2px 0 0}
.logamt{font-weight:700;white-space:nowrap}
.logact{display:flex;align-items:center;gap:4px;min-width:92px;justify-content:flex-end}
/* borang order: satu lajur di telefon, dua lajur di laptop */
.ofgrid{display:block}
/* kawasan selamat (notch / bar rumah iPhone) */
@supports (padding:max(0px)){
 header{padding-top:max(16px,env(safe-area-inset-top));padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
 main{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
 body{padding-bottom:calc(24px + env(safe-area-inset-bottom))}
}
/* telefon & tablet */
@media (max-width:899px){
 input,select,textarea{font-size:16px} /* elak iPhone zum sendiri bila tekan kotak input */
 .icon,a.icon{min-width:42px;min-height:42px;display:inline-flex;align-items:center;justify-content:center}
 button.x,.back{min-height:42px}
 .seg button{min-height:38px}
 .tgtbtn{min-height:36px;padding:7px 12px}
}
@media (max-width:520px){
 td,th{padding:6px 3px}
 th{font-size:12px}
 .metcard{padding:12px}
 .metnum{font-size:19px}
 .metlbl{font-size:11.5px}
}
/* laptop */
@media (min-width:1100px){
 .ofgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 16px;align-items:start}
 .ofcol{min-width:0}
}
@media (min-width:1400px){
 header,main{max-width:1100px}
}

/* ===== Penambahbaikan telefon & laptop (pusingan 2) ===== */
/* jadual padat (borong) supaya muat dalam kad pada telefon */
@media (max-width:520px){
 table.tight{font-size:12px}
 table.tight td,table.tight th{padding:5px 2px}
 table.tight input{width:50px;padding:6px 4px}
 table.tight .price{font-size:14px}
}
/* bar Simpan sentiasa nampak pada borang order yang panjang */
.stickybar{position:sticky;bottom:0;z-index:5;padding:10px 0 calc(10px + env(safe-area-inset-bottom,0px));background:linear-gradient(to top,var(--bg) 75%,rgba(241,243,244,0))}
/* nama produk Top 3 boleh dua baris; label Top 10 lebih lebar di skrin besar */
.pinfo b{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (min-width:900px){.barlbl{flex-basis:38%;max-width:280px}}
/* kalendar: titik status + senarai tarikh dipilih di telefon */
.calcell{cursor:pointer}
.calcell.sel{background:#fbe9ec}
.caldots,.calagenda{display:none}
.calnav{white-space:nowrap}
@media (max-width:640px){
 .calorder{display:none}
 .caldots{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px;align-items:center}
 .caldot{width:8px;height:8px;border-radius:50%;display:inline-block}
 .caldotn{font-size:9px;color:var(--mut)}
 .calcell{min-height:52px}
 .calagenda{display:block}
 .calnavtxt{display:none}
 .calnav{min-width:44px;font-size:18px}
}
/* telefon: kad ganjil terakhir dalam grid dua lajur ambil lebar penuh (tiada ruang kosong) */
@media (max-width:520px){.metgrid .metcard:last-child:nth-child(odd){grid-column:1/-1}}

/* ===== Paparan pekerja ===== */
.wstate{border:1px solid var(--ln);background:var(--cd);border-radius:12px;padding:14px;margin:10px 0}
.wstate.on{background:#e8f6ee;border-color:#9bd3b3}
.wsl{font-weight:700;font-size:16px}
.wsv{color:var(--mut);margin-top:2px}
.clockbtn{width:100%;min-height:76px;font-size:22px;font-weight:800;border-radius:14px;letter-spacing:.02em;margin:6px 0}
.clockbtn.in{background:#16a34a}
.clockbtn.out{background:var(--ac)}
.clockbtn:disabled{opacity:.55;cursor:wait}
.wbanner{padding:10px 12px;border-radius:8px;font-weight:600;margin:8px 0}
.wbanner.ok{background:#e2f3ea;color:var(--ok)}
.wbanner.bad{background:#fbe7e5;color:var(--bad)}
.navfoot{border-top:1px solid var(--ln);margin-top:8px;padding-top:6px}
.navfoot button{font-size:14px;color:var(--mut);padding:12px 20px}

/* Proses kerja yang boleh dilihat pekerja (checkbox tick) */
.proctick{display:flex;flex-wrap:wrap;gap:10px 16px;margin:4px 0 8px}
.proctick label.chk{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);margin:0}
.proctick input[type=checkbox]{width:auto;margin:0}

/* Progress (rombakan) */
.pgtabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.pgtab{background:#fff;border:1.5px solid;border-radius:999px;padding:7px 14px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:transform .1s}
.pgtab:active{transform:scale(.96)}
.pgtab.on{color:#fff;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.pgcnt{border-radius:999px;padding:1px 7px;font-size:11.5px;font-weight:700}
.pgsec{margin-bottom:20px}
.pgsechd{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.pgdot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.pgsecn{margin-left:auto;background:var(--cd);border:1px solid var(--ln);border-radius:999px;padding:1px 9px;font-size:12px;color:var(--mut);font-weight:600}
.pgcard{background:#fff;border:1px solid var(--ln);border-left:4px solid;border-radius:12px;padding:12px 14px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.pgtop{display:flex;align-items:center;gap:10px;cursor:pointer}
.pgav{width:36px;height:36px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px}
.pgname{font-size:15px;display:block}
.pgdept{font-size:12px;color:var(--mut);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pgprice{font-weight:800;font-size:14.5px;color:var(--ink);white-space:nowrap}
.pgmeta{margin-top:8px;padding-top:8px;border-top:1px dashed var(--ln)}
.pgdue{font-size:12.5px;color:var(--mut)}
.pgdue.urgent{color:var(--bad);font-weight:700}
.pgstatuses{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.pgspill{background:#fff;border:1.5px solid;border-radius:999px;padding:4px 10px;font-size:11.5px;font-weight:600;cursor:pointer}
.pgspill.on{color:#fff}
@media (max-width:480px){
 .pgtab{font-size:12px;padding:6px 11px}
 .pgav{width:32px;height:32px;font-size:13px}
 .pgname{font-size:14px}
 .pgspill{font-size:11px;padding:3px 8px}
}

/* Kad senarai (dikongsi merentas semua menu: Order, Bayaran, Produk, Pelanggan, Jabatan, Agent, Pekerja) */
.itemcard{background:#fff;border:1px solid var(--ln);border-left:4px solid;border-radius:12px;padding:12px 14px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.04);cursor:pointer}
.itemrow{display:flex;align-items:center;gap:10px}
.itemav{width:36px;height:36px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px}
.itemname{font-size:15px;display:block}
.itemsub{font-size:12px;color:var(--mut);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.itemright{text-align:right;flex:0 0 auto}
.itemprice{font-weight:800;font-size:14.5px;color:var(--ink);white-space:nowrap}
.itembadges{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.ibadge{border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;white-space:nowrap}
@media (max-width:480px){.itemav{width:32px;height:32px;font-size:13px}.itemname{font-size:14px}}
