/* ============================================================
   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)}
.btnrow.one{grid-template-columns: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}

/* ---------------- share catalog ---------------- */
.sharecard{
  background:linear-gradient(135deg,var(--brand) 0%,#0e8465 100%);color:#fff;
  border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:var(--shadow-lg)
}
.sharecard .sc-head{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.sharecard .sc-head b{display:block;font-size:16px}
.sharecard .sc-head span{font-size:11.5px;opacity:.82}
.sharecard .sc-link{
  background:rgba(255,255,255,.16);border-radius:11px;padding:11px 13px;margin-bottom:12px;
  font-size:13.5px;font-family:ui-monospace,Menlo,monospace;word-break:break-all
}
.sharecard .btn{background:rgba(255,255,255,.16);border-color:transparent;color:#fff}
.sharecard .btn.wa{background:var(--wa);color:#053b23;border-color:transparent;font-weight:700}
.sharecard .btn.lg{width:100%;padding:14px;font-size:15.5px}

.wa-preview{background:#e8ded2;border-radius:12px;padding:14px}
.wa-preview .bubble{
  background:#d9fdd3;border-radius:10px 10px 10px 2px;padding:10px 12px;font-size:14px;
  line-height:1.5;box-shadow:0 1px 1px rgba(0,0,0,.12);word-break:break-word;max-width:100%
}
.phonerow{display:flex;gap:8px}
.phonerow .field{flex:1}
.phonerow .field.cc{flex:0 0 88px}
.tplrow{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);margin:0}
.tplrow:last-child{border-bottom:0}
.tplrow div{flex:1;min-width:0}
.tplrow b{display:block;font-size:14.5px}
.tplrow span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tplrow .btn{width:auto;flex:none;white-space:nowrap}

/* the Share catalog tile on the dashboard */
.sharebar{
  display:flex;align-items:center;gap:12px;background:var(--card);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:13px 14px;margin-bottom:12px;color:inherit;
  border-left:3px solid var(--wa)
}
.sharebar .ico{width:38px;height:38px;border-radius:11px;background:#e7fbe9;color:#0b6b54;
  display:grid;place-items:center;flex:none}
.sharebar .txt{flex:1;min-width:0}
.sharebar .txt b{display:block;font-size:15px}
.sharebar .txt span{font-size:12px;color:var(--muted)}
.sharebar .go{color:var(--muted);font-size:20px;line-height:1}

/* ============================================================
   SaaS platform: cards, tables, plans, tickets, subscription
   ============================================================ */

/* ---- admin summary cards ---- */
.cardgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}
@media (min-width:640px){ .cardgrid{grid-template-columns:repeat(4,1fr)} }
.kcard{
  background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:13px 14px;display:flex;flex-direction:column;gap:2px;color:inherit;min-width:0
}
.kcard .ico{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;margin-bottom:6px}
.kcard .ico.brand{background:var(--brand-soft);color:var(--brand)}
.kcard .ico.ok{background:var(--ok-soft);color:var(--ok)}
.kcard .ico.warn{background:var(--warn-soft);color:var(--warn)}
.kcard .ico.danger{background:var(--danger-soft);color:var(--danger)}
.kcard .ico.violet{background:#f2ecfd;color:#6d28d9}
.kcard .ico.blue{background:#e8effd;color:#1d4ed8}
.kcard b{font-size:23px;line-height:1.15;letter-spacing:-.02em}
.kcard span{font-size:12px;color:var(--muted)}
.kcard.warnrow{box-shadow:var(--shadow),inset 0 0 0 1.5px #f6dcae}

/* ---- data tables: a table on a desktop, cards on a phone ---- */
.datawrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px}
.datatable{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--card);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.datatable thead th{
  text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);
  font-weight:650;padding:10px 12px;background:var(--card-2);border-bottom:1px solid var(--line);white-space:nowrap
}
.datatable td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.datatable tr:last-child td{border-bottom:0}
.datatable td .muted.small{display:block;font-size:11.5px}
.datatable td.num,.datatable th.num{text-align:right}
.datatable td.act{text-align:right;white-space:nowrap}
.datatable td.act .btn{width:auto;display:inline-flex}
.datatable a.strong{font-weight:650;color:var(--brand-ink)}
.datatable tr.unread td{background:#f4faf7}
.datatable.compact td,.datatable.compact thead th{padding:8px 10px;font-size:12.5px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.newdot{display:inline-block;margin-left:6px;font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.04em;color:#fff;background:var(--wa);border-radius:20px;padding:1px 7px;vertical-align:middle}

@media (max-width:759px){
  /* A table is the wrong shape for a phone, so each row becomes a card: the
     first cell is the card's heading, the rest are tight label/value pairs. */
  .datawrap{overflow:visible;margin:0}
  .datatable,.datatable tbody,.datatable tr,.datatable td{display:block;width:100%}
  .datatable{background:none;box-shadow:none;border-radius:0}
  .datatable thead{display:none}
  .datatable tr{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
    padding:12px 13px;margin-bottom:10px}

  .datatable td{border:0;padding:3px 0;display:flex;align-items:baseline;
    justify-content:space-between;gap:14px;text-align:right;font-size:13.5px}
  .datatable td::before{content:attr(data-l);color:var(--muted);font-size:11px;text-transform:uppercase;
    letter-spacing:.05em;font-weight:650;text-align:left;flex:none}

  /* the heading: no label, no right-alignment, a rule under it */
  .datatable td:first-child{
    display:block;text-align:left;font-size:15.5px;padding:0 0 8px;margin-bottom:7px;
    border-bottom:1px solid var(--line)
  }
  .datatable td:first-child::before{display:none}
  .datatable td:first-child .muted.small{display:inline;margin-left:7px;font-size:12px;text-align:left}
  .datatable td:first-child a{font-weight:650}

  .datatable td:empty,.datatable td.act:empty{display:none}
  .datatable td.act{display:block;padding-top:11px}
  .datatable td.act .btn{width:100%;display:flex}
  .datatable td .muted.small{display:block;text-align:right;font-size:11.5px}
  /* two badges on one line rather than stacked */
  .datatable td .badge + .badge{margin-left:5px}
}

.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0 4px}
.pager .btn{width:auto;display:inline-flex}

/* ---- search bar ---- */
.searchbar{
  display:flex;align-items:center;gap:8px;background:var(--card);border-radius:13px;
  box-shadow:var(--shadow);padding:0 12px;margin-bottom:10px;color:var(--muted)
}
.searchbar input{flex:1;min-width:0;border:0;background:none;outline:none;padding:12px 0;font-size:14.5px;color:var(--ink)}
.searchbar button{border:0;background:none;color:var(--brand);font-weight:650;padding:12px 2px;cursor:pointer}

/* ---- status row ---- */
.statusrow{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.badge.lg{font-size:12.5px;padding:6px 12px;border-radius:20px}
.subhead{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);
  font-weight:700;margin:14px 0 4px}

/* ---- plan cards ---- */
.planwrap{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:14px}
@media (min-width:640px){ .planwrap{grid-template-columns:repeat(3,1fr)} }
.plancard{
  background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:15px;display:flex;flex-direction:column;gap:8px
}
.plancard.current{box-shadow:var(--shadow),inset 0 0 0 2px var(--brand)}
.plancard.off{opacity:.62}
.plancard .ph{display:flex;align-items:center;justify-content:space-between;gap:8px}
.plancard .ph b{font-size:16px}
.plancard .price{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.1}
.plancard .price small{font-size:12.5px;font-weight:500;color:var(--muted);letter-spacing:0}
.plancard p{margin:0}
.plancard .feats{list-style:none;margin:2px 0;padding:0;display:flex;flex-direction:column;gap:5px}
.plancard .feats li{display:flex;gap:7px;align-items:flex-start;font-size:13px;color:var(--muted)}
.plancard .feats li svg{flex:none;margin-top:3px;color:var(--ok)}
.plancard .pf{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:6px}
.plancard .pf .btnrow{width:auto;display:flex;gap:6px}
.plancard .pf .btn{width:auto}

/* ---- the business's own subscription card ---- */
.subcard{
  background:linear-gradient(150deg,var(--brand) 0%,var(--brand-dark) 100%);color:#fff;
  border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:18px;margin-bottom:14px
}
.subcard.expired,.subcard.cancelled{background:linear-gradient(150deg,#8a2245 0%,#6d1735 100%)}
.subcard.paused{background:linear-gradient(150deg,#5b3ba8 0%,#452c82 100%)}
.subcard.none{background:linear-gradient(150deg,#4a5a63 0%,#36444b 100%)}
.subcard .sc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;opacity:.95}
.subcard .planname{display:block;font-size:20px;letter-spacing:-.01em}
.subcard .planprice{font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin-top:2px}
.subcard .planprice small{font-size:13px;font-weight:500;opacity:.8;letter-spacing:0}
.subcard .planmeta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0 2px;
  background:rgba(255,255,255,.12);border-radius:12px;padding:11px}
.subcard .planmeta span{display:block;font-size:11px;opacity:.8;text-transform:uppercase;letter-spacing:.05em}
.subcard .planmeta b{font-size:14px}
.subcard .planreason{margin:12px 0 0;font-size:13.5px;background:rgba(255,255,255,.14);
  border-radius:11px;padding:10px 12px}
.subcard .btn{margin-top:14px;background:#fff;color:var(--brand-ink)}
.subcard .btn.primary{background:#fff;color:var(--brand-ink)}
.subcard .btn.lg{padding:14px;font-size:15.5px}

/* ---- the expiry reminder that rides above every page ---- */
.subbar{
  display:flex;align-items:center;gap:10px;background:var(--warn-soft);color:var(--warn);
  border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:13.5px;font-weight:600
}
.subbar.urgent{background:var(--danger-soft);color:var(--danger)}
.subbar .txt{flex:1;min-width:0}
.subbar .btn{width:auto;flex:none;background:currentColor;box-shadow:none}
.subbar .btn{color:#fff}
.subbar .btn::after{content:''}

/* ---- blocked / result pages ---- */
.blockcard{
  background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:24px 18px;text-align:center;margin-bottom:14px
}
.blockcard .bico{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;margin:0 auto 14px;
  background:var(--warn-soft);color:var(--warn)}
.blockcard.cancelled .bico,.blockcard.none .bico{background:var(--danger-soft);color:var(--danger)}
.blockcard.paused .bico{background:#f2ecfd;color:#6d28d9}
.blockcard.ok .bico{background:var(--ok-soft);color:var(--ok)}
.blockcard h2{font-size:19px;margin-bottom:8px}
.blockcard p{margin:0;color:var(--muted);font-size:14px;max-width:420px;margin-inline:auto}
.blockcard .planmeta{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px;
  background:var(--card-2);border-radius:12px;padding:11px;text-align:left}
.blockcard .planmeta span{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.blockcard .btnrow{max-width:380px;margin-inline:auto}

/* ---- payment page ---- */
.paycard{
  background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:14px
}
.paycard .planname{display:block;font-size:19px;margin-top:2px}
.paycard .planprice{font-size:32px;font-weight:700;letter-spacing:-.02em;margin:2px 0 12px}

/* ---- ticket conversation ---- */
.thread{display:flex;flex-direction:column;gap:10px}
.tmsg{max-width:88%;border-radius:14px;padding:10px 12px;background:var(--card-2);
  border:1px solid var(--line)}
.tmsg.mine{align-self:flex-end;background:#e7f7ee;border-color:#cdead9}
.tmsg.theirs{align-self:flex-start}
.tmsg .who{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
.tmsg .who b{font-size:13px}
.tmsg .who span{font-size:11px;color:var(--muted)}
.tmsg p{margin:0;font-size:14px;white-space:pre-wrap;word-break:break-word}
.tsys{align-self:center;font-size:11.5px;color:var(--muted);background:var(--card-2);
  border-radius:20px;padding:4px 12px}
.tfiles{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.tfile{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);
  border-radius:11px;padding:8px 10px;max-width:100%}
.tfile .ic{color:var(--brand);flex:none}
.tfile .nm{min-width:0;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tfile .nm em{display:block;font-style:normal;font-weight:400;font-size:11px;color:var(--muted)}
.tfile.img{padding:0;border:0;background:none}
.tfile.img img{max-width:190px;max-height:190px;border-radius:12px;display:block;border:1px solid var(--line)}

/* ---- file picker list ---- */
.replyform input[type=file]{
  width:100%;padding:10px;border:1.5px dashed var(--line);border-radius:12px;background:var(--card-2);font-size:13px
}
.field input[type=file]{
  width:100%;padding:10px;border:1.5px dashed var(--line);border-radius:12px;background:var(--card-2);font-size:13px
}
.filelist{display:flex;flex-direction:column;gap:6px;margin:-4px 0 12px}
.filelist .f{display:flex;align-items:center;gap:8px;font-size:12.5px;background:var(--card-2);
  border-radius:9px;padding:7px 10px}
.filelist .f .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.filelist .f .sz{color:var(--muted);font-size:11.5px;flex:none}
.filelist .f.bad{background:var(--danger-soft);color:var(--danger)}

/* ---- misc ---- */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.navdot{margin-left:auto;font-style:normal;font-size:11px;font-weight:700;color:#fff;background:var(--danger);
  border-radius:20px;padding:1px 7px;line-height:1.5}
.danger-zone summary{color:var(--danger) !important}
.linkrow .go{color:var(--muted);font-size:20px;line-height:1;flex:none}
.section.soft{background:var(--card-2);box-shadow:none;border:1px solid var(--line)}
details > summary{list-style:none}
details > summary::-webkit-details-marker{display:none}
details > summary::before{content:'▸ ';display:inline-block;transition:transform .15s}
details[open] > summary::before{content:'▾ '}

/* ============================================================
   Desktop corrections
   The `.tabbar{display:none}` inside the 900px media query above is
   overridden by the `.tabbar{…display:flex}` block that follows it — same
   specificity, later rule wins — so the phone tab bar was still drawn across
   the bottom of a desktop window. These come last, so they hold.
   ============================================================ */
@media (min-width:900px){
  .tabbar{display:none !important}
  body{padding-bottom:0}
  /* wide screens have room for the tables to breathe */
  .content{max-width:1080px}
  .topbar .inner{max-width:1080px}
  .syncbar{max-width:1080px}
}
