/* 个人知识库 — 自有前端样式。暖纸感 + 青绿主色 + 橙色动作色。明暗主题。响应式。 */
:root{
  --paper:#f4efe4; --raised:#fbf7ee; --ink:#2b2a27; --soft:#8c8473; --faint:#b3ab98;
  --line:#e6e0d1; --line2:#ddd5c2; --accent:#1f7a6b; --accent2:#2f9e84; --action:#e8590c; --action2:#f59f00;
  --ok:#2f9e44; --sidebar:#efe9dc; --shadow:0 6px 24px rgba(60,50,30,.12);
  --maxw:760px;
}
[data-theme=dark]{
  --paper:#16140f; --raised:#1f1c16; --ink:#e9e3d4; --soft:#9b9382; --faint:#6b6453;
  --line:#2c281f; --line2:#39342a; --accent:#3fb89f; --accent2:#54d0b4; --action:#ff7a33; --action2:#ffb84d;
  --sidebar:#13110c; --shadow:0 6px 24px rgba(0,0,0,.4);
}
*{box-sizing:border-box}
[hidden]{display:none !important}   /* 关键:让搜索弹窗/AI面板的 hidden 属性真正生效,默认隐藏,点击才开 */
html,body{margin:0;padding:0}
body{background:var(--paper);color:var(--ink);font-family:"LXGW WenKai Screen","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  line-height:1.75;font-size:16px;-webkit-font-smoothing:antialiased}
/* 防复制不再用 user-select(那会让选区发涩、不像普通网页)。
   正文/侧栏一律原生可选 → 划词丝滑;复制拦截改为只拦 copy/cut/右键(见 site.js)。
   仅按钮不可选,避免点按钮误选其文字。 */
body.kb-copy-guard button{
  -webkit-user-select:none;
  user-select:none;
}
@media print{
  body.kb-copy-guard .kb-sidebar,
  body.kb-copy-guard .kb-main,
  body.kb-copy-guard .kb-cite-prev{display:none!important}
  body.kb-copy-guard:before{content:"此站点不开放打印或复制。";display:block;padding:40px;font:16px/1.6 system-ui,sans-serif;color:#222}
}
a{color:inherit;text-decoration:none}
kbd{font-family:inherit;font-size:11px;border:1px solid var(--line2);border-radius:4px;padding:0 4px;color:var(--soft)}

/* ===== 布局 ===== */
.kb-sidebar{position:fixed;top:0;left:0;bottom:0;width:264px;background:var(--sidebar);border-right:1px solid var(--line);
  padding:18px 14px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;z-index:40}
.kb-main{margin-left:264px;min-height:100vh;padding:0}
.kb-brand{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:700;margin-bottom:10px;color:var(--ink)}
.kb-logo{color:var(--accent)}
.kb-tool{display:flex;align-items:center;gap:7px;width:100%;text-align:left;background:var(--raised);border:1px solid var(--line2);
  color:var(--ink);border-radius:10px;padding:9px 12px;font-size:14px;font-family:inherit;cursor:pointer;transition:.15s}
.kb-tool:hover{border-color:var(--accent)}
.kb-tool kbd{margin-left:auto}
.kb-ask-btn{background:linear-gradient(120deg,rgba(31,122,107,.12),rgba(245,159,0,.1));font-weight:600}
/* 导航树 */
.kb-nav{margin-top:8px;overflow-y:auto;min-height:0}
.kb-nav-sec{font-size:12px;color:var(--faint);letter-spacing:.1em;margin:10px 4px 4px}
.kb-folder>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;cursor:pointer;
  padding:6px 8px;border-radius:8px;font-size:14px;color:var(--ink)}
.kb-folder>summary::-webkit-details-marker{display:none}
.kb-folder>summary:hover{background:var(--line)}
.kb-cnt{font-size:12px;color:var(--faint)}
.kb-folder-cards{padding:2px 0 6px 12px;display:flex;flex-direction:column}
.kb-nav-card{font-size:13px;color:var(--soft);padding:4px 8px;border-radius:6px;border-left:2px solid transparent;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;position:relative;display:block;padding-right:42px}
.kb-nav-card:hover{color:var(--ink);background:var(--line)}
.kb-nav-card.active{color:var(--accent);border-left-color:var(--accent);background:var(--line)}
.kb-nav-filter-wrap{display:flex;align-items:center;gap:6px;margin:2px 6px 4px 12px}
.kb-nav-filter{width:100%;min-width:0;border:1px solid var(--line2);border-radius:8px;background:var(--raised);color:var(--ink);font-family:inherit;font-size:12.5px;padding:6px 8px;outline:none}
.kb-nav-filter:focus{border-color:var(--accent)}
.kb-nav-filter-count{font-size:11px;color:var(--faint);white-space:nowrap}
.kb-nav-empty{margin:2px 6px 8px 16px;color:var(--faint);font-size:12px}
.kb-nav-state{position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:10.5px;line-height:1;border-radius:999px;padding:2px 5px;background:var(--raised);border:1px solid var(--line2);color:var(--faint)}
.kb-nav-card.read-done .kb-nav-state{color:var(--ok);border-color:rgba(47,158,68,.45)}
.kb-nav-card.read-reading .kb-nav-state{color:var(--action);border-color:rgba(232,89,12,.38)}
.kb-recent-folder{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px 0;margin:4px 0 8px}
.kb-new-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--action);margin-right:6px;vertical-align:middle}

/* ===== 卡片正文 ===== */
.kb-card-wrap{display:flex;gap:34px;max-width:1180px;margin:0 auto;padding:46px 40px 90px}
.kb-card{flex:1;min-width:0;max-width:var(--maxw)}
.kb-crumb{font-size:13px;color:var(--soft);margin-bottom:14px}
.kb-crumb a{color:var(--accent)}
.kb-card h1{font-size:32px;line-height:1.3;margin:.2em 0 .4em;font-weight:800}
.kb-card-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:26px;font-size:12px}
.kb-tag{background:var(--line);color:var(--soft);border-radius:999px;padding:2px 10px}
.kb-date{color:var(--faint);margin-left:auto}
.kb-prose{font-size:16.5px}
.kb-prose h2{font-size:23px;font-weight:700;margin:1.5em 0 .5em;padding-top:.2em}
.kb-prose h3{font-size:19px;font-weight:700;margin:1.2em 0 .4em}
.kb-prose p{margin:1em 0}
.kb-prose a{color:var(--accent);border-bottom:1px solid var(--line2)}
.kb-prose a:hover{border-color:var(--accent)}
.kb-prose ul,.kb-prose ol{padding-left:1.5em;margin:1em 0}
.kb-prose li{margin:.4em 0}
.kb-prose code{background:var(--line);padding:2px 6px;border-radius:5px;font-size:.88em;font-family:ui-monospace,Consolas,monospace}
.kb-prose pre{background:#1d1b16;color:#e9e3d4;padding:15px 17px;border-radius:11px;overflow-x:auto;margin:1.2em 0}
.kb-prose pre code{background:none;color:inherit;padding:0;font-size:13.5px;line-height:1.65}
.kb-prose blockquote{border-left:3px solid var(--accent);margin:1.2em 0;padding:.3em 1em;color:var(--soft);background:var(--raised);border-radius:0 8px 8px 0}
.kb-prose strong{font-weight:700}
.kb-prose table{border-collapse:collapse;width:100%;margin:1.2em 0;font-size:14.5px}
.kb-prose th,.kb-prose td{border:1px solid var(--line2);padding:7px 11px;text-align:left}
.kb-prose th{background:var(--line)}
/* 反向链接 */
.kb-backlinks{margin-top:46px;padding-top:22px;border-top:1px dashed var(--line2)}
.kb-backlinks h3{font-size:14px;color:var(--soft);margin:0 0 12px;font-weight:600}
.kb-backlinks a{display:inline-block;margin:0 8px 8px 0;padding:5px 12px;border:1px solid var(--line2);border-radius:9px;
  font-size:13px;color:var(--accent);transition:.15s}
.kb-backlinks a:hover{background:var(--line);border-color:var(--accent)}
/* 目录(右栏) */
.kb-toc{width:200px;flex-shrink:0;position:sticky;top:46px;align-self:flex-start;max-height:calc(100vh - 80px);overflow-y:auto}
.kb-toc-h{font-size:12px;color:var(--faint);letter-spacing:.1em;margin-bottom:8px}
.kb-toc a{display:block;font-size:13px;color:var(--soft);padding:3px 0 3px 10px;border-left:2px solid var(--line);line-height:1.5}
.kb-toc a.lvl3{padding-left:22px;font-size:12.5px}
.kb-toc a:hover,.kb-toc a.active{color:var(--accent);border-left-color:var(--accent)}
/* 目录页列表 */
.kb-folder-list{list-style:none;padding:0}
.kb-folder-list li{margin:0 0 4px}
.kb-folder-list a{display:block;padding:12px 16px;border:1px solid var(--line);border-radius:11px;transition:.15s}
.kb-folder-list a:hover{border-color:var(--accent);background:var(--raised)}
.kb-folder-list b{display:block;font-size:16px;font-weight:600}
.kb-folder-list span{font-size:13px;color:var(--soft)}
.kb-faint{color:var(--faint);font-size:16px;font-weight:400}

/* ===== 首页 ===== */
.kb-home{max-width:min(1560px,calc(100vw - 48px));margin:0 auto;padding:36px 28px 86px;text-align:center}
.kb-home-title{font-size:38px;font-weight:800;margin:10px 0 6px}
.kb-home-sub{color:var(--soft);font-size:15px;margin:0 0 18px}
.kb-graph-wrap{position:relative;height:72vh;min-height:560px;max-height:760px;background:var(--raised);border:1px solid var(--line);border-radius:16px;overflow:hidden}
#kb-graph{display:block;width:100%;height:100%;cursor:grab}
.kb-graph-legend{position:absolute;left:16px;right:16px;bottom:14px;font-size:13px;line-height:1.35;color:var(--soft);display:flex;flex-wrap:wrap;gap:7px 16px;align-items:center;justify-content:center;pointer-events:none}
.kb-graph-legend .lg{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.kb-graph-legend .lg i{width:11px;height:11px;border-radius:50%;display:inline-block;flex-shrink:0}
.kb-graph-controls{position:absolute;top:12px;right:14px;z-index:2;display:flex;gap:4px;padding:4px;background:rgba(255,251,240,.78);border:1px solid var(--line2);border-radius:10px;box-shadow:var(--shadow);backdrop-filter:blur(10px)}
[data-theme=dark] .kb-graph-controls{background:rgba(31,30,27,.76)}
.kb-graph-controls button{border:0;background:transparent;color:var(--soft);border-radius:7px;padding:6px 10px;font-size:13px;font-family:inherit;cursor:pointer;white-space:nowrap}
.kb-graph-controls button:hover{color:var(--ink);background:var(--raised)}
.kb-graph-controls button.is-active{color:#fff;background:var(--accent)}
.kb-graph-controls button:disabled{opacity:.42;cursor:not-allowed}
.kb-related h3{color:var(--action) !important}
.kb-related a{border-color:rgba(232,89,12,.3) !important;color:var(--action) !important}
.kb-recent-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;margin-top:22px}
.kb-recent-h{font-size:12px;color:var(--faint);letter-spacing:.1em}
.kb-recent{font-size:13px;color:var(--accent);padding:5px 11px;border:1px solid var(--line2);border-radius:999px}
.kb-recent:hover{background:var(--raised)}
.kb-new-section{margin:26px auto 0;text-align:left}
.kb-new-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0 0 10px}
.kb-new-head span{font-size:18px;font-weight:700;color:var(--ink)}
.kb-new-head small{font-size:12px;color:var(--faint);font-weight:400}
.kb-new-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.kb-new-card{display:flex;flex-direction:column;gap:5px;min-height:118px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--raised);transition:.15s}
.kb-new-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.kb-new-card b{font-size:14px;line-height:1.45;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kb-new-card span{font-size:12px;line-height:1.55;color:var(--soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kb-new-card i{margin-top:auto;font-style:normal;font-size:11px;color:var(--faint)}

/* ===== 顶栏移动菜单 ===== */
#kb-menu{display:none;position:fixed;top:12px;left:12px;z-index:50;background:var(--raised);border:1px solid var(--line2);
  border-radius:10px;width:42px;height:42px;font-size:20px;cursor:pointer;box-shadow:var(--shadow)}
.kb-scrim{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:39}
.kb-scrim.show{display:block}

@media(max-width:920px){
  .kb-toc{display:none}
  .kb-card-wrap{padding:64px 20px 80px}
  .kb-new-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  #kb-menu{display:block}
  .kb-sidebar{transform:translateX(-100%);transition:transform .25s;width:80vw;max-width:300px;box-shadow:var(--shadow)}
  .kb-sidebar.open{transform:none}
  .kb-main{margin-left:0}
  .kb-card-wrap{padding:64px 16px 70px}
  .kb-card h1{font-size:26px}
  .kb-home{max-width:none;padding:64px 12px 60px}
  .kb-home-title{font-size:28px}
  .kb-graph-wrap{height:58vh;min-height:360px;max-height:none;border-radius:12px}
  .kb-graph-legend{font-size:11.5px;gap:5px 10px;justify-content:flex-start;max-height:64px;overflow:hidden}
  .kb-graph-controls{left:10px;right:10px;top:10px;justify-content:center;overflow:auto}
  .kb-graph-controls button{font-size:12px;padding:5px 8px}
  .kb-new-grid{grid-template-columns:1fr}
  .kb-new-head{align-items:flex-start;flex-direction:column}
}

/* ===== 覆盖层组件 ===== */
#kb-account{position:fixed;top:12px;right:14px;z-index:45;font-size:13px;opacity:0;transform:translateY(-6px);transition:.4s}
#kb-account.kb-show{opacity:1;transform:none}
.kb-login-btn{cursor:pointer;background:var(--action);color:#fff;border-radius:999px;padding:7px 15px;box-shadow:var(--shadow);font-weight:600}
.kb-user{display:flex;align-items:center;gap:8px;background:var(--raised);border:1px solid var(--line2);border-radius:999px;padding:4px 8px 4px 12px;box-shadow:var(--shadow)}
.kb-avatar{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--action),var(--action2));color:#fff;font-size:12px;font-weight:700}
.kb-admin-tag{font-size:10px;background:var(--action);color:#fff;border-radius:4px;padding:1px 5px}
.kb-logout{cursor:pointer;color:var(--soft);padding:2px 6px}.kb-logout:hover{color:var(--ink)}
#kb-progress-bar{position:fixed;top:0;left:0;height:3px;width:0;z-index:48;background:linear-gradient(90deg,var(--action),var(--action2));box-shadow:0 0 8px var(--action2);transition:width .15s}
#kb-resume{position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(20px);z-index:46;background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:999px;font-size:13px;box-shadow:var(--shadow);cursor:pointer;opacity:0;transition:.3s;display:flex;gap:10px}
#kb-resume.show{opacity:1;transform:translateX(-50%)}
#kb-resume .kb-x{opacity:.6}
.kb-done{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--ok);border:1px solid var(--ok);border-radius:999px;padding:1px 8px;margin-left:10px;vertical-align:middle;font-weight:400}
#kb-fw{position:fixed;inset:0;z-index:60;pointer-events:none;display:none}#kb-fw.show{display:block}
.kb-congrats{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%) scale(.8);z-index:61;text-align:center;opacity:0;transition:.4s;pointer-events:none}
.kb-congrats.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
.kb-congrats .big{font-size:34px;font-weight:800;background:linear-gradient(90deg,var(--action),var(--action2));-webkit-background-clip:text;background-clip:text;color:transparent}
.kb-congrats .sub{color:var(--ink);font-size:15px;margin-top:6px;opacity:.85}
#kb-modal-mask{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px);opacity:0;visibility:hidden;transition:.25s}
#kb-modal-mask.show{opacity:1;visibility:visible}
.kb-modal{position:relative;background:var(--raised);color:var(--ink);width:min(92vw,360px);border-radius:16px;padding:26px 24px;box-shadow:0 20px 60px rgba(0,0,0,.3);transform:translateY(12px) scale(.97);transition:transform .3s cubic-bezier(.2,.85,.25,1)}
#kb-modal-mask.show .kb-modal{transform:none}
.kb-modal h3{margin:0 0 4px;font-size:20px}.kb-modal .kb-sub{color:var(--soft);font-size:13px;margin-bottom:18px}
.kb-modal label{display:block;font-size:12px;color:var(--soft);margin:12px 0 5px}
.kb-modal input{width:100%;padding:11px 13px;border:1px solid var(--line2);border-radius:10px;background:transparent;color:var(--ink);font-size:15px;font-family:inherit;outline:none}
.kb-modal input:focus{border-color:var(--action)}
.kb-modal .kb-submit{width:100%;margin-top:20px;padding:12px;border:0;border-radius:10px;background:var(--action);color:#fff;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit}
.kb-modal .kb-switch{text-align:center;margin-top:16px;font-size:13px;color:var(--soft)}.kb-modal .kb-switch a{color:var(--action);cursor:pointer}
.kb-modal .kb-err{color:#e03131;font-size:13px;margin-top:12px;min-height:16px;text-align:center}
.kb-modal .kb-close{position:absolute;top:14px;right:18px;cursor:pointer;color:var(--soft);font-size:22px}
.kb-search-modal{position:fixed;inset:0;z-index:65;background:rgba(0,0,0,.4);backdrop-filter:blur(2px);display:flex;justify-content:center;align-items:flex-start;padding-top:12vh}
.kb-search-box{width:min(94vw,560px);background:var(--raised);border:1px solid var(--line2);border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.3);overflow:hidden}
#kb-search-input{width:100%;padding:16px 20px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font-size:16px;font-family:inherit;outline:none}
.kb-search-results{max-height:56vh;overflow-y:auto}
.kb-sr-item{display:block;padding:11px 20px;border-bottom:1px solid var(--line)}
.kb-sr-item.active,.kb-sr-item:hover{background:var(--line)}
.kb-sr-item .r-t{font-size:15px;font-weight:600}
.kb-sr-item .r-x{font-size:12.5px;color:var(--soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-sr-item mark,.kb-search-results mark{background:rgba(232,89,12,.2);color:inherit;border-radius:3px}
.kb-search-empty{padding:24px 20px;color:var(--soft);font-size:14px;text-align:center}
.kb-sem-h{padding:9px 20px 5px;font-size:11px;color:var(--action);letter-spacing:.05em;border-top:1px solid var(--line)}
.kb-ask-panel{position:fixed;right:0;top:0;bottom:0;width:440px;max-width:94vw;z-index:66;background:var(--raised);border-left:1px solid var(--line2);box-shadow:-10px 0 40px rgba(0,0,0,.18);display:flex;flex-direction:column}
.kb-ask-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line);font-size:16px;font-weight:600}
.kb-ask-head button{background:none;border:0;color:var(--soft);font-size:24px;cursor:pointer}
.kb-ask-log{flex:1;overflow-y:auto;padding:16px 16px 8px;display:flex;flex-direction:column;gap:12px}
.kb-msg{max-width:90%;padding:9px 13px;border-radius:14px;font-size:14px;line-height:1.7;word-wrap:break-word;animation:kbIn .25s}
@keyframes kbIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.kb-msg.kb-user{align-self:flex-end;background:var(--action);color:#fff;border-bottom-right-radius:4px}
.kb-msg.kb-bot{align-self:flex-start;background:var(--paper);border:1px solid var(--line2);border-bottom-left-radius:4px}
.kb-msg.kb-bot p{margin:.5em 0}.kb-msg.kb-bot h3{font-size:15px;font-weight:700;margin:.7em 0 .3em}.kb-msg.kb-bot h4{font-size:14px;font-weight:600;margin:.6em 0 .2em}
.kb-msg.kb-bot ul{margin:.4em 0;padding-left:1.4em}.kb-msg.kb-bot li{margin:.2em 0}
.kb-msg.kb-bot code{background:var(--line);padding:1px 5px;border-radius:5px;font-size:13px}
.kb-msg.kb-bot pre.kb-code{background:#1e1e1e;color:#e6e6e6;padding:11px 13px;border-radius:9px;overflow-x:auto;margin:.6em 0}
.kb-msg.kb-bot pre.kb-code code{background:none;color:inherit;padding:0;font-size:12.5px}
.kb-msg.kb-bot a{color:var(--action);text-decoration:underline}
.kb-err-msg{color:#e03131;margin:0}
.kb-think{margin-bottom:8px;border:1px dashed var(--line2);border-radius:8px;background:rgba(0,0,0,.02)}
.kb-think summary{cursor:pointer;font-size:12px;color:var(--soft);padding:6px 10px;list-style:none}
.kb-think summary::-webkit-details-marker{display:none}
.kb-think-body{max-height:200px;overflow-y:auto;padding:0 10px 8px;font-size:12px;line-height:1.6;color:var(--soft);white-space:pre-wrap}
.kb-ans{font-size:14px;line-height:1.7}
.katex{font-size:1.02em}
/* 划词评论 P2 */
.kb-cmt-fab{position:fixed;right:18px;bottom:18px;z-index:44;background:var(--accent);color:#fff;border:0;border-radius:999px;padding:9px 15px;font-size:14px;font-family:inherit;cursor:pointer;box-shadow:var(--shadow)}
.kb-cmt-fab:hover{filter:brightness(1.06)}
.kb-cmt-panel{position:fixed;right:0;top:0;bottom:0;width:340px;max-width:92vw;z-index:64;background:var(--raised);border-left:1px solid var(--line2);box-shadow:-10px 0 40px rgba(0,0,0,.16);display:flex;flex-direction:column;overflow:hidden}
.kb-cmt-head{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid var(--line);font-weight:600}
.kb-cmt-x{cursor:pointer;color:var(--soft);font-size:22px}
.kb-cmt-list{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:12px}
.kb-cmt-empty{color:var(--soft);font-size:13px;text-align:center;padding:30px 10px}
.kb-cmt-item{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--paper)}
.kb-cmt-quote{font-size:12px;color:var(--accent);background:rgba(31,122,107,.07);border-left:2px solid var(--accent);padding:4px 8px;border-radius:0 6px 6px 0;margin-bottom:6px;cursor:pointer}
.kb-cmt-quote:hover{background:rgba(31,122,107,.14)}
.kb-cmt-body{font-size:14px;line-height:1.6}
.kb-cmt-meta{display:flex;justify-content:space-between;align-items:center;margin-top:6px;font-size:12px;color:var(--soft)}
.kb-cmt-del{cursor:pointer;color:#e03131}
.kb-cmt-compose{padding:12px 14px;border-bottom:1px solid var(--line);background:var(--paper)}
.kb-cmt-compose textarea{width:100%;box-sizing:border-box;margin-top:8px;padding:9px 11px;border:1px solid var(--line2);border-radius:8px;background:var(--raised);color:var(--ink);font-family:inherit;font-size:14px;resize:vertical;outline:none}
.kb-cmt-compose textarea:focus{border-color:var(--accent)}
.kb-cmt-submit{margin-top:8px;width:100%;padding:9px;border:0;border-radius:8px;background:var(--accent);color:#fff;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}
.kb-cmt-flash{background:#ffe066;color:inherit;border-radius:3px;transition:background 1.5s}
/* ---- 划词高亮 + 工具条 ---- */
mark.kb-hl{color:inherit;border-radius:2px;padding:0 .5px;cursor:pointer;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:filter .15s}
mark.kb-hl:hover{filter:brightness(.94)}
.kb-sel-bar{position:absolute;z-index:96;display:flex;align-items:center;gap:7px;background:var(--paper);border:1px solid var(--line2);border-radius:999px;padding:6px 10px;box-shadow:0 6px 26px rgba(0,0,0,.20);animation:kbSelIn .12s ease-out}
@keyframes kbSelIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.kb-sel-sw{width:19px;height:19px;border-radius:50%;border:1px solid rgba(0,0,0,.14);cursor:pointer;padding:0;transition:transform .12s}
.kb-sel-sw:hover{transform:scale(1.18)}
.kb-sel-ci{width:22px;height:22px;border:none;background:none;padding:0;cursor:pointer;border-radius:50%}
.kb-sel-ci::-webkit-color-swatch-wrapper{padding:0}
.kb-sel-ci::-webkit-color-swatch{border:1px solid rgba(0,0,0,.18);border-radius:50%}
.kb-sel-cm,.kb-sel-del{border:none;background:var(--raised);border-radius:50%;width:25px;height:25px;cursor:pointer;font-size:13px;line-height:1;display:flex;align-items:center;justify-content:center}
.kb-sel-cm:hover,.kb-sel-del:hover{filter:brightness(.93)}
@media (pointer:coarse){
  .kb-sel-bar{gap:11px;padding:9px 13px}
  .kb-sel-sw{width:26px;height:26px}
  .kb-sel-ci{width:30px;height:30px}
  .kb-sel-cm,.kb-sel-del{width:34px;height:34px;font-size:16px}
}
/* P3 管理员编辑 */
.kb-admin-bar{position:fixed;left:18px;bottom:18px;z-index:44;display:flex;gap:8px}
.kb-admin-btn{background:var(--ink);color:var(--paper);border:0;border-radius:999px;padding:8px 14px;font-size:13px;font-family:inherit;cursor:pointer;box-shadow:var(--shadow)}
.kb-admin-btn:hover{filter:brightness(1.15)}
.kb-edit-mask{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:20px}
.kb-edit-box{width:min(900px,96vw);height:86vh;background:var(--raised);border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.kb-edit-head{display:flex;justify-content:space-between;align-items:center;padding:13px 18px;border-bottom:1px solid var(--line);font-size:14px;font-weight:600}
.kb-edit-x{cursor:pointer;color:var(--soft);font-size:22px}
.kb-edit-ta{flex:1;border:0;padding:16px 20px;background:var(--paper);color:var(--ink);font-family:ui-monospace,Consolas,monospace;font-size:13.5px;line-height:1.7;resize:none;outline:none}
.kb-edit-foot{display:flex;align-items:center;gap:12px;padding:11px 18px;border-top:1px solid var(--line)}
.kb-edit-status{flex:1;font-size:12.5px;color:var(--soft)}
.kb-edit-cancel{background:none;border:1px solid var(--line2);color:var(--ink);border-radius:8px;padding:8px 16px;cursor:pointer;font-family:inherit}
.kb-edit-save{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:8px 18px;cursor:pointer;font-weight:600;font-family:inherit}
/* P4/P5 投稿审核 */
.kb-contrib{margin-top:0}
.kb-form{padding:18px 22px;overflow:auto;display:flex;flex-direction:column}
.kb-f-l{font-size:12px;color:var(--soft);margin:12px 0 5px}
.kb-f-in{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--line2);border-radius:8px;background:var(--paper);color:var(--ink);font-family:inherit;font-size:14px;outline:none}
.kb-f-in:focus{border-color:var(--accent)}
.kb-rev-bar{display:flex;gap:8px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--line)}
.kb-rev-list{flex:1;overflow:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}
.kb-sub-item{border:1px solid var(--line);border-radius:11px;padding:13px 15px;background:var(--paper)}
.kb-sub-t{font-size:15px;font-weight:700}
.kb-sub-score{font-size:11px;font-weight:400;color:#fff;background:var(--accent);border-radius:999px;padding:1px 8px;margin-left:6px}
.kb-sub-meta{font-size:12px;color:var(--soft);margin:4px 0 8px}
.kb-sub-prev{font-size:13px;color:var(--soft);line-height:1.6;max-height:90px;overflow:hidden;background:var(--raised);padding:8px 10px;border-radius:7px;white-space:pre-wrap}
.kb-sub-btns{display:flex;gap:8px;margin-top:10px;align-items:center;font-size:13px}
.kb-sub-btns a{color:var(--accent)}
/* 管理员文件上传 */
.kb-up-modes{display:flex;flex-direction:column;gap:8px;margin:4px 0}
.kb-up-mode{display:flex;align-items:center;gap:7px;font-size:13.5px;color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:9px 12px;cursor:pointer}
.kb-up-mode:hover{background:var(--line)}
.kb-up-mode b{color:var(--accent)}
.kb-up-note{margin-top:8px;font-size:12px;color:var(--faint);line-height:1.5}
/* #5 AI 新闻 — 主从两栏(目录 + 详情) */
.kb-news-layout{display:flex;height:100vh}
/* 左:新闻目录 */
.kb-news-dir{width:340px;flex-shrink:0;border-right:1px solid var(--line);display:flex;flex-direction:column;background:var(--sidebar)}
.kb-news-dir-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:20px 18px 6px;font-size:17px;font-weight:800;color:var(--ink)}
.kb-news-refresh{background:none;border:1px solid var(--line2);color:var(--accent);border-radius:7px;padding:4px 11px;font-size:12px;cursor:pointer;font-family:inherit;white-space:nowrap}
.kb-news-refresh:hover{background:var(--line)}
.kb-news-pick{display:flex;align-items:center;gap:8px;padding:2px 18px 6px}
.kb-news-pick-l{font-size:12px;color:var(--soft)}
.kb-news-dates{flex:1;font-family:inherit;font-size:13px;color:var(--ink);background:var(--paper);border:1px solid var(--line2);border-radius:7px;padding:5px 8px;cursor:pointer}
.kb-news-date{padding:0 18px 12px;font-size:11.5px;color:var(--faint);border-bottom:1px solid var(--line)}
.kb-news-list-pane{flex:1;overflow-y:auto;padding:8px}
.kb-news-row{padding:11px 12px;border-radius:9px;cursor:pointer;border:1px solid transparent;margin-bottom:2px}
.kb-news-row:hover{background:var(--line)}
.kb-news-row.on{background:var(--paper);border-color:var(--line2)}
.kb-news-row-t{font-size:14px;font-weight:600;color:var(--ink);line-height:1.45}
.kb-news-row.on .kb-news-row-t{color:var(--accent)}
.kb-news-row-src{font-size:11px;color:var(--faint);margin-top:5px}
.kb-news-rg{display:inline-block;border-radius:4px;padding:0 5px;font-size:10.5px;font-weight:600}
.kb-news-rg.cn{background:rgba(217,119,87,.14);color:var(--accent)}
.kb-news-rg.intl{background:rgba(90,140,200,.16);color:#5a8cc8}
/* 右:新闻详情 */
.kb-news-detail{flex:1;overflow-y:auto;padding:48px 56px 90px}
.kb-news-empty{color:var(--faint);font-size:14px;max-width:680px;margin:60px auto;text-align:center}
.kb-nd-head{max-width:760px;margin:0 auto}
.kb-nd-src{font-size:12px;color:var(--accent);font-weight:600;letter-spacing:.4px;text-transform:uppercase}
.kb-nd-title{font-size:30px;font-weight:800;line-height:1.3;margin:10px 0 6px}
.kb-nd-en{font-size:14px;color:var(--faint);font-style:italic;line-height:1.5}
.kb-nd-ai{max-width:760px;margin:24px auto 0;background:var(--line);border:1px solid var(--line2);border-left:3px solid var(--accent);border-radius:10px;padding:14px 18px}
.kb-nd-ai-tag{font-size:12px;font-weight:700;color:var(--accent);margin-bottom:6px}
.kb-nd-ai-body{font-size:15px;line-height:1.75;color:var(--ink)}
.kb-nd-body{max-width:760px;margin:24px auto 0;font-size:16px;line-height:1.9;color:var(--ink)}
.kb-nd-body p{margin:0 0 16px}
.kb-nd-body p:last-child{margin-bottom:0}
.kb-nd-hint{color:var(--faint);font-size:13px}
.kb-nd-bar{max-width:760px;margin:30px auto 0;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.kb-nd-open{background:var(--accent);color:#fff;border-radius:8px;padding:9px 20px;font-size:14px;font-weight:600}
.kb-nd-open:hover{opacity:.9}
.kb-nd-save{background:none;border:1px solid var(--line2);color:var(--accent);border-radius:8px;padding:8px 16px;font-size:13px;cursor:pointer;font-family:inherit}
.kb-nd-save:hover{background:var(--line)}
@media(max-width:760px){
  .kb-news-layout{flex-direction:column;height:auto;min-height:100vh}
  .kb-news-dir{width:auto;border-right:none;border-bottom:1px solid var(--line);max-height:42vh}
  .kb-news-dir-head{padding-top:64px}
  .kb-news-detail{padding:24px 18px 80px}
  .kb-nd-title{font-size:24px}
}
@media(max-width:760px){.kb-cmt-panel{width:100vw}}
.kb-cites{margin-top:10px;padding-top:9px;border-top:1px dashed var(--line2);display:flex;flex-direction:column;gap:5px}
.kb-cites-h{font-size:11px;color:var(--soft)}
.kb-cite{font-size:12.5px;color:var(--action);padding:3px 8px;border:1px solid var(--line2);border-radius:7px}
.kb-cite:hover{background:var(--line)}
.kb-ask-form{padding:12px 14px;border-top:1px solid var(--line)}
#kb-ask-input{width:100%;padding:11px 14px;border:1px solid var(--line2);border-radius:10px;background:var(--paper);color:var(--ink);font-size:14px;font-family:inherit;outline:none}
#kb-ask-input:focus{border-color:var(--action)}
.kb-typing{color:var(--soft);font-size:13px}
.kb-typing::after{content:'';animation:kbDots 1.2s steps(4,end) infinite}
@keyframes kbDots{0%{content:''}25%{content:'·'}50%{content:'··'}75%{content:'···'}100%{content:''}}
@media(max-width:760px){.kb-ask-panel{width:100vw}}

/* ===== 侧栏归组菜单(我的 / 管理)===== */
.kb-menus{display:flex;flex-direction:column;gap:8px}
.kb-menu-wrap{position:relative}
.kb-menu-btn{justify-content:space-between}
.kb-menu-btn.on{border-color:var(--accent);color:var(--accent)}
.kb-menu-pop{position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:60;background:var(--raised);border:1px solid var(--line2);
  border-radius:12px;box-shadow:var(--shadow);padding:6px;display:flex;flex-direction:column;gap:2px}
.kb-menu-item{display:block;width:100%;text-align:left;background:transparent;border:0;color:var(--ink);font-family:inherit;
  font-size:14px;padding:9px 11px;border-radius:8px;cursor:pointer}
.kb-menu-item:hover{background:var(--line)}

/* ===== 侧栏底部账号区 ===== */
.kb-side-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);opacity:0;transform:translateY(6px);transition:.4s}
.kb-side-foot.kb-show{opacity:1;transform:none}
.kb-side-foot .kb-user{width:100%;justify-content:flex-start;box-shadow:none;background:var(--raised);border:1px solid var(--line2);
  border-radius:12px;padding:8px 10px;gap:9px}
.kb-uname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:flex;align-items:center;gap:6px}
.kb-side-foot .kb-logout{flex-shrink:0}
.kb-side-foot .kb-login-btn{display:block;width:100%;text-align:center;box-shadow:none}

/* ===== 独立登录页 ===== */
.kb-login-body{margin:0;min-height:100vh;overflow:hidden;
  background:radial-gradient(1100px 560px at 50% -8%,rgba(47,158,132,.18),transparent 70%),var(--paper)}
.kb-login-bg{position:fixed;inset:0;z-index:0;width:100%;height:100%}
.kb-login-stage{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}
.kb-login-card{width:min(92vw,384px);background:var(--raised);border:1px solid var(--line2);border-radius:20px;padding:38px 34px;
  box-shadow:0 28px 80px rgba(60,50,30,.20)}
.kb-login-brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;color:var(--soft);margin-bottom:20px}
.kb-login-h{font-size:28px;font-weight:800;margin:0 0 6px}
.kb-login-sub{color:var(--soft);font-size:14px;margin:0 0 22px}
.kb-login-card label{display:block;font-size:12px;color:var(--soft);margin:14px 0 6px}
.kb-login-card input{width:100%;padding:12px 14px;border:1px solid var(--line2);border-radius:11px;background:var(--paper);color:var(--ink);
  font-size:15px;font-family:inherit;outline:none;transition:.15s}
.kb-login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(31,122,107,.14)}
.kb-login-err{color:#e03131;font-size:13px;min-height:18px;margin-top:12px;text-align:center}
.kb-login-submit{width:100%;margin-top:10px;padding:13px;border:0;border-radius:12px;background:linear-gradient(120deg,var(--accent),var(--accent2));
  color:#fff;font-size:15px;font-weight:700;letter-spacing:.08em;cursor:pointer;font-family:inherit;transition:.15s}
.kb-login-submit:hover{filter:brightness(1.06)}
.kb-login-submit:disabled{opacity:.7;cursor:default}
.kb-login-switch{text-align:center;margin-top:18px;font-size:13px;color:var(--soft)}
.kb-login-switch a{color:var(--accent);cursor:pointer;font-weight:600}
.kb-login-foot{margin-top:22px;color:var(--faint);font-size:12px}

/* ===== 开门 + 欢迎回来 ===== */
html.kb-pre-welcome::before{content:"";position:fixed;inset:0;z-index:9998;background:linear-gradient(135deg,var(--accent),var(--accent2))}
html.kb-welcoming{overflow:hidden}
.kb-welcome{position:fixed;inset:0;z-index:9999}
.kb-door{position:absolute;top:0;bottom:0;width:50.5%;background:linear-gradient(135deg,var(--accent),var(--accent2));will-change:transform}
.kb-door-l{left:0}
.kb-door-r{right:0;background:linear-gradient(225deg,var(--accent),var(--accent2))}
.kb-welcome-hero{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#fff;text-align:center;pointer-events:none;padding:20px}
.kb-welcome-logo{font-size:46px;margin-bottom:14px;opacity:.92}
.kb-welcome-hi{font-size:clamp(26px,5vw,38px);font-weight:800;letter-spacing:.02em;text-shadow:0 2px 18px rgba(0,0,0,.18)}
.kb-welcome-sub{margin-top:12px;font-size:15px;opacity:.86}
.kb-welcome.kb-css .kb-door{transition:transform .9s cubic-bezier(.7,0,.2,1)}
.kb-welcome.kb-css .kb-welcome-hero{transition:opacity .45s}
.kb-welcome.kb-css.kb-open .kb-door-l{transform:translateX(-100%)}
.kb-welcome.kb-css.kb-open .kb-door-r{transform:translateX(100%)}
.kb-welcome.kb-css.kb-open .kb-welcome-hero{opacity:0}

/* ===== 管理员访问审计面板 ===== */
.kb-act-wrap{flex:1;min-height:0;overflow-y:auto;padding:16px 18px}
.kb-act-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.kb-act-tab{background:var(--raised);border:1px solid var(--line2);color:var(--soft);border-radius:999px;padding:6px 14px;
  font-size:13px;font-family:inherit;cursor:pointer;transition:.15s}
.kb-act-tab.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.kb-act-body{min-height:120px}
.kb-act-hint{font-size:12px;color:var(--faint);margin-bottom:10px}
.kb-act-table{width:100%;border-collapse:collapse;font-size:13px}
.kb-act-table th{text-align:left;color:var(--soft);font-weight:600;padding:7px 8px;border-bottom:1px solid var(--line2)}
.kb-act-table td{padding:8px;border-bottom:1px solid var(--line);vertical-align:middle}
.kb-act-table td.ip{font-family:ui-monospace,Consolas,monospace;font-size:12px;color:var(--soft)}
.kb-act-row{cursor:pointer}
.kb-act-row:hover td{background:var(--line)}
.kb-act-back{background:transparent;border:0;color:var(--accent);font-family:inherit;font-size:13px;cursor:pointer;padding:4px 0;margin-bottom:8px}
.kb-act-h{font-weight:700;margin-bottom:10px}
.kb-act-list{display:flex;flex-direction:column;gap:2px}
.kb-act-vrow,.kb-act-lrow{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px}
.kb-act-vrow:hover{background:var(--line)}
.kb-act-vrow .vt,.kb-act-lrow .vt{font-size:14px;color:var(--ink)}
.kb-act-vrow .vm,.kb-act-lrow .vm{font-size:12px;color:var(--soft)}
.kb-act-lrow .vua{font-size:11px;color:var(--faint);font-family:ui-monospace,Consolas,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-tagi{font-style:normal;font-size:10px;background:var(--accent);color:#fff;border-radius:4px;padding:1px 5px;margin-left:4px}
@media(max-width:760px){.kb-act-table th:nth-child(2),.kb-act-table td:nth-child(2){display:none}}

/* ===== 邀请码面板 ===== */
.kb-invite-tip{font-size:13px;color:var(--soft);background:var(--paper);border:1px solid var(--line2);border-radius:10px;padding:10px 12px;margin-bottom:6px;line-height:1.6}
.kb-invite-row{display:flex;gap:8px;align-items:center}
.kb-invite-cur{flex:1;font-family:ui-monospace,Consolas,monospace;font-size:20px;font-weight:700;color:var(--accent);
  background:var(--paper);border:1px dashed var(--accent);border-radius:10px;padding:10px 14px;letter-spacing:.04em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-invite-copy,.kb-invite-gen{flex-shrink:0;background:var(--raised);border:1px solid var(--line2);color:var(--ink);
  border-radius:9px;padding:10px 13px;font-family:inherit;font-size:13px;cursor:pointer;transition:.15s}
.kb-invite-copy:hover,.kb-invite-gen:hover{border-color:var(--accent)}

/* ===== 成长动态:首页数字条 + Feed 面板 ===== */
.kb-growth{max-width:880px;margin:0 auto 18px;background:var(--raised);border:1px solid var(--line2);border-radius:14px;padding:14px 18px}
.kb-growth-stats{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:center;align-items:baseline}
.kb-gs{font-size:13px;color:var(--soft)}
.kb-gs b{font-size:19px;color:var(--ink);font-weight:800;margin-right:3px}
.kb-gs-up b{color:var(--ok)}
.kb-gs-warn b{color:var(--action)}
.kb-growth-say{text-align:center;color:var(--soft);font-size:13px;margin-top:9px}
.kb-growth-sum{margin-bottom:14px}
.kb-growth-sum-h{font-size:13px;color:var(--faint);margin-bottom:8px}
.kb-gchips{display:flex;flex-wrap:wrap;gap:8px}
.kb-gchip{font-size:13px;background:var(--paper);border:1px solid var(--line2);border-radius:999px;padding:5px 12px;color:var(--soft)}
.kb-gchip b{color:var(--ink);font-weight:700;margin-left:2px}
.kb-gchip.up{border-color:rgba(47,158,68,.45)}.kb-gchip.up b{color:var(--ok)}
.kb-gchip.warn{border-color:rgba(232,89,12,.4)}.kb-gchip.warn b{color:var(--action)}
.kb-growth-day{font-size:12px;color:var(--faint);letter-spacing:.08em;margin:12px 0 4px;padding-left:2px}
.kb-growth-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;border:1px solid transparent}
.kb-growth-row:hover{background:var(--line)}
.kb-growth-row.warn .kb-gtxt{color:var(--action)}
.kb-gicon{flex-shrink:0;width:22px;text-align:center;font-size:15px}
.kb-gtxt{font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-unseen-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--action);margin-left:6px;vertical-align:middle}
/* 首页「最近上架」磁贴(B) —— display:block 覆盖上面旧的 chip-row flex,让标题在磁贴上方 */
.kb-recent-row{display:block;margin-top:34px}
h2.kb-recent-h{display:block;font-size:16px;font-weight:700;color:var(--ink);margin:0 0 14px;letter-spacing:normal;text-align:left}
.kb-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media(max-width:1180px){.kb-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.kb-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.kb-tiles{grid-template-columns:1fr}}
.kb-tile{display:flex;flex-direction:column;gap:9px;padding:16px 17px;border:1px solid var(--line2);border-radius:14px;background:var(--raised);text-decoration:none;color:var(--ink);transition:transform .16s,border-color .16s,box-shadow .16s;min-height:128px}
.kb-tile:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 8px 22px rgba(0,0,0,.08)}
.kb-tile-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;color:var(--soft)}
.kb-tile-area{color:var(--accent);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.02em}
.kb-tile-date{font-variant-numeric:tabular-nums;flex-shrink:0;opacity:.85}
.kb-tile-t{font-size:14.5px;font-weight:700;line-height:1.4;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kb-tile-x{font-size:12.5px;line-height:1.6;color:var(--soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:auto}
/* 交互部件容器基线(部件自带内联样式,这里仅给个保底外距) */
.kb-widget{margin:18px 0}
/* Phase2 成长周报 + 待补缺口审核闸门 */
.kb-report{margin:14px 0;padding:14px 16px;border:1px solid var(--line2);border-radius:12px;background:var(--raised)}
.kb-report-empty{border-style:dashed}
.kb-report-h{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:8px}
.kb-report-d{font-size:12px;color:var(--soft);font-weight:400;margin-left:6px}
.kb-report-body{font-size:14px;line-height:1.78;color:var(--ink)}
.kb-report-body p{margin:0 0 8px}.kb-report-body p:last-child{margin:0}
.kb-report-regen{margin-top:10px;font:inherit;font-size:13px;cursor:pointer;padding:6px 14px;border-radius:8px;border:1px solid var(--line2);background:var(--paper);color:var(--accent);font-weight:600}
.kb-report-regen:hover{border-color:var(--accent)}
.kb-report-regen:disabled{opacity:.6;cursor:default}
.kb-flagged{margin:14px 0;padding:12px 14px;border:1px solid rgba(232,89,12,.28);border-radius:12px;background:rgba(232,89,12,.04)}
.kb-flagged-h{font-size:13px;font-weight:700;color:var(--action);margin-bottom:6px}
.kb-flagged-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--line2)}
.kb-flagged-row:first-of-type{border-top:none}
.kb-flagged-t{flex:1;font-size:13px;color:var(--ink);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-flagged-t:hover{color:var(--accent)}
.kb-flagged-area{font-size:11px;color:var(--soft);flex-shrink:0}
.kb-flag-btn{font:inherit;font-size:12px;cursor:pointer;padding:3px 11px;border-radius:7px;border:1px solid var(--line2);background:var(--paper);color:var(--soft);flex-shrink:0}
.kb-flag-btn:hover{border-color:var(--action);color:var(--action)}
.kb-flag-btn:disabled{opacity:.5}
/* Phase3 矛盾自查 */
.kb-contra{margin:14px 0;padding:12px 14px;border:1px solid var(--line2);border-radius:12px;background:var(--raised)}
.kb-contra-h{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:4px;flex-wrap:wrap}
.kb-contra-h .kb-report-regen{margin-top:0}
.kb-contra-item{padding:9px 11px;margin-top:8px;border:1px solid rgba(232,89,12,.25);border-radius:9px;background:rgba(232,89,12,.05)}
.kb-contra-why{font-size:13px;font-weight:600;color:var(--action);margin-bottom:5px}
.kb-contra-claim{font-size:12.5px;line-height:1.6;color:var(--ink);margin:2px 0}
.kb-contra-claim a{color:var(--accent);text-decoration:none;font-weight:600}
.kb-contra-claim a:hover{text-decoration:underline}
.kb-contra-item .kb-flag-btn{margin-top:7px}
/* 联网补卡(Phase4 缺口→联网补→回填) */
.kb-bf-form{display:flex;gap:8px;margin:10px 0 6px}
.kb-bf-input{flex:1;min-width:0;font:inherit;font-size:13px;padding:7px 11px;border:1px solid var(--line2);border-radius:8px;background:var(--paper);color:var(--ink)}
.kb-bf-input:focus{outline:none;border-color:var(--accent)}
.kb-bf-btn{border-color:var(--accent)!important;color:var(--accent)!important}
.kb-contra-toggle{font:inherit;font-size:13px;font-weight:700;color:var(--ink);background:none;border:none;cursor:pointer;padding:0;text-align:left}
.kb-contra-toggle:hover{color:var(--accent)}
.kb-contra-desc{font-size:12.5px;line-height:1.6;color:var(--soft);margin:2px 0 8px}
.kb-growth-row-act{cursor:pointer}
.kb-growth-row-act:hover{background:var(--line)}
/* 问渠「新对话」按钮 */
.kb-ask-new{font:inherit;font-size:12px;cursor:pointer;padding:3px 9px;border-radius:7px;border:1px solid var(--line2);background:var(--paper);color:var(--soft);margin-left:auto;margin-right:8px;white-space:nowrap}
.kb-ask-new:hover{border-color:var(--accent);color:var(--accent)}
/* 问渠内联引用:用「卡片名」显示,点击左侧弹预览(不跳转) */
.kb-cite-chip{color:var(--accent);font-weight:600;text-decoration:none;border-bottom:1px dashed var(--accent);cursor:pointer;padding:0 1px;border-radius:3px}
.kb-cite-chip:hover{background:var(--accent);color:var(--paper);border-bottom-color:transparent}
.kb-cite-web{border-bottom-style:dotted}
.kb-cite.kb-cite-web{font-style:normal}
/* 左侧卡片预览弹窗 */
.kb-cite-prev{position:fixed;left:24px;top:64px;width:min(560px,46vw);max-height:calc(100vh - 110px);z-index:64;background:var(--paper);border:1px solid var(--line2);border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.22);display:none;flex-direction:column;overflow:hidden}
.kb-cite-prev.show{display:flex}
.kb-cite-prev-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line2);background:var(--raised);flex-shrink:0}
.kb-cite-prev-t{flex:1;font-weight:700;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kb-cite-prev-open{font-size:12px;color:var(--accent);text-decoration:none;white-space:nowrap;flex-shrink:0}
.kb-cite-prev-open:hover{text-decoration:underline}
.kb-cite-prev-x{background:none;border:none;font-size:20px;line-height:1;cursor:pointer;color:var(--soft);flex-shrink:0}
.kb-cite-prev-x:hover{color:var(--ink)}
.kb-cite-prev-body{padding:14px 20px 22px;overflow:auto}
.kb-cite-prev-body img{max-width:100%}
@media(max-width:720px){.kb-cite-prev{left:8px;right:8px;width:auto;top:52px}}
