/* ============================================================
   团队大脑 · 文档 / 知识库（ds-bn-docs- 前缀）
   只用 design-system 令牌；唯一例外是富文本「文字颜色 / 高亮块」色板（正文内容色，深浅模式一致，存进正文的就是这些值）。
   ============================================================ */

.ds-bn-docs {
  display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 1em; align-items: start; min-width: 0;
}
.ds-bn-docs > * { min-width: 0; }
@media (max-width: 900px) { .ds-bn-docs { grid-template-columns: minmax(0, 1fr); } }
.ds-bn-docs-hidden { display: none; }
.ds-bn-docs-loading { padding: 2em; text-align: center; color: var(--muted); }
.ds-bn-docs-danger { color: var(--danger); }
.ds-bn-docs-tip { line-height: 1.7; margin-bottom: .6em; color: var(--text-2); }

/* ---------- 左栏 ---------- */
.ds-bn-docs-side {
  background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius);
  padding: .8em; display: flex; flex-direction: column; gap: .6em; position: sticky; top: .5em;
  max-height: calc(100vh - 110px); overflow: auto;
}
.ds-bn-docs-tabs { margin: 0; }
.ds-bn-docs-tabs .ds-tab { white-space: nowrap; flex: 1; }
.ds-bn-docs-side-head { display: flex; align-items: center; justify-content: space-between; gap: .5em; white-space: nowrap; }
.ds-bn-docs-side-acts { display: flex; gap: .5em; }
.ds-bn-docs-side-acts .ds-btn { flex: 1; white-space: nowrap; }
.ds-bn-docs-search { display: flex; gap: .4em; align-items: center; }
.ds-bn-docs-search .inp-clear-wrap, .ds-bn-docs-search > .ds-input { flex: 1; min-width: 0; }
.ds-bn-docs-search .inp-clear-wrap .ds-input { width: 100%; box-sizing: border-box; }
.ds-bn-docs-search .ds-btn { white-space: nowrap; }
.ds-bn-docs-owner, .ds-bn-docs-newgroup { width: 100%; box-sizing: border-box; }
.ds-bn-docs-side .inp-clear-wrap { display: flex; width: 100%; }

.ds-bn-docs-seg { display: inline-flex; border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; }
.ds-bn-docs-seg button {
  border: 0; background: var(--card-bg); color: var(--text-2); padding: .3em .9em; cursor: pointer; white-space: nowrap; font-size: 12.5px;
}
.ds-bn-docs-seg button + button { border-left: 1px solid var(--border); }
.ds-bn-docs-seg button.on { background: var(--info-bg); color: var(--primary); font-weight: 600; }
.ds-bn-docs-side > .ds-bn-docs-seg { display: flex; }
.ds-bn-docs-side > .ds-bn-docs-seg button { flex: 1; }
.ds-bn-docs-seg-sm button { padding: .2em .7em; }

.ds-bn-docs-navlist { display: flex; flex-direction: column; gap: 2px; }
.ds-bn-docs-nav {
  display: flex; align-items: center; gap: .4em; padding: .42em .6em; border-radius: var(--radius-sm);
  cursor: pointer; color: var(--text-2); font-size: 13px; min-width: 0;
}
.ds-bn-docs-nav:hover { background: var(--hover); }
.ds-bn-docs-nav.on { background: var(--info-bg); color: var(--primary); font-weight: 600; }
.ds-bn-docs-nav-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-bn-docs-nav-n { color: var(--muted); font-size: 12px; white-space: nowrap; }
.ds-bn-docs-more { visibility: hidden; padding: 0 .2em; }
.ds-bn-docs-nav:hover .ds-bn-docs-more, .ds-bn-docs-nav.on .ds-bn-docs-more { visibility: visible; }
.ds-bn-docs-tag {
  font-size: 11px; padding: 0 .45em; border-radius: 999px; background: var(--hover); color: var(--muted); white-space: nowrap;
}
.ds-bn-docs-sec {
  display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--muted);
  font-weight: 600; margin: .7em .3em .2em; white-space: nowrap;
}
.ds-bn-docs-none { font-size: 12px; color: var(--muted); padding: .3em .6em; }
.ds-bn-docs-dragover { outline: 2px dashed var(--accent); outline-offset: -2px; background: var(--hover); }

/* ---------- 列表 ---------- */
.ds-bn-docs-main { min-width: 0; }
.ds-bn-docs-listhead, .ds-bn-docs-kbhead {
  display: flex; align-items: center; justify-content: space-between; gap: .8em; flex-wrap: wrap; margin-bottom: .8em;
}
.ds-bn-docs-kbhead-info { min-width: 0; }
.ds-bn-docs-listtitle { font-size: 16px; font-weight: 700; color: var(--text); white-space: nowrap; }
.ds-bn-docs-listtitle .ds-text-muted { font-size: 12.5px; font-weight: 400; }
.ds-bn-docs-kbacts { display: flex; gap: .5em; flex-wrap: wrap; }
.ds-bn-docs-kbacts .ds-btn { white-space: nowrap; }
.ds-bn-docs-tokb {
  display: flex; align-items: center; gap: .6em; flex-wrap: wrap; font-size: 12.5px; color: var(--text-2);
  background: var(--info-bg); border-radius: var(--radius-sm); padding: .35em .7em;
}
.ds-bn-docs-tokb .ds-btn { white-space: nowrap; }
.ds-bn-docs-dropzone { position: relative; min-height: 120px; }
.ds-bn-docs-dropmask {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  background: var(--info-bg); color: var(--primary); border: 2px dashed var(--primary); border-radius: var(--radius);
  font-size: 16px; font-weight: 600; opacity: .95; z-index: 5;
}
.ds-bn-docs-prog { font-size: 12.5px; color: var(--muted); white-space: pre-wrap; }
.ds-bn-docs-prog:empty { display: none; }

.ds-bn-docs-list { display: flex; flex-direction: column; gap: .5em; }
.ds-bn-docs-row {
  display: flex; align-items: flex-start; gap: .8em; padding: .75em .9em; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--card-bg); min-width: 0;
}
.ds-bn-docs-row:hover { box-shadow: var(--shadow-sm); }
.ds-bn-docs-row[draggable="true"] { cursor: grab; }
.ds-bn-docs-row-main { flex: 1; min-width: 0; cursor: pointer; }
.ds-bn-docs-row-title { font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-bn-docs-row-title:hover { color: var(--accent); }
.ds-bn-docs-snippet { font-size: 12.5px; color: var(--text-2); margin-top: .25em; line-height: 1.6; word-break: break-word; }
.ds-bn-docs-snippet mark, .ds-bn-docs-row-title mark { background: var(--warning-bg); color: var(--warning); padding: 0 1px; border-radius: 3px; }
.ds-bn-docs-row-meta { display: flex; flex-wrap: wrap; gap: .4em .9em; align-items: center; font-size: 12px; color: var(--muted); margin-top: .35em; }
.ds-bn-docs-row-meta span { white-space: nowrap; }
.ds-bn-docs-row-acts { display: flex; gap: .7em; white-space: nowrap; align-items: center; }
.ds-bn-docs-pager { display: flex; align-items: center; gap: .5em; flex-wrap: wrap; margin-top: .8em; justify-content: flex-end; }
.ds-bn-docs-pager .ds-btn, .ds-bn-docs-pager span { white-space: nowrap; }
.ds-bn-docs-psize { width: auto; }

.ds-bn-docs-empty { text-align: left; }
.ds-bn-docs-intro { max-width: 560px; margin: .8em auto 0; line-height: 1.8; color: var(--text-2); }
.ds-bn-docs-intro b { color: var(--text); }
.ds-bn-docs-intro ol { padding-left: 1.3em; margin: .4em 0 1em; }

/* ---------- 弹窗里的小件 ---------- */
.ds-bn-docs-drop {
  border: 2px dashed var(--border); border-radius: var(--radius); padding: 1.4em; text-align: center;
  display: flex; flex-direction: column; gap: .8em; align-items: center; color: var(--text-2); line-height: 1.7;
}
.ds-bn-docs-drop.on { border-color: var(--primary); background: var(--info-bg); }
.ds-bn-docs-menu-list { display: flex; flex-direction: column; gap: .5em; margin-bottom: .6em; }
.ds-bn-docs-rules { padding-left: 1.2em; line-height: 1.9; color: var(--text-2); }
.ds-bn-docs-pick { max-height: 55vh; overflow: auto; margin-top: .6em; }
.ds-bn-docs-pick-sec { font-size: 12px; color: var(--muted); font-weight: 600; margin: .9em 0 .35em; }
.ds-bn-docs-pick-item {
  display: flex; width: 100%; justify-content: space-between; gap: 1em; border: 0; background: transparent;
  padding: .45em .5em; border-radius: var(--radius-sm); cursor: pointer; color: var(--text); text-align: left;
}
.ds-bn-docs-pick-item:hover { background: var(--hover); }
.ds-bn-docs-pick-item span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ds-bn-docs-radio, .ds-bn-docs-chk { display: flex; align-items: center; gap: .4em; padding: .3em 0; cursor: pointer; line-height: 1.5; }
.ds-bn-docs-chks { display: flex; flex-wrap: wrap; gap: .3em .9em; align-items: center; }
.ds-bn-docs-chks .ds-bn-docs-chk { white-space: nowrap; }
.ds-bn-docs-writebox { border-left: 2px solid var(--border); padding-left: .8em; margin: .3em 0 .5em; }
.ds-bn-docs-newgrid { display: flex; flex-direction: column; gap: .6em; }
.ds-bn-docs-newcard {
  display: flex; flex-direction: column; gap: .25em; text-align: left; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--card-bg); padding: .8em 1em; cursor: pointer; color: var(--text);
}
.ds-bn-docs-newcard:hover { border-color: var(--primary); background: var(--hover); }
.ds-bn-docs-newcard span { font-size: 12.5px; }

/* ---------- 单篇文档 ---------- */
.ds-bn-docs-doc { display: flex; flex-direction: column; gap: .7em; min-width: 0; }
.ds-bn-docs-bar {
  display: flex; align-items: center; gap: .6em; flex-wrap: wrap; position: sticky; top: 0; z-index: 6;
  background: var(--bg); padding: .3em 0;
}
.ds-bn-docs-bar .ds-btn { white-space: nowrap; }
.ds-bn-docs-bar-acts { display: flex; align-items: center; gap: .45em; flex-wrap: wrap; }
.ds-bn-docs-groupsel { width: auto; max-width: 160px; padding-top: .25em; padding-bottom: .25em; }
.ds-bn-docs-status { font-size: 12.5px; color: var(--muted); white-space: nowrap; }
.ds-bn-docs-status.ok { color: var(--success); }
.ds-bn-docs-status.err { color: var(--danger); white-space: normal; }
.ds-bn-docs-source {
  background: var(--warning-bg); color: var(--warning); border-radius: var(--radius-sm); padding: .5em .9em; font-size: 13px; line-height: 1.6;
}
.ds-bn-docs-docgrid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1em; align-items: start; }
.ds-bn-docs-docgrid:has(> .ds-bn-docs-para:not([hidden])) { grid-template-columns: minmax(0, 1fr) 320px; }
@media (max-width: 1100px) { .ds-bn-docs-docgrid:has(> .ds-bn-docs-para:not([hidden])) { grid-template-columns: minmax(0, 1fr); } }
.ds-bn-docs-paper {
  background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 1.4em 3.2em 1.4em 1.8em; min-width: 0;
}
.ds-bn-docs-h1 { font-size: 24px; font-weight: 700; color: var(--text); margin: 0 0 .3em; word-break: break-word; }
.ds-bn-docs-title-input { width: 100%; box-sizing: border-box; font-size: 22px; font-weight: 700; border: 0; padding: .2em 0; background: transparent; }
.ds-bn-docs-title-input:focus { box-shadow: none; }
.ds-bn-docs-meta { display: flex; flex-wrap: wrap; gap: .3em 1em; align-items: center; font-size: 12.5px; color: var(--muted); margin-bottom: .8em; }
.ds-bn-docs-meta > span { white-space: nowrap; }
.ds-bn-docs-kbchips { display: inline-flex; flex-wrap: wrap; gap: .3em; align-items: center; }
.ds-bn-docs-attach {
  display: flex; flex-wrap: wrap; gap: .4em .9em; align-items: center; background: var(--hover);
  border-radius: var(--radius-sm); padding: .5em .8em; font-size: 13px; margin-bottom: .8em;
}
.ds-bn-docs-scan { color: var(--warning); font-size: 12.5px; }
.ds-bn-docs-preview { flex-basis: 100%; }
.ds-bn-docs-pdf { width: 100%; height: 75vh; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card-bg); }

/* 阅读模式 */
.ds-bn-docs-readwrap { position: relative; }
.ds-bn-docs-read.ql-snow { border: 0; }
.ds-bn-docs-content.ql-editor, .ds-bn-docs-quill .ql-editor {
  padding: .2em 0; height: auto; overflow: visible; font-size: 14.5px; line-height: 1.8; color: var(--text);
}
.ds-bn-docs-content [data-bid] { border-radius: 4px; transition: background .15s; }
.ds-bn-docs-content .ds-bn-docs-blk-on { background: var(--warning-bg); }
.ds-bn-docs-content img, .ds-bn-docs-quill img { max-width: 100%; }
.ds-bn-docs-content a, .ds-bn-docs-quill a { color: var(--primary); }
.ds-bn-docs-content blockquote, .ds-bn-docs-quill blockquote { border-left: 3px solid var(--border) !important; color: var(--text-2); }
.ds-bn-docs-content table td, .ds-bn-docs-quill table td,
.ds-bn-docs-content table th { border: 1px solid var(--border) !important; padding: 4px 8px !important; }
.ds-bn-docs-hoverbtn, .ds-bn-docs-bubble {
  position: absolute; right: -3em; border: 1px solid var(--border); background: var(--card-bg); color: var(--text-2);
  border-radius: 999px; font-size: 11.5px; padding: .1em .55em; cursor: pointer; white-space: nowrap; z-index: 3;
}
.ds-bn-docs-hoverbtn { right: -3.1em; transform: translateX(0); opacity: .9; }
.ds-bn-docs-hoverbtn:hover, .ds-bn-docs-bubble:hover { border-color: var(--accent); color: var(--accent); }
.ds-bn-docs-bubble { background: var(--warning-bg); color: var(--warning); border-color: transparent; }
.ds-bn-docs-bubble.done { background: var(--hover); color: var(--muted); }
.ds-bn-docs-bubbles { position: absolute; top: 0; right: 0; width: 0; }
@media (max-width: 900px) {
  .ds-bn-docs-paper { padding: 1em; }
  .ds-bn-docs-hoverbtn, .ds-bn-docs-bubble { right: 0; }
}

/* 段落点评侧栏 */
.ds-bn-docs-para {
  background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); padding: .8em;
  position: sticky; top: 3em; max-height: calc(100vh - 140px); overflow: auto;
}
.ds-bn-docs-para-head { display: flex; justify-content: space-between; align-items: center; white-space: nowrap; margin-bottom: .5em; }
.ds-bn-docs-para-quote {
  margin: 0 0 .7em; padding: .3em .7em; border-left: 3px solid var(--accent); color: var(--text-2);
  font-size: 12.5px; line-height: 1.6; background: var(--hover); border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.ds-bn-docs-endcmt { border-top: 1px solid var(--border-2); margin-top: 1.6em; padding-top: 1em; }
.ds-bn-docs-endcmt-title { font-weight: 650; color: var(--text); margin-bottom: .5em; }

/* 编辑模式 */
.ds-bn-docs-tb {
  display: flex; flex-wrap: wrap; align-items: center; gap: 2px; padding: .35em; margin-bottom: .6em;
  border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card-bg);
  position: sticky; top: 2.6em; z-index: 5;
}
.ds-bn-docs-tb-btn {
  border: 0; background: transparent; color: var(--text-2); min-width: 28px; height: 28px; padding: 0 .35em;
  border-radius: var(--radius-sm); cursor: pointer; font-size: 13px; white-space: nowrap;
}
.ds-bn-docs-tb-btn:hover { background: var(--hover); color: var(--text); }
.ds-bn-docs-tb-btn.on { background: var(--info-bg); color: var(--primary); }
.ds-bn-docs-tb-sep { width: 1px; height: 18px; background: var(--border); margin: 0 4px; }
.ds-bn-docs-tb-select {
  height: 28px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card-bg); color: var(--text); font-size: 12.5px;
}
.ds-bn-docs-tb-pop { position: relative; display: inline-flex; }
.ds-bn-docs-palette, .ds-bn-docs-menu {
  position: absolute; top: 100%; left: 0; z-index: 20; background: var(--card-bg); border: 1px solid var(--border);
  border-radius: var(--radius-sm); box-shadow: var(--shadow-md); padding: .4em;
}
.ds-bn-docs-palette { display: flex; gap: 4px; }
.ds-bn-docs-palette[hidden], .ds-bn-docs-menu[hidden] { display: none; }
.ds-bn-docs-menu { display: flex; flex-direction: column; min-width: 150px; }
.ds-bn-docs-menu button {
  border: 0; background: transparent; text-align: left; padding: .4em .6em; border-radius: var(--radius-sm); cursor: pointer; color: var(--text); white-space: nowrap;
}
.ds-bn-docs-menu button:hover { background: var(--hover); }
.ds-bn-docs-sw {
  width: 24px; height: 24px; border-radius: 4px; border: 1px solid var(--border); cursor: pointer; font-weight: 700;
  background: var(--card-bg); color: var(--text); padding: 0;
}
/* 富文本色板（内容色，与 Quill 存进正文的颜色值一一对应） */
.ds-bn-docs-sw-red { color: #e03e3e; }
.ds-bn-docs-sw-orange { color: #d9730d; }
.ds-bn-docs-sw-green { color: #0f7b6c; }
.ds-bn-docs-sw-blue { color: #0b6bcb; }
.ds-bn-docs-sw-purple { color: #6940a5; }
.ds-bn-docs-sw-gray { color: #787774; }
.ds-bn-docs-sw-bg-yellow { background: #fbf3db; }
.ds-bn-docs-sw-bg-green { background: #ddedea; }
.ds-bn-docs-sw-bg-blue { background: #ddebf1; }
.ds-bn-docs-sw-bg-pink { background: #f4dfeb; }
.ds-bn-docs-sw-bg-purple { background: #eae4f2; }
.ds-bn-docs-sw-none { background: linear-gradient(135deg, transparent 45%, var(--danger) 45%, var(--danger) 55%, transparent 55%); }

.ds-bn-docs-editwrap { position: relative; border: 0; }
.ds-bn-docs-editwrap.ql-snow { border: 0; }
.ds-bn-docs-quill.ql-container { border: 0; font-family: inherit; font-size: inherit; }
.ds-bn-docs-quill .ql-editor { min-height: 50vh; }
.ds-bn-docs-quill .ql-editor.ql-blank::before { color: var(--muted); left: 0; font-style: normal; }
.ds-bn-docs-imgbox { position: absolute; border: 2px solid var(--accent); pointer-events: none; box-sizing: border-box; z-index: 4; }
.ds-bn-docs-imghandle {
  position: absolute; right: -7px; bottom: -7px; width: 12px; height: 12px; border-radius: 3px;
  background: var(--accent); cursor: nwse-resize; pointer-events: auto;
}

/* 管理面板 */
.ds-bn-docs-admin { display: flex; flex-direction: column; gap: .7em; }
.ds-bn-docs-admin-add { display: flex; gap: .5em; align-items: center; }
.ds-bn-docs-admin-add .ds-btn { white-space: nowrap; }
.ds-bn-docs-admin tr[draggable="true"] { cursor: grab; }

/* 放到部门知识库（2026-09-17） */
.ds-bn-docs-placerow { flex-wrap: wrap; min-width: 0; }
.ds-bn-docs-placename { white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.ds-bn-docs-placeby { font-size: 12px; white-space: nowrap; }
.ds-bn-docs-feishu { margin-top: .6em; border-top: 1px dashed var(--border-2); padding-top: .6em; }

/* ---------- 审核 → 服务器知识库（2026-09-24） ---------- */
.ds-bn-docs-rv-title { font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: .2em; overflow-wrap: anywhere; }
.ds-bn-docs-rv-state { margin-top: .6em; padding: .45em .7em; border-radius: var(--radius-sm); background: var(--hover); font-size: 13px; }
.ds-bn-docs-rv-tip { margin-top: .7em; font-size: 12.5px; }
.ds-bn-docs-rv-warn { font-size: 12.5px; margin-top: .3em; }
.ds-bn-docs-rv-note { width: 100%; margin-top: .6em; }
.ds-bn-docs-rv-depts { display: flex; flex-wrap: wrap; gap: .4em; margin-bottom: .8em; }
.ds-bn-docs-rv-depts .ds-btn { white-space: nowrap; }
