/* ===== ZaabOS design tokens =====
   Warm "spicy" brand identity (orange -> red), distinct from CASHFLOW24's
   indigo. Same structural approach (CSS custom properties, light/dark via
   both prefers-color-scheme and an explicit data-theme override) so the
   two products share nothing visually but share a proven pattern. */
:root{
  --bg:#faf7f2; --surface:#ffffff; --surface-2:#fbf3ea;
  --text:#231710; --text-muted:#7a6a5c; --text-faint:#a99884;
  --border:#f0e4d6;
  --primary:#ea580c; --primary-ink:#ffffff; --primary-soft:#fde9d7;
  --grad-1:#f97316; --grad-2:#dc2626;
  --pos:#0d9488; --pos-soft:#e6f5f3;
  --neg:#e11d48; --neg-soft:#fdeced;
  --blue:#2563eb; --blue-soft:#eaf1fd;
  --amber:#d97706; --amber-soft:#fdf0dc;
  --status-received:#2563eb; --status-preparing:#d97706; --status-ready:#0d9488;
  --status-served:#7c3aed; --status-completed:#16a34a; --status-cancelled:#9997a9;
  --shadow-sm:0 1px 3px rgba(234,88,12,.06), 0 1px 2px rgba(35,23,16,.03);
  --shadow-md:0 10px 28px -10px rgba(234,88,12,.18), 0 2px 8px -2px rgba(234,88,12,.08);
  --shadow-lg:0 24px 50px -16px rgba(220,38,38,.28);
  --radius-sm:12px; --radius-md:18px; --radius-lg:24px; --radius-xl:30px;
  --nav-h:64px; --tabbar-h:68px; --fab-size:56px;
  color-scheme: light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#150f0c; --surface:#1e1712; --surface-2:#241b15;
    --text:#f5efe8; --text-muted:#b8a794; --text-faint:#83725f;
    --border:#3a2c2080;
    --primary:#fb8a3c; --primary-ink:#1e1712; --primary-soft:#3a2410;
    --grad-1:#f97316; --grad-2:#dc2626;
    --pos:#2dd4bf; --pos-soft:#0f2c29;
    --neg:#fb7185; --neg-soft:#3a1520;
    --blue:#60a5fa; --blue-soft:#152238;
    --amber:#fbbf24; --amber-soft:#3a2c0e;
    --status-received:#60a5fa; --status-preparing:#fbbf24; --status-ready:#2dd4bf;
    --status-served:#a78bfa; --status-completed:#4ade80; --status-cancelled:#83725f;
    --shadow-sm:0 1px 3px rgba(0,0,0,.4);
    --shadow-md:0 10px 28px -10px rgba(249,115,22,.35), 0 2px 8px -2px rgba(0,0,0,.4);
    --shadow-lg:0 24px 50px -16px rgba(220,38,38,.45);
    color-scheme: dark;
  }
}
:root[data-theme="dark"]{
  --bg:#150f0c; --surface:#1e1712; --surface-2:#241b15;
  --text:#f5efe8; --text-muted:#b8a794; --text-faint:#83725f;
  --border:#3a2c2080;
  --primary:#fb8a3c; --primary-ink:#1e1712; --primary-soft:#3a2410;
  --grad-1:#f97316; --grad-2:#dc2626;
  --pos:#2dd4bf; --pos-soft:#0f2c29;
  --neg:#fb7185; --neg-soft:#3a1520;
  --blue:#60a5fa; --blue-soft:#152238;
  --amber:#fbbf24; --amber-soft:#3a2c0e;
  --status-received:#60a5fa; --status-preparing:#fbbf24; --status-ready:#2dd4bf;
  --status-served:#a78bfa; --status-completed:#4ade80; --status-cancelled:#83725f;
  --shadow-sm:0 1px 3px rgba(0,0,0,.4);
  --shadow-md:0 10px 28px -10px rgba(249,115,22,.35), 0 2px 8px -2px rgba(0,0,0,.4);
  --shadow-lg:0 24px 50px -16px rgba(220,38,38,.45);
  color-scheme: dark;
}

*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text)}
:root{font-family:"Inter","Prompt","Noto Sans Lao","Noto Sans SC",-apple-system,BlinkMacSystemFont,"Noto Sans Thai",sans-serif;-webkit-font-smoothing:antialiased}
.tabular{font-variant-numeric:tabular-nums}
button,input,select,textarea{font:inherit;color:inherit}
button{-webkit-tap-highlight-color:transparent;cursor:pointer}
small{color:var(--text-muted)}
a{color:var(--primary)}

/* ===== Header ===== */
header{
  height:calc(var(--nav-h) + env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
  padding:env(safe-area-inset-top) max(20px,env(safe-area-inset-right)) 0 max(20px,env(safe-area-inset-left));
  position:sticky;top:0;z-index:20;backdrop-filter:saturate(180%) blur(10px);
}
.brand{font-weight:800;letter-spacing:.02em;font-size:16px;display:flex;align-items:center;gap:8px}
.brand::before{content:"🌶️";font-size:15px;line-height:1}
.brand b{font-weight:900;color:var(--primary)}
.head-right{display:flex;align-items:center;gap:10px}
.head-right select{border:1px solid var(--border);border-radius:10px;padding:8px 10px;background:var(--surface-2);font-size:13px;max-width:150px;color:var(--text)}
.who-wrap{position:relative;flex:none}
.who{display:flex;align-items:center;gap:9px;background:transparent;border:1px solid transparent;border-radius:10px;padding:4px 6px 4px 4px;cursor:pointer;transition:background .15s}
.who:hover,.who:focus-visible{background:var(--surface-2)}
.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--grad-1),var(--grad-2));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;flex:none}
.who-text{display:flex;flex-direction:column;line-height:1.25;text-align:left;min-width:0}
.who-text span,.who-text small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px;display:block}
.who-text span{font-weight:700;font-size:13.5px}
.who-text small{font-size:11px}
.who-caret{font-size:10px;color:var(--text-faint);flex:none}
.who-menu{position:absolute;top:calc(100% + 8px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-md);min-width:190px;padding:6px;z-index:40;display:flex;flex-direction:column;gap:2px}
.who-menu button{display:block;width:100%;text-align:left;background:transparent;border:0;border-radius:8px;padding:10px 12px;font-size:13px;font-weight:600;color:var(--text);cursor:pointer;white-space:nowrap}
.who-menu button:hover{background:var(--surface-2)}
.ghost-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:8px 11px;cursor:pointer;font-size:12.5px;white-space:nowrap;transition:background .15s,border-color .15s}
.ghost-btn:hover{background:var(--surface-2);border-color:var(--text-faint)}
.ghost-btn.primary{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}

/* ===== Scope bar ===== */
.biz-scope-bar{display:flex;align-items:center;gap:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:14px;padding:10px 14px;margin-bottom:14px;font-size:13px;flex-wrap:wrap}
.biz-scope-lbl{font-weight:700;color:var(--text-muted);white-space:nowrap}
.biz-scope-bar select{flex:1;min-width:120px;border:1px solid var(--border);border-radius:10px;padding:8px 10px;background:var(--surface);font-size:13px;font-weight:600;color:var(--text)}

/* ===== Layout ===== */
main{max-width:960px;margin:auto;padding:18px 16px 34px}
main.narrow{max-width:560px}

/* ===== Hero ===== */
.hero{
  background:linear-gradient(135deg,var(--grad-1),var(--grad-2));color:#fff;
  border-radius:var(--radius-xl);padding:26px 24px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;
  box-shadow:var(--shadow-lg);position:relative;overflow:hidden;
}
.hero::after{content:"";position:absolute;inset:0;background:radial-gradient(120px 120px at 88% -10%,rgba(255,255,255,.25),transparent 70%)}
.hero>div{position:relative;z-index:1}
.hero small{opacity:.85;color:#fff;font-size:12.5px;font-weight:600;letter-spacing:.02em}
.hero .headline{font-size:26px;font-weight:800;margin-top:6px;letter-spacing:-.01em}
.add,.save{border:0;border-radius:16px;background:#fff;color:var(--primary);font-weight:800;padding:13px 18px;cursor:pointer;position:relative;z-index:1;box-shadow:0 6px 16px -4px rgba(0,0,0,.25);white-space:nowrap;transition:transform .12s}
.save{background:var(--primary);color:var(--primary-ink);box-shadow:none;width:100%;margin-top:12px}
.save:hover{filter:brightness(1.06)}
.save:active{transform:scale(.99)}
.save:disabled{opacity:.5;cursor:not-allowed}
.save.secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border)}
.save.danger{background:var(--neg);color:#fff}

/* ===== Tabs ===== */
.tabs{display:flex;gap:6px;margin:18px 0 4px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{
  border:1px solid var(--border);background:var(--surface);color:var(--text-muted);border-radius:13px;
  padding:10px 14px;cursor:pointer;font-weight:700;white-space:nowrap;font-size:13.5px;
  display:flex;align-items:center;gap:6px;transition:background .15s,color .15s,border-color .15s;
}
.tabs .tab-ic{font-size:15px;line-height:1}
.tabs .active{background:var(--text);color:var(--surface);border-color:var(--text)}
:root[data-theme="dark"] .tabs .active{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .tabs .active{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}
}

.filters{display:flex;gap:8px;margin:0 0 16px;flex-wrap:wrap}
.filters button,.panel-head button,.filters-inline select,.panel-head select{
  border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:11px;padding:9px 13px;cursor:pointer;font-size:13px;font-weight:600;transition:background .15s;
}
.filters button:hover,.panel-head button:hover{background:var(--surface-2)}
.filters .active{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}

/* ===== Cards / panels ===== */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.card,.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow-sm);position:relative}
.card span{color:var(--text-muted);font-size:12.5px;font-weight:600}
.card strong{display:block;font-size:23px;margin-top:8px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:normal}
.panel{margin-top:14px}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:4px;flex-wrap:wrap}
.panel h2{font-size:15.5px;margin:0 0 14px;font-weight:800}
.panel h3{font-size:13px;margin:22px 0 8px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ---- pill / status badge ---- */
.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:99px;font-size:11px;font-weight:700;white-space:nowrap;line-height:1.5}
.pill .pill-dot{width:7px;height:7px;border-radius:50%;flex:none}
.pill.received{background:var(--blue-soft);color:var(--status-received)}
.pill.preparing{background:var(--amber-soft);color:var(--status-preparing)}
.pill.ready{background:var(--pos-soft);color:var(--status-ready)}
.pill.served{background:#f1eafd;color:var(--status-served)}
.pill.completed{background:#e7f9ec;color:var(--status-completed)}
.pill.cancelled{background:var(--surface-2);color:var(--status-cancelled)}
.pill.unpaid{background:var(--neg-soft);color:var(--neg)}
.pill.paid{background:var(--pos-soft);color:var(--pos)}
.pill .pill-dot.received{background:var(--status-received)}
.pill .pill-dot.preparing{background:var(--status-preparing)}
.pill .pill-dot.ready{background:var(--status-ready)}
.pill .pill-dot.served{background:var(--status-served)}
.pill .pill-dot.completed{background:var(--status-completed)}
.pill .pill-dot.cancelled{background:var(--status-cancelled)}

.avatar-badge{width:38px;height:38px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:16px;flex:none}

.row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--border)}
.row:first-child{border-top:0}
.row-right{display:flex;align-items:center;gap:7px;white-space:nowrap}
.icon-btn{border:0;background:var(--surface-2);color:var(--text);border-radius:9px;width:32px;height:32px;cursor:pointer;font-size:14px;transition:background .15s}
.icon-btn:hover{background:var(--border)}
.icon-btn.danger{color:var(--neg)}
.icon-btn:disabled{opacity:.3;cursor:not-allowed}

.filters-inline{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.manage-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.manage-row{display:flex;justify-content:space-between;padding:12px 0;border-top:1px solid var(--border);gap:10px}
.manage-row:first-child{border-top:0}
.manage-row small{color:var(--text-muted)}

/* ===== Modals ===== */
.modal{position:fixed;inset:0;background:rgba(20,12,8,.5);backdrop-filter:blur(2px);display:none;align-items:flex-end;justify-content:center;z-index:50}
.modal.show{display:flex;animation:fade-in .15s ease-out}
@keyframes fade-in{from{opacity:0}to{opacity:1}}
.sheet{
  background:var(--surface);width:min(620px,100%);border-radius:var(--radius-xl) var(--radius-xl) 0 0;padding:10px 22px 24px;
  max-height:92vh;overflow:auto;box-shadow:var(--shadow-lg);animation:sheet-up .2s cubic-bezier(.2,.9,.3,1);
}
@keyframes sheet-up{from{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}
.sheet.small{width:min(500px,100%)}
.sheet.wide{width:min(760px,100%)}
.sheet::before{content:"";display:block;width:38px;height:4px;border-radius:99px;background:var(--border);margin:6px auto 12px}
.sheet-head{display:flex;justify-content:space-between;align-items:center}
.sheet-head h2{margin:0;font-size:18px;font-weight:800}
.sheet-head button{border:0;background:var(--surface-2);color:var(--text-muted);font-size:20px;cursor:pointer;width:32px;height:32px;border-radius:50%;line-height:1;display:flex;align-items:center;justify-content:center}
.type{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:16px 0}
.type button{padding:12px;border:1px solid var(--border);background:var(--surface-2);border-radius:13px;font-weight:700;cursor:pointer;color:var(--text-muted);font-size:13px;transition:.15s}
.type button.active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}
label{display:block;font-size:12.5px;color:var(--text-muted);margin:12px 0;font-weight:600}
input,select,textarea{display:block;width:100%;margin-top:6px;padding:12px 13px;border:1px solid var(--border);border-radius:12px;font-size:15px;background:var(--surface-2);color:var(--text)}
textarea{resize:vertical;min-height:64px;font-family:inherit}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);background:var(--surface)}
.checkbox-row{display:flex;align-items:center;gap:8px;margin:12px 0}
.checkbox-row input{width:auto;margin:0}
.hidden{display:none!important}

@media (min-width:640px){
  .modal{align-items:center}
  .sheet{border-radius:var(--radius-xl);max-height:88vh}
  .sheet::before{display:none}
}

/* ===== Language switcher (shared across all pages) — pill button, not a bare dropdown line ===== */
.lang-select{
  display:inline-block;width:auto;max-width:max-content;margin-top:0;
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:9px 30px 9px 14px;background:var(--surface);color:var(--text);
  font-size:13px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6'><path d='M1 1l4 4 4-4' stroke='%237a6a5c' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;
  transition:box-shadow .15s,border-color .15s,transform .1s;
}
.lang-select:hover{box-shadow:var(--shadow-md);border-color:var(--primary)}
.lang-select:active{transform:scale(.98)}
.lang-select:focus{outline:none;box-shadow:var(--shadow-md);border-color:var(--primary)}
.lang-select-login{position:fixed;top:16px;right:16px;z-index:5;width:auto;box-shadow:var(--shadow-md)}
.lang-bar{display:flex;justify-content:flex-end;padding:12px 16px 0}

/* ===== Password show/hide toggle (auto-wired by i18n.js on every password field) ===== */
.pw-field{position:relative;margin-top:6px}
.pw-field .pw-input{margin-top:0;width:100%;padding-right:42px}
.pw-toggle{
  position:absolute;top:50%;right:4px;transform:translateY(-50%);
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;padding:0;border:0;border-radius:8px;
  background:transparent;color:var(--text-muted);cursor:pointer;
  transition:background .15s,color .15s;
}
.pw-toggle:hover{background:var(--surface-2);color:var(--text)}
.pw-toggle-active{color:var(--primary)}

/* ===== Login ===== */
.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:
  radial-gradient(600px 400px at 15% 10%,var(--primary-soft),transparent 60%),
  radial-gradient(600px 400px at 85% 90%,var(--primary-soft),transparent 60%),
  var(--bg);padding:20px}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:34px 28px;width:min(380px,100%);box-shadow:var(--shadow-md)}
.brand.center{text-align:center;font-size:22px;justify-content:center}
.login-sub{color:var(--text-muted);font-size:13px;text-align:center;margin:10px 0 4px}
.login-error{color:var(--neg);font-size:13px;min-height:18px;margin-top:6px;font-weight:600}
.link-btn{display:block;width:100%;text-align:center;background:transparent;border:0;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;padding:12px 0 0;text-decoration:underline}
.login-hint{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-top:10px;font-size:12.5px;line-height:1.6;color:var(--text-muted)}

/* ===== Misc ===== */
.all-mode-notice{background:var(--primary-soft);border:1px solid var(--border);color:var(--primary);border-radius:14px;padding:12px 16px;margin-bottom:14px;font-size:13px;font-weight:600}
.hint{color:var(--text-muted);font-size:12px;margin:14px 0 2px}
.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted)}
.empty-state .es-ic{font-size:40px;display:block;margin-bottom:10px}
.toast-wrap{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center;width:min(420px,92vw)}
.toast{background:var(--text);color:var(--surface);padding:12px 18px;border-radius:12px;font-size:13.5px;font-weight:600;box-shadow:var(--shadow-md);animation:toast-in .2s ease-out}
.toast.err{background:var(--neg)}
.toast.ok{background:var(--pos)}
@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ===== Table grid (admin) ===== */
.table-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
.table-chip{border:1px solid var(--border);border-radius:14px;padding:12px 10px;background:var(--surface-2);text-align:center;position:relative}
.table-chip .tc-name{font-weight:800;font-size:14px}
.table-chip .tc-actions{display:flex;justify-content:center;gap:6px;margin-top:8px}
.table-chip button{border:0;background:var(--surface);border-radius:8px;padding:5px 8px;font-size:11px;font-weight:700;color:var(--text-muted)}

/* ===== Menu item cards (admin + customer) ===== */
.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.menu-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px;position:relative}
.menu-card.sold-out{opacity:.55}
.menu-card .mc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.menu-card .mc-name{font-weight:800;font-size:15px}
.menu-card .mc-desc{color:var(--text-muted);font-size:12.5px;line-height:1.5}
.menu-card .mc-price{font-weight:800;color:var(--primary);font-size:16px;margin-top:auto}
.menu-card .mc-badge{position:absolute;top:12px;right:12px;background:var(--neg);color:#fff;font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:99px}
.menu-card .mc-photo{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;margin:-2px 0 2px;background:var(--surface-2)}

/* ===== Menu item image picker (admin form) ===== */
.image-picker{display:flex;flex-direction:column;align-items:center;gap:10px;border:1px dashed var(--border);border-radius:14px;padding:16px;background:var(--surface-2)}
.image-picker-preview{width:100%;max-width:220px}
.image-picker-preview img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;border:1px solid var(--border)}
.image-picker-empty{font-size:36px;color:var(--text-muted);padding:14px 0}
.image-picker-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}

/* ===== Item photo in the item-option modal (customer + staff) ===== */
.item-modal-photo{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:14px;margin-bottom:6px}
.menu-card .mc-actions{display:flex;gap:6px;flex-wrap:wrap}
.cat-chip{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface);font-weight:700;font-size:13px;white-space:nowrap;cursor:pointer}
.cat-chip.active{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}
.cat-scroll{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;margin-bottom:14px}
.cat-scroll::-webkit-scrollbar{display:none}

/* option group form builder */
.opt-group-box{border:1px dashed var(--border);border-radius:14px;padding:12px;margin-top:12px}
.opt-group-box .og-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.opt-row{display:flex;gap:8px;align-items:center;margin-top:8px}
.opt-row input{margin-top:0}
.opt-row input[type=number]{max-width:110px}
.add-opt-btn,.add-group-btn{border:1px dashed var(--border);background:transparent;color:var(--primary);font-weight:700;font-size:12.5px;padding:8px 12px;border-radius:10px;width:100%;margin-top:8px}

/* ===== Customer ordering page ===== */
.order-hero{background:linear-gradient(135deg,var(--grad-1),var(--grad-2));color:#fff;border-radius:0 0 var(--radius-xl) var(--radius-xl);padding:20px 20px 24px;text-align:center}
.order-hero .oh-icon{font-size:34px}
.order-hero .oh-name{font-weight:800;font-size:19px;margin-top:4px}
.order-hero .oh-table{margin-top:8px;display:inline-flex;background:rgba(255,255,255,.2);padding:6px 14px;border-radius:99px;font-weight:700;font-size:13px}
.qty-stepper{display:flex;align-items:center;gap:10px}
.qty-stepper button{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:var(--surface-2);font-weight:800;font-size:16px;display:flex;align-items:center;justify-content:center}
.qty-stepper span{min-width:20px;text-align:center;font-weight:800}
.option-pick{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.option-pick label{display:flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:10px;padding:8px 12px;margin:0;font-size:13px;font-weight:600;color:var(--text);cursor:pointer;background:var(--surface-2)}
.option-pick input{width:auto;margin:0}
.option-pick label.checked{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}
.cart-fab{
  position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));max-width:560px;margin:auto;
  background:var(--text);color:var(--surface);border-radius:18px;padding:14px 18px;display:flex;justify-content:space-between;align-items:center;
  box-shadow:var(--shadow-lg);font-weight:800;z-index:30;border:0;
}
.cart-line{display:flex;justify-content:space-between;gap:10px;padding:12px 0;border-top:1px solid var(--border)}
.cart-line:first-child{border-top:0}
.cart-line .cl-name{font-weight:700;font-size:14px}
.cart-line .cl-opts{color:var(--text-muted);font-size:12px;margin-top:2px}
.cart-line .cl-price{font-weight:800;white-space:nowrap}
.cart-total-row{display:flex;justify-content:space-between;padding:14px 0;font-weight:800;font-size:17px;border-top:2px solid var(--border);margin-top:6px}
.table-select-error{background:var(--neg-soft);color:var(--neg);border-radius:12px;padding:12px 14px;font-weight:700;font-size:13.5px;margin-top:8px;display:flex;align-items:center;gap:8px}
.table-select-error::before{content:"⚠️"}
.table-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;margin-top:10px}
.table-pick-grid button{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;padding:14px 8px;font-weight:800;font-size:13px}
.table-pick-grid button.active{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}

/* ===== Order tracking / kitchen ticket card ===== */
.order-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow-sm)}
.order-card .oc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.order-card .oc-no{font-weight:800;font-size:15px}
.order-card .oc-meta{color:var(--text-muted);font-size:12.5px;margin-top:2px}
.order-card .oc-items{margin-top:12px}
.status-track{display:flex;justify-content:space-between;margin-top:18px;position:relative}
.status-track::before{content:"";position:absolute;top:13px;left:0;right:0;height:2px;background:var(--border)}
.status-track .st-step{flex:1;text-align:center;position:relative;z-index:1}
.status-track .st-dot{width:26px;height:26px;border-radius:50%;background:var(--surface-2);border:2px solid var(--border);margin:0 auto 6px;display:flex;align-items:center;justify-content:center;font-size:12px}
.status-track .st-step.done .st-dot{background:var(--pos);border-color:var(--pos);color:#fff}
.status-track .st-step.current .st-dot{background:var(--primary);border-color:var(--primary);color:#fff}
.status-track .st-label{font-size:10.5px;font-weight:700;color:var(--text-muted)}
.status-track .st-step.done .st-label,.status-track .st-step.current .st-label{color:var(--text)}

/* ===== Kitchen board ===== */
.kitchen-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.kitchen-ticket{background:var(--surface);border:1px solid var(--border);border-left:5px solid var(--status-received);border-radius:var(--radius-md);padding:16px;box-shadow:var(--shadow-sm)}
.kitchen-ticket.preparing{border-left-color:var(--status-preparing)}
.kitchen-ticket.ready{border-left-color:var(--status-ready)}
.kitchen-ticket .kt-head{display:flex;justify-content:space-between;align-items:center}
.kitchen-ticket .kt-no{font-weight:800;font-size:16px}
.kitchen-ticket .kt-time{font-size:11px;color:var(--text-faint)}
.kitchen-ticket .kt-table{font-weight:700;color:var(--primary);margin-top:2px;font-size:13px}
.kitchen-ticket ul{list-style:none;padding:0;margin:10px 0}
.kitchen-ticket li{padding:6px 0;border-top:1px dashed var(--border);font-size:13.5px}
.kitchen-ticket li:first-child{border-top:0}
.kitchen-ticket li b{margin-right:4px}
.kitchen-ticket .kt-opts,.kitchen-ticket .kt-notes{color:var(--text-muted);font-size:11.5px;margin-left:18px}
.kitchen-ticket .kt-actions{display:flex;gap:8px;margin-top:10px}
.kitchen-ticket .kt-actions button{flex:1;border:0;border-radius:10px;padding:10px;font-weight:800;font-size:12.5px;color:#fff}
.kitchen-ticket .kt-actions .btn-preparing{background:var(--status-preparing)}
.kitchen-ticket .kt-actions .btn-ready{background:var(--status-ready)}
.kitchen-ticket .kt-actions .btn-served{background:var(--status-served)}
.kitchen-ticket .kt-actions .btn-cancel{background:var(--surface-2);color:var(--text-muted)}

/* ===== Live table board + persistent side panel (Orders tab) ===== */
.board-row{display:flex;gap:16px;align-items:flex-start;margin-top:14px}
.board-panel{flex:1 1 auto;min-width:0}
.table-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.board-tile{
  position:relative;border:1.5px solid var(--border);border-radius:var(--radius-md);
  background:var(--surface);padding:14px 12px;cursor:pointer;text-align:left;
  transition:transform .1s,box-shadow .15s,border-color .15s;box-shadow:var(--shadow-sm);
}
.board-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.board-tile .bt-name{font-weight:800;font-size:15px}
.board-tile .bt-meta{color:var(--text-muted);font-size:11.5px;margin-top:4px;line-height:1.5}
.board-tile .bt-empty-lbl{color:var(--text-faint);font-size:12px;margin-top:6px}
.board-tile.status-received{border-color:var(--status-received);background:var(--blue-soft)}
.board-tile.status-preparing{border-color:var(--status-preparing);background:var(--amber-soft)}
.board-tile.status-ready{border-color:var(--status-ready);background:var(--pos-soft)}
.board-tile.status-served{border-color:var(--status-served);background:#f1eafd}
:root[data-theme="dark"] .board-tile.status-served{background:#241a3a}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .board-tile.status-served{background:#241a3a}}
.board-tile .bt-badge{
  position:absolute;top:-7px;right:-7px;background:var(--neg);color:#fff;font-size:10px;font-weight:800;
  padding:3px 7px;border-radius:99px;box-shadow:0 2px 6px rgba(0,0,0,.25);animation:board-pulse 1.6s ease-in-out infinite;
}
@keyframes board-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.board-tile .bt-pay-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--neg);margin-right:5px;vertical-align:middle}

.side-panel{
  flex:0 0 280px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:16px;box-shadow:var(--shadow-sm);position:sticky;top:calc(var(--nav-h) + 14px);max-height:calc(100vh - var(--nav-h) - 28px);overflow:auto;
}
.side-panel h3{font-size:13px;margin:0 0 12px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.side-row{
  display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 0;border-top:1px solid var(--border);
  cursor:pointer;background:none;border-left:0;border-right:0;border-bottom:0;width:100%;text-align:left;
}
.side-row:first-of-type{border-top:0}
.side-row:hover{background:var(--surface-2)}
.side-row .sr-main{min-width:0}
.side-row .sr-no{font-weight:700;font-size:13px;display:flex;align-items:center;gap:6px}
.side-row .sr-meta{color:var(--text-muted);font-size:11.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-row .sr-right{text-align:right;flex:none}
.side-row .sr-amt{font-weight:800;font-size:12.5px}
.sr-new-dot{width:7px;height:7px;border-radius:50%;background:var(--status-received);flex:none;animation:board-pulse 1.6s ease-in-out infinite}

.other-orders-wrap{margin-top:18px}
.other-orders-wrap h3{font-size:13px;margin:0 0 10px;color:var(--text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em}

/* ===== Order detail modal — reuses .order-card, stacks multiple ===== */
#orderDetailBody .order-card{margin-top:12px}
#orderDetailBody .order-card:first-child{margin-top:0}
.oc-pay-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.btn-confirm-pay{background:var(--pos)!important;color:#fff!important;border-color:var(--pos)!important}

/* ===== Printable receipt ===== */
.receipt-print{position:absolute;left:-9999px;top:0;font-family:"Inter",monospace;width:300px;padding:14px;color:#000;background:#fff}
.receipt-print h3{text-align:center;margin:0 0 4px;font-size:16px}
.receipt-print .rp-sub{text-align:center;font-size:11px;color:#555;margin-bottom:10px}
.receipt-print table{width:100%;border-collapse:collapse;font-size:12px}
.receipt-print td{padding:3px 0;vertical-align:top}
.receipt-print .rp-line{border-top:1px dashed #999;margin:8px 0}
.receipt-print .rp-total{display:flex;justify-content:space-between;font-weight:800;font-size:14px;margin-top:8px;border-top:1px solid #000;padding-top:6px}
.receipt-print .rp-thanks{text-align:center;margin-top:14px;font-size:12px}
@media print{
  body *{visibility:hidden}
  #receiptPrintArea,#receiptPrintArea *{visibility:visible}
  #receiptPrintArea{position:absolute;top:0;left:0;width:100%}
}

/* ===== Customer menu — category drill-down ===== */
.category-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-top:4px}
.category-tile{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:18px 14px;
  text-align:center;cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .1s,box-shadow .15s;
}
.category-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.category-tile .ct-icon{font-size:30px;display:block;margin-bottom:8px}
.category-tile .ct-name{font-weight:800;font-size:14px}
.category-tile .ct-count{color:var(--text-muted);font-size:11.5px;margin-top:3px}
.category-tile.ct-all{background:linear-gradient(135deg,var(--grad-1),var(--grad-2));color:#fff;border-color:transparent}
.category-tile.ct-all .ct-count{color:rgba(255,255,255,.85)}
.items-view-head{display:flex;align-items:center;gap:10px;margin:0 0 14px}
.items-view-head .ivh-back{border:1px solid var(--border);background:var(--surface);border-radius:11px;padding:9px 13px;font-weight:700;font-size:13px;cursor:pointer;color:var(--text)}
.items-view-head .ivh-title{font-weight:800;font-size:17px;display:flex;align-items:center;gap:6px}

@media (max-width:900px){
  .board-row{flex-direction:column}
  .side-panel{flex:none;width:100%;position:static;max-height:none}
}

/* ===== Mobile ===== */
@media (max-width:640px){
  main{padding:16px 14px 90px}
  .hero{padding:22px 20px;border-radius:24px}
  .cards,.manage-grid{grid-template-columns:1fr 1fr}
  .row{align-items:flex-start}
  .row-right{flex-direction:row;align-items:flex-end}
  .panel-head{align-items:flex-start;flex-wrap:wrap}
  .tabs{
    position:fixed;left:0;right:0;bottom:0;margin:0;z-index:30;
    background:var(--surface);border-top:1px solid var(--border);
    padding:6px 6px calc(6px + env(safe-area-inset-bottom));
    box-shadow:0 -8px 24px -12px rgba(20,21,26,.15);
    overflow-x:visible;
  }
  .tabs button{
    flex:1 1 0;flex-direction:column;gap:2px;border:0;background:transparent;border-radius:12px;
    padding:7px 2px;font-size:10.5px;font-weight:700;color:var(--text-faint);min-width:0;
  }
  .tabs .tab-ic{font-size:19px}
  .tabs .tab-lb{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .tabs .active{background:transparent;color:var(--primary)}
  header{padding:env(safe-area-inset-top) max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));gap:6px}
  .head-right{gap:6px}
  .who-text{display:none}
  .head-right select{max-width:88px;font-size:12px;padding:7px 20px 7px 8px;background-position:right 7px center;background-size:8px}
  .brand{font-size:14px}
}
