/* ============ 基础 ============ */
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --brand:#0052d9;--brand-hover:#0043b3;--brand-soft:#e8f1ff;--brand-soft2:#f3f8ff;
  --bg:#f3f4f7;--card:#fff;
  --text:#1d2129;--text2:#4e5969;--text3:#86909c;
  --border:#e3e6ed;--line:#f0f1f4;
  --danger:#d54941;--danger-soft:#ffece8;
  --ok:#00a870;
  --radius:6px;
  --top-h:52px;
}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
  color:var(--text);background:var(--bg);font-size:14px;
  height:100vh;overflow:hidden;-webkit-font-smoothing:antialiased;
}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
a{color:var(--brand);text-decoration:none}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#d4d7dd;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:#b8bcc4}
::-webkit-scrollbar-track{background:transparent}

/* ============ 顶栏 ============ */
.top{
  height:var(--top-h);background:var(--card);border-bottom:1px solid var(--border);
  display:flex;align-items:center;padding:0 16px;gap:12px;position:relative;z-index:60;
}
.logo{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;flex-shrink:0}
.logo-m{width:26px;height:26px;border-radius:7px;background:var(--brand);
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:600}
.logo-t{white-space:nowrap}

.search{flex:0 1 460px;max-width:460px;min-width:180px;position:relative}
.search-ico{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text3);pointer-events:none}
.search input{
  width:100%;height:32px;border:1px solid var(--border);border-radius:var(--radius);
  padding:0 10px 0 30px;font-size:13px;outline:none;background:var(--bg);transition:.15s;
}
.search input:focus{background:#fff;border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}

.rs{
  position:absolute;top:38px;left:0;right:0;background:#fff;border:1px solid var(--border);
  border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.12);display:none;
  max-height:400px;overflow-y:auto;z-index:70;
}
.rs.show{display:block}
.rs .it{padding:9px 12px;cursor:pointer;border-bottom:1px solid var(--line)}
.rs .it:last-child{border-bottom:none}
.rs .it:hover{background:var(--brand-soft2)}
.rs .it .t{font-size:13px;line-height:1.45;margin-bottom:2px}
.rs .it .s{font-size:11.5px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rs .it .s em{color:var(--brand);font-style:normal;background:#fff3cd;border-radius:2px;padding:0 1px}
.rs .empty{padding:16px;text-align:center;color:var(--text3);font-size:13px}

.btn-primary{background:var(--brand);color:#fff;height:32px;padding:0 14px;border-radius:var(--radius);
  font-size:13px;font-weight:500;white-space:nowrap;transition:.15s}
.btn-primary:hover{background:var(--brand-hover)}
.btn-ghost{height:32px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius);
  font-size:13px;background:#fff;transition:.15s}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}
.btn-danger{color:var(--danger)}
.btn-danger:hover{border-color:var(--danger);background:var(--danger-soft)}

.spacer{flex:1}
.stat{font-size:12px;color:var(--text3);white-space:nowrap}

/* 用户菜单 */
.user{position:relative;flex-shrink:0}
.av{width:28px;height:28px;border-radius:50%;background:var(--brand-soft);color:var(--brand);
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;cursor:pointer}
.umenu{
  position:absolute;top:36px;right:0;background:#fff;border:1px solid var(--border);
  border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.12);display:none;min-width:150px;
  padding:5px;z-index:70;
}
.umenu.show{display:block}
.umenu-name{padding:8px 10px;font-size:12px;color:var(--text3);border-bottom:1px solid var(--line);margin-bottom:4px}
.umenu-item{padding:8px 10px;font-size:13px;border-radius:5px;cursor:pointer}
.umenu-item:hover{background:var(--bg)}

/* ============ 三栏布局 ============ */
.body{display:grid;grid-template-columns:260px 300px minmax(0,1fr);height:calc(100vh - var(--top-h))}

/* ============ 左侧导航 ============ */
.nav{background:var(--card);border-right:1px solid var(--border);overflow-y:auto;padding:8px 6px}
.nav-title{font-size:11px;color:var(--text3);padding:4px 9px 8px;letter-spacing:.5px}
.grp{margin-bottom:2px}
.grp-h{display:flex;align-items:center;gap:5px;padding:7px 9px;border-radius:var(--radius);
  font-size:13px;font-weight:600;cursor:pointer;user-select:none}
.grp-h:hover{background:var(--bg)}
.grp-h .arw{font-size:8px;color:var(--text3);transition:.15s;flex-shrink:0}
.grp.open .arw{transform:rotate(90deg)}
.grp-h .cnt{margin-left:auto;font-size:11px;color:var(--text3);font-weight:400}
/* 收起态下也能看出右侧内容属于哪个一级类目 */
.grp.act>.grp-h .nm{color:var(--brand)}
.subs{display:none;margin:2px 0 4px}
.grp.open .subs{display:block}
.sub{position:relative;padding:6px 9px 6px 22px;border-radius:var(--radius);font-size:13px;color:var(--text2);
  cursor:pointer;display:flex;align-items:center;gap:6px;line-height:1.3}
/* 二级类目展开箭头：绝对定位在左侧留白里，不挤占标题宽度 */
.sub .carw{position:absolute;left:7px;top:50%;transform:translateY(-50%);font-size:8px;
  line-height:1;color:var(--text3);transition:transform .15s;pointer-events:none}
.sub.open .carw{transform:translateY(-50%) rotate(90deg)}
.sub .carw.ph{visibility:hidden}
.sub:hover{background:var(--bg)}
.sub.on{background:var(--brand-soft);color:var(--brand);font-weight:500}
.sub .n{margin-left:auto;font-size:11px;color:var(--text3);flex-shrink:0}
.sub.on .n{color:var(--brand)}

/* ============ 第三级：子项（如 话术 / 流程） ============ */
.topics{display:flex;flex-direction:column;margin:1px 0 3px 7px;border-left:2px solid var(--line);padding-left:2px}
.topic{padding:5px 6px 5px 8px;border-radius:var(--radius);font-size:12.5px;color:var(--text2);
  cursor:pointer;display:flex;align-items:center;gap:6px;line-height:1.3}
.topic:hover{background:var(--bg)}
.topic.on{background:var(--brand-soft);color:var(--brand);font-weight:500}
.topic .n{margin-left:auto;font-size:10.5px;color:var(--text3);flex-shrink:0}
.topic.on .n{color:var(--brand)}

/* ============ 中间列表 ============ */
.list{background:var(--card);border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}
.lhead{
  padding:11px 12px;font-size:12px;color:var(--text3);border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  position:sticky;top:0;background:var(--card);z-index:5;
}
.lhead .lh-l{font-weight:600;color:var(--text2);font-size:12.5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lhead .lh-r{font-size:11px;color:var(--text3);flex-shrink:0}
.item{padding:11px 12px;border-bottom:1px solid var(--line);cursor:pointer;
  border-left:2px solid transparent;transition:background .1s}
.item:hover{background:var(--bg)}
.item.on{background:var(--brand-soft);border-left-color:var(--brand)}
.item .t{font-size:13px;font-weight:500;line-height:1.45;margin-bottom:5px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.item.on .t{color:var(--brand)}
.item .m{font-size:11px;color:var(--text3);display:flex;align-items:center;gap:6px}
.item .m .clip{background:var(--bg);padding:1px 5px;border-radius:3px;
  max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item.on .m .clip{background:rgba(255,255,255,.75)}
.item .m .dot{width:2px;height:2px;border-radius:50%;background:currentColor;flex-shrink:0}

/* ============ 右侧正文 ============ */
.read{overflow-y:auto;background:var(--card);position:relative}
.rinner{max-width:1000px;margin:0 auto;padding:22px 24px 90px}

/* 阅读态 */
.rhead{margin-bottom:20px}
.rhead h1{font-size:23px;font-weight:600;line-height:1.4;letter-spacing:-.2px;margin-bottom:10px;word-break:break-word;text-align:left}
.rmeta{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text3);flex-wrap:wrap}
.rmeta .tag{background:var(--brand-soft);color:var(--brand);padding:2px 8px;border-radius:4px;font-weight:500}
.ract{display:flex;gap:8px;padding:12px 0 0;flex-wrap:wrap}

/* 目录条 */
.tocbar{display:flex;gap:6px;flex-wrap:wrap;padding:14px 0 16px;
  border-bottom:1px solid var(--line);margin-bottom:22px}
.tocbar span{font-size:12px;padding:4px 11px;border-radius:14px;background:var(--bg);
  color:var(--text2);cursor:pointer;white-space:nowrap;transition:.15s;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.tocbar span:hover{background:var(--brand-soft);color:var(--brand)}
.tocbar span.on{background:var(--brand);color:#fff}

/* 正文排版 */
.rbody{font-size:15.5px;line-height:1.85;color:#2c3140;word-wrap:break-word}
.rbody h1,.rbody h2,.rbody h3,.rbody h4{color:#111;scroll-margin-top:20px}
.rbody h1{font-size:21px;font-weight:600;margin:30px 0 12px}
.rbody h2{font-size:18px;font-weight:600;margin:26px 0 11px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.rbody h3{font-size:16px;font-weight:600;margin:20px 0 9px}
.rbody h4{font-size:15px;font-weight:600;margin:15px 0 7px}
.rbody p{margin:10px 0}
.rbody ul,.rbody ol{margin:10px 0;padding-left:22px}
.rbody li{margin:5px 0}
.rbody strong{font-weight:600;color:#111}
.rbody a{color:var(--brand)}
.rbody hr{border:none;border-top:1px solid var(--line);margin:22px 0}
.rbody blockquote{background:var(--bg);border-left:3px solid var(--brand);padding:10px 15px;
  margin:13px 0;font-size:14.5px;color:var(--text2);border-radius:0 5px 5px 0}
.rbody blockquote p{margin:3px 0}
.rbody img{max-width:100%;height:auto;border-radius:6px;margin:6px 8px 6px 0;vertical-align:top}
.rbody code{background:var(--bg);padding:2px 5px;border-radius:3px;font-size:13.5px;
  font-family:"SFMono-Regular",Consolas,monospace}
.rbody pre{background:#f7f8fa;padding:12px 14px;border-radius:6px;overflow-x:auto;margin:12px 0}
.rbody pre code{background:none;padding:0}

/* 表格 */
.tw{overflow-x:auto;margin:14px 0}
.rbody table{border-collapse:collapse;width:100%;font-size:13.5px;background:#fff}
.rbody th,.rbody td{border:1px solid var(--border);padding:8px 11px;text-align:left;vertical-align:top;line-height:1.6}
.rbody th{background:var(--bg);font-weight:600;white-space:nowrap}
.rbody tbody tr:nth-child(even) td{background:#fcfcfd}

/* ===== 知识库长文 · 按栏目作用域主题 =====
   由 main.js 渲染时挂载 .rbody[data-cat="<子栏目>"]，样式不写入正文 HTML，
   因此不依赖正文里的 class/style，也不会被富文本编辑器保存时清掉。
   目前作用于「价值补偿体系」这类结构化长文。 */
.rbody[data-cat="价值补偿体系"] h2{
  margin:32px 0 14px;padding:11px 16px;border:none;border-radius:10px;
  font-size:17px;font-weight:600;color:#fff;letter-spacing:.3px;
  background:linear-gradient(135deg,#64748b,#8595a9);box-shadow:0 3px 8px rgba(15,23,42,.10);
}
.rbody[data-cat="价值补偿体系"] h2:nth-of-type(2){background:linear-gradient(135deg,#e07b26,#f6aa62)}
.rbody[data-cat="价值补偿体系"] h2:nth-of-type(3){background:linear-gradient(135deg,#2f9e6b,#5cc191)}
.rbody[data-cat="价值补偿体系"] h2:nth-of-type(4){background:linear-gradient(135deg,#c0392b,#e0705e)}
.rbody[data-cat="价值补偿体系"] h3{
  margin:24px 0 9px;padding:5px 13px;font-size:15.5px;font-weight:600;color:#243042;
  border-left:4px solid var(--brand);background:var(--brand-soft);border-radius:0 7px 7px 0;
}
.rbody[data-cat="价值补偿体系"] h4{
  margin:17px 0 7px;padding-left:11px;font-size:14.5px;font-weight:600;color:#3c4657;
  border-left:3px solid #d5dae2;
}
.rbody[data-cat="价值补偿体系"] ul{margin:8px 0 13px;padding-left:20px}
.rbody[data-cat="价值补偿体系"] li{margin:6px 0;line-height:1.72}
.rbody[data-cat="价值补偿体系"] li>strong{color:#16202f}
.rbody[data-cat="价值补偿体系"] ul ul{margin:5px 0;padding-left:18px}
.rbody[data-cat="价值补偿体系"] ul ul li{font-size:14.5px;color:#525d6d}
.rbody[data-cat="价值补偿体系"] blockquote{
  margin:13px 0;padding:10px 15px;background:#fff7ee;border-left:4px solid var(--brand);
  border-radius:0 8px 8px 0;color:#8a5a2b;font-size:14.5px;
}
.rbody[data-cat="价值补偿体系"] blockquote strong{color:#b3651f}
.rbody[data-cat="价值补偿体系"] hr{margin:30px 0;border:none;border-top:2px dashed #e6e9ef}
.rbody[data-cat="价值补偿体系"] table{font-size:14px}
.rbody[data-cat="价值补偿体系"] th{white-space:normal;background:#f5f6f8}

/* 附件区（阅读态） */
.files{margin-top:28px;padding-top:18px;border-top:1px solid var(--line)}
.files h4{font-size:13px;font-weight:600;color:var(--text2);margin-bottom:10px}
.file-item{display:flex;align-items:center;gap:9px;padding:8px 11px;border:1px solid var(--border);
  border-radius:var(--radius);margin-bottom:7px;background:#fff;transition:.15s;color:inherit}
.file-item:hover{border-color:var(--brand);background:var(--brand-soft2)}
.file-ico{width:26px;height:26px;border-radius:5px;display:flex;align-items:center;justify-content:center;
  font-size:9px;font-weight:700;color:#fff;flex-shrink:0;letter-spacing:-.3px}
.file-ico.img{background:#00a870}.file-ico.ppt{background:#d54941}.file-ico.doc{background:#0052d9}
.file-ico.xls{background:#0d7a5f}.file-ico.pdf{background:#e37318}.file-ico.zip{background:#7c4dff}
.file-ico.other{background:#86909c}
.file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.file-size{font-size:11px;color:var(--text3);flex-shrink:0}

/* 空状态 */
.ph{color:var(--text3);text-align:center;padding:120px 20px;font-size:13.5px;line-height:1.9}
.ph b{display:block;font-size:15px;color:var(--text2);margin-bottom:6px;font-weight:600}

/* ============ 编辑态 ============ */
.edit-wrap{max-width:900px;margin:0 auto;padding:20px 32px 90px}
.edit-bar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.e-title{flex:1;min-width:200px;height:36px;border:1px solid var(--border);border-radius:var(--radius);
  padding:0 12px;font-size:16px;font-weight:600;outline:none;transition:.15s}
.e-title:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.e-sel{height:32px;border:1px solid var(--border);border-radius:var(--radius);padding:0 8px;
  background:#fff;outline:none;font-size:13px;max-width:150px}
.e-sel:focus{border-color:var(--brand)}
.e-topic{height:32px;border:1px solid var(--border);border-radius:var(--radius);padding:0 8px;
  background:#fff;outline:none;font-size:13px;max-width:170px}
.e-topic:focus{border-color:var(--brand)}

.editor-box{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:#fff}
.editor-box .w-e-toolbar{border-bottom:1px solid var(--border)!important;z-index:20!important;position:relative}
.editor-box .w-e-text-container{height:460px!important;z-index:10!important}
/* 编辑器内图片容器：与阅读态一致，按顶部对齐并排 */
.editor-box .w-e-image-container{vertical-align:top;margin:6px 8px 6px 0}

/* 附件区（编辑态） */
.attach{margin-top:16px;border:1px solid var(--border);border-radius:var(--radius);padding:13px 15px;background:#fcfcfd}
.attach-head{font-size:12.5px;font-weight:600;color:var(--text2);margin-bottom:4px}
.attach-hint{font-size:11.5px;color:var(--text3);margin-bottom:10px;line-height:1.6}
.attach-list{margin-bottom:10px}
.attach-item{display:flex;align-items:center;gap:9px;padding:7px 10px;background:#fff;
  border:1px solid var(--border);border-radius:5px;margin-bottom:6px;font-size:13px}
.attach-del{margin-left:auto;color:var(--text3);font-size:16px;line-height:1;padding:0 4px;flex-shrink:0}
.attach-del:hover{color:var(--danger)}
.attach-add{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 13px;
  border:1px dashed #c9cdd4;border-radius:var(--radius);font-size:13px;color:var(--text2);
  cursor:pointer;background:#fff;transition:.15s}
.attach-add:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft2)}
.attach-add.uploading{opacity:.6;pointer-events:none}

.edit-actions{display:flex;gap:9px;margin-top:20px;align-items:center;flex-wrap:wrap}
.edit-actions .spacer{flex:1}
.save-tip{font-size:12px;color:var(--text3)}

/* 上传中遮罩 */
.uploading-mask{
  position:fixed;inset:0;background:rgba(0,0,0,.25);display:none;
  align-items:center;justify-content:center;z-index:200;
}
.uploading-mask.show{display:flex}
.uploading-mask .box{background:#fff;border-radius:8px;padding:20px 28px;font-size:13.5px;
  box-shadow:0 8px 32px rgba(0,0,0,.2)}

/* ============ Toast ============ */
.toast{
  position:fixed;left:50%;bottom:40px;transform:translateX(-50%) translateY(10px);
  background:#1d2129;color:#fff;padding:10px 18px;border-radius:6px;font-size:13px;
  opacity:0;pointer-events:none;transition:.2s;z-index:300;max-width:80vw;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.err{background:var(--danger)}

/* ============ 响应式 ============ */
@media (max-width:1240px){
  .body{grid-template-columns:190px 260px minmax(0,1fr)}
  .rinner{padding:22px 20px 80px}
}
@media (max-width:900px){
  body{overflow:auto}
  .body{grid-template-columns:1fr;height:auto}
  .nav{max-height:220px;border-right:none;border-bottom:1px solid var(--border)}
  .list{max-height:340px;border-right:none;border-bottom:1px solid var(--border)}
  .read{overflow:visible}
  .logo-t{display:none}
  .search{flex:1;max-width:none}
  .stat{display:none}
  .rinner,.edit-wrap{padding:18px 16px 60px}
  .rbody{font-size:15px}
}

/* ============ 通用弹窗 ============ */
.mask{position:fixed;inset:0;background:rgba(0,0,0,.35);display:none;
  align-items:center;justify-content:center;z-index:200}
.mask.show{display:flex}
.dlg{background:#fff;border-radius:10px;box-shadow:0 12px 40px rgba(0,0,0,.18);
  width:420px;max-width:calc(100vw - 32px);max-height:calc(100vh - 60px);overflow:auto;
  padding:20px 22px 16px}
.dlg-t{font-size:15px;font-weight:600;margin-bottom:12px;line-height:1.4}
.dlg-c{font-size:13px;color:var(--text2);line-height:1.7;margin-bottom:12px}
.dlg-desc{background:var(--bg);border-radius:6px;padding:8px 10px;margin-bottom:12px;
  color:var(--text2);font-size:12.5px}
.fld-l{font-size:12px;color:var(--text3);margin:0 0 5px}
.fld{width:100%;height:34px;border:1px solid var(--border);border-radius:6px;padding:0 9px;
  outline:none;margin-bottom:12px;background:#fff;font-size:13px}
.fld:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.fld-h{font-size:11.5px;color:var(--text3);margin:-6px 0 10px}
.dlg-btns{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding-top:4px}
.btn-primary.danger{background:var(--danger)}
.btn-primary.danger:hover{background:#b93a33}
.danger-text{color:var(--danger)}
.danger-text:hover{border-color:var(--danger);background:var(--danger-soft)}
.dis{opacity:.45;pointer-events:none}

/* ============ 悬浮菜单 ============ */
.cmenu{position:fixed;background:#fff;border:1px solid var(--border);border-radius:8px;
  box-shadow:0 8px 28px rgba(0,0,0,.14);padding:5px;display:none;min-width:162px;z-index:300}
.cmenu.show{display:block}
.cm-i{padding:7px 11px;font-size:13px;border-radius:5px;cursor:pointer;white-space:nowrap}
.cm-i:hover{background:var(--bg)}
.cm-i.danger{color:var(--danger)}
.cm-i.danger:hover{background:var(--danger-soft)}
.cm-sep{height:1px;background:var(--line);margin:4px 2px}

/* ============ 分类树管理入口 ============ */
.nav-title{display:flex;align-items:center}
.nav-add{margin-left:auto;width:18px;height:18px;line-height:17px;text-align:center;
  border-radius:4px;color:var(--text3);cursor:pointer;font-size:14px}
.nav-add:hover{background:var(--brand-soft);color:var(--brand)}
.grp-h .nm,.sub .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.more,.imore{display:none;width:16px;height:16px;line-height:14px;text-align:center;
  border-radius:4px;color:var(--text3);font-size:13px;flex-shrink:0;margin-left:4px}
.grp:hover .more,.sub:hover .more,.item:hover .imore{display:block}
.more:hover,.imore:hover{background:#e3e6ed;color:var(--text)}
.sub.add .nm{color:var(--text3);font-size:12px}
.sub.add:hover{background:var(--brand-soft2)}

/* ============ 列表管理（多选 / 移动） ============ */
.lbtn{border:1px solid var(--border);background:#fff;border-radius:4px;font-size:11.5px;
  padding:2px 8px;color:var(--text2)}
.lbtn:hover{border-color:var(--brand);color:var(--brand)}
.lbtn.on{background:var(--brand);border-color:var(--brand);color:#fff}
.item{display:flex;align-items:flex-start;gap:8px}
.item .ib{flex:1;min-width:0}
.ck{width:15px;height:15px;border:1px solid #c9cdd4;border-radius:3px;flex-shrink:0;
  margin-top:2px;position:relative;cursor:pointer;background:#fff}
.ck.on{background:var(--brand);border-color:var(--brand)}
.ck.on::after{content:'';position:absolute;left:4px;top:1px;width:5px;height:9px;
  border:2px solid #fff;border-top:0;border-left:0;transform:rotate(40deg)}
.item.sel{background:var(--brand-soft2)}
.lbar{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--border);
  padding:9px 12px;display:flex;align-items:center;gap:8px}
.lbar-n{font-size:12px;color:var(--text2);flex:1}
.lbar-n b{color:var(--brand)}

/* ============ 正文配图 ============ */
.md-img{max-width:100%;height:auto;border-radius:8px;border:1px solid var(--line);
  margin:8px 8px 8px 0;vertical-align:top;background:#fff;cursor:zoom-in}
.md-img:hover{box-shadow:0 2px 12px rgba(0,0,0,.08)}

/* ============ 图片放大预览（Lightbox） ============ */
.lb{position:fixed;inset:0;z-index:400;display:none;flex-direction:column;
  background:rgba(16,18,24,.74);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  opacity:0;transition:opacity .18s ease}
.lb.show{display:flex;opacity:1}

.lb-bar{flex-shrink:0;height:44px;display:flex;align-items:center;gap:6px;padding:0 10px;
  color:#fff;background:rgba(0,0,0,.28);user-select:none}
.lb-name{flex:1;min-width:0;font-size:13px;opacity:.88;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-count{font-size:12px;opacity:.6;flex-shrink:0;font-variant-numeric:tabular-nums}
.lb-zoom{font-size:12px;opacity:.72;min-width:48px;text-align:right;flex-shrink:0;
  font-variant-numeric:tabular-nums}
.lb-btn{width:30px;height:30px;flex-shrink:0;border-radius:6px;color:#fff;font-size:15px;
  line-height:1;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.12);transition:background .15s}
.lb-btn:hover{background:rgba(255,255,255,.26)}
.lb-btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
.lb-btn.w{width:auto;padding:0 10px;font-size:12.5px}
.lb-btn.lb-close{font-size:14px;margin-left:2px}
.lb-btn.lb-close:hover{background:var(--danger)}

.lb-stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;
  justify-content:center;overflow:hidden;touch-action:none;cursor:zoom-out}
.lb-stage.grab{cursor:grab}
.lb-stage.grabbing{cursor:grabbing}
.lb-img{max-width:100%;max-height:100%;display:block;border-radius:4px;background:#fff;
  transform-origin:center center;will-change:transform;cursor:default;
  image-rendering:auto;        /* 缩小查看时高质量双线性采样，文字保持清晰 */
  box-shadow:0 10px 40px rgba(0,0,0,.45);
  -webkit-user-select:none;user-select:none;-webkit-user-drag:none;
  transition:opacity .2s}
/* 长竖图按宽度适配（避免被 max-height 压成窄条导致文字模糊），用户可拖拽/滚轮查看 */
.lb-img.lb-tall{max-height:none}
.lb-stage.grab .lb-img{cursor:grab}
.lb-stage.grabbing .lb-img{cursor:grabbing}
.lb-img.loading{opacity:.35}

.lb-tip{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);
  color:rgba(255,255,255,.55);font-size:11.5px;pointer-events:none;white-space:nowrap;
  background:rgba(0,0,0,.3);padding:4px 12px;border-radius:20px}
.lb-stage.zoomed .lb-tip{opacity:0}
.lb-tip{transition:opacity .2s}

/* 预览打开时锁定底层滚动（保留滚动条宽度，避免布局跳动） */
.lb-open .read,.lb-open .list,.lb-open .nav{overflow:hidden!important}

@media (max-width:640px){
  .lb-tip{display:none}
  .lb-bar{height:40px;gap:4px;padding:0 6px}
  .lb-name{font-size:12px}
  .lb-btn{width:28px;height:28px}
  .lb-zoom{min-width:42px}
}

/* ============ 顶部摘要：层级缩进 ============ */
.tocbar span.toc-i.lv1{font-weight:600}
.tocbar span.toc-i.lv3{margin-left:10px;font-size:11.5px;opacity:.92}
.tocbar span.toc-i.lv2{margin-left:0}

/* ============ 顶部摘要配置（编辑态） ============ */
.toc-cfg{margin-bottom:14px;border:1px solid var(--border);border-radius:var(--radius);
  padding:12px 14px;background:#fcfcfd}
.toc-cfg-h{font-size:12.5px;font-weight:600;color:var(--text2);margin-bottom:8px}
.toc-cfg-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.toc-cfg-row .e-sel{min-width:220px}
.toc-cfg-tip{font-size:11.5px;color:var(--text3);line-height:1.5;flex:1;min-width:180px}
.toc-items{margin-top:10px}
.ti-empty{font-size:12px;color:var(--text3);padding:8px 0}
.ti-row{display:flex;align-items:center;gap:7px;padding:5px 0}
.ti-n{width:18px;height:18px;line-height:18px;text-align:center;border-radius:4px;
  background:var(--brand-soft);color:var(--brand);font-size:11px;flex-shrink:0}
.ti-lv{flex-shrink:0;font-size:11px;color:var(--text3);width:22px}
.ti-tx{flex:1;min-width:0;height:28px;border:1px solid var(--border);border-radius:5px;
  padding:0 8px;font-size:12.5px;outline:none;background:#fff}
.ti-tx:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.ti-mv,.ti-rm{width:24px;height:24px;border-radius:4px;font-size:12px;flex-shrink:0;
  color:var(--text2);background:#fff;border:1px solid var(--border)}
.ti-mv:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}
.ti-mv:disabled{opacity:.35;cursor:default}
.ti-rm:hover{color:var(--danger);border-color:var(--danger)}
.ti-add{margin-top:8px;height:28px;font-size:12.5px;max-width:340px}

@media (max-width:640px){
  .toc-cfg-row .e-sel{min-width:100%;width:100%}
  .ti-tx{font-size:12px}
}

/* ============ 局部样式快捷条（只对选中文字生效） ============ */
.inline-style-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 14px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafbfc}
.isb-label{font-size:12px;color:var(--text3);white-space:nowrap}
.isb-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;font-size:12px;
  border:1px solid var(--border);border-radius:5px;background:#fff;color:var(--text);
  cursor:pointer;transition:.15s;white-space:nowrap}
.isb-btn:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft2)}
.isb-btn b{font-size:13px;font-weight:700}
.isb-tip{font-size:11px;color:var(--text3)}
.isb-w{padding:4px 9px;min-width:46px;justify-content:center;font-variant-numeric:tabular-nums}
.isb-w.on{border-color:var(--brand);color:var(--brand);background:var(--brand-soft2)}
.isb-fs{height:26px;font-size:12px;padding:0 6px;min-width:78px}
.isb-cus{display:inline-flex;align-items:center;gap:5px}
.isb-fsin{width:64px;height:26px;border:1px solid var(--border);border-radius:5px;
  padding:0 6px;font-size:12px;outline:none;background:#fff}
.isb-fsin:focus{border-color:var(--brand)}
.isb-go{height:26px;padding:0 10px;font-size:12px;border:1px solid var(--border);
  border-radius:5px;background:#fff;color:var(--text2);cursor:pointer}
.isb-go:hover{border-color:var(--brand);color:var(--brand)}

/* ============ 正文右键菜单（选区加入摘要 / 局部字号） ============ */
.ctx-menu{position:fixed;z-index:9999;display:none;min-width:168px;padding:5px;
  background:#fff;border:1px solid var(--border);border-radius:8px;
  box-shadow:0 8px 26px rgba(17,24,39,.14);font-size:13px;user-select:none}
.ctx-item{padding:7px 10px;border-radius:5px;cursor:pointer;color:var(--text);white-space:nowrap}
.ctx-item:hover{background:var(--brand-soft);color:var(--brand)}
.ctx-sep{height:1px;background:var(--line);margin:4px 2px}
.ctx-row{display:flex;align-items:center;gap:8px;padding:5px 10px 3px}
.ctx-lb{font-size:12px;color:var(--text3);flex:1}
.ctx-fs{height:26px;font-size:12px;border:1px solid var(--border);border-radius:5px;
  padding:0 4px;background:#fff;color:var(--text);outline:none}
.ctx-cus{display:flex;align-items:center;gap:6px;padding:3px 10px 6px}
.ctx-fsin{width:70px;height:26px;border:1px solid var(--border);border-radius:5px;
  padding:0 6px;font-size:12px;outline:none}
.ctx-fsin:focus{border-color:var(--brand)}
.ctx-go{height:26px;padding:0 10px;font-size:12px;border:1px solid var(--border);
  border-radius:5px;background:#fff;color:var(--text2);cursor:pointer}
.ctx-go:hover{border-color:var(--brand);color:var(--brand)}

/* 选区条目：正文里已定位不到 / 标记为选区来源 */
.ti-row.ti-miss .ti-tx{border-style:dashed;color:var(--text3)}
.ti-lv-sel{color:var(--brand)!important}
.tocbar span.toc-i.toc-miss{opacity:.45;text-decoration:line-through;cursor:not-allowed}

/* 局部字号只改字号，不撑高行距：行内 span 的 line-height 固定为 1，
   小于正文行框高度（15.5px × 1.85），所以同一行其它文字的行高与排版不受影响 */
.rbody [style*="font-size"],.w-e-text-container [style*="font-size"]{line-height:1}

/* ============ 统一导航框架（左侧菜单 + 多入口视图） ============ */
.app{display:flex;height:calc(100vh - var(--top-h))}
.apprail{width:92px;flex-shrink:0;background:var(--card);border-right:1px solid var(--border);
  display:flex;flex-direction:column;padding:10px 0;gap:2px;overflow-y:auto}
.rail-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  padding:11px 4px;margin:0 6px;border-radius:var(--radius);color:var(--text2);
  text-decoration:none;cursor:pointer;transition:.15s;white-space:nowrap}
.rail-item:hover{background:var(--bg);color:var(--text)}
.rail-item.on{background:var(--brand-soft);color:var(--brand);font-weight:600}
.rail-ico{display:flex;align-items:center;justify-content:center;height:20px}
.rail-tx{font-size:12px;line-height:1.2}
.appmain{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}

/* 视图切换：默认隐藏，命中路由时显示；KB 保持原有 grid 三栏 */
.view{display:none}
.view.active{display:block}
#view-kb.active{display:grid}
#view-demand.active,#view-training.active{overflow-y:auto;background:var(--card)}
#view-admin.active{flex:1;min-height:0;overflow-y:auto;background:var(--card,#fff)}

/* 非知识库入口时，隐藏顶栏里知识库专属的搜索 / 新建 / 统计 */
body[data-route="demand"] .search,body[data-route="training"] .search,
body[data-route="demand"] #btn-new,body[data-route="training"] #btn-new,
body[data-route="demand"] #stat,body[data-route="training"] #stat{display:none}

/* 首页：全宽（隐藏左侧 rail），自身纵向滚动；顶栏只留 logo 与用户菜单 */
body[data-route="home"] .apprail{display:none}
body[data-route="home"] .appmain{overflow-y:auto;background:var(--bg)}
body[data-route="home"] .search,
body[data-route="home"] #btn-new,
body[data-route="home"] #stat{display:none}
#view-home.active{display:block;min-height:100%}

/* ============ 新页面占位版式（版式待定，先保证接口链路可用） ============ */
.ph{padding:18px 20px 28px;max-width:1180px}
.ph-head{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.ph-title{font-size:17px;font-weight:600}
.ph-sub{font-size:12px;color:var(--text3);margin-top:4px}
.ph-ops{margin-left:auto;display:flex;align-items:center;gap:8px}
.ph-ops .e-sel{height:30px;font-size:13px;min-width:120px}
.ph-api{font-size:12px;color:var(--text3);background:var(--bg);border:1px solid var(--line);
  border-radius:var(--radius);padding:7px 10px;margin-bottom:14px;word-break:break-all}
.ph-api.ok{color:var(--text2)}
.ph-api.err{color:var(--danger);background:var(--danger-soft);border-color:#ffccc7}
.ph-tag{display:inline-block;padding:1px 6px;border-radius:3px;font-size:11px;margin-left:4px}
.ph-tag.mock{background:#fff7e8;color:#d97706}
.ph-tag.real{background:#e8fff4;color:var(--ok)}
.ph-loading,.ph-empty,.ph-error{padding:26px 0;text-align:center;color:var(--text3);font-size:13px}
.ph-error{color:var(--danger)}

/* 需求中心：极简表格 */
.ph-table{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.ph-tr{display:grid;grid-template-columns:86px minmax(0,1fr) 78px 64px 84px 100px;
  gap:10px;align-items:center;padding:9px 12px;border-bottom:1px solid var(--line);font-size:13px}
.ph-tr:last-child{border-bottom:none}
.ph-th{background:var(--bg);color:var(--text3);font-size:12px}
.ph-tr:not(.ph-th):hover{background:var(--brand-soft2)}
.ph-tt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:var(--text2)}
.st,.pr{display:inline-block;padding:1px 7px;border-radius:10px;font-size:11px;font-style:normal}
.st-pending{background:#f2f3f5;color:var(--text2)}
.st-doing{background:var(--brand-soft);color:var(--brand)}
.st-done{background:#e8fff4;color:var(--ok)}
.st-rejected{background:var(--danger-soft);color:var(--danger)}
.pr-high{background:#fff1f0;color:var(--danger)}
.pr-mid{background:#fff7e8;color:#d97706}
.pr-low{background:#f2f3f5;color:var(--text3)}

/* 培训资料：极简卡片 */
.ph-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.ph-card{display:flex;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--radius)}
.ph-card:hover{border-color:var(--brand);background:var(--brand-soft2)}
.ph-cover{width:52px;height:52px;flex-shrink:0;border-radius:var(--radius);display:flex;
  align-items:center;justify-content:center;font-size:12px;color:#fff;background:#86909c}
.ty-video{background:#0052d9}.ty-ppt{background:#d97706}.ty-doc{background:#00a870}.ty-audio{background:#7c3aed}
.ph-cmain{min-width:0;flex:1}
.ph-ct{font-size:13.5px;font-weight:600;margin-bottom:4px}
.ph-req{font-style:normal;font-size:11px;color:var(--danger);background:var(--danger-soft);
  padding:1px 5px;border-radius:3px;margin-left:4px}
.ph-cs{font-size:12px;color:var(--text2);margin-bottom:6px;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ph-cmeta{font-size:11.5px;color:var(--text3);margin-bottom:8px}
.ph-prog{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--text3)}
.ph-bar{flex:1;height:5px;background:var(--line);border-radius:3px;overflow:hidden}
.ph-bar i{display:block;height:100%;background:var(--brand);border-radius:3px}

@media (max-width:900px){
  .apprail{width:64px}
  .rail-tx{font-size:11px}
  .ph-tr{grid-template-columns:70px minmax(0,1fr) 70px}
  .ph-tr span:nth-child(n+4){display:none}
}

/* ============ 结构化正文编辑器（订单驳回） ============ */
.se-root{display:flex;flex-direction:column;gap:18px;padding:4px 2px 8px}
.se-board{border-radius:10px;padding:14px 16px 18px;transition:box-shadow .15s}
.se-board:focus-within{box-shadow:0 0 0 2px var(--brand-soft)}
.se-board-title{width:100%;border:none;background:transparent;font-size:18px;font-weight:600;
  color:var(--brand);padding:4px 0;outline:none;border-bottom:1px dashed transparent;margin-bottom:6px}
.se-board-title:focus{border-bottom-color:var(--brand)}
.se-board-intro{width:100%;border:1px dashed var(--border);border-radius:6px;background:rgba(255,255,255,.6);
  padding:6px 10px;font-size:13px;color:var(--text2);resize:none;line-height:1.6;outline:none;min-height:34px;
  overflow:hidden;font-family:inherit}
.se-board-intro:focus{border-style:solid;border-color:var(--brand);background:#fff}

.se-section{margin-top:14px;padding-top:8px;border-top:1px dashed rgba(0,0,0,.08)}
.se-section:first-of-type{margin-top:6px;padding-top:0;border-top:none}
.se-section-title{width:100%;border:none;background:transparent;font-size:15px;font-weight:600;
  color:var(--text);padding:4px 0;outline:none;border-bottom:1px dashed transparent;margin-bottom:8px}
.se-section-title:focus{border-bottom-color:var(--brand)}

.se-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:10px 12px;
  margin:10px 0;transition:box-shadow .15s}
.se-card:focus-within{box-shadow:0 0 0 2px var(--brand-soft);border-color:var(--brand)}
.se-card-details{border-style:dashed}
.se-card-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.se-card-title{flex:1;min-width:0;border:none;background:transparent;font-size:14px;font-weight:600;
  color:var(--text);padding:3px 0;outline:none;border-bottom:1px dashed transparent}
.se-card-title:focus{border-bottom-color:var(--brand)}
.se-card-ops{display:flex;gap:6px;flex-shrink:0}
.se-card-type,.se-card-del{font-size:11.5px;height:24px;padding:0 8px;border:1px solid var(--border);
  border-radius:4px;color:var(--text2);background:#fff;cursor:pointer}
.se-card-type:hover{border-color:var(--brand);color:var(--brand)}
.se-card-del{font-size:14px;color:var(--text3)}
.se-card-del:hover{border-color:var(--danger);color:var(--danger)}

.se-items{display:flex;flex-direction:column;gap:6px;padding-left:6px}
.se-row{display:flex;align-items:flex-start;gap:6px;padding:6px 8px;border:1px solid transparent;
  border-radius:6px;background:#fafbfc;transition:background .12s,border-color .12s}
.se-row:hover{background:#fff;border-color:var(--border)}
.se-row.se-dragging{opacity:.5;background:var(--brand-soft2)}
.se-row.se-over{border-top:2px solid var(--brand)}
.se-handle{cursor:grab;color:var(--text3);font-size:14px;line-height:1.6;padding:0 4px;
  user-select:none;flex-shrink:0}
.se-handle:active{cursor:grabbing}
.se-input{flex:1;min-width:0;border:1px solid var(--border);border-radius:5px;padding:6px 9px;
  font-size:13.5px;line-height:1.55;background:#fff;outline:none;resize:none;overflow:hidden;
  font-family:inherit}
.se-input:focus{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}
.se-input.se-text{min-height:30px}
.se-input.se-url{font-size:12px;color:var(--text3);background:#fafbfc}
.se-thumb{width:38px;height:38px;object-fit:cover;border:1px solid var(--border);border-radius:4px;flex-shrink:0}
.se-del{font-size:16px;line-height:1;color:var(--text3);background:transparent;border:none;
  padding:2px 6px;cursor:pointer;flex-shrink:0}
.se-del:hover{color:var(--danger)}

.se-add{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 12px;
  border:1px dashed #c9cdd4;border-radius:6px;font-size:12.5px;color:var(--text2);
  background:#fff;cursor:pointer;margin-top:6px;transition:.15s}
.se-add:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-soft2)}
.se-add-card{margin-top:4px;margin-left:6px}
.se-add-section{margin-top:8px;align-self:flex-start}

/* 结构化编辑器：raw 原样保留块 / 条目（不可编辑，避免丢结构） */
.se-board-raw,.se-raw-block{border:1px dashed var(--border);border-radius:8px;padding:10px 12px;
  background:#fafbfc;font-size:13.5px;line-height:1.6;margin:8px 0;overflow:auto}
.se-raw-item{flex:1;min-width:0;font-size:13.5px;line-height:1.6;color:var(--text2);
  background:#fafbfc;border:1px dashed var(--border);border-radius:5px;padding:6px 9px;overflow:auto}
.se-raw-item img,.se-board-raw img,.se-raw-block img{max-width:100%;height:auto}
.se-fatal{border:1px solid var(--danger);background:#fff2f0;color:var(--danger);
  border-radius:8px;padding:10px 12px;font-size:13.5px}

/* ============ 培训资料模块 ============ */
.tr{max-width:1080px;margin:0 auto;padding:22px 24px 40px}
.tr-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}
.tr-title{font-size:22px;font-weight:700;color:var(--text1)}
.tr-sub{font-size:13px;color:var(--text3);margin-top:4px}
.tr-ops{display:flex;gap:10px;flex-shrink:0}
.tr-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:8px}
.tr-tabs{display:flex;gap:8px;flex-wrap:wrap}
.tr-tab{border:1px solid var(--line);background:#fff;color:var(--text2);font-size:13px;
  padding:6px 14px;border-radius:18px;cursor:pointer;transition:.15s}
.tr-tab:hover{border-color:var(--brand);color:var(--brand)}
.tr-tab.on{background:var(--brand);border-color:var(--brand);color:#fff}
.tr-tab .tr-cnt{font-style:normal;font-size:11px;opacity:.8;margin-left:2px}
.tr-filters{display:flex;gap:8px;align-items:center}
.tr-filters .e-in{width:180px}
.tr-body{margin-top:10px}
/* 统一板块图标徽标（所有板块共用，保证视觉一致） */
.tr-ico{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  border-radius:9px;color:#fff;font-size:15px;flex-shrink:0;line-height:1;box-shadow:0 2px 6px rgba(0,0,0,.12)}
/* 单板块视图标题 */
.tr-sec{margin-bottom:22px}
.tr-sec-head{display:flex;align-items:center;gap:10px;margin:10px 0 12px}
.tr-sec-name{font-size:16px;font-weight:600;color:var(--text1);display:flex;align-items:center;gap:8px}
.tr-sec-name .tr-cnt{font-style:normal;font-size:12px;color:var(--text3);margin-left:2px}
.tr-sec-ops{display:flex;gap:8px;flex-shrink:0;margin-left:auto}
/* 全部：紧凑板块网格（多列自适应，更合理适配宽度） */
.tr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;align-items:start}
.tr-panel{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;display:flex;flex-direction:column;transition:.15s}
.tr-panel:hover{box-shadow:0 6px 18px rgba(0,0,0,.08);border-color:#d6e0f5}
.tr-panel-h{display:flex;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;
  border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fafbff,#fff);transition:.15s}
.tr-panel-h:hover{background:#f4f7ff}
.tr-pname{font-size:15px;font-weight:600;color:var(--text1);flex:1;min-width:0;display:flex;align-items:center;gap:6px}
.tr-pname .tr-cnt{font-style:normal;font-size:12px;color:var(--text3)}
.tr-drill{font-size:12px;color:var(--brand);flex-shrink:0}
.tr-plist{padding:6px 14px 12px;display:flex;flex-direction:column}
.tr-prow{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed #eef0f4}
.tr-prow:last-child{border-bottom:none}
.tr-ptag{flex-shrink:0;font-size:11px;font-weight:600;color:#fff;padding:2px 8px;border-radius:6px;min-width:34px;text-align:center}
.tr-pinfo{flex:1;min-width:0}
.tr-ptitle{font-size:13.5px;font-weight:600;color:var(--text1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-req{font-style:normal;font-size:10px;color:#fff;background:var(--danger);border-radius:4px;padding:1px 5px;margin-left:4px;vertical-align:middle}
.tr-pmeta{font-size:11.5px;color:var(--text3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-pdl{flex-shrink:0;font-size:15px;color:var(--brand);text-decoration:none;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px}
.tr-pdl:hover{background:#eef2ff}
.tr-pempty{font-size:12.5px;color:var(--text3);padding:12px 2px}
.tr-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.tr-card{position:relative;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden;
  display:flex;flex-direction:column;transition:.15s}
.tr-card:hover{box-shadow:0 6px 18px rgba(0,0,0,.08);border-color:#d6e0f5}
/* 顶部彩色区：现在展示「课件标题」（与类型位置对调），支持多行 */
.tr-cover{min-height:64px;display:flex;align-items:center;justify-content:flex-start;padding:12px 14px;
  color:#fff;font-size:14.5px;font-weight:600;line-height:1.4;word-break:break-word}
.ty-video{background:linear-gradient(135deg,#3a7afe,#5b9bff)}
.ty-doc{background:linear-gradient(135deg,#2bb673,#46c98a)}
.ty-ppt{background:linear-gradient(135deg,#f0883e,#f5a35e)}
.ty-audio{background:linear-gradient(135deg,#8b5cf6,#a77bf6)}
/* 正文首行：展示「课件类型」（与标题位置对调） */
.tr-ctype-row{display:flex;align-items:center;gap:8px}
.tr-ctype{display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:11px;
  font-size:11.5px;font-weight:700;letter-spacing:.5px}
.ty-video-tx{color:#2f6fe4;background:#eaf2ff}
.ty-doc-tx{color:#1f9d63;background:#e8f8f0}
.ty-ppt-tx{color:#d9752f;background:#fff2e6}
.ty-audio-tx{color:#7c4ded;background:#f3ecff}
.tr-cmain{padding:12px 14px;flex:1}
.tr-ct{font-size:14.5px;font-weight:600;color:var(--text1);line-height:1.4}
.tr-cs{font-size:12.5px;color:var(--text3);margin-top:6px;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tr-cmeta{font-size:11.5px;color:var(--text3);margin-top:8px}
.tr-dl{display:inline-block;margin-top:10px;font-size:12.5px;color:var(--brand);text-decoration:none;font-weight:600}
.tr-dl:hover{text-decoration:underline}
.tr-card-ops{position:absolute;top:8px;right:8px;display:none;gap:6px}
.tr-card:hover .tr-card-ops{display:flex}
.btn-mini{height:26px;padding:0 10px;border:1px solid var(--line);background:rgba(255,255,255,.92);
  border-radius:6px;font-size:12px;color:var(--text2);cursor:pointer}
.btn-mini:hover{border-color:var(--brand);color:var(--brand)}
.btn-mini-p{background:var(--brand);border-color:var(--brand);color:#fff}
.btn-mini-p:hover{opacity:.9;color:#fff}
.btn-mini-d:hover{border-color:var(--danger);color:var(--danger)}

/* 页面底部两个滚动榜单（近期高频查看 / 最近更新）
   复用首页 home.css 的 hm-* 样式与交互，仅按「页内嵌」场景收敛高度 */
.tr-rolls{margin-top:24px}
.tr-rolls .hm-scroll{height:300px}
.tr-rolls .hm-item-off{cursor:default}
.tr-rolls .hm-item-off:hover{background:none;border-color:transparent}
@media (max-width:768px){
  .tr-rolls{margin-top:18px}
  .tr-rolls .hm-scroll{height:240px}
}

/* 通用弹窗 / toast（培训模块复用） */
.m-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);display:none;align-items:center;justify-content:center;z-index:9999}
.m-mask.show{display:flex}
.m-box{width:440px;max-width:92vw;max-height:88vh;overflow:auto;background:#fff;border-radius:12px;
  box-shadow:0 18px 50px rgba(0,0,0,.25)}
.m-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;
  font-size:16px;font-weight:600;border-bottom:1px solid var(--line)}
.m-x{background:transparent;border:none;font-size:22px;line-height:1;color:var(--text3);cursor:pointer}
.m-body{padding:16px 18px}
.m-lb{display:block;font-size:13px;color:var(--text2);margin:12px 0 5px}
.m-lb:first-child{margin-top:0}
.m-in{width:100%;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:7px;font-size:13.5px;
  box-sizing:border-box;outline:none}
.m-in:focus{border-color:var(--brand)}
.m-file{width:100%;margin-top:4px;font-size:13px}
.m-hint{font-size:12px;color:var(--text3);margin-top:6px}
.m-prog{display:flex;align-items:center;gap:10px;margin-top:8px}
.m-prog-bar{flex:1;height:8px;background:var(--line);border-radius:99px;overflow:hidden}
.m-prog-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),#3aa0ff);transition:width .15s ease}
.m-prog-pct{font-size:12px;color:var(--text2);min-width:36px;text-align:right;font-variant-numeric:tabular-nums}
.m-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid var(--line)}
.m-foot .btn-primary,.m-foot .btn-ghost{height:34px;padding:0 18px}
.m-toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%) translateY(20px);
  background:rgba(30,34,45,.92);color:#fff;padding:10px 18px;border-radius:8px;font-size:13.5px;
  opacity:0;pointer-events:none;transition:.2s;z-index:10000}
.m-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.btn-primary{background:var(--brand);border:1px solid var(--brand);color:#fff;border-radius:7px;
  font-size:13.5px;cursor:pointer;transition:.15s}
.btn-primary:hover{opacity:.92}
.btn-primary:disabled{opacity:.55;cursor:default}
.btn-ghost{background:#fff;border:1px solid var(--line);color:var(--text2);border-radius:7px;
  font-size:13.5px;cursor:pointer;transition:.15s}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}

/* 列表排序切换（需求：创建时间 / 查看次数） */
.lsort{display:inline-flex;gap:2px;margin-right:8px;vertical-align:middle}
.lsort .sbtn{font-size:12px;padding:3px 9px;border:1px solid var(--line,#e5e7eb);
  background:transparent;color:var(--sub,#888);border-radius:6px;cursor:pointer;line-height:1.5}
.lsort .sbtn:hover{color:var(--brand,#2f6fed);border-color:var(--brand,#2f6fed)}
.lsort .sbtn.on{background:var(--brand,#2f6fed);color:#fff;border-color:var(--brand,#2f6fed)}

/* ============ 子栏目排序（拖动 + 最近更新） ============ */
.grp-h .gsort{font-size:11px;color:var(--text3);border:1px solid var(--line);border-radius:4px;
  padding:0 5px;line-height:16px;cursor:pointer;user-select:none;flex-shrink:0;margin-left:4px}
.grp-h .gsort:hover{color:var(--brand);border-color:var(--brand)}
.grp-h .gsort.on{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}
.sub[draggable="true"]{cursor:grab}
.sub.dragging{opacity:.45}
.sub.drop-before{box-shadow:inset 0 2px 0 var(--brand)}
.sub.drop-after{box-shadow:inset 0 -2px 0 var(--brand)}

/* ============ 更新日志（近 7 天） ============ */
.clog-btn{font-size:12px;padding:2px 9px;border:1px solid var(--line);background:transparent;
  color:var(--text3);border-radius:5px;cursor:pointer;margin-left:6px}
.clog-btn:hover{color:var(--brand);border-color:var(--brand)}
.clog-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:120;display:none;
  align-items:center;justify-content:center}
.clog-panel{background:#fff;border-radius:12px;width:min(520px,92vw);max-height:76vh;overflow:auto;
  box-shadow:0 8px 30px rgba(0,0,0,.18)}
.clog-h{position:sticky;top:0;background:#fff;padding:14px 18px;border-bottom:1px solid var(--line);
  font-size:14px;font-weight:600;display:flex;align-items:center}
.clog-x{margin-left:auto;cursor:pointer;color:var(--text3);font-size:15px}
.clog-x:hover{color:var(--text)}
.clog-list{padding:4px 18px 16px}
.clog-day{font-size:12px;color:var(--text3);margin:14px 0 6px;font-weight:500}
.clog-item{padding:9px 0;border-bottom:1px dashed var(--line)}
.clog-t{font-size:12px;color:var(--text3)}
.clog-by{font-size:12px;color:var(--brand);margin-left:8px}
.clog-s{font-size:13px;margin-top:4px;line-height:1.65;color:var(--text)}
.clog-sec{margin-top:7px;display:flex;flex-wrap:wrap;gap:6px}
.clog-chip{font-size:12px;padding:2px 9px;border-radius:4px;background:var(--brand-soft);
  color:var(--brand);cursor:pointer}
.clog-chip:hover{background:var(--brand);color:#fff}
.clog-empty{padding:22px 0;text-align:center;color:var(--text3);font-size:13px}
.sec-hl{background:#fff6d6;border-radius:4px}

/* 空栏目里的「新建文档」按钮 */
.lbtn-new{color:var(--brand);border-color:var(--brand)}
.lbtn-new:hover{background:var(--brand);color:#fff}

/* ============ Word 式多级编号（1. / 1.1 / 1.1.1）============ */
/* 用 CSS counters 代替浏览器默认 marker，嵌套有序列表即可显示多级编号 */
.rbody ol, .editor-box ol, .w-e-text-container ol{list-style:none;margin-left:0;padding-left:0;counter-reset:kbli}
.rbody ol > li, .editor-box ol > li, .w-e-text-container ol > li{
  counter-increment:kbli;position:relative;padding-left:2.2em;margin:4px 0;line-height:1.8}
.rbody ol > li::before, .editor-box ol > li::before, .w-e-text-container ol > li::before{
  content:counters(kbli,".") ".";position:absolute;left:0;width:2em;text-align:right;
  color:var(--brand);font-variant-numeric:tabular-nums}
/* 无序列表保留圆点，仅做缩进层次 */
.rbody ul ul, .editor-box ul ul, .w-e-text-container ul ul{list-style-type:circle}
.rbody ul ul ul, .editor-box ul ul ul, .w-e-text-container ul ul ul{list-style-type:square}

/* ===== 风控相关（软封控 / 硬风控）· 风险警示主题 =====
   与「价值补偿体系」同机制：由 .rbody[data-cat="风控相关"] 作用域生效，
   样式不写入正文，用户编辑保存不会被清掉，也不影响其他栏目。 */
.rbody[data-cat="风控相关"] h1{
  margin:0 0 22px;padding:0 0 14px;font-size:23px;font-weight:700;color:#2b1a0c;
  letter-spacing:.2px;border-bottom:3px solid #e8a33d;
}
.rbody[data-cat="风控相关"] h2{
  margin:34px 0 16px;padding:11px 16px;border:none;border-radius:10px;
  font-size:17px;font-weight:600;color:#fff;letter-spacing:.3px;
  background:linear-gradient(135deg,#8f4a12,#c9781f);
  box-shadow:0 3px 10px rgba(143,74,18,.20);
}
.rbody[data-cat="风控相关"] h3{
  margin:26px 0 10px;padding:8px 14px;font-size:15.5px;font-weight:600;color:#7a3f12;
  background:#fdf4e7;border-left:4px solid #e8a33d;border-radius:0 8px 8px 0;
}
.rbody[data-cat="风控相关"] h4{
  margin:18px 0 8px;padding:6px 12px;font-size:14px;font-weight:600;color:#5a6472;
  background:#f4f6f9;border-left:3px solid #c3cbd6;border-radius:0 6px 6px 0;
}
.rbody[data-cat="风控相关"] p{margin:8px 0;line-height:1.8}
.rbody[data-cat="风控相关"] ul{margin:8px 0 14px;padding-left:20px}
.rbody[data-cat="风控相关"] li{margin:6px 0;line-height:1.75}
.rbody[data-cat="风控相关"] blockquote{
  margin:12px 0 16px;padding:12px 16px;background:#fefaf3;
  border:1px solid #f2dfb6;border-left:4px solid #e8a33d;
  border-radius:0 8px 8px 0;color:#6b4a18;font-size:14.5px;line-height:1.8;
}
.rbody[data-cat="风控相关"] blockquote p{margin:0}
.rbody[data-cat="风控相关"] img{
  max-width:100%;height:auto;
  margin:6px 8px 8px 0;vertical-align:top;
  border:1px solid #e9e3d8;border-radius:8px;background:#fff;
  box-shadow:0 2px 8px rgba(90,70,40,.12);cursor:zoom-in;
}
.rbody[data-cat="风控相关"] table{font-size:14px}
.rbody[data-cat="风控相关"] th{
  white-space:normal;background:#f7efe2;color:#7a3f12;font-weight:600;text-align:left;
}
.rbody[data-cat="风控相关"] td:first-child{color:#2b1a0c;font-weight:500}
.rbody[data-cat="风控相关"] tbody tr:nth-child(even) td{background:#fffdf8}

/* ================= 需求2：图片「可外发 / 仅内部」标识 =================
   三态：sc-public 可外发 / sc-internal 仅内部 / sc-unmarked 未标注
   阅读态用 .iw 包裹层承载角标（img 是替换元素，不能加伪元素）；
   编辑器态用 wangEditor 自带的 .w-e-image-container 承载 ::after 角标。 */

.isb-sep{width:1px;height:16px;background:var(--border);margin:0 2px;flex:0 0 auto}
.isb-sel{padding:3px 6px!important;font-size:12.5px!important;max-width:108px}

/* ---- 阅读态 ---- */
.rbody .iw{position:relative;display:inline-block;vertical-align:top;max-width:100%;
  margin:6px 8px 6px 0;line-height:0}
.rbody .iw>img{display:block;width:100%;margin:0;border-radius:8px}
.rbody .iw-tag{position:absolute;right:6px;top:6px;font-size:11px;line-height:1.55;
  padding:1px 7px;border-radius:5px;font-weight:600;letter-spacing:.2px;
  pointer-events:none;white-space:nowrap;font-family:inherit;
  box-shadow:0 1px 4px rgba(20,25,35,.18)}
.rbody .iw.sc-internal{outline:2px solid rgba(214,69,38,.6);outline-offset:-1px;border-radius:9px}
.rbody .iw.sc-internal>.iw-tag{background:#d64526;color:#fff}
.rbody .iw.sc-unmarked{outline:2px dashed rgba(122,132,148,.55);outline-offset:-1px;border-radius:9px}
.rbody .iw.sc-unmarked>.iw-tag{background:rgba(92,101,116,.8);color:#fff}
.rbody .iw.sc-public>.iw-tag{background:rgba(31,148,94,.78);color:#fff}

/* 风控栏目主题原本给图片加了描边/阴影，包裹后作用在内层 img 上；
   sc-internal / sc-unmarked 的外框已足够醒目，避免双层描边过重 */
.rbody .iw.sc-internal>img,.rbody .iw.sc-unmarked>img{box-shadow:none}

/* 灯箱里也带上标识，放大查看时同样能判断能否外发 */
.lb-wrap.sc-internal::after,.lb-wrap.sc-unmarked::after,.lb-wrap.sc-public::after{
  position:absolute;left:14px;top:14px;font-size:12px;line-height:1.6;padding:2px 9px;
  border-radius:6px;font-weight:600;color:#fff;pointer-events:none;z-index:5}
.lb-wrap.sc-internal::after{content:'仅内部 · 请勿外发';background:#d64526}
.lb-wrap.sc-unmarked::after{content:'未标注';background:rgba(92,101,116,.85)}
.lb-wrap.sc-public::after{content:'可外发';background:rgba(31,148,94,.8)}

/* ---- 编辑器态 ---- */
#e-editor .w-e-image-container{position:relative}
#e-editor .w-e-image-container.sc-internal,
#e-editor .w-e-image-container.sc-unmarked{outline:2px solid rgba(214,69,38,.5);outline-offset:-1px}
#e-editor .w-e-image-container.sc-unmarked{outline-color:rgba(122,132,148,.5);outline-style:dashed}
#e-editor .w-e-image-container.sc-internal::after,
#e-editor .w-e-image-container.sc-unmarked::after,
#e-editor .w-e-image-container.sc-public::after{
  position:absolute;right:5px;top:5px;font-size:11px;line-height:1.55;padding:1px 7px;
  border-radius:5px;font-weight:600;pointer-events:none;white-space:nowrap;z-index:2}
#e-editor .w-e-image-container.sc-internal::after{content:'仅内部';background:#d64526;color:#fff}
#e-editor .w-e-image-container.sc-unmarked::after{content:'未标注';background:rgba(92,101,116,.8);color:#fff}
#e-editor .w-e-image-container.sc-public::after{content:'可外发';background:rgba(31,148,94,.78);color:#fff}

/* ============ 三级「场景」排序与拖动（需求：三级层级） ============ */
.topics .tgsort{font-size:11px;color:var(--text3);border:1px solid var(--line);border-radius:4px;
  padding:0 6px;line-height:16px;cursor:pointer;user-select:none;align-self:flex-start;
  margin:2px 0 4px 9px}
.topics .tgsort:hover{color:var(--brand);border-color:var(--brand)}
.topics .tgsort.on{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}
.topic[draggable="true"]{cursor:grab}
.topic.dragging{opacity:.45}
.topic.drop-before{box-shadow:inset 0 2px 0 var(--brand)}
.topic.drop-after{box-shadow:inset 0 -2px 0 var(--brand)}
.topic.all .nm{color:var(--text3);font-style:normal}
.topics .topic .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* ============ 三级类目树（挂在子栏目下，可逐级嵌套） ============ */
.topics .topic{position:relative;gap:4px}
.topics .topic .tgl{width:9px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  font-size:9px;color:var(--text3);cursor:pointer;line-height:1}
.topics .topic .tgl.ph{cursor:default}
.topics .topic .tgl:hover{color:var(--brand)}
.topics .topic.lv2{padding-left:8px}
.topics .topic.lv3{padding-left:18px}
.topics .topic.lv4{padding-left:28px}
.topics .topic.lv5{padding-left:38px}
.topics .topic.lv6{padding-left:38px}
/* 行内操作按钮悬浮在右侧，不占类目名的宽度（导航栏很窄，必须省） */
.topics .topic .tadd,.topics .topic .tmore{position:absolute;top:50%;transform:translateY(-50%);
  width:14px;text-align:center;font-size:12px;color:var(--text3);opacity:0;cursor:pointer;line-height:1}
.topics .topic .tmore{right:3px}
.topics .topic .tadd{right:19px}
.topics .topic:hover .tadd,.topics .topic:hover .tmore{opacity:1}
.topics .topic .tadd:hover,.topics .topic .tmore:hover{color:var(--brand)}
.topics .topic .n{transition:opacity .12s}
.topics .topic:hover .n{opacity:0}
.topics .topic.tadd{opacity:.9}
.topics .topic.tadd .nm{color:var(--text3);font-size:12px}
.topics .topic.uncat .nm{color:var(--text3)}
.topics .topic.uncat.on .nm{color:var(--brand)}



/* ===== 文档树：右侧正文下方的「子文档」区域 ===== */
.dsubs{margin:22px 0 6px;padding-top:14px;border-top:1px solid #EAE8E3}
.dsubs h4{margin:0 0 10px;font-size:12.5px;font-weight:500;color:#888780}
.dsub{display:flex;align-items:center;gap:10px;padding:9px 12px;margin-bottom:6px;
  border:1px solid #EAE8E3;border-radius:8px;cursor:pointer;background:#FFFFFF}
.dsub:hover{border-color:#85B7EB;background:#F7FAFE}
.dsub-i{color:#185FA5;font-size:11px;line-height:1;flex:0 0 auto}
.dsub-t{flex:1;min-width:0;font-size:13.5px;color:#2C2C2A;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.dsub-m{font-size:12px;color:#888780;flex:0 0 auto}
/* 文档树节点：标题过长时省略，避免挤掉右侧的「＋」「⋮」 */
.topic.dtopic .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
