/* LabOptics Mini App — NeuroDent visual system.
   Indigo accent, Inter Tight, light + full dark mode. 4px grid. */
:root, [data-theme="light"] {
  --bg:#FFFFFF; --card:#FFFFFF; --surface:rgba(46,54,78,0.05);
  --text:#16181D; --hint:#5F6673;
  --accent:#5B6BFF; --accent-2:#8E7CFF; --accent-text:#FFFFFF;
  --up:#17B978; --up-text:#0E7A4E; --down:#F4595B; --down-text:#B4272A;
  --border:rgba(46,54,78,0.12);
  --shadow:0 2px 12px rgba(24,26,44,0.05);
  --shadow-p:0 3px 14px rgba(24,26,44,0.06);
  --ring:rgba(91,107,255,0.45);
  --grad:linear-gradient(90deg,#5B6BFF,#8E7CFF);
  --chart-grid:rgba(46,54,78,0.10);
  --track:rgba(22,24,29,0.06);
  --p1:#E9E5FF; --p2:#FFF0C8; --p3:#DFF3E4; --p4:#FFE1D6; --p5:#DDEBFF; --p6:#FCE0EC;
  --b1:#8E7CFF; --b2:#EBA31A; --b3:#17B978; --b4:#FF8557; --b5:#3E8DFF; --b6:#EC6AA0;
  --ins-good-bg:#E4F6EA; --ins-good-tx:#0F5A2C;
  --ins-warn-bg:#FFF1D6; --ins-warn-tx:#7A4A00;
  --ins-info-bg:#E5EFFF; --ins-info-tx:#0A3F80;
  --cal-ico:none;
}
[data-theme="dark"] {
  --bg:#0E1017; --card:#181B23; --surface:#21252F;
  --text:#ECEFF6; --hint:#A3ACBD;
  --accent:#6E7CFF; --accent-2:#9E8FFF; --accent-text:#FFFFFF;
  --up:#17B978; --up-text:#4FD79E; --down:#F4595B; --down-text:#FF8A8B;
  --border:rgba(255,255,255,0.09);
  --shadow:0 2px 14px rgba(0,0,0,0.35);
  --shadow-p:0 3px 16px rgba(0,0,0,0.40);
  --ring:rgba(110,124,255,0.55);
  --grad:linear-gradient(90deg,#6E7CFF,#9E8FFF);
  --chart-grid:rgba(255,255,255,0.08);
  --track:rgba(255,255,255,0.08);
  /* pastel KPI tints muted so they don't shout on dark */
  --p1:#2A2740; --p2:#332B1B; --p3:#1B2E24; --p4:#33241D; --p5:#1B2436; --p6:#301F29;
  --b1:#8E7CFF; --b2:#EBA31A; --b3:#17B978; --b4:#FF8557; --b5:#3E8DFF; --b6:#EC6AA0;
  --ins-good-bg:#15271C; --ins-good-tx:#7FE0AE;
  --ins-warn-bg:#2C2412; --ins-warn-tx:#F0C267;
  --ins-info-bg:#161F31; --ins-info-tx:#8FB6F5;
  --cal-ico:invert(1) brightness(1.7);
}

html,body{margin:0;padding:0;background:var(--bg);color:var(--text);
  font-family:"Inter Tight",-apple-system,"SF Pro Display","Segoe UI",Roboto,system-ui,sans-serif;
  font-size:14px;line-height:1.35;-webkit-font-smoothing:antialiased;}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:10px;}

/* topbar */
.topbar{display:flex;align-items:center;justify-content:space-between;
  padding:16px 18px 12px;position:sticky;top:0;z-index:10;background:var(--bg);}
.brand{display:flex;align-items:center;gap:11px;}
.logo{display:inline-flex;filter:drop-shadow(0 3px 8px rgba(75,59,214,.28));}
.logo svg{display:block;border-radius:13px;}
.brand-title{font-weight:800;font-size:20px;letter-spacing:-0.5px;}
.brand-sub{color:var(--hint);font-size:12px;font-weight:500;margin-top:1px;}
.top-actions{display:flex;align-items:center;gap:10px;}
.upd{color:var(--hint);font-size:11px;font-weight:600;text-align:right;}
.icon-btn{width:38px;height:38px;min-width:38px;border:none;border-radius:12px;
  background:var(--surface);color:var(--text);font-size:16px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;transition:transform .15s,background .15s;}
.icon-btn:active{transform:scale(.92);}

main{padding:16px 14px 72px;}
.cap{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:0.6px;
  color:var(--hint);opacity:.85;margin:8px 2px 10px;}

/* tabs */
.tabs{display:flex;gap:4px;padding:5px;overflow-x:auto;scrollbar-width:none;
  background:var(--surface);border-radius:16px;margin:0 14px;position:sticky;top:56px;z-index:9;}
.tabs::-webkit-scrollbar{display:none;}
.tabs button{flex:1 0 auto;min-height:44px;padding:9px 15px;background:transparent;border:none;
  color:var(--hint);font-size:13px;font-weight:600;border-radius:12px;white-space:nowrap;
  cursor:pointer;transition:color .18s,background .18s,box-shadow .18s;}
.tabs button.active{color:var(--accent-text);background:var(--accent);
  box-shadow:0 4px 12px rgba(91,107,255,.30);}
[data-theme="dark"] .tabs button.active{color:#fff;}
.tab-panel{display:none;} .tab-panel.active{display:block;animation:fade .22s ease;}
@keyframes fade{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}

/* kpi */
.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;}
.kpi{background:var(--card);border-radius:16px;padding:15px 16px;border:1px solid var(--border);
  box-shadow:var(--shadow-p);position:relative;overflow:hidden;}
.kpi-grid .kpi:nth-child(6n+1){border-left:4px solid var(--b1);}
.kpi-grid .kpi:nth-child(6n+2){border-left:4px solid var(--b2);}
.kpi-grid .kpi:nth-child(6n+3){border-left:4px solid var(--b3);}
.kpi-grid .kpi:nth-child(6n+4){border-left:4px solid var(--b4);}
.kpi-grid .kpi:nth-child(6n+5){border-left:4px solid var(--b5);}
.kpi-grid .kpi:nth-child(6n+6){border-left:4px solid var(--b6);}
.kpi-label{color:var(--hint);font-size:11.5px;font-weight:600;margin-bottom:8px;
  display:flex;align-items:center;gap:6px;}
.kpi-value{font-size:22px;font-weight:800;letter-spacing:-0.6px;line-height:1.1;color:var(--text);}
.kpi-delta{display:inline-flex;align-items:center;gap:3px;margin-top:8px;
  padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;}
.kpi-delta.up{color:var(--up-text);background:rgba(23,185,120,.18);}
.kpi-delta.down{color:var(--down-text);background:rgba(244,89,91,.18);}
.kpi-delta.flat{color:var(--hint);background:var(--surface);}

/* live/demo badge */
.tag{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;
  border-radius:6px;padding:2px 6px;}
.tag.live{color:var(--up-text);background:rgba(23,185,120,.16);}
.tag.demo{color:var(--hint);background:var(--surface);}

/* card */
.card{background:var(--card);border-radius:16px;padding:16px;margin-bottom:14px;
  border:1px solid var(--border);box-shadow:var(--shadow);}
.card-title{font-weight:700;font-size:14px;margin-bottom:12px;letter-spacing:-0.2px;color:var(--text);
  display:flex;align-items:center;justify-content:space-between;gap:8px;}

/* insight */
.insight{display:flex;gap:12px;align-items:flex-start;border-radius:14px;padding:14px 15px;
  border-left:4px solid;box-shadow:var(--shadow);margin-bottom:12px;}
.insight.good{background:var(--ins-good-bg);border-left-color:var(--up);}
.insight.warn{background:var(--ins-warn-bg);border-left-color:#F5920B;}
.insight.info{background:var(--ins-info-bg);border-left-color:#2E8BFF;}
.insight-icon{font-size:22px;width:36px;height:36px;flex:0 0 auto;display:flex;
  align-items:center;justify-content:center;background:rgba(255,255,255,.14);border-radius:12px;}
[data-theme="light"] .insight-icon{background:rgba(255,255,255,.7);}
.insight-title{font-weight:700;font-size:13.5px;}
.insight.good .insight-title{color:var(--ins-good-tx);}
.insight.warn .insight-title{color:var(--ins-warn-tx);}
.insight.info .insight-title{color:var(--ins-info-tx);}
.insight-text{font-size:12.5px;color:var(--text);opacity:.85;margin-top:2px;}

/* progress bars */
.bar{height:7px;border-radius:4px;background:var(--track);overflow:hidden;}
.bar-fill{height:100%;border-radius:4px;}

/* table */
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;
  scrollbar-width:thin;}
.table-scroll::-webkit-scrollbar{height:5px;}
.table-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px;}
table{width:100%;border-collapse:collapse;font-size:12.5px;}
#sellersTable{min-width:340px;}
#sellersTable td:first-child,#sellersTable th:first-child{position:sticky;left:0;
  background:var(--card);z-index:1;}
#sellersTable td:nth-child(2),#sellersTable th:nth-child(2){white-space:normal;min-width:96px;}
th,td{text-align:right;padding:9px 6px;border-bottom:1px solid var(--border);white-space:nowrap;}
th:first-child,td:first-child{text-align:left;white-space:normal;}
th{color:var(--hint);font-weight:700;font-size:10.5px;text-transform:uppercase;letter-spacing:.3px;}
td.pos{color:var(--up-text);} td.neg{color:var(--down-text);}
.rank{width:24px;height:24px;border-radius:8px;background:var(--surface);color:var(--hint);
  font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;}

/* legend + donut */
.legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;font-size:12px;color:var(--hint);}
.legend span{display:inline-flex;align-items:center;gap:5px;}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;}
.donut-wrap{max-width:230px;margin:6px auto 2px;}
canvas{max-width:100%;}
.row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);}
.row:last-child{border-bottom:none;}
.row .name{flex:1;font-weight:600;font-size:13px;}
.row .val{font-weight:800;font-size:13px;letter-spacing:-.3px;}
.muted{color:var(--hint);font-size:11.5px;}

/* warehouse stat tiles */
.stat-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
.stat{background:var(--surface);border-radius:14px;padding:12px 10px;text-align:center;
  border-top:4px solid var(--border);}
.stat-val{font-size:22px;font-weight:800;letter-spacing:-.6px;line-height:1.05;}
.stat-label{color:var(--hint);font-size:10.5px;font-weight:600;margin-top:5px;line-height:1.2;}
.stat.stat-b1{border-top-color:var(--b1);} .stat.stat-b2{border-top-color:var(--b2);}
.stat.stat-b3{border-top-color:var(--b3);} .stat.stat-b4{border-top-color:var(--b4);}
.stat.stat-b5{border-top-color:var(--b5);} .stat.stat-b6{border-top-color:var(--b6);}

/* toolbar, seg toggle, refresh */
.toolbar{display:flex;align-items:center;gap:8px;margin:0 14px 12px;}
.seg{display:inline-flex;background:var(--surface);border-radius:12px;padding:3px;gap:2px;}
.seg button{border:none;background:transparent;color:var(--hint);font-size:12px;font-weight:700;
  min-height:38px;padding:6px 12px;border-radius:9px;cursor:pointer;transition:all .18s;}
.seg button.active{background:var(--accent);color:var(--accent-text);
  box-shadow:0 3px 10px rgba(91,107,255,.28);}
.btn-refresh{margin-left:auto;border:1px solid var(--border);background:var(--card);box-shadow:var(--shadow);
  color:var(--accent);font-size:13px;font-weight:700;min-height:38px;padding:8px 14px;border-radius:12px;
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:transform .15s;}
.btn-refresh:active{transform:scale(.97);}
.btn-refresh.spin{opacity:.5;}
.seg .seg-cal{font-size:15px;line-height:1;padding:6px 11px;}
.seg .seg-cal.active{background:var(--accent);color:var(--accent-text);
  box-shadow:0 3px 10px rgba(91,107,255,.28);}

/* custom range bottom sheet */
.sheet-backdrop{position:fixed;inset:0;background:rgba(10,12,20,.5);z-index:40;
  opacity:0;transition:opacity .2s;}
.sheet-backdrop.show{opacity:1;}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;background:var(--card);
  border-radius:20px 20px 0 0;padding:10px 18px calc(20px + env(safe-area-inset-bottom));
  box-shadow:0 -8px 32px rgba(0,0,0,.28);transform:translateY(105%);
  transition:transform .26s cubic-bezier(.22,1,.36,1);max-width:560px;margin:0 auto;}
.sheet.show{transform:translateY(0);}
.sheet-handle{width:40px;height:4px;border-radius:3px;background:var(--border);
  margin:4px auto 12px;}
.sheet-title{font-size:16px;font-weight:800;letter-spacing:-.2px;}
.sheet-sub{font-size:12.5px;color:var(--hint);font-weight:600;margin:3px 0 14px;}
.date-field{display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--surface);border:1px solid var(--border);border-radius:13px;
  padding:0 14px;min-height:52px;margin-bottom:10px;}
.date-field>span{font-size:13px;font-weight:700;color:var(--hint);flex:0 0 auto;}
.date-field input[type=date]{flex:1;text-align:right;border:none;background:transparent;
  color:var(--text);font-family:inherit;font-size:16px;font-weight:700;min-height:44px;
  outline:none;}
.date-field input[type=date]::-webkit-calendar-picker-indicator{filter:var(--cal-ico);cursor:pointer;}
.sheet-err{color:var(--down-text);font-size:12.5px;font-weight:700;margin:2px 0 10px;}
.sheet-actions{display:flex;gap:10px;margin-top:6px;}
.sheet-btn{flex:1;min-height:48px;border-radius:13px;font-family:inherit;font-size:15px;
  font-weight:800;cursor:pointer;transition:transform .15s;border:1px solid var(--border);}
.sheet-btn:active{transform:scale(.98);}
.sheet-btn.ghost{background:var(--surface);color:var(--text);}
.sheet-btn.primary{background:var(--accent);color:var(--accent-text);border-color:transparent;
  box-shadow:0 4px 14px rgba(91,107,255,.3);}

/* plan-fact stacked row */
.pf{padding:10px 0;border-bottom:1px solid var(--border);}
.pf:last-child{border-bottom:none;}
.pf-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;}
.pf-name{font-weight:700;font-size:13px;}
.pf-vals{font-size:11.5px;color:var(--hint);font-weight:600;}
.pf-vals b{color:var(--text);font-weight:800;}
.pf-track{position:relative;height:9px;border-radius:5px;background:var(--track);overflow:hidden;}
.pf-fill{position:absolute;left:0;top:0;height:100%;border-radius:5px;background:var(--grad);}
.pf-plan{position:absolute;top:-3px;width:2px;height:15px;background:var(--text);opacity:.55;border-radius:2px;}
.pf-pct{font-size:11px;font-weight:800;margin-left:8px;}
.pf-pct.pos{color:var(--up-text);} .pf-pct.neg{color:var(--down-text);}

/* process board tiles */
.proc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.proc{background:var(--surface);border-radius:14px;padding:13px;border-left:4px solid var(--b1);}
.proc:nth-child(2){border-left-color:var(--b2);}
.proc:nth-child(3){border-left-color:var(--b4);}
.proc:nth-child(4){border-left-color:var(--b5);}
.proc-label{font-size:11px;font-weight:700;color:var(--hint);text-transform:uppercase;letter-spacing:.3px;}
.proc-open{font-size:24px;font-weight:800;letter-spacing:-.6px;margin-top:4px;color:var(--text);}
.proc-over{font-size:11px;font-weight:700;margin-top:3px;}
.proc-over.bad{color:var(--down-text);} .proc-over.ok{color:var(--up-text);}
.nd{color:var(--hint);font-size:12.5px;padding:8px 2px;}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:.001ms !important;transition-duration:.001ms !important;}
}
