/* ============================================================
   WhatsApp Shop by Vyapar Automation — mobile-first UI
   ============================================================ */
:root{
  --brand:#0b6b54; --brand-dark:#08543f; --brand-soft:#e6f2ee; --brand-ink:#075040;
  --wa:#25d366; --wa-ink:#053b23;
  --bg:#f4f6f7; --card:#ffffff; --card-2:#f8faf9;
  --ink:#0f1a17; --muted:#68756f; --line:#e4e9e7;
  --danger:#9f1239; --danger-soft:#fdeaf0;
  --warn:#b45309; --warn-soft:#fff5e6;
  --ok:#047857; --ok-soft:#e3f5ee;
  --radius:16px;
  --shadow:0 1px 2px rgba(11,40,32,.05), 0 2px 8px -4px rgba(11,40,32,.12);
  --shadow-lg:0 12px 32px -18px rgba(11,40,32,.45);
  --tap:46px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:var(--font); background:var(--bg); color:var(--ink);
  font-size:15px; line-height:1.45; -webkit-font-smoothing:antialiased;
  padding-bottom:calc(72px + env(safe-area-inset-bottom));
}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}
.content{max-width:560px;margin:0 auto;padding:14px 14px 24px}
.muted{color:var(--muted)}
.small{font-size:12.5px}
.right{text-align:right}
.nowrap{white-space:nowrap}
.hide{display:none !important}

/* ---------------- top bar ---------------- */
.topbar{
  position:sticky;top:0;z-index:30;background:var(--brand);color:#fff;
  padding:calc(env(safe-area-inset-top) + 10px) 0 10px;
  box-shadow:0 2px 12px rgba(8,60,45,.18);
}
.topbar .inner{max-width:560px;margin:0 auto;padding:0 12px;display:flex;align-items:center;gap:8px}
.topbar .titles{flex:1;min-width:0}
.topbar h1{font-size:17px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar p{margin:1px 0 0;font-size:11.5px;opacity:.82;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iconbtn{
  width:36px;height:36px;flex:none;display:grid;place-items:center;border:0;
  border-radius:11px;background:rgba(255,255,255,.16);color:#fff;cursor:pointer
}
.iconbtn:active{transform:scale(.94)}

/* ---------------- desktop sidebar ---------------- */
.sidebar{display:none}
@media (min-width:900px){
  body{padding-bottom:0}
  .sidebar{
    display:flex;flex-direction:column;gap:4px;position:fixed;inset:0 auto 0 0;width:246px;
    background:#fff;border-right:1px solid var(--line);padding:18px 14px;z-index:40
  }
  .sidebar .brand{display:flex;gap:10px;align-items:center;padding:4px 8px 18px}
  .sidebar .brand .mark{width:34px;height:34px;border-radius:10px;background:var(--brand);color:#fff;display:grid;place-items:center}
  .sidebar .brand b{display:block;font-size:15px}
  .sidebar .brand small{color:var(--muted);font-size:11px}
  .sidebar nav{display:flex;flex-direction:column;gap:2px}
  .sidebar nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;font-size:14.5px;font-weight:550;color:var(--muted)}
  .sidebar nav a:hover{background:var(--card-2);color:var(--ink)}
  .sidebar nav a.on{background:var(--brand-soft);color:var(--brand-ink);font-weight:650}
  .side-store{margin-top:auto;padding:12px;border-radius:12px;background:var(--card-2);font-size:13px}
  .side-store small{display:block;color:var(--muted);font-size:11px}
  .side-out{display:flex;align-items:center;gap:10px;padding:10px 12px;color:var(--muted);font-size:14px;border-radius:11px}
  .side-out:hover{background:var(--card-2)}
  .main{margin-left:246px}
  .topbar{background:transparent;color:var(--ink);box-shadow:none;padding:22px 0 6px;position:static}
  .topbar .inner{max-width:900px;padding:0 26px}
  .topbar h1{font-size:23px}
  .topbar p{opacity:.7;color:var(--muted)}
  .topbar .iconbtn{background:#fff;color:var(--muted);border:1px solid var(--line)}
  .content{max-width:900px;padding:8px 26px 40px}
  .tabbar{display:none}
  .only-mobile{display:none !important}
  .grid-2{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;align-items:start}
}

/* ---------------- bottom tab bar ---------------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;
  background:rgba(255,255,255,.97);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)
}
.tabbar a{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:9px 0 11px;font-size:10.5px;font-weight:600;color:var(--muted)
}
.tabbar a.on{color:var(--brand)}

/* ---------------- cards & sections ---------------- */
.card,.section{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}
.section{margin-bottom:12px}
.section h3,.section-title{
  margin:0 0 10px;font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:700
}
.section-title.row{display:flex;align-items:center;justify-content:space-between}

/* stat tiles */
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}
.stats.three{grid-template-columns:repeat(3,1fr)}
.stat{background:var(--card);border-radius:14px;padding:13px 12px;box-shadow:var(--shadow)}
.stat b{display:block;font-size:22px;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.15}
.stat span{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.stat.hero{grid-column:1 / -1;background:linear-gradient(135deg,var(--brand) 0%,#0e8465 100%);color:#fff}
.stat.hero b{font-size:30px}
.stat.hero span{color:rgba(255,255,255,.8)}
.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mini{background:var(--card);border-radius:12px;padding:10px;box-shadow:var(--shadow);text-align:center}
.mini b{display:block;font-size:17px;font-variant-numeric:tabular-nums}
.mini span{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.mini i{display:block;width:18px;height:3px;border-radius:2px;margin:0 auto 7px}

/* ---------------- filters ---------------- */
.chiprow{display:flex;gap:7px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}
.chiprow::-webkit-scrollbar{display:none}
.chip{
  white-space:nowrap;padding:8px 13px;border-radius:11px;background:var(--card);
  border:1px solid var(--line);font-size:13px;font-weight:600;color:var(--muted);box-shadow:var(--shadow)
}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.chip .n{opacity:.75;font-weight:500;margin-left:3px}
.searchbar{display:flex;gap:8px;margin:2px 0 10px}
.searchbar .field{
  flex:1;display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:0 12px;box-shadow:var(--shadow);color:var(--muted)
}
.searchbar input{flex:1;border:0;outline:0;background:none;padding:12px 0;font-size:15px;min-width:0}
.searchbar button{border:0;background:var(--brand);color:#fff;border-radius:12px;padding:0 16px;font-weight:650}
.daterow{display:flex;gap:8px;align-items:flex-end;margin-bottom:10px}
.daterow label{flex:1;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.daterow input{width:100%;margin-top:4px;padding:10px;border:1px solid var(--line);border-radius:11px;background:var(--card)}
.daterow button{border:0;background:var(--brand);color:#fff;border-radius:11px;padding:11px 16px;font-weight:650}

/* ---------------- order cards ---------------- */
.olist{display:flex;flex-direction:column;gap:10px}
.ocard{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:13px 14px;display:block;border:1px solid transparent}
.ocard:active{transform:scale(.995)}
.ocard .l1{display:flex;align-items:flex-start;gap:10px}
.ocard .num{font-size:12px;color:var(--muted);font-weight:600;font-variant-numeric:tabular-nums}
.ocard .who{flex:1;min-width:0}
.ocard .who b{display:block;font-size:15.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ocard .who span{font-size:12.5px;color:var(--muted)}
.ocard .amt{text-align:right;flex:none}
.ocard .amt b{font-size:16px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.ocard .amt span{display:block;font-size:11.5px;color:var(--muted)}
.ocard .items{margin-top:7px;font-size:13px;color:#48564f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ocard .l3{display:flex;align-items:center;gap:8px;margin-top:9px;font-size:12px;color:var(--muted);flex-wrap:wrap}
.badge{padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.01em}
.tag-track{display:inline-flex;align-items:center;gap:5px;background:var(--brand-soft);color:var(--brand-ink);
  padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:600}
.tag-cod{background:var(--warn-soft);color:var(--warn);padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700}
.tag-warn{background:var(--warn-soft);color:var(--warn);padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700}
.tag-paid{display:inline-flex;align-items:center;gap:4px;background:#e3f5ee;color:#047857;
  padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:700}
.ocard.cart{border-left:3px solid #f59e0b}

/* ---------------- detail page ---------------- */
.kv{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.kv:last-child{border-bottom:0}
.kv span{color:var(--muted);flex:none}
.kv b{text-align:right;font-weight:600;word-break:break-word}
.item{display:flex;gap:11px;padding:10px 0;border-bottom:1px solid var(--line)}
.item:last-child{border-bottom:0}
.item img{width:44px;height:44px;border-radius:10px;object-fit:cover;background:var(--card-2);flex:none}
.item .ph{width:44px;height:44px;border-radius:10px;background:var(--brand-soft);color:var(--brand-ink);display:grid;place-items:center;flex:none;font-weight:700}
.item .name{flex:1;min-width:0}
.item .name b{display:block;font-size:14.5px;font-weight:600}
.item .name span{font-size:12px;color:var(--muted)}
.totals{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.totals .row{display:flex;justify-content:space-between;padding:4px 0;font-size:14px;color:var(--muted)}
.totals .row b{color:var(--ink);font-variant-numeric:tabular-nums}
.totals .grand{display:flex;justify-content:space-between;padding-top:9px;margin-top:6px;border-top:1px solid var(--line);font-size:17px;font-weight:700}
/* Delivery address — every line wraps inside the card, however long a
   street name or landmark the portal sends. */
.address{font-size:14.5px;line-height:1.6;overflow-wrap:anywhere;word-break:break-word;
  hyphens:auto;max-width:100%;min-width:0}
.address .ln{display:block}
.address .ln.name{font-weight:600}
.address .ln.tail{color:var(--muted)}
.addr-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.addr-grid .full{grid-column:1 / -1}
@media (max-width:380px){.addr-grid{grid-template-columns:1fr}}

/* timeline */
.timeline{position:relative;padding-left:22px}
.timeline:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl{position:relative;padding:0 0 14px}
.tl:last-child{padding-bottom:0}
.tl:before{content:"";position:absolute;left:-21px;top:4px;width:12px;height:12px;border-radius:50%;background:#fff;border:2.5px solid var(--c,var(--brand))}
.tl b{display:block;font-size:14px}
.tl span{font-size:12px;color:var(--muted)}

/* ---------------- buttons & forms ---------------- */
.btn{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  min-height:var(--tap);border:0;border-radius:13px;padding:12px 16px;
  font-size:14.5px;font-weight:650;background:var(--card);color:var(--ink);
  box-shadow:var(--shadow);cursor:pointer;text-align:center
}
.btn:active{transform:scale(.985)}
.btn.primary{background:var(--brand);color:#fff}
.btn.wa{background:var(--wa);color:var(--wa-ink)}
.btn.ghost{background:transparent;border:1px solid var(--line);box-shadow:none;color:var(--muted)}
.btn.danger{background:var(--danger-soft);color:var(--danger);box-shadow:none}
.btn.sm{min-height:38px;padding:8px 12px;font-size:13px;border-radius:11px}
.btn[disabled]{opacity:.55;pointer-events:none}
.btnrow{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.btnrow.three{grid-template-columns:repeat(3,1fr)}
.field{display:block;margin-bottom:12px}
.field>span{display:block;font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:650;margin-bottom:5px}
.field input,.field select,.field textarea{
  width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:12px;
  background:var(--card);font-size:15.5px;outline:none
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,107,84,.1)}
.field textarea{min-height:76px;resize:vertical}
.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.switch:last-of-type{border-bottom:0}
.switch b{display:block;font-size:14.5px;font-weight:600}
.switch small{color:var(--muted);font-size:12.5px}
.switch input{width:46px;height:27px;appearance:none;background:var(--line);border-radius:999px;position:relative;cursor:pointer;flex:none;transition:background .18s}
.switch input:checked{background:var(--brand)}
.switch input:after{content:"";position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;transition:left .18s}
.switch input:checked:after{left:22px}
.checkline{display:flex;align-items:center;gap:9px;font-size:14px;margin-bottom:9px}
.checkline input{width:18px;height:18px;accent-color:var(--brand)}

/* alerts */
.alert{border-radius:12px;padding:11px 13px;font-size:13.5px;margin-bottom:12px}
.alert.ok{background:var(--ok-soft);color:var(--ok)}
.alert.err{background:var(--danger-soft);color:var(--danger)}
.alert.warn{background:var(--warn-soft);color:var(--warn)}
.code{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;word-break:break-all;
  background:#0d1b16;color:#bfe3d5;padding:11px 12px;border-radius:11px;line-height:1.55
}
pre.code{white-space:pre-wrap;max-height:320px;overflow:auto;margin:0}
.dotstatus{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:650}
.dotstatus i{width:9px;height:9px;border-radius:50%;background:#cbd5d1;display:inline-block}
.dotstatus.on i{background:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.18)}
.dotstatus.off i{background:#f43f5e;box-shadow:0 0 0 3px rgba(244,63,94,.15)}

/* empty state */
.empty{text-align:center;color:var(--muted);padding:44px 20px;font-size:14px}
.empty .big{display:block;margin:0 auto 10px;width:52px;height:52px;border-radius:16px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center}

/* sticky action bar on detail pages */
.actionbar{
  position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));z-index:20;
  background:rgba(255,255,255,.96);backdrop-filter:blur(8px);
  border:1px solid var(--line);border-radius:16px;padding:10px;margin:14px 0 4px;box-shadow:var(--shadow-lg)
}
@media (min-width:900px){ .actionbar{position:static} }

/* bottom sheet */
.sheet-backdrop{
  position:fixed;inset:0;background:rgba(9,26,21,.45);z-index:60;opacity:0;pointer-events:none;transition:opacity .18s
}
.sheet-backdrop.open{opacity:1;pointer-events:auto}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:61;background:#fff;border-radius:20px 20px 0 0;
  padding:8px 14px calc(20px + env(safe-area-inset-bottom));transform:translateY(102%);transition:transform .22s ease;
  max-height:82vh;overflow:auto;box-shadow:0 -12px 40px -20px rgba(9,26,21,.5)
}
.sheet.open{transform:translateY(0)}
.sheet .grip{width:42px;height:4px;border-radius:3px;background:var(--line);margin:6px auto 12px}
.sheet h4{font-size:16px;margin-bottom:12px}
.sheet .opt{
  display:flex;align-items:center;gap:11px;width:100%;border:0;background:none;padding:13px 6px;
  font-size:15.5px;font-weight:600;border-bottom:1px solid var(--line);cursor:pointer;text-align:left
}
.sheet .opt:last-of-type{border-bottom:0}
.sheet .opt i{width:11px;height:11px;border-radius:50%;flex:none}
.sheet .opt.danger{color:var(--danger)}
.sheet a.opt{text-decoration:none;color:inherit}
.sheet form{margin:0}
.actionbar{display:flex;gap:8px}
.actionbar .btn{flex:1}
.section.soft{background:var(--brand-soft);border:0}
.section.warnbox{border:1px solid #fcd9a4;background:#fffbf3}
@media (min-width:900px){
  .sheet{max-width:460px;margin:0 auto;border-radius:20px;bottom:24px;left:24px;right:24px}
}

/* toast */
.toast{position:fixed;left:0;right:0;bottom:calc(80px + env(safe-area-inset-bottom));z-index:55;display:none;justify-content:center;padding:0 14px}
.toast.show{display:flex}
.toast a{display:flex;align-items:center;gap:10px;background:#0f1a17;color:#fff;border-radius:14px;
  padding:11px 15px;box-shadow:0 12px 30px -12px rgba(0,0,0,.6);font-size:13.5px;max-width:520px;width:100%}
.toast .dot{width:9px;height:9px;border-radius:50%;background:var(--wa);flex:none;animation:pulse 1.6s infinite}
.toast b{flex:1;font-weight:600}
.toast em{font-style:normal;opacity:.7;font-size:12px}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
@media (min-width:900px){ .toast{bottom:24px} }

/* banners */
.banner{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:11px 13px;margin-bottom:12px;box-shadow:var(--shadow);font-size:13.5px}
.banner span{flex:1}
.banner button{border:0;background:var(--brand);color:#fff;border-radius:10px;padding:8px 13px;font-weight:650;font-size:13px}
.banner button.x{background:transparent;color:var(--muted);padding:6px 4px;font-size:16px}
.banner.soft{background:var(--warn-soft);border-color:#f5e3c6;color:var(--warn)}

/* tables (desktop only) */
.table{width:100%;border-collapse:collapse;font-size:14px;background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:12px;background:var(--card-2)}
.table td{padding:12px;border-top:1px solid var(--line)}
.only-desktop{display:none}
@media (min-width:900px){ .only-desktop{display:block} .only-phone{display:none} }

/* login */
.auth{max-width:390px;margin:0 auto;padding:56px 22px 40px}
.auth .logo{width:62px;height:62px;border-radius:19px;background:var(--brand);color:#fff;display:grid;place-items:center;margin:0 auto 16px;box-shadow:var(--shadow-lg)}
.auth h2{text-align:center;font-size:23px;margin-bottom:2px}
.auth .by{text-align:center;color:var(--muted);font-size:13.5px;margin:0 0 4px}
.auth .tag{text-align:center;color:var(--muted);font-size:13px;margin:0 0 24px}
.auth .card{padding:18px}
.auth .foot{text-align:center;color:var(--muted);font-size:12px;margin-top:22px}

/* pagination */
.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 4px;font-size:13px;color:var(--muted)}
.pager a{padding:9px 14px;border-radius:11px;background:var(--card);box-shadow:var(--shadow);font-weight:600;color:var(--ink)}
.pager a.off{opacity:.4;pointer-events:none}

/* trend bars */
.trend{display:flex;align-items:flex-end;gap:6px;height:64px;margin-top:6px}
.trend div{flex:1;background:var(--brand-soft);border-radius:5px 5px 3px 3px;position:relative;min-height:3px}
.trend div.today{background:var(--brand)}
.trendlabels{display:flex;gap:6px;margin-top:6px}
.trendlabels span{flex:1;text-align:center;font-size:10px;color:var(--muted)}

@media print{
  .topbar,.tabbar,.sidebar,.actionbar,.toast,.banner,.no-print{display:none !important}
  body{background:#fff;padding:0}
  .main{margin:0}
  .content{max-width:none;padding:0}
  .section,.card{box-shadow:none;border:1px solid #ddd;break-inside:avoid}
}

/* ---------------- v3: catalog, team, tables ---------------- */
.chiprow.subnav{margin-bottom:14px}
.pillwrap{display:flex;flex-wrap:wrap;gap:6px}
.pill{display:inline-flex;flex-direction:column;background:var(--card-2,#f1f5f4);border:1px solid var(--line);
  border-radius:9px;padding:5px 9px;font-size:12.5px;font-weight:600;max-width:100%}
.pill em{font-style:normal;font-size:10.5px;color:var(--muted);font-weight:500}
.steps{margin:0 0 12px 18px;padding:0;font-size:13.5px;color:var(--muted);line-height:1.7}
.steps b{color:var(--ink)}

.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--card);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:2px}
.dtable{width:100%;border-collapse:collapse;font-size:13.5px;min-width:640px}
.dtable th{text-align:left;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);
  font-weight:700;padding:11px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.dtable td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
.dtable tr:last-child td{border-bottom:0}
.dtable td b{display:block;font-weight:600}
.dtable td .small{display:block}
.dtable .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.dtable tr.dim{opacity:.55}
.dtable .actions{text-align:right;white-space:nowrap;display:flex;gap:6px;justify-content:flex-end;align-items:center}
.thumb{width:40px;height:40px;border-radius:9px;object-fit:cover;background:var(--card-2);display:block}
.thumb.ph{display:grid;place-items:center;background:var(--brand-soft);color:var(--brand-ink);font-weight:700}

.rowmenu{position:relative;display:inline-block}
.rowmenu summary{list-style:none;cursor:pointer}
.rowmenu summary::-webkit-details-marker{display:none}
.rowmenu .menu{position:absolute;right:0;top:calc(100% + 4px);z-index:30;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:var(--shadow-lg);min-width:170px;padding:5px;text-align:left}
.rowmenu .menu a,.rowmenu .menu button{display:block;width:100%;text-align:left;border:0;background:none;
  padding:9px 10px;font-size:13.5px;font-weight:600;border-radius:8px;cursor:pointer;color:inherit;text-decoration:none}
.rowmenu .menu a:hover,.rowmenu .menu button:hover{background:var(--card-2,#f1f5f4)}
.rowmenu .menu .danger{color:var(--danger)}
.rowmenu .menu form{margin:0}

.healthrow{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.healthrow:last-child{border-bottom:0}
.healthrow .mark{flex:none;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;
  font-size:12px;font-weight:700}
.healthrow .mark.ok{background:#e3f5ee;color:#047857}
.healthrow .mark.warn{background:var(--warn-soft);color:var(--warn)}
.healthrow em{display:block;font-style:normal;margin-top:2px}

.imgbox{display:flex;gap:12px;align-items:flex-start}
.imgbox .preview{width:76px;height:76px;border-radius:12px;overflow:hidden;flex:none;background:var(--card-2,#f1f5f4);
  display:grid;place-items:center;color:var(--muted);border:1px solid var(--line)}
.imgbox .preview img{width:100%;height:100%;object-fit:cover}
.imgbox .urlline{word-break:break-all;font-size:11.5px;margin:6px 0 0}
.field.bad input,.field.bad select,.field.bad textarea{border-color:var(--danger)}
.fielderr{display:block;color:var(--danger);font-size:12px;margin-top:4px;font-weight:600}

.member{padding:12px 0;border-bottom:1px solid var(--line)}
.member:last-child{border-bottom:0}
.member .who{display:flex;align-items:center;gap:11px}
.member .ph{width:38px;height:38px;border-radius:11px;background:var(--brand-soft);color:var(--brand-ink);
  display:grid;place-items:center;font-weight:700;flex:none}
.member .who b{display:block;font-size:15px}
.rolebox{background:var(--brand-soft);border-radius:12px;padding:12px;margin:4px 0 12px}
.rolebox b{display:block;margin-bottom:3px}

.linkrow{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line);
  color:inherit;text-decoration:none}
.linkrow:last-child{border-bottom:0}
.linkrow span{flex:1;min-width:0}
.linkrow b{display:block;font-size:15px}
.linkrow small{color:var(--muted);font-size:12.5px}
.linkrow em{font-style:normal;color:var(--muted);font-size:20px;line-height:1}

.errbox{background:#fdeaf0;border:1px solid #f8c6d5;border-radius:10px;padding:10px 12px;margin-bottom:8px;
  font-size:13px;line-height:1.6}
.section.dim{opacity:.6}
.btn.danger{color:var(--danger);border-color:#f5c2ce}

/* product list: cards on a phone, table from tablet up */
.plist{display:flex;flex-direction:column;gap:10px}
.pcard{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;display:flex;gap:11px}
.pcard.dim{opacity:.55}
.pcard .thumb{width:52px;height:52px;border-radius:11px;flex:none}
.pcard .body{flex:1;min-width:0}
.pcard .body b{display:block;font-size:14.5px;line-height:1.3}
.pcard .body .small{display:block;margin-top:1px}
.pcard .meta{display:flex;align-items:center;gap:8px;margin-top:7px;flex-wrap:wrap}
.pcard .side{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex:none}
.pcard .side b{font-size:15px;font-variant-numeric:tabular-nums;white-space:nowrap}
.pcard .side .row{display:flex;gap:6px;align-items:center}
.pcard .side .btn.sm{padding:6px 10px;min-height:0}
@media (min-width:760px){ .plist{display:none} }
@media (max-width:759px){ .tablewrap{display:none} }

/* the sticky action bar keeps its buttons on one line */
.actionbar .btn{flex:1;min-width:0;white-space:nowrap}
.actionbar .btn + .btn,.actionbar .btn + a.btn{flex:0 0 auto}

/* ---------------- v4: live sync, pull-to-refresh, badges ---------------- */

/* pull-to-refresh indicator */
.ptr{
  position:fixed;top:calc(env(safe-area-inset-top) + 56px);left:50%;z-index:70;
  transform:translate(-50%,-46px);opacity:0;pointer-events:none;
  display:flex;flex-direction:column;align-items:center;gap:5px
}
.ptr .ring{
  width:38px;height:38px;border-radius:50%;background:#fff;color:var(--brand);
  display:grid;place-items:center;box-shadow:var(--shadow-lg);border:1px solid var(--line)
}
.ptr span{font-size:11.5px;font-weight:700;color:var(--brand-ink);background:#fff;
  padding:3px 9px;border-radius:999px;box-shadow:var(--shadow)}
.ptr.ready .ring{background:var(--brand);color:#fff;border-color:var(--brand)}

/* the thin sync strip under the header */
.syncbar{
  position:sticky;top:calc(env(safe-area-inset-top) + 52px);z-index:29;
  display:flex;align-items:center;gap:9px;
  margin:0 auto;max-width:560px;padding:9px 14px;
  background:var(--brand-soft);color:var(--brand-ink);font-size:13px;font-weight:600
}
.syncbar .spin{width:14px;height:14px;border-radius:50%;flex:none;
  border:2px solid rgba(11,107,84,.25);border-top-color:var(--brand)}
.syncbar.working .spin{animation:wspin .7s linear infinite}
.syncbar.done{background:#e3f5ee;color:#047857}
.syncbar.done .spin{border-color:#047857;border-top-color:#047857}
.syncbar.error{background:var(--danger-soft);color:var(--danger)}
.syncbar.error .spin{border-color:var(--danger);border-top-color:var(--danger)}
@keyframes wspin{to{transform:rotate(360deg)}}
@media (min-width:900px){ .syncbar{max-width:900px;border-radius:12px;margin:10px auto 0;top:0} }

/* unread counts on the tab bar and sidebar */
.tabbar a{position:relative}
.navbadge{
  position:absolute;top:4px;left:calc(50% + 6px);min-width:17px;height:17px;padding:0 4px;
  border-radius:9px;background:var(--danger);color:#fff;font-size:10px;font-weight:800;
  font-style:normal;display:grid;place-items:center;line-height:1;box-shadow:0 0 0 2px #fff
}
.sidebar nav a{position:relative}
.sidebar .navbadge{position:static;margin-left:auto;box-shadow:none}

/* the sync button that lives in the header on catalog pages */
.hdr-sync{display:inline-flex;align-items:center;gap:6px}
.hdr-sync.spinning svg{animation:wspin .8s linear infinite}

/* quick-access tiles at the top of Settings */
.tilerow{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}
.tile{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:14px 12px;
  display:flex;flex-direction:column;gap:2px;color:inherit}
.tile svg{color:var(--brand);margin-bottom:6px}
.tile b{font-size:14.5px}
.tile span{font-size:11.5px;color:var(--muted)}
.tile:active{transform:scale(.985)}
@media (min-width:700px){ .tilerow{grid-template-columns:repeat(4,1fr)} }

/* quick stock edit inside a product card */
.quick{margin-top:8px}
.quick summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--brand-ink);
  list-style:none;display:inline-flex;align-items:center;gap:5px}
.quick summary::-webkit-details-marker{display:none}
.quick summary:before{content:"▸";font-size:10px;transition:transform .15s}
.quick[open] summary:before{transform:rotate(90deg)}
.quickform{display:flex;gap:8px;align-items:flex-end;margin-top:8px;flex-wrap:wrap}
.quickform label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.quickform input,.quickform select{padding:8px 10px;border:1px solid var(--line);border-radius:10px;
  background:var(--card);font-size:14px;max-width:120px}
.quickform .btn{margin-bottom:1px}

/* a toolbar whose last button stays a square icon instead of stretching */
.toolbar{display:flex;gap:8px;margin-bottom:12px}
.toolbar .btn{flex:1;min-width:0;white-space:nowrap}
.toolbar .btn.icon{flex:0 0 48px;width:48px;padding:0;display:grid;place-items:center}
