:root{
  --bg:#f5f6f8; --card:#fff; --ink:#1f2328; --ink2:#5b6472; --line:#e3e6ea;
  --brand:#2563eb; --brand2:#1d4ed8; --ok:#16a34a; --warn:#d97706; --err:#dc2626;
  --code:#f2f4f7; --radius:10px;
  --font:-apple-system,"Segoe UI","Microsoft YaHei",system-ui,sans-serif;
}
*{box-sizing:border-box}
  /* 2026-10-01 修的 bug：.login-wrap{display:grid} / #app{display:flex} 是作者样式，
     优先级高于浏览器默认的 [hidden]{display:none}，于是 app.js 里
     `$('#login').hidden = true` 完全不起作用 —— 登录成功了登录卡片也永远不消失，
     用户看到登录框还在，就以为「一直登录不上去」。这条必须留着。 */
  [hidden]{display:none !important}
html,body{height:100%}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--ink);
     font-size:14.5px;line-height:1.7;-webkit-font-smoothing:antialiased}
button{font-family:inherit;font-size:inherit;cursor:pointer;border:0;border-radius:8px;
       padding:8px 16px;background:var(--brand);color:#fff;transition:.15s}
button:hover{background:var(--brand2)}
button.ghost{background:transparent;color:var(--ink2);border:1px solid var(--line)}
button.ghost:hover{background:#eef1f5;color:var(--ink)}
button:disabled{opacity:.5;cursor:not-allowed}
input,select{font-family:inherit;font-size:inherit;padding:9px 12px;border:1px solid var(--line);
             border-radius:8px;background:#fff;color:var(--ink);outline:none;transition:.15s}
input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
code{background:var(--code);padding:1px 6px;border-radius:5px;font-size:.92em;
     font-family:ui-monospace,Consolas,monospace}
.err{color:var(--err);font-size:13px;min-height:18px;margin-top:8px}

/* ── 登录 ── */
.login-wrap{height:100%;display:grid;place-items:center;
  background:linear-gradient(140deg,#eef2ff,#f5f6f8 45%,#eef7f3)}
.login-card{background:var(--card);padding:40px 36px;border-radius:16px;width:360px;
  box-shadow:0 12px 40px rgba(20,30,50,.10);display:flex;flex-direction:column;gap:14px}
.login-card .logo{width:52px;height:52px;border-radius:14px;background:var(--brand);color:#fff;
  display:grid;place-items:center;font-size:26px;font-weight:700;margin:0 auto}
.login-card h1{margin:0;text-align:center;font-size:21px;font-weight:650}
.login-card .sub{margin:-8px 0 8px;text-align:center;color:var(--ink2);font-size:13px}
.login-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink2)}
.login-card input{padding:11px 13px}
.login-card button{padding:12px;font-size:15px;font-weight:600;margin-top:4px}
.login-card .foot{text-align:center;color:#98a2b3;font-size:12.4px}

/* ── 主界面 ── */
#app{height:100%;display:flex;flex-direction:column}
header{display:flex;align-items:center;gap:18px;padding:0 20px;height:60px;
  background:var(--card);border-bottom:1px solid var(--line);flex:0 0 auto}
.brand{font-weight:650;font-size:16px;white-space:nowrap}
.searchbar{flex:1;display:flex;gap:8px;max-width:820px}
.searchbar input{flex:1}
.searchbar select{width:150px}
.searchbar button{padding:9px 22px}
.userbox{display:flex;align-items:center;gap:10px;color:var(--ink2);font-size:13.5px;white-space:nowrap}

main{flex:1;display:flex;min-height:0}
aside{width:250px;flex:0 0 auto;background:var(--card);border-right:1px solid var(--line);
  padding:18px 14px;overflow:auto}
aside h3{margin:0 0 10px;font-size:12.5px;color:var(--ink2);letter-spacing:.06em;
  text-transform:uppercase;font-weight:600}
#books,#tablelist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
#books li,#tablelist li{padding:9px 11px;border-radius:8px;cursor:pointer;font-size:13.5px;
  display:flex;justify-content:space-between;gap:8px;color:var(--ink)}
#books li:hover,#tablelist li:hover{background:#f0f3f8}
#books li.on,#tablelist li.on{background:#e8efff;color:var(--brand2);font-weight:600}
#books li span,#tablelist li span{color:#98a2b3;font-size:12px;font-weight:400}
#tablesHead{margin-top:20px}
/* 部门分组标题（2026-10-03 起表按部门放子目录，部门可点开/收起） */
#tablelist li.tgrp{cursor:pointer;padding:10px 11px 6px;gap:6px;
  border-bottom:1px solid var(--line);margin-bottom:3px;justify-content:flex-start;
  position:sticky;top:0;background:var(--card);z-index:2}
#tablelist li.tgrp:hover{background:#f0f3f8}
#tablelist li.tgrp b{font-size:12.5px;letter-spacing:.4px;color:var(--ink);font-weight:700}
#tablelist li.tgrp .caret{color:var(--ink2);font-size:11px;width:12px;flex:none}
#tablelist li.tgrp.open .caret{color:var(--brand2)}
/* 收起的部门：本部门的表全部隐藏 */
#tablelist li.off{display:none}
body.dark #tablelist li.tgrp{background:#161b22}
body.dark #tablelist li.tgrp:hover{background:#222932}
.sheethead .depttag{display:inline-block;padding:3px 9px;border-radius:999px;
  background:#e8efff;color:var(--brand2);font-size:12px;font-weight:600;white-space:nowrap}
body.dark .sheethead .depttag{background:#1e2b45}
.stats{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);
  color:var(--ink2);font-size:12.4px;line-height:1.9}

#content{flex:1;overflow:auto;padding:22px 26px}
.welcome h2{margin:0 0 10px;font-size:17px}
.welcome ol,.welcome ul{margin:0;padding-left:20px;color:var(--ink2)}
.welcome li{margin:6px 0}
.tip{margin-top:16px;padding:12px 14px;background:#eef4ff;border-left:3px solid var(--brand);
  border-radius:0 8px 8px 0;color:#334155;font-size:13.4px}

.rhead{color:var(--ink2);font-size:13.4px;margin-bottom:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;margin-bottom:12px;transition:.15s}
.card:hover{border-color:#c8d3e4;box-shadow:0 2px 10px rgba(20,30,50,.05)}
.card h4{margin:0 0 6px;font-size:15px;color:var(--brand2)}
.card .meta{color:#8792a4;font-size:12.4px;margin-bottom:9px;display:flex;
  flex-wrap:wrap;gap:12px}
.badge{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11.6px;
  background:#eef1f5;color:var(--ink2)}
.badge.tech{background:#fef3e2;color:var(--warn)}
.card pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--font);
  font-size:13.6px;color:#374151;max-height:210px;overflow:hidden;
  -webkit-mask-image:linear-gradient(#000 72%,transparent);mask-image:linear-gradient(#000 72%,transparent)}
.card.open pre{max-height:none;-webkit-mask-image:none;mask-image:none}
.card .more{margin-top:8px;font-size:13px;color:var(--brand);cursor:pointer;user-select:none}
mark{background:#fff3bf;color:inherit;border-radius:3px;padding:0 2px}

/* 整册阅读 */
.reader{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:26px 32px;line-height:1.85}
.reader h1{font-size:22px;margin:0 0 6px;padding-bottom:12px;border-bottom:2px solid var(--line)}
.reader h2{font-size:17px;margin:26px 0 8px;padding-top:14px;border-top:1px solid var(--line)}
.reader h3{font-size:15.2px;margin:18px 0 6px}
.reader table{border-collapse:collapse;width:100%;margin:12px 0;font-size:13.2px;display:block;overflow-x:auto}
.reader th,.reader td{border:1px solid var(--line);padding:6px 10px;text-align:left}
.reader th{background:#f7f9fc;font-weight:600}
.reader blockquote{margin:10px 0;padding:8px 14px;border-left:3px solid #c8d3e4;
  background:#fafbfd;color:var(--ink2)}
.reader pre{background:#f7f9fc;padding:12px 14px;border-radius:8px;overflow:auto;font-size:12.8px}
.reader code{background:#eef1f5}
.reader sub{color:#8792a4;font-size:12px}
.reader hr{border:0;border-top:1px dashed var(--line);margin:22px 0}

/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(20,28,45,.42);display:grid;place-items:center;z-index:9}
.modal-card{background:var(--card);border-radius:14px;padding:22px 24px;width:660px;max-width:94vw;
  max-height:88vh;overflow:auto}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.modal-head h3{margin:0;font-size:16px}
#umTable{width:100%;border-collapse:collapse;font-size:13.4px}
#umTable th,#umTable td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left}
#umTable th{color:var(--ink2);font-weight:600;font-size:12.6px}
.newuser{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.newuser h4{width:100%;margin:0 0 4px;font-size:14px}
.newuser input{flex:1;min-width:150px}
.chk{display:flex;align-items:center;gap:6px;color:var(--ink2);font-size:13px}
.on{color:var(--ok);font-weight:600}
.off{color:#98a2b3}

/* 目录表弹窗 */
.modal-card.wide{width:min(1180px,94vw)}
.modal-card.wide .modal-head{justify-content:flex-start;gap:12px;flex-wrap:wrap}
.modal-card.wide .modal-head h3{margin-right:auto}
.tabs{display:flex;gap:6px}
.tabs button{padding:6px 13px;font-size:13px}
.btnlink{display:inline-flex;align-items:center;text-decoration:none;
  padding:8px 15px;border:1px solid var(--line);border-radius:8px;
  color:var(--ink2);font-size:13.4px;background:transparent}
.btnlink:hover{background:#eef1f5;color:var(--ink)}
.tablewrap{overflow:auto;max-height:62vh;border:1px solid var(--line);border-radius:10px}
#tmTable{width:100%;border-collapse:collapse;font-size:13.2px}
#tmTable th,#tmTable td{border-bottom:1px solid var(--line);padding:7px 10px;
  text-align:left;white-space:nowrap;vertical-align:top}
#tmTable th{background:#f7f9fc;color:var(--ink2);font-weight:600;font-size:12.6px;
  position:sticky;top:0;z-index:1}
#tmTable tr:hover td{background:#fafbfd}
#tmTable td:nth-child(3),#tmTable td:nth-child(6){white-space:normal;min-width:200px}
#tmTable tbody tr:last-child td{font-weight:600;background:#f7f9fc}
#tmFoot{margin-top:10px;font-size:12.6px;color:var(--ink2)}

/* 共享表格：通用表格，不套用 #tmTable 的「末行加粗/指定列换行」那套目录表专属规则。
   #inlineTable 是首页内嵌版，样式跟弹窗版共用一份。
   ⚠️ 关键：列多了（如操作共享表 33 列）如果只有 width:100%，浏览器会把 33 列硬挤进一屏，
   表头被折成竖排、单元格被压成一条 —— 必须给单元格一个 min-width，
   让总宽超过容器、由 .tablewrap 横向滚动（跟 Excel 一样）。 */
#smTable,#inlineTable{width:100%;border-collapse:collapse;font-size:13.2px}
/* 行距按用户 2026-10-01 要求调紧（原 padding 7px/10px、行高 1.45 太松） */
#smTable th,#smTable td,#inlineTable th,#inlineTable td{
  border-bottom:1px solid var(--line);padding:4px 9px;text-align:left;vertical-align:top;
  min-width:72px;line-height:1.3}
#smTable th,#inlineTable th{background:#f7f9fc;color:var(--ink2);font-weight:600;
  font-size:12.6px;position:sticky;top:0;z-index:1;white-space:pre-line;line-height:1.2}
/* pre-line：保留 Excel 单元格里的换行（如「箱数\n(CT)」「裤子\n外套\n…」） */
#smTable td,#inlineTable td{max-width:420px;white-space:pre-line;line-height:1.3}
/* 只读视图里长内容先折成 3 行（点一下展开）——只影响显示，不改数据。
   长内容列给更宽的 min-width：CJK 可以逐字断行，不加宽的话 33 列一挤就只剩几十像素。 */
#inlineTable td.long,#smTable td.long{min-width:190px}
#inlineTable td .cv{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;
  overflow:hidden;cursor:zoom-in}
#inlineTable td .cv.open{display:block;-webkit-line-clamp:none;cursor:zoom-out}
#smTable tr:hover td,#inlineTable tr:hover td{background:#fafbfd}
#smFoot{margin-top:10px;font-size:12.6px;color:var(--ink2)}
/* 首页内嵌表格不另开滚动条（页面本身已经在滚），弹窗版仍限高 */
#results .tablewrap{max-height:none;background:var(--card)}
#results h2{margin:0;font-size:17px}

/* ── 共享表格 · 编辑界面 ── */
.sheethead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.sheethead h2{margin-right:auto}
.sheettools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sheettools button,.sheettools .btnlink{padding:7px 14px;font-size:13.2px}
.aibox{display:flex;align-items:center;gap:8px;padding:10px 12px;margin-bottom:12px;
  background:#eef4ff;border:1px solid #d5e3ff;border-radius:10px}
.aibox .aitag{flex:0 0 auto;width:30px;height:30px;border-radius:8px;background:var(--brand);
  color:#fff;font-size:12.6px;font-weight:700;display:grid;place-items:center}
.aibox input{flex:1;min-width:160px;background:#fff}
.aibox button{flex:0 0 auto;padding:9px 16px}
.ainote{margin:-4px 0 12px;padding:9px 12px;border-radius:8px;font-size:13px;
  background:#f1f5f9;color:#334155;border-left:3px solid #94a3b8}
.ainote.ok{background:#ecfdf5;border-left-color:var(--ok);color:#065f46}
.ainote.bad{background:#fef2f2;border-left-color:var(--err);color:#991b1b}
.ainote.warn{background:#fffbeb;border-left-color:var(--warn);color:#92400e}

/* 编辑态的单元格：用 textarea 才编得动「品名」这种本来就有换行的内容 */
/* 编辑态列要更宽：不然「2026-08-29」这种值在 textarea 里会被折成三行 */
#inlineTable.editing th,#inlineTable.editing td{min-width:104px}
#inlineTable textarea.cellin{width:100%;min-width:88px;border:1px solid transparent;border-radius:6px;
  background:transparent;font:inherit;color:inherit;padding:3px 6px;resize:vertical;
  white-space:pre-line;line-height:1.3;overflow:hidden}
#inlineTable textarea.cellin:hover{border-color:var(--line);background:#fff}
#inlineTable textarea.cellin:focus{border-color:var(--brand);background:#fff;outline:none;
  box-shadow:0 0 0 3px rgba(37,99,235,.12)}
#inlineTable th.rowop,#inlineTable td.rowop{min-width:112px;width:112px;padding:4px 5px;
  text-align:center;background:#fafbfd;white-space:nowrap}
#inlineTable td.rowop input[type=checkbox]{margin-right:4px;vertical-align:middle}
#inlineTable button.delrow,#inlineTable button.insrow{padding:2px 6px;font-size:12px;
  vertical-align:middle;margin-left:3px}
#inlineTable button.delrow{color:var(--err);border-color:#f3d0d0;background:#fff}
#inlineTable button.delrow:hover{background:#fef2f2;color:#b91c1c}
#inlineTable button.insrow{color:var(--ok);border-color:#cfe9d8;background:#fff}
#inlineTable button.insrow:hover{background:#ecfdf5;color:#15803d}

/* 编辑模式下表头是可改的输入框 + 删列按钮 */
#inlineTable th .headin{width:calc(100% - 20px);padding:3px 5px;font-size:12.5px;font-weight:600;
  border:1px solid transparent;border-radius:5px;background:transparent;color:var(--ink2);
  white-space:pre-line}
#inlineTable th .headin:hover{border-color:var(--line);background:#fff}
#inlineTable th .headin:focus{border-color:var(--brand);background:#fff;outline:none;
  box-shadow:0 0 0 3px rgba(37,99,235,.12)}
#inlineTable th button.delcol{padding:1px 5px;font-size:11px;color:var(--err);
  border-color:#f3d0d0;background:#fff;vertical-align:middle;margin-left:2px}
#inlineTable th button.delcol:hover{background:#fef2f2;color:#b91c1c}

/* ── 批量操作面板（批量粘贴 / 批量填充）── */
/* ── 按月分页页签 ── */
.monthtabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 10px;
  padding:8px 10px;background:#f8fafc;border:1px solid var(--line);border-radius:10px}
.monthtabs .mtlab{font-size:12.8px;color:var(--ink2);margin-right:2px}
.monthtabs button{padding:5px 13px;font-size:12.8px;border-radius:7px}
.monthtabs button.ghost{border-color:transparent;background:transparent}
.monthtabs button.ghost:hover{background:#e2e8f2}

.panel{margin:0 0 12px;padding:12px 14px;background:#fff;border:1px solid var(--line);
  border-radius:10px;box-shadow:0 2px 10px rgba(20,30,50,.05)}
.phead{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;
  font-size:13.6px;color:var(--ink2)}
.phead b{color:var(--ink)}
.phead button{margin-left:auto;padding:5px 12px;font-size:12.6px}
.panel textarea{width:100%;min-height:120px;padding:10px 12px;border:1px solid var(--line);
  border-radius:8px;font:inherit;font-size:13px;line-height:1.5;white-space:pre;overflow:auto;resize:vertical}
.panel textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.12);outline:none}
.prow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px}
.prow select,.prow input[type=text],.prow input:not([type]){padding:7px 10px;font-size:13.2px}
.prow select{max-width:280px}
.prow input#fillVal{flex:1;min-width:180px}
.chk2{display:inline-flex;align-items:center;gap:6px;font-size:13.2px;color:var(--ink2);white-space:nowrap}
.pnote{margin-top:10px;font-size:12.8px;color:var(--ink2)}
.pnote.bad{color:var(--err)}
.pnote.ok{color:var(--ok)}
button.danger{color:var(--err);border-color:#f3d0d0;background:#fff}
button.danger:hover{background:#fef2f2;color:#b91c1c}

/* ── 可视化看板 ── */
.viewtabs{display:flex;gap:6px;padding:3px;background:#eef1f5;border-radius:10px}
.viewtabs button{padding:6px 16px;font-size:13.2px;border-radius:7px}
.viewtabs button.ghost{border-color:transparent;background:transparent}
.viewtabs button.ghost:hover{background:#e2e8f2}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(176px,1fr));gap:12px;margin:4px 0 16px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 16px;display:flex;flex-direction:column;gap:2px}
.kpi .kv{font-size:25px;font-weight:700;color:var(--brand2);line-height:1.25;
  font-variant-numeric:tabular-nums}
.kpi .kl{font-size:12.8px;color:var(--ink)}
.kpi .ks{font-size:11.6px;color:#98a2b3}

.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:14px}
.chart{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}
.chart h4{margin:0 0 12px;font-size:13.6px;font-weight:600;color:var(--ink)}
.bars{display:flex;flex-direction:column;gap:9px}
.bar{display:grid;grid-template-columns:132px 1fr auto;align-items:center;gap:10px;font-size:12.8px}
.bar .bl{color:var(--ink2);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .bt{display:block;height:16px;background:#eef1f5;border-radius:5px;overflow:hidden}
.bar .bt i{display:block;height:100%;border-radius:5px;
  background:linear-gradient(90deg,#2563eb,#60a5fa)}
.bar .bv{min-width:92px;text-align:right;color:var(--ink);font-variant-numeric:tabular-nums;
  white-space:nowrap}
.bar .bp{color:#98a2b3;font-size:11.4px;margin-left:7px}
.facts{margin-top:14px;padding:12px 14px;background:#f8fafc;border:1px solid var(--line);
  border-radius:8px;font-size:12.6px;color:var(--ink2);line-height:1.85}
.facts b{color:var(--ink)}
@media (max-width:860px){
  .bar{grid-template-columns:96px 1fr auto}
  .charts{grid-template-columns:1fr}
}
#results .tip{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#results .tip .btnlink{margin-right:8px}

/* 中等宽度（笔记本分屏 / 半屏）：header 只让搜索框换行，不隐藏左边栏。
   2026-10-01 加：header 里现在有 4 个按钮（共享表格/目录表/用户管理/退出），
   窗口一窄就会把右边几个挤出可视区 —— 用户找不到「共享表格」就是这么来的。 */
@media (max-width:1160px){
  header{flex-wrap:wrap;height:auto;min-height:60px;padding:8px 20px;gap:12px}
  .searchbar{order:3;flex:1 0 100%;max-width:none}
}

@media (max-width:860px){
  aside{display:none}
  header{flex-wrap:wrap;height:auto;padding:10px 14px;gap:10px}
  .searchbar{order:3;width:100%;max-width:none}
  .searchbar select{width:110px}
}

/* ── 判渠道/价格 面板（品名对照价卡 → 渠道 + 价格） ── */
.jItem{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:0 0 12px;background:#fff}
.jTop{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:14px}
.jTag{font-size:11.5px;padding:1px 8px;border-radius:99px;font-weight:600}
.jTag.jE{background:#fef3c7;color:#92400e}
.jTag.jN{background:#e0f2fe;color:#075985}
.jCat{margin-top:6px;font-size:12.8px;color:var(--ink2)}
.jMaybe{font-size:12.3px;color:#98a2b3;margin-top:3px}
.jWarn{font-size:12.6px;color:#b45309;background:#fffbeb;border:1px solid #fde68a;
  border-radius:6px;padding:4px 9px;margin-top:6px}
.jTbl{width:100%;border-collapse:collapse;margin-top:9px;font-size:12.6px}
.jTbl th{background:#f8fafc;color:var(--ink2);font-weight:600;text-align:left;
  padding:6px 8px;border:1px solid var(--line);white-space:nowrap}
.jTbl td{padding:6px 8px;border:1px solid var(--line);vertical-align:top;line-height:1.6}
.jTbl tr.jNo td{color:#98a2b3;background:#fcfcfd}
.jTbl tr.jNo td:first-child{color:#c2410c}
.jSub{color:#98a2b3;font-size:11.8px;margin-top:3px;white-space:pre-wrap}
.jTbl details{margin-top:4px}
.jTbl summary{cursor:pointer;color:#2563eb;font-size:11.8px;user-select:none}
.jTerms{margin-top:8px;font-size:12.2px;color:var(--ink2)}
.jTerms summary{cursor:pointer;color:#2563eb;user-select:none}
.jTerms .jSub{margin:4px 0 0 10px}
button.sm{font-size:12px;padding:3px 10px}

/* ── 价卡浏览界面（大类页签 + 搜索 + 分页） ── */
.pcChips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.pcChips button{padding:7px 14px;font-size:13px;border-radius:999px}
.pcChips button.ghost{background:var(--card);border-color:var(--line)}
.pcSearch{display:flex;align-items:center;gap:12px;margin:0 0 10px}
.pcSearch input{flex:1;min-width:200px}
.pcCnt{white-space:nowrap;font-size:12.8px;color:var(--ink2);font-variant-numeric:tabular-nums}
.pcPage{display:flex;gap:6px;margin:12px 0 4px;flex-wrap:wrap;align-items:center}
.pcPage button{padding:5px 12px;font-size:12.8px;border-radius:7px}
.pcPage button.ghost{background:var(--card)}
.pcDots{color:#98a2b3;padding:0 2px}

/* ── 移动端表格切换下拉 ──
   窄屏（≤860px）时 aside 被 display:none，表格列表（#tablelist）看不见 →
   手机上有新 app.js 也只能看到列表第一张表，切不到其它表。
   正解：在 header 放一个下拉，只在「手机 + 只显示共享表格」时出现。 */
#tsheet{display:none;max-width:190px;padding:7px 10px}
@media (max-width:860px){
  body.onlysheets #tsheet{display:inline-block}
}

/* ── 面包屑（2026-10-02 对标飞书知识库） ── */
.crumb{display:flex;align-items:center;gap:7px;font-size:12.6px;color:#8792a4;
  margin:0 0 14px;padding-bottom:10px;border-bottom:1px dashed var(--line);flex-wrap:wrap}
.crumb i{font-style:normal;color:#c3cbd8}
.crumb b{color:var(--brand2);font-weight:600}
.crumb .crumb-cur{color:var(--ink);font-weight:500;max-width:60%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}

/* ── 侧栏「本册目录」 ── */
#toc{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
#toc h3{margin:0 0 6px}
#toc .tocbook{font-size:12.2px;color:#98a2b3;margin-bottom:8px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#toc ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}
#toc li{padding:5px 8px;border-radius:6px;cursor:pointer;font-size:12.6px;color:var(--ink2);
  line-height:1.35;border-left:2px solid transparent}
#toc li:hover{background:#f0f3f8;color:var(--ink)}
#toc li.on{background:#e8efff;color:var(--brand2);font-weight:600;border-left-color:var(--brand2)}
#toc li.h2{padding-left:20px}
#toc li.h3{padding-left:34px;font-size:12.2px}

/* ── 代码块（行号 + 语言标签 + 复制） ── */
.codewrap{margin:12px 0;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.codewrap .codebar{display:flex;justify-content:space-between;align-items:center;
  background:#eef2f8;padding:5px 10px;border-bottom:1px solid var(--line)}
.codewrap .clang{font-size:11.5px;color:#8792a4;font-family:ui-monospace,Consolas,monospace}
.codewrap .copybtn{border:1px solid #d4dce8;background:#fff;border-radius:6px;
  font-size:11.5px;padding:2px 10px;cursor:pointer;color:var(--ink2)}
.codewrap .copybtn:hover{background:#f5f8fc;color:var(--brand2)}
.codewrap pre{margin:0;background:#f7f9fc;border-radius:0;padding:10px 0;
  font-size:12.6px;counter-reset:ln;overflow:auto}
.codewrap code{display:block;background:none;font-family:ui-monospace,Consolas,'Courier New',monospace}
.codewrap span.cl{display:block;padding:0 14px 0 46px;position:relative;line-height:1.55;
  white-space:pre-wrap;word-break:break-word;counter-increment:ln;min-height:1.5em}
.codewrap span.cl::before{content:counter(ln);position:absolute;left:0;top:0;bottom:0;
  width:32px;text-align:right;padding-right:8px;color:#b3bdcc;font-size:11px;
  border-right:1px solid #e3e9f2}
.codewrap .k{color:#7c3aed;font-weight:600}
.codewrap .s{color:#0a7d33}
.codewrap .c{color:#98a2b3;font-style:italic}
.codewrap .n{color:#b25e09}

/* ── 彩色标注块（对标飞书 callout） ── */
.callout{margin:10px 0;padding:10px 14px;border-radius:8px;font-size:13.4px;line-height:1.7;
  border-left:4px solid}
.callout b{display:inline-block;margin-right:6px;font-size:12px;letter-spacing:.04em}
.callout.tip{background:#f0fdf4;border-color:#22c55e;color:#14532d}
.callout.note,.callout.info{background:#eff6ff;border-color:#3b82f6;color:#1e3a8a}
.callout.warning{background:#fffbeb;border-color:#f59e0b;color:#78350f}
.callout.caution{background:#fef2f2;border-color:#ef4444;color:#7f1d1d}
.callout.important{background:#faf5ff;border-color:#a855f7;color:#581c87}

/* ── 图片块 + 面包屑时间（2026-10-02） ── */
.reader img,.card img{max-width:100%;height:auto;border-radius:8px;display:block;margin:12px 0;
  border:1px solid var(--line);cursor:zoom-in}
.imgph{display:block;margin:12px 0;padding:12px 14px;border:1px dashed var(--line);border-radius:8px;
  background:var(--code);color:var(--ink2);font-size:12.4px;word-break:break-all;
  font-family:ui-monospace,Consolas,monospace}
.crumb-time{margin-left:auto;font-size:11.8px;color:#98a2b3;white-space:nowrap}

/* ── 暗色模式（2026-10-02；开关记忆在 localStorage，首次跟随系统） ── */
body.dark{
  --bg:#12151a; --card:#1a1f27; --ink:#e6e9ef; --ink2:#a4aebc; --line:#2b323c;
  --brand:#4d84f5; --brand2:#7ba4ff; --ok:#34d399; --warn:#fbbf24; --err:#f87171;
  --code:#232a33;
}
body.dark input,body.dark select{background:#20262e;color:var(--ink)}
body.dark input:focus,body.dark select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(77,132,245,.18)}
body.dark button.ghost{border-color:var(--line);color:var(--ink2)}
body.dark button.ghost:hover{background:#242b34;color:var(--ink)}
body.dark header,body.dark aside{background:var(--card);border-color:var(--line)}
body.dark .searchbar input{background:#20262e}
body.dark #books li:hover,body.dark #tablelist li:hover,body.dark #toc li:hover{background:#222932;color:var(--ink)}
body.dark #books li.on,body.dark #tablelist li.on,body.dark #toc li.on{background:#1e2b45;color:var(--brand2)}
body.dark .card{background:var(--card)}
body.dark .card:hover{border-color:#3a4450;box-shadow:none}
body.dark .card pre,body.dark .reader pre{background:#1b212a}
body.dark .reader code,body.dark code{background:#232a33}
body.dark .reader th{background:#20262e}
body.dark .reader blockquote{background:#1c222a;border-left-color:#3a4450}
body.dark .reader hr{border-top-color:var(--line)}
body.dark #smTable th,body.dark #smTable td,body.dark #inlineTable th,body.dark #inlineTable td,
body.dark #tmTable th,body.dark #tmTable td,body.dark #umTable th,body.dark #umTable td{border-color:var(--line)}
body.dark #smTable th,body.dark #inlineTable th{background:#20262e;color:var(--ink2)}
body.dark .viewtabs{background:#232a33}
body.dark .monthtabs button.ghost:hover,body.dark .viewtabs button.ghost:hover{background:#2b333d}
body.dark .tip{background:#1b2a44;border-left-color:var(--brand)}
body.dark .modal{background:rgba(0,0,0,.6)}
body.dark .modal-card{background:var(--card)}
body.dark .badge{background:#232a33;color:var(--ink2)}
body.dark .badge.tech{background:#3a2c17;color:var(--warn)}
body.dark .codewrap .codebar{background:#20262e;border-bottom-color:var(--line)}
body.dark .codewrap pre{background:#171d25}
body.dark .codewrap .copybtn{background:#232a33;border-color:#333c48;color:var(--ink2)}
body.dark .codewrap .copybtn:hover{background:#2a323d;color:var(--brand2)}
body.dark .codewrap span.cl::before{color:#5c6675;border-right-color:#2b323c}
body.dark .codewrap .k{color:#c69bff}
body.dark .codewrap .s{color:#63d69f}
body.dark .codewrap .c{color:#7d8797}
body.dark .codewrap .n{color:#f0b26b}
body.dark .callout.tip{background:#12291c;color:#a7f3c8}
body.dark .callout.note,body.dark .callout.info{background:#132441;color:#bcd4ff}
body.dark .callout.warning{background:#2c230f;color:#fde1a3}
body.dark .callout.caution{background:#2c1616;color:#fbc4c4}
body.dark .callout.important{background:#251a33;color:#e0c8ff}

/* ── 提问界面（2026-10-02）───────────────────────────── */
#askModal .modal-card{width:760px}
.askform{margin-bottom:6px}
.askform label{display:block;margin:10px 0 0;font-size:13px;color:var(--ink2)}
.askform input,.askform textarea,.askform select{
  width:100%;margin-top:5px;font-family:inherit;font-size:14px;padding:9px 12px;
  border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);outline:none}
.askform textarea{resize:vertical;line-height:1.6}
.askform input:focus,.askform textarea:focus,.askform select:focus{
  border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.askrow{display:flex;gap:12px}
.askrow label{flex:1}
.askform button{margin-top:14px}
#askErr{min-height:18px;font-size:13px;color:var(--err)}
.asklist{max-height:300px;overflow:auto;margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
#askTable{width:100%;border-collapse:collapse;font-size:13px}
#askTable th,#askTable td{border-bottom:1px solid var(--line);padding:7px 8px;
  text-align:left;vertical-align:top}
#askTable th{color:var(--ink2);font-weight:600;font-size:12.4px;white-space:nowrap}
#askTable td{max-width:300px;word-break:break-word}
body.dark .askform textarea{background:#20262e;color:var(--ink)}
#askTable td:first-child{white-space:nowrap}

/* ── 登记咨询（2026-10-03）：复用提问表单那套观感 ── */
.leadform{margin-bottom:6px}
.leadform label{display:block;margin:10px 0 0;font-size:13px;color:var(--ink2)}
.leadform input,.leadform textarea,.leadform select{
  width:100%;margin-top:5px;font-family:inherit;font-size:14px;padding:9px 12px;
  border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);outline:none}
.leadform textarea{resize:vertical;line-height:1.6}
.leadform input:focus,.leadform textarea:focus,.leadform select:focus{
  border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.leadform button{margin-top:14px}
#leadErr{min-height:18px;font-size:13px;color:var(--err)}
#leadTable{width:100%;border-collapse:collapse;font-size:13px}
#leadTable th,#leadTable td{border-bottom:1px solid var(--line);padding:7px 8px;
  text-align:left;vertical-align:top}
#leadTable th{color:var(--ink2);font-weight:600;font-size:12.4px;white-space:nowrap}
#leadTable td{max-width:300px;word-break:break-word}
body.dark .leadform input,body.dark .leadform textarea,body.dark .leadform select{
  background:#20262e;color:var(--ink)}

/* ── 部门看板（2026-10-03）── */
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(430px,1fr));gap:14px;margin-bottom:16px}
.dcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 16px;display:flex;flex-direction:column}
.dcard h3{margin:0 0 4px;font-size:15.5px;display:flex;align-items:baseline;gap:9px}
.dcard h3 .dnum{font-size:12.2px;color:var(--ink2);font-weight:400}
/* 部门卡上的 AI 岗位专家标签（2026-10-03）
   ⚠️ 只用 :root 里真实存在的变量（--code / --ink2 / --line）——
   别写 --bg2 / --ink3，本站的 :root 没定义这两个，引用了会整条失效。*/
.dexpert{font-size:12px;color:var(--ink2);background:var(--code);border:1px solid var(--line);
  border-radius:6px;padding:3px 8px;margin:0 0 9px;line-height:1.5;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dexpert:hover{color:var(--ink);border-color:var(--ink2);cursor:default}
.dcard .dmeta{font-size:12.2px;color:var(--ink2);margin-bottom:9px;line-height:1.55}
.dcard > button{align-self:flex-start}
.dtable{width:100%;border-collapse:collapse;font-size:12.8px;margin-bottom:10px}
.dtable td{padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:middle}
.dtable tr{cursor:pointer}
.dtable tr:hover td{background:#f5f8fd}
.dtable .dname{font-weight:600;color:var(--ink);width:44%}
.dtable .dnum2{color:var(--ink2);white-space:nowrap;font-size:12.2px;text-align:right}
.dcharts:empty{display:none}
.dtblblk{margin:0 0 18px;padding-top:12px;border-top:1px dashed var(--line)}
.dtblblk .dt{font-size:13px;color:var(--ink);margin:0 0 9px;display:flex;
  align-items:baseline;gap:9px}
.dtblblk .kpis{margin:0 0 10px;grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}
.dtblblk .charts{grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
body.dark .dtable tr:hover td{background:#222932}
@media (max-width:860px){
  .dgrid{grid-template-columns:1fr}
  .dtable .dname{width:auto}
}
/* ── 导入模板 / 单据模板面板（2026-10-03） ── */
.tplrow{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding:6px 0;border-bottom:1px dashed var(--line)}
.tplrow:last-child{border-bottom:0}
.tpldesc{font-size:12.6px;color:var(--ink2);line-height:1.5}
.tplsub{margin:12px 0 4px;font-size:13px;font-weight:600;color:var(--ink)}

/* ── 企业微信私域获客（2026-10-03 晚新增）── */
.wcnotice{background:var(--code);border:1px solid var(--line);border-left:3px solid var(--warn);
  border-radius:8px;padding:10px 13px;margin:10px 0 4px;font-size:12.8px;
  color:var(--ink2);line-height:1.65}
.wcnotice b{color:var(--ink)}
.wcnotice ul{margin:6px 0 0;padding-left:20px}
.wcnotice li{margin:3px 0}
.wcform{margin-bottom:6px}
.wcform label{display:block;margin:10px 0 0;font-size:13px;color:var(--ink2)}
.wcform input,.wcform textarea,.wcform select{
  width:100%;margin-top:5px;padding:8px 11px;font-size:13.5px;
  border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}
.wcform .askrow{display:flex;gap:12px;flex-wrap:wrap}
.wcform .askrow label{flex:1 1 200px;min-width:180px}
.wcform .askrow input,.wcform .askrow select{margin-top:5px}
.wcform .wcstop{color:var(--err)}
.wcform #wcSubmit{margin-top:14px;width:auto}
/* 列表里停呼=是的格标红：扫一眼就能看见"这些人别再碰" */
.wcstop-row{background:rgba(220,38,38,.10);color:var(--err);font-weight:600}
@media (max-width:640px){
  .wcform .askrow label{flex:1 1 100%}
}

/* ── AI 团队岗位上线（2026-10-03 晚新增）── */
.tminfo{font-size:13.4px;color:var(--ink);line-height:1.7;margin:10px 0 8px}
.tminfo b{color:var(--brand2)}
.tmsub{font-size:12.6px;color:var(--ink2)}
.teamtip{background:var(--code);border:1px solid var(--line);border-left:3px solid var(--brand);
  border-radius:8px;padding:10px 13px;margin:0 0 12px;font-size:12.8px;
  color:var(--ink2);line-height:1.7}
.teamtip b{color:var(--ink)}
.tlexec,.tlagent{font-size:12px;padding:1px 6px;border-radius:5px;margin:0 2px}
.tlexec{background:rgba(37,99,235,.12);color:var(--brand2)}
.tlagent{background:rgba(13,148,136,.14);color:#0d9488}
.teamgrid{max-height:52vh;overflow:auto;padding-right:4px}
.expsh{display:flex;align-items:baseline;gap:10px;margin:14px 0 8px;
  padding-bottom:5px;border-bottom:1px solid var(--line)}
.expsh:first-child{margin-top:2px}
.expsh b{font-size:14.5px;color:var(--ink)}
.expnum{font-size:12.2px;color:var(--ink2)}
.exprow{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:10px}
.expcard{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px 13px;display:flex;flex-direction:column;gap:7px}
.exph{display:flex;align-items:flex-start;gap:9px}
.expic{font-size:22px;line-height:1.15;flex:0 0 auto}
.expbox{flex:1 1 auto;min-width:0}
.expname{font-size:14px;font-weight:600;color:var(--ink);line-height:1.35}
.expaid{font-size:11.5px;color:var(--ink2);background:var(--code);
  padding:1px 6px;border-radius:5px;word-break:break-all}
.exptoday{font-size:12.2px;color:var(--ink2);line-height:1.55;margin-top:5px}
.expdesc{font-size:12.4px;color:var(--ink2);line-height:1.6}
.expmeta{display:flex;gap:12px;font-size:11.8px;color:var(--ink2)}
.exptag1,.exptag2{align-self:flex-start;font-size:11.5px;padding:2px 8px;border-radius:6px}
.exptag1{background:rgba(37,99,235,.12);color:var(--brand2)}
.exptag2{background:rgba(13,148,136,.14);color:#0d9488}
.expbtn{align-self:flex-start;font-size:12.4px;padding:5px 12px;margin-top:2px}
.terr{color:var(--err)}
/* 企微弹窗里的「提问题」条 */
.wcissue{background:var(--code);border:1px solid var(--line);border-left:3px solid var(--ok);
  border-radius:8px;padding:10px 13px;margin:10px 0;font-size:12.8px;
  color:var(--ink2);line-height:1.7}
.wcissue b{color:var(--ink)}
.wcissue button{margin-top:8px;font-size:12.6px;padding:6px 13px}
@media (max-width:640px){
  .exprow{grid-template-columns:1fr}
  .teamgrid{max-height:none}
}

/* ── 部门卡的「本部门在岗专家」列表（2026-10-04）── */
.dexpertbox{display:flex;flex-direction:column;gap:4px;margin:0 0 9px}
.dexpert{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  background:var(--code);border:1px solid var(--line);border-radius:6px;
  padding:3px 8px;font-size:12px;line-height:1.5;cursor:pointer}
.dexpert:hover{border-color:var(--brand);background:#eef2ff}
.dexpertic{font-size:13px;flex:0 0 auto}
.dexpertnm{color:var(--ink);font-weight:600}
.dexpertaid{font-size:11px;color:var(--ink2);background:var(--card);
  padding:0 5px;border-radius:4px;word-break:break-all}
.dexperttier{font-size:11px;padding:1px 6px;border-radius:5px;margin-left:auto}
.dexperttier1{background:rgba(37,99,235,.12);color:var(--brand2)}
.dexperttier2{background:rgba(13,148,136,.14);color:#0d9488}
/* 表格里的专家列表头 —— 一眼能找到 */
th.th-expert{background:rgba(37,99,235,.08);color:var(--brand2);
  box-shadow:inset 2px 0 0 var(--brand)}
th.th-expert .headin{border-color:var(--brand)}
@media (max-width:640px){
  .dexperttier{margin-left:0}
}

/* ── 闭环看板（2026-10-04）── */
.lbtop{display:flex;align-items:center;gap:20px;flex-wrap:wrap;
  background:var(--code);border:1px solid var(--line);border-radius:10px;
  padding:14px 16px;margin:10px 0 14px}
.lbring{text-align:center;flex:0 0 auto}
.lbring-ring{width:66px;height:66px;line-height:66px;border-radius:50%;
  font-size:22px;font-weight:700;margin:0 auto}
.lbring-ring.ok{background:rgba(22,163,74,.14);color:#16a34a;
  box-shadow:inset 0 0 0 3px rgba(22,163,74,.4)}
.lbring-ring.warn{background:rgba(217,119,6,.14);color:#d97706;
  box-shadow:inset 0 0 0 3px rgba(217,119,6,.4)}
.lbring-ring.err{background:rgba(220,38,38,.14);color:#dc2626;
  box-shadow:inset 0 0 0 3px rgba(220,38,38,.4)}
.lbring-lb{font-size:12px;color:var(--ink2);margin-top:3px}
.lbring-meta{font-size:11.5px;color:var(--ink2);margin-top:3px}
.lbkv{display:flex;gap:10px;flex:1 1 auto;flex-wrap:wrap}
.lbkvi{background:var(--card);border:1px solid var(--line);border-radius:8px;
  padding:7px 14px;min-width:74px;text-align:center}
.lbkvi-n{font-size:19px;font-weight:700;color:var(--ink);line-height:1.2}
.lbkvi-l{font-size:11.5px;color:var(--ink2)}
.lbmeta{flex:1 1 100%;font-size:12px;color:var(--ink2);line-height:1.9}
.lbcmd{display:inline-block;background:var(--card);border:1px solid var(--line);
  border-radius:5px;padding:2px 7px;margin:2px 6px 0 0;font-size:11.5px;
  word-break:break-all}
.lbbreaks{border:1px solid var(--err);border-radius:8px;padding:10px 13px;
  background:rgba(220,38,38,.05);margin-bottom:12px}
.lbbh{font-weight:600;color:var(--err);margin-bottom:7px;font-size:13.5px}
.lbbreak{display:flex;align-items:baseline;gap:9px;font-size:12.5px;
  padding:3px 0;flex-wrap:wrap}
.lbbreak code{background:var(--card);padding:0 5px;border-radius:4px}
.lbbreak-fix{color:var(--ink2);font-size:12px}
.lbsect{font-size:13.5px;font-weight:600;color:var(--ink);
  margin:16px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--line)}
.lbchain{display:flex;gap:7px;flex-wrap:wrap}
.lbstep-box{text-align:center}
.lbstep{width:34px;height:34px;line-height:34px;border-radius:50%;
  font-size:14px;font-weight:700;margin:0 auto 3px;cursor:help}
.lbstep.ok{background:rgba(22,163,74,.14);color:#16a34a;
  box-shadow:inset 0 0 0 2px rgba(22,163,74,.4)}
.lbstep.err{background:rgba(220,38,38,.14);color:#dc2626;
  box-shadow:inset 0 0 0 2px rgba(220,38,38,.45)}
.lbstep.na{background:var(--code);color:var(--ink2)}
.lbstep-n{font-size:11.5px;color:var(--ink2);max-width:88px;line-height:1.35}
.lbchecks{display:flex;flex-direction:column;gap:3px}
.lbcheck{display:flex;align-items:baseline;gap:9px;font-size:12.5px;
  padding:4px 9px;border-radius:6px;background:var(--card);
  border:1px solid var(--line);flex-wrap:wrap}
.lbcheck.err{border-color:rgba(220,38,38,.45);background:rgba(220,38,38,.05)}
.lbcheck.warn{border-color:rgba(217,119,6,.45);background:rgba(217,119,6,.05)}
.lbcheck-id{font-size:11.5px;background:var(--code);padding:0 5px;border-radius:4px}
.lbcheck-n{min-width:150px;font-weight:600;color:var(--ink)}
.lbcheck-v{color:var(--ink2);flex:1 1 auto}
.lbcheck-fix{color:var(--ink2);font-size:11.8px;flex:1 1 100%}
.lbdepts{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:9px}
.lbdept{background:var(--card);border:1px solid var(--line);border-radius:9px;
  padding:11px 12px;cursor:pointer;display:flex;flex-direction:column;gap:5px}
.lbdept:hover{border-color:var(--brand);box-shadow:0 1px 6px rgba(37,99,235,.12)}
.lbdept.on{background:rgba(37,99,235,.06);border-color:var(--brand)}
.lbdept-h{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.lbdept-h b{font-size:14px;color:var(--ink)}
.lbdept-n{font-size:11.5px;color:var(--ink2)}
.lbexp{display:flex;align-items:center;gap:6px;font-size:12px;
  background:var(--code);border-radius:5px;padding:2px 7px;flex-wrap:wrap}
.lbexp-ic{font-size:12.5px}
.lbexp-n{color:var(--ink);font-weight:600}
.lbexp-id{font-size:10.5px;color:var(--ink2);background:var(--card);
  padding:0 4px;border-radius:3px;word-break:break-all}
.lbexp-t{font-size:10.5px;padding:0 5px;border-radius:4px;margin-left:auto}
.lbexp-t1{background:rgba(37,99,235,.12);color:var(--brand2)}
.lbexp-t2{background:rgba(13,148,136,.14);color:#0d9488}
.lbexp-tabs{font-size:10.5px;color:var(--ink2);border-left:1px solid var(--line);
  padding-left:6px;margin-left:2px}
.lbdept-tabs{font-size:11.5px;color:var(--ink2);margin-top:3px;
  padding-top:5px;border-top:1px dashed var(--line)}
.lbtable{width:100%;border-collapse:collapse;font-size:12.3px}
.lbtable th{text-align:left;padding:6px 5px;border-bottom:1px solid var(--line);
  font-size:12px;color:var(--ink2);font-weight:600}
.lbtable td{padding:5px;border-bottom:1px solid var(--line);vertical-align:middle}
.lbtable tbody tr{cursor:pointer}
.lbtable tbody tr:hover{background:rgba(37,99,235,.05)}
.lbt-exp{font-size:11.8px;color:var(--ink2)}
.lbt-no{font-size:11.5px;color:var(--err);font-weight:600}
.lbt-n{text-align:right;color:var(--ink2);white-space:nowrap}
@media (max-width:640px){
  .lbdepts{grid-template-columns:1fr}
  .lbcheck-n{min-width:auto}
}

/* ── 专家内容待审（2026-10-04 晚）── */
.teamreview{margin:0 0 12px}
.rvhead{background:rgba(217,119,6,.07);border:1px solid rgba(217,119,6,.4);
  border-left:3px solid var(--warn);border-radius:8px;padding:9px 12px;
  display:flex;flex-direction:column;gap:3px;margin-bottom:9px}
.rvhead b{font-size:13.5px;color:var(--ink)}
.rvsub{font-size:12.3px;color:var(--ink2);line-height:1.6}
.rvhi{font-size:12px;color:var(--err);font-weight:600}
.rvsec{margin:10px 0}
.rvsec-h{display:flex;align-items:baseline;gap:9px;margin:0 0 5px}
.rvsec-h b{font-size:13.5px;color:var(--ink)}
.rvsec-n{font-size:12px;color:var(--ink2)}
.rvitem{background:var(--card);border:1px solid var(--line);border-radius:8px;
  padding:9px 11px;margin-bottom:6px;display:flex;flex-direction:column;gap:4px}
.rvitem.hi{border-color:rgba(220,38,38,.45);background:rgba(220,38,38,.04)}
.rvitem-t{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.rvcode{font-size:11.5px;background:var(--code);padding:0 6px;border-radius:4px;
  font-weight:600}
.rvkind{font-size:11.5px;color:var(--ink2)}
.rvrisk{font-size:11px;color:var(--ink2);margin-left:auto;
  background:var(--code);padding:0 6px;border-radius:4px}
.rvq{font-size:12.8px;color:var(--ink);line-height:1.6}
.rvw{font-size:12.2px;color:var(--ink2);line-height:1.55;
  background:var(--code);border-radius:5px;padding:4px 8px}
.rvnote{font-size:11.8px;color:var(--ink2);font-style:italic;line-height:1.5}
.rvfm{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:3px}
.rvsel{padding:4px 8px;font-size:12.5px;border:1px solid var(--line);
  border-radius:6px;background:var(--card);color:var(--ink)}
.rvinp{flex:1 1 200px;min-width:160px;padding:4px 9px;font-size:12.5px;
  border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink)}
.rvb{padding:4px 12px;font-size:12.5px}
.rvmsg{font-size:12px;color:var(--ink2)}
.rvmsg.ok{color:var(--ok)}
.rvmsg.err{color:var(--err)}
@media (max-width:640px){
  .rvinp{flex:1 1 100%}
  .rvrisk{margin-left:0}
}

/* ── 拓客市场分析（2026-10-04 晚）── */
.mktop{display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  background:var(--code);border:1px solid var(--line);border-radius:10px;
  padding:14px 16px;margin:10px 0 12px}
.mkring{text-align:center;flex:0 0 auto}
.mkring-n{font-size:23px;font-weight:700;color:var(--err);line-height:1.1}
.mkring-l{font-size:11.5px;color:var(--ink2);margin-top:2px}
.mktop-tx{flex:1 1 240px;min-width:0}
.mktop-tx b{font-size:14px;color:var(--ink);display:block;line-height:1.5}
.mktop-sub{font-size:12.3px;color:var(--ink2);line-height:1.6;margin-top:3px}
.mktop-det{font-size:11.5px;color:var(--ink2);line-height:1.7;flex:0 1 100%}
.mkkv{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:12px}
.mkkvi{background:var(--card);border:1px solid var(--line);border-radius:8px;
  padding:8px 14px;min-width:96px;text-align:center}
.mkkvi-n{font-size:19px;font-weight:700;color:var(--ink);line-height:1.2}
.mkkvi-l{font-size:12px;color:var(--ink2)}
.mkkvi-s{font-size:10.5px;color:var(--ink2);opacity:.8}
.mksect{font-size:13.5px;font-weight:600;color:var(--ink);
  margin:16px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--line)}
.mkfilters{display:flex;gap:6px;margin-bottom:8px}
.mkfilters button{padding:3px 13px;font-size:12.3px}
.mkfilters button.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.mktable{width:100%;border-collapse:collapse;font-size:12.3px}
.mktable th{text-align:left;padding:6px 5px;border-bottom:1px solid var(--line);
  font-size:12px;color:var(--ink2);font-weight:600;white-space:nowrap}
.mktable td{padding:4px 5px;border-bottom:1px solid var(--line);vertical-align:middle}
.mktable td.r{text-align:right;white-space:nowrap}
.mktable td.r.bat{color:var(--err);font-weight:600}
.mktable td.src{font-size:11.3px;color:var(--ink2)}
.mkbars{display:flex;flex-direction:column;gap:4px}
.mkbar{display:flex;align-items:center;gap:9px;font-size:12.3px}
.mkbar-n{flex:0 0 168px;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mkbar-b{flex:1 1 auto;height:16px;background:var(--code);border-radius:4px;overflow:hidden}
.mkbar-f{height:100%;background:var(--brand);border-radius:4px;min-width:2px}
.mkbar-f.ok{background:#16a34a}
.mkbar-f.primary{background:var(--brand)}
.mkbar-v{flex:0 0 54px;text-align:right;color:var(--ink2);font-variant-numeric:tabular-nums}
.mk2col{display:flex;gap:16px;flex-wrap:wrap}
.mkbars2{flex:1 1 300px;min-width:260px;display:flex;flex-direction:column;gap:4px}
.mkbars2-h{font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:2px}
.mkpol{display:flex;flex-direction:column;gap:3px}
.mkpol-i{display:flex;align-items:baseline;gap:9px;font-size:12.3px;
  padding:4px 9px;background:var(--card);border:1px solid var(--line);border-radius:6px}
.mkpol-i code{font-size:11.3px;background:var(--code);padding:0 5px;border-radius:4px;
  flex:0 0 auto}
.mkgaps{display:flex;flex-wrap:wrap;gap:6px}
.mkgap{background:rgba(217,119,6,.12);color:var(--ink);border-radius:6px;
  padding:3px 9px;font-size:12.3px}
.mknote{font-size:12.3px;color:var(--ink2);line-height:1.6;margin-top:7px;
  background:var(--code);border-radius:6px;padding:7px 10px}
@media (max-width:640px){
  .mkbar-n{flex:0 0 108px;font-size:11.5px}
  .mk2col{flex-direction:column}
}
