/* ================= 门店 KPI 填报表 ================= */
:root{
  --ink:#1f1c19;
  --ink-2:#4a443d;
  --muted:#8d857a;
  --paper:#faf8f5;
  --card:#ffffff;
  --line:#e6e1d8;
  --line-2:#f0ece5;
  --accent:#9c4a2f;
  --accent-soft:#f6ece6;
  --ok:#2f7a52;
  --warn:#b4791f;
  --bad:#b23a33;
  --shadow:0 1px 2px rgba(31,28,25,.05), 0 6px 20px rgba(31,28,25,.05);
  --r:12px;
  --head-h:56px;
  --col-a:76px;
  --col-b:104px;
  --col-c:98px;
  --col-d:58px;
  --col-t:94px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper);
  color:var(--ink);
  font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
  overscroll-behavior:none;
}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
h1,h2,h3,h4{margin:0;font-weight:600}
input{outline:none}
a{color:var(--accent)}

.boot{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted)}
.spin{width:26px;height:26px;border:2.5px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------------- 登录 / 初始化 ---------------- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.auth-card{
  width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:34px 30px 28px;box-shadow:var(--shadow);
}
.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.auth-logo{width:34px;height:34px;border-radius:9px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:15px;font-weight:700;letter-spacing:.5px}
.auth-card h1{font-size:20px;letter-spacing:.3px}
.auth-sub{color:var(--muted);font-size:13px;margin:8px 0 24px;line-height:1.65}
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:6px;font-weight:500}
.field input{
  width:100%;height:44px;padding:0 13px;border:1px solid var(--line);border-radius:10px;
  background:#fff;transition:border-color .15s, box-shadow .15s;
}
.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.field select{
  width:100%;height:44px;padding:0 13px;border:1px solid var(--line);border-radius:10px;
  background:#fff;font-size:14px;color:var(--ink);
  transition:border-color .15s, box-shadow .15s;
}
.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.btn-primary{
  width:100%;height:46px;border-radius:10px;background:var(--ink);color:#fff;font-weight:600;
  letter-spacing:.5px;transition:opacity .15s, transform .1s;
}
.btn-primary:hover{opacity:.9}
.btn-primary:active{transform:scale(.99)}
.btn-primary:disabled{opacity:.45;cursor:default}
.auth-msg{margin-top:14px;font-size:13px;color:var(--bad);min-height:18px;line-height:1.5}
.auth-foot{margin-top:18px;font-size:12px;color:var(--muted);text-align:center;line-height:1.7}
.auth-hint{margin-top:16px;padding:11px 13px;background:var(--accent-soft);border-radius:9px;font-size:12.5px;color:#7d3b23;line-height:1.6}

/* ---------------- 顶栏 ---------------- */
.topbar{
  position:sticky;top:0;z-index:40;height:var(--head-h);display:flex;align-items:center;gap:16px;
  padding:0 18px;background:rgba(250,248,245,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:9px;font-weight:600;letter-spacing:.3px;white-space:nowrap}
.brand .dot{width:26px;height:26px;border-radius:7px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}
.brand small{color:var(--muted);font-weight:400;font-size:12.5px}
.tabs{display:flex;gap:2px;margin-left:8px}
.tabs button{
  padding:7px 14px;border-radius:8px;font-size:13.5px;color:var(--muted);font-weight:500;
  transition:background .15s,color .15s;
}
.tabs button:hover{background:#f1ede6}
.tabs button.on{background:var(--ink);color:#fff}
.topbar .right{margin-left:auto;display:flex;align-items:center;gap:10px}
.who{font-size:13px;color:var(--ink-2);white-space:nowrap}
.who b{font-weight:600}
.who .tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:20px;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:600;vertical-align:1px}
.btn-ghost{padding:6px 11px;border-radius:8px;font-size:13px;color:var(--muted);border:1px solid var(--line);background:#fff}
.btn-ghost:hover{color:var(--ink);border-color:#d8d2c7}

/* ---------------- 工具条 ---------------- */
.toolbar{
  position:sticky;top:var(--head-h);z-index:35;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 18px;background:rgba(250,248,245,.94);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.toolbar .sp{flex:1}
.month{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:4px 6px}
.month button{width:26px;height:26px;border-radius:6px;color:var(--muted);font-size:15px;line-height:1}
.month button:hover{background:#f3efe8;color:var(--ink)}
.month input{border:none;width:112px;text-align:center;font-size:13.5px;font-weight:600;background:transparent}
.seg{display:flex;background:#fff;border:1px solid var(--line);border-radius:9px;padding:3px;gap:2px}
.seg button{padding:5px 12px;border-radius:6px;font-size:13px;color:var(--muted)}
.seg button.on{background:var(--ink);color:#fff;font-weight:500}
.title-line{display:flex;align-items:baseline;gap:10px;min-width:0}
.title-line h2{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.title-line .sm{font-size:12px;color:var(--muted);white-space:nowrap}
.save-state{font-size:12px;color:var(--muted);white-space:nowrap;display:flex;align-items:center;gap:6px}
.save-state .led{width:6px;height:6px;border-radius:50%;background:var(--line)}
.save-state.on .led{background:var(--ok)}
.save-state.dirty .led{background:var(--warn);animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.35}}
.btn-sm{
  padding:6px 11px;border-radius:8px;font-size:12.5px;border:1px solid var(--line);background:#fff;
  color:var(--ink-2);white-space:nowrap;
}
.btn-sm:hover{border-color:#d8d2c7;background:#fdfcfa}
.btn-sm.solid{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn-sm.danger{color:var(--bad);border-color:#efd9d6;background:#fdf4f3}
.btn-sm.danger:hover{background:#fbe9e7}

/* ---------------- 表格 ---------------- */
.gridwrap{
  overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  margin:14px 18px;box-shadow:var(--shadow);max-height:calc(100vh - 168px);
  -webkit-overflow-scrolling:touch;
}
table.kpi{
  border-collapse:separate;border-spacing:0;font-size:13px;font-variant-numeric:tabular-nums;
  table-layout:fixed;
}
table.kpi th,table.kpi td{padding:0;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);background:var(--card)}
table.kpi thead th{
  position:sticky;top:0;z-index:5;height:44px;background:#f7f4ef;color:var(--ink-2);
  font-weight:600;font-size:12px;text-align:center;white-space:nowrap;
  border-bottom:1px solid var(--line);
}
table.kpi thead th .wd{display:block;font-weight:400;font-size:10px;color:var(--muted);line-height:1;margin-top:2px}
table.kpi thead th.c-a,table.kpi thead th.c-b,table.kpi thead th.c-c{
  position:sticky;z-index:8;text-align:left;padding-left:11px;background:#f2eee7;
}
table.kpi thead th.c-a{left:0;width:var(--col-a)}
table.kpi thead th.c-b{left:var(--col-a);width:var(--col-b)}
table.kpi thead th.c-c{left:calc(var(--col-a) + var(--col-b));width:var(--col-c)}
table.kpi thead th.c-t{
  left:auto;right:0;z-index:8;width:var(--col-t);background:#f2eee7;
  border-left:1px solid var(--line);
}
table.kpi thead th.day{width:var(--col-d);min-width:var(--col-d)}
table.kpi thead th.today{background:var(--accent-soft);color:var(--accent)}
table.kpi thead th.today .wd{color:var(--accent)}

table.kpi tbody td{height:33px}
table.kpi td.c-a,table.kpi td.c-b,table.kpi td.c-c{
  position:sticky;z-index:3;background:var(--card);font-size:12.5px;
  padding:0 11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
table.kpi td.c-a{left:0;width:var(--col-a);color:var(--ink);font-weight:600;background:#fcfaf7}
table.kpi td.c-b{left:var(--col-a);width:var(--col-b);color:var(--ink-2)}
table.kpi td.c-c{left:calc(var(--col-a) + var(--col-b));width:var(--col-c);color:var(--muted);font-size:12px}
table.kpi td.c-a:empty,table.kpi td.c-b:empty{background:#fcfaf7}
table.kpi tbody tr.gs td.c-a{box-shadow:inset 0 2px 0 var(--line)}
table.kpi tbody tr.gs td.c-b,table.kpi tbody tr.gs td.c-c,
table.kpi tbody tr.gs td.day,table.kpi tbody tr.gs td.c-t{box-shadow:inset 0 2px 0 var(--line)}
table.kpi td.c-t{
  position:sticky;right:0;z-index:3;width:var(--col-t);background:#fbf8f3;
  border-left:1px solid var(--line);text-align:right;padding:0 12px;
  font-weight:600;font-size:12.5px;white-space:nowrap;
}
table.kpi td.day{padding:0;text-align:right}
table.kpi td.day.today{background:#fdf6f2}
table.kpi td.day input{
  width:100%;height:33px;border:none;background:transparent;text-align:right;
  padding:0 8px;font-size:13px;font-variant-numeric:tabular-nums;
}
table.kpi td.day input:focus{background:#fff8f4;box-shadow:inset 0 0 0 2px var(--accent)}
table.kpi td.day.ro{background:#fbfaf8}
table.kpi td.day.ro span{display:block;padding:0 8px;color:var(--muted);font-size:12.5px}
table.kpi tbody tr.sp td{height:7px;background:#f7f4ef;border-bottom:1px solid var(--line)}
table.kpi tbody tr:hover td.day{background:#fdfbf8}
table.kpi tbody tr:hover td.day.today{background:#fbf2ed}

/* ---------------- 手机逐日填写 ---------------- */
.dayview{padding:12px 14px 96px;max-width:720px;margin:0 auto}
.daynav{
  display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:8px 10px;margin-bottom:12px;box-shadow:var(--shadow);
}
.daynav .nav-btn{width:34px;height:34px;border-radius:8px;background:#f6f2ec;color:var(--ink-2);font-size:16px}
.daynav .nav-btn:hover{background:#efe9e0}
.daynav .cur{flex:1;text-align:center;line-height:1.25}
.daynav .cur b{display:block;font-size:15px}
.daynav .cur small{color:var(--muted);font-size:11.5px}
.daynav input[type=date]{
  width:1px;height:1px;opacity:0;position:absolute;pointer-events:none;
}
.quick{display:flex;gap:8px;margin-bottom:12px;overflow-x:auto;padding-bottom:2px}
.quick button{
  flex:0 0 auto;padding:6px 12px;border-radius:20px;background:#fff;border:1px solid var(--line);
  font-size:12.5px;color:var(--ink-2);
}
.quick button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.quick button.dot::after{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--ok);margin-left:6px;vertical-align:1px}

.gsec{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:10px;overflow:hidden;box-shadow:var(--shadow)}
.gsec>summary{
  list-style:none;display:flex;align-items:center;gap:9px;padding:14px 15px;cursor:pointer;
  font-weight:600;font-size:14px;user-select:none;
}
.gsec>summary::-webkit-details-marker{display:none}
.gsec>summary .chev{margin-left:auto;color:var(--muted);font-size:12px;transition:transform .18s}
.gsec[open]>summary .chev{transform:rotate(90deg)}
.gsec>summary .cnt{font-size:11.5px;font-weight:500;color:var(--muted);padding:1px 7px;border-radius:20px;background:#f4f0ea}
.gsec>summary .cnt.full{background:#e8f3ec;color:var(--ok)}
.gsec .body{padding:2px 15px 14px}
.frow{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid var(--line-2)}
.frow:last-child{border-bottom:none}
.frow .lbl{flex:1;font-size:13.5px;color:var(--ink-2);min-width:0}
.frow .lbl small{display:block;color:var(--muted);font-size:11.5px;margin-top:1px}
.frow input{
  width:118px;height:40px;text-align:right;padding:0 12px;border:1px solid var(--line);
  border-radius:9px;background:#fff;font-size:15px;font-variant-numeric:tabular-nums;
}
.frow input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.frow .ro{width:118px;height:40px;display:flex;align-items:center;justify-content:flex-end;padding:0 12px;color:var(--muted);font-size:15px;font-variant-numeric:tabular-nums}
.blk-lbl{font-size:11.5px;color:var(--muted);padding:11px 0 3px;font-weight:600;letter-spacing:.5px}

.savebar{
  position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;align-items:center;gap:10px;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.95);
  backdrop-filter:blur(10px);border-top:1px solid var(--line);
}
.savebar .mid{flex:1;text-align:center;font-size:12px;color:var(--muted);line-height:1.3}
.savebar .mid b{display:block;color:var(--ink-2);font-size:12.5px;font-weight:600}
.savebar .nav-btn{width:44px;height:40px;border-radius:9px;background:#f6f2ec;color:var(--ink-2);font-size:15px}

/* ---------------- 老板：员工卡片 ---------------- */
.wrap{padding:16px 18px 60px;max-width:1400px;margin:0 auto}
.sec-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.sec-head h2{font-size:16px}
.sec-head .sm{font-size:12.5px;color:var(--muted)}
.sec-head .sp{flex:1}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:18px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px 15px;box-shadow:var(--shadow)}
.stat .k{font-size:11.5px;color:var(--muted);margin-bottom:6px}
.stat .v{font-size:21px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.stat .u{font-size:12px;color:var(--muted);font-weight:400;margin-left:3px}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:12px}
.scard{
  background:var(--card);border:1px solid var(--line);border-radius:13px;padding:15px 16px;
  text-align:left;box-shadow:var(--shadow);transition:border-color .15s, transform .12s;width:100%;
}
.scard:hover{border-color:#cfc7ba;transform:translateY(-1px)}
.scard .top{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.scard .nm{font-weight:600;font-size:15px}
.scard .flag{margin-left:auto;font-size:11px;padding:2px 7px;border-radius:20px;font-weight:600}
.flag.ok{background:#e8f3ec;color:var(--ok)}
.flag.no{background:#fbf0e4;color:var(--warn)}
.flag.idle{background:#f2f0ec;color:var(--muted)}
.scard .big{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.scard .big span{font-size:12px;color:var(--muted);font-weight:400;margin-left:2px}
.scard .line2{font-size:12.5px;color:var(--ink-2);margin-top:5px;display:flex;gap:12px;flex-wrap:wrap}
.scard .line2 em{color:var(--muted);font-style:normal}
.scard .bar{height:4px;border-radius:3px;background:#f0ece5;margin-top:12px;overflow:hidden}
.scard .bar i{display:block;height:100%;background:var(--accent);border-radius:3px}
.scard .meta{font-size:11.5px;color:var(--muted);margin-top:7px;display:flex;justify-content:space-between}

/* ---------------- 透视表 ---------------- */
.pivotwrap{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);max-height:calc(100vh - 300px)}
table.pivot{border-collapse:separate;border-spacing:0;font-size:12.5px;font-variant-numeric:tabular-nums;width:100%}
table.pivot th,table.pivot td{padding:8px 9px;border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2);text-align:right;white-space:nowrap}
table.pivot thead th{position:sticky;top:0;background:#f7f4ef;font-weight:600;font-size:11.5px;color:var(--ink-2);z-index:3;text-align:center}
table.pivot th.nm,table.pivot td.nm{position:sticky;left:0;background:var(--card);text-align:left;font-weight:600;z-index:2;min-width:88px}
table.pivot thead th.nm{background:#f2eee7;z-index:4}
table.pivot tbody tr:hover td{background:#fdfbf8}
table.pivot tbody tr:hover td.nm{background:#fdfbf8}
table.pivot td.zero{color:#cfc9bf}
table.pivot tfoot td{position:sticky;bottom:0;background:#f7f4ef;font-weight:600;border-top:1px solid var(--line)}
table.pivot tfoot td.nm{background:#f2eee7}
table.pivot .tot-col{background:#fbf8f3;font-weight:600}

/* ---- 多指标汇总表 ---- */
/* 字号 / 内边距 / 最小列宽统一走变量，靠 sz-l / sz-xl 整表放大 */
table.pivot.sum{
  --pv-fs:15px;
  --pv-pad:12px 14px;
  --pv-minw:82px;
  --pv-nm-fs:15px;
  --pv-hd-fs:13.5px;
  --pv-grp-fs:12.5px;
  --pv-unit-fs:10.5px;
}
table.pivot.sum.sz-l{
  --pv-fs:17px;
  --pv-pad:15px 18px;
  --pv-minw:96px;
  --pv-nm-fs:17px;
  --pv-hd-fs:15px;
  --pv-grp-fs:13.5px;
  --pv-unit-fs:11.5px;
}
table.pivot.sum.sz-xl{
  --pv-fs:19.5px;
  --pv-pad:18px 22px;
  --pv-minw:112px;
  --pv-nm-fs:19.5px;
  --pv-hd-fs:17px;
  --pv-grp-fs:15px;
  --pv-unit-fs:13px;
}
table.pivot.sum{font-size:var(--pv-fs)}
table.pivot.sum th,table.pivot.sum td{
  padding:var(--pv-pad);
  min-width:var(--pv-minw);
}
table.pivot.sum th.nm,table.pivot.sum td.nm{
  min-width:120px;font-size:var(--pv-nm-fs);
}
table.pivot.sum thead th.mh{
  font-size:var(--pv-hd-fs);
  white-space:normal;          /* 长项目名（如「邀约回店·人数」）允许折行 */
  line-height:1.35;
  word-break:break-all;
}
table.pivot.sum thead th.grp{
  font-size:var(--pv-grp-fs);
}
table.pivot.sum thead th.mh .u{
  font-size:var(--pv-unit-fs);
  margin-top:3px;
}
table.pivot.sum tfoot tr.tot td{
  font-size:var(--pv-fs);
}

table.pivot.sum th.nm{vertical-align:middle}
table.pivot.sum thead th.grp{
  color:var(--ink-2);letter-spacing:.6px;
  background:#f2eee7;border-bottom:1px solid var(--line);
  border-left:2px solid #fff;
}
table.pivot.sum thead th.grp:first-of-type{border-left:none}
table.pivot.sum thead th.mh{
  background:#f7f4ef;font-weight:600;color:var(--ink-2);
}
table.pivot.sum tbody tr:nth-child(even) td{background:#fdfcfb}
table.pivot.sum tbody tr:hover td{background:#fbf7f2}
table.pivot.sum td.nm{font-weight:600}
table.pivot.sum td.hi{
  background:#fdf1e9 !important;color:#8f3f21;font-weight:700;
  box-shadow:inset 0 0 0 1px #f0d9ca;
}
table.pivot.sum tfoot tr.tot td{
  background:#f4f0e9;font-weight:700;color:var(--ink);
  border-top:2px solid var(--line);
}
table.pivot.sum tfoot tr.tot td.nm{background:#efeade}
.dash{color:#d6d0c6}

/* ---- 填表日期提醒 ---- */
.daywarn{
  margin:10px 12px 2px;padding:9px 12px;border-radius:9px;
  background:#fdf4e8;border:1px solid #f2ddbf;color:#7a4d18;
  font-size:12.5px;line-height:1.6;display:flex;align-items:center;
  gap:8px;flex-wrap:wrap;
}
.daywarn b{color:#8a4a10;font-weight:700}
.daywarn.soft{background:#f4f1ec;border-color:var(--line);color:var(--ink-2)}
.daywarn button{
  margin-left:auto;padding:4px 11px;border-radius:14px;font-size:12px;
  background:#fff;border:1px solid #e3c9a6;color:#8a4a10;font-weight:600;
}
.daywarn button:hover{background:#fdf9f3}
.empty-act{display:flex;gap:9px;justify-content:center;margin-top:14px;flex-wrap:wrap}

/* ---- 门店 ---- */
.storebar{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  padding:9px 18px 8px;background:#fdfbf8;border-bottom:1px solid var(--line);
}
.storebar .fl{font-size:12.5px;color:var(--muted);margin-right:2px}
.storebar .chip{
  padding:5px 13px;border-radius:20px;font-size:12.5px;
  border:1px solid var(--line);background:#fff;color:var(--ink-2);
  transition:all .13s;white-space:nowrap;
}
.storebar .chip:hover{border-color:#cfc7ba;background:#fbf8f3}
.storebar .chip.on{
  background:#4a3f35;color:#fff;border-color:#4a3f35;font-weight:500;
}

/* 员工填报页：门店分组 */
.store-sec{margin-bottom:26px}
.store-title{
  display:flex;align-items:baseline;gap:10px;margin:0 0 12px;
  padding-bottom:8px;border-bottom:2px solid var(--line);
}
.store-title .sn{font-size:15px;font-weight:700;color:var(--ink)}
.store-title .sc{font-size:12px;color:var(--muted)}

/* 员工管理：门店分组行 */
.store-row td{padding:0 !important;background:transparent !important}
.store-head{
  display:flex;align-items:center;gap:8px;
  padding:9px 14px 7px;background:#f4f0e9;
  font-size:12.5px;color:var(--ink-2);
  border-top:1px solid var(--line);
}
.store-name{font-weight:700;color:var(--ink)}
.store-cnt{
  font-size:11px;color:var(--muted);background:#fff;
  border:1px solid var(--line);border-radius:10px;padding:1px 8px;
}

/* 汇总表里每人名字下的门店小标 */
.sbadge{
  display:inline-block;margin-left:6px;padding:0 5px;border-radius:4px;
  background:#f0ece4;color:#7a6a55;font-size:10px;font-weight:400;vertical-align:1px;
}
.nofill{
  display:inline-block;margin-left:6px;padding:0 5px;border-radius:4px;
  background:#f4f0ea;color:var(--muted);font-size:10px;font-weight:400;vertical-align:1px;
}
.tbl-note{
  font-size:12px;color:var(--muted);line-height:1.7;margin-top:10px;padding-left:2px;
}
.mini-sel{
  height:32px;border:1px solid var(--line);border-radius:8px;background:#fff;
  padding:0 8px;font-size:13px;font-weight:600;color:var(--ink-2);
}

/* ---- 分类筛选条 ---- */
.filterbar{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;
  padding:9px 18px;background:#fdfbf8;border-bottom:1px solid var(--line);
  position:sticky;top:calc(var(--head-h) + 52px);z-index:30;
}
.filterbar .fl{font-size:12.5px;color:var(--muted);margin-right:2px}
.filterbar .fsep{width:1px;height:18px;background:var(--line);margin:0 3px}
.filterbar .chip{
  padding:5px 12px;border-radius:20px;font-size:12.5px;
  border:1px solid var(--line);background:#fff;color:var(--ink-2);
  transition:all .13s;white-space:nowrap;
}
.filterbar .chip:hover{border-color:#cfc7ba;background:#fbf8f3}
.filterbar .chip.on{
  background:var(--ink);color:#fff;border-color:var(--ink);font-weight:500;
}
.filterbar .chip.cat.on{background:var(--accent);border-color:var(--accent)}
.filterbar .fcount{
  margin-left:auto;font-size:11.5px;color:var(--muted);white-space:nowrap;
}
@media (max-width:860px){
  .filterbar{position:static;padding:8px 12px;gap:6px}
  .filterbar .fcount{display:none}
}

.empty{
  padding:56px 20px;text-align:center;color:var(--muted);background:var(--card);
  border:1px dashed var(--line);border-radius:var(--r);font-size:13.5px;line-height:1.9;
}
.empty b{display:block;color:var(--ink);font-size:15px;margin-bottom:6px}

/* ---------------- 员工管理 ---------------- */
.mgmt{display:grid;grid-template-columns:1fr 320px;gap:16px;align-items:start}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.panel h3{font-size:14px;padding:14px 16px;border-bottom:1px solid var(--line);background:#fcfaf7}
.panel .pad{padding:15px 16px}
table.mlist{width:100%;border-collapse:collapse;font-size:13px}
table.mlist th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:9px 12px;border-bottom:1px solid var(--line);background:#fcfaf7}
table.mlist td{padding:11px 12px;border-bottom:1px solid var(--line-2);vertical-align:middle}
table.mlist tr:last-child td{border-bottom:none}
table.mlist .acts{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}

/* ---- 员工账号表：密码列 ---- */
table.staff-tbl td.c-name{min-width:64px}
table.staff-tbl td.c-user code{
  font-family:ui-monospace,Consolas,monospace;font-size:12.5px;
  color:#5d5245;background:#f6f2ec;padding:2px 6px;border-radius:5px;
}
table.staff-tbl td.c-pass .pw{
  font-family:ui-monospace,Consolas,monospace;font-size:13px;
  color:#8a4a10;background:#fdf4e8;border:1px solid #f2ddbf;
  padding:2px 7px;border-radius:5px;font-weight:600;
  letter-spacing:.4px;user-select:all;   /* 点一下就能整段选中复制 */
}
table.staff-tbl td.c-pass .pw-none{
  font-size:11.5px;color:#b0a698;background:#f5f2ed;
  padding:2px 7px;border-radius:5px;
}
table.staff-tbl td.c-role{white-space:nowrap}
.pill{display:inline-block;padding:1.5px 8px;border-radius:20px;font-size:11px;font-weight:600}
.pill.boss{background:var(--accent-soft);color:var(--accent)}
.pill.staff{background:#f1eee9;color:var(--ink-2)}
.pill.off{background:#fbe9e7;color:var(--bad)}
.form-row{margin-bottom:11px}
.form-row label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
.form-row input{width:100%;height:38px;padding:0 11px;border:1px solid var(--line);border-radius:8px;background:#fff}
.form-row select{width:100%;height:38px;padding:0 9px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:13.5px;color:var(--ink)}
.form-row select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.form-row input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}

/* ---------------- 弹层 ---------------- */
.mask{position:fixed;inset:0;background:rgba(31,28,25,.42);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;animation:fade .15s}
@keyframes fade{from{opacity:0}}
.modal{background:var(--card);border-radius:16px;width:100%;max-width:400px;padding:24px 24px 18px;box-shadow:0 20px 60px rgba(0,0,0,.22);animation:pop .18s}
@keyframes pop{from{transform:scale(.96);opacity:0}}
.modal h3{font-size:16px;margin-bottom:6px}
.modal p.sub{font-size:13px;color:var(--muted);margin:0 0 16px;line-height:1.6}
.modal .foot{display:flex;gap:9px;margin-top:18px}
.modal .foot button{flex:1;height:42px;border-radius:9px;font-weight:600;font-size:14px}
.modal .foot .cancel{background:#f4f0ea;color:var(--ink-2)}
.modal .foot .ok{background:var(--ink);color:#fff}
.modal .foot .ok.danger{background:var(--bad)}
.modal .err{color:var(--bad);font-size:12.5px;min-height:16px;margin-top:9px}

.toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(8px);
  background:var(--ink);color:#fff;padding:10px 18px;border-radius:22px;font-size:13px;z-index:200;
  opacity:0;transition:opacity .2s, transform .2s;pointer-events:none;max-width:88vw;
}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------------- 响应式 ---------------- */
.only-mobile{display:none}
@media (max-width:860px){
  .only-mobile{display:block}
  .only-desktop{display:none !important}
  .topbar{padding:0 12px;gap:10px;height:auto;min-height:52px;flex-wrap:wrap}
  .brand small{display:none}
  .tabs{margin-left:0;order:3;width:100%;padding-bottom:8px;overflow-x:auto}
  .tabs button{padding:6px 12px;font-size:13px}
  .topbar .right .who .tag{display:none}
  .toolbar{padding:8px 12px;gap:8px;top:0;position:static}
  .gridwrap{margin:10px;max-height:none}
  .wrap{padding:12px 12px 80px}
  .mgmt{grid-template-columns:1fr}
  .cards{grid-template-columns:1fr 1fr}
  .stat .v{font-size:18px}
  .pivotwrap{max-height:none}
}
@media (max-width:520px){
  .cards{grid-template-columns:1fr}
  .auth-card{padding:28px 22px 22px}
}
