/* 知识底座（web/kbase.js，#/kbase）。2026-11-03。
 * 类名一律 kb- 前缀；颜色令牌只定义在 .kb 上，不写 :root。整页是一块深色画布，与外壳形成对比。
 * 强调色只用一个暖橙（--kb-hot）；算法四类用冷暖四色，仅出现在小圆点、药丸边线和评测条上。
 * 最小字号 13px（投影口径）。动效只有连接线虚线流动，减弱动效时静止。 */
.kb{--kb-bg:#0c1524;--kb-card:#121e33;--kb-card2:#16243c;--kb-rule:rgba(232,226,214,.12);--kb-rule2:rgba(232,226,214,.22);
  --kb-tx:#f0ebe0;--kb-mu:#b8bfcb;--kb-fa:#8f99aa;--kb-hot:#e8803f;--kb-hot2:#f4ad78;
  --kb-det:#6ea8e6;--kb-llm:#e8a24a;--kb-guard:#6fc4a4;--kb-human:#a99bd8;--kb-solver:#8d9bb0;
  position:relative;border-radius:16px;background:radial-gradient(900px 420px at 94% -4%,rgba(232,128,63,.12),transparent 60%),linear-gradient(180deg,#0f1a2d,#0b1320);
  color:var(--kb-tx);padding:26px 36px 48px;line-height:1.6;font-variant-numeric:tabular-nums;border:1px solid #0a111d;
  box-shadow:0 24px 60px -30px rgba(10,17,29,.6);text-wrap:pretty}
.kb *{box-sizing:border-box}
:where(.kb button){font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0;min-height:0;white-space:normal}
.kb .kb-num{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1}

/* 头部 */
.kb-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;margin-bottom:18px}
.kb-hero em,.kb-sec-h em{font:500 12px/1.4 var(--mono);letter-spacing:.16em;color:var(--kb-hot2);font-style:normal;display:block}
.kb-hero h1{margin:0;font-size:36px;line-height:1.2;font-weight:600;letter-spacing:.03em;color:var(--kb-tx)}
.kb-hero p{margin:2px 0 0;font-size:15px;color:var(--kb-mu)}
.kb-nav{display:flex;gap:6px;align-self:flex-end}
.kb-nav button{padding:7px 16px;border:1px solid var(--kb-rule2);border-radius:999px;font-size:14px;color:var(--kb-mu)}
.kb-nav button:hover{color:var(--kb-tx);border-color:var(--kb-hot)}

/* 章节 */
.kb-sec{margin-top:56px;scroll-margin-top:70px}
.kb-sec.kb-arch{margin-top:0}
.kb-sec-h{margin:0 0 22px;border-top:1px solid var(--kb-rule);padding-top:22px}
.kb-sec-h h2{margin:2px 0 6px;font-size:30px;font-weight:600;letter-spacing:.02em}
.kb-sec-h p{margin:0;color:var(--kb-mu);font-size:16px;max-width:76ch}

/* 总架构：自上而下 五层 */
.kb-stack{display:flex;flex-direction:column}
.kb-band{display:grid;grid-template-columns:200px minmax(0,1fr) 470px;gap:22px;align-items:center;min-height:84px;padding:8px 22px;
  background:linear-gradient(90deg,rgba(255,255,255,.035),rgba(255,255,255,.012));border:1px solid var(--kb-rule);border-radius:12px;position:relative}
.kb-band::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:2px;background:var(--kb-hot);opacity:.85}
.kb-band-head{display:flex;flex-direction:column;gap:1px;min-width:0}
.kb-no{font:500 13px/1.4 var(--mono);color:var(--kb-hot2);letter-spacing:.1em}
.kb-band-head b{font-size:21px;font-weight:600;letter-spacing:.02em}
.kb-band-head small{font-size:13px;color:var(--kb-fa);line-height:1.5}
.kb-band-body{min-width:0;display:flex;flex-direction:column;gap:8px}
.kb-lead{margin:0;font-size:14px;color:var(--kb-mu)}
.kb-chips{display:flex;flex-wrap:wrap;gap:6px}
.kb-chip{padding:1px 11px;border:1px solid var(--kb-rule2);border-radius:999px;font-size:13px;color:var(--kb-mu)}
.kb-chip.off{opacity:.5}
.kb-boxes{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:10px}
.kb-box{padding:7px 12px;border:1px solid var(--kb-rule);border-radius:9px;background:rgba(10,17,29,.45);display:flex;flex-direction:column;gap:2px;min-width:0}
.kb-box b{font-size:15px;font-weight:600}
.kb-box small{font-size:13px;color:var(--kb-fa);line-height:1.5}
.kb-band-nums{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 14px;justify-items:start;border-left:1px solid var(--kb-rule);padding-left:22px}
.kb-m b{display:block;font-size:28px;font-weight:300;line-height:1.15;color:var(--kb-tx);letter-spacing:-.01em}
.kb-m span{display:block;font-size:13px;color:var(--kb-fa);line-height:1.4;margin-top:2px}
.kb-m.off b{font-size:17px;color:var(--kb-fa);font-weight:500}

/* 三级本体 */
.kb-tiers{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1.25fr);gap:8px;align-items:stretch}
.kb-tier{padding:8px 12px;border-radius:9px;border:1px solid var(--kb-rule2);display:flex;flex-direction:column;gap:1px;min-width:0}
.kb-tier em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 12px/1.4 var(--mono);font-style:normal;color:var(--kb-fa);letter-spacing:.08em;grid-column:auto}
.kb-tier b{font-size:17px;font-weight:600;overflow-wrap:anywhere}
.kb-tier small{font-size:13px;color:var(--kb-mu);line-height:1.5}
.kb-tier.t1{background:rgba(232,128,63,.13);border-color:rgba(232,128,63,.45)}
.kb-tier.t2{background:rgba(232,128,63,.07);border-color:rgba(232,128,63,.3)}
.kb-tier.t3{background:rgba(10,17,29,.45)}
.kb-tier-arrow{align-self:center;font-style:normal;font-size:13px;color:var(--kb-hot2);white-space:nowrap}
.kb-tier-arrow::after{content:" →"}

/* 抽取层：阶段芯片 */
.kb-stagechips{display:flex;flex-wrap:wrap;gap:6px}
.kb-stagechip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border:1px solid var(--kb-rule2);border-radius:8px;font-size:13.5px;background:rgba(10,17,29,.4)}
.kb-stagechip:hover{border-color:var(--kb-hot);background:rgba(232,128,63,.1)}
.kb-stagechip em{font:500 12px var(--mono);font-style:normal;color:var(--kb-fa)}
.kb-dots{display:inline-flex;gap:3px}
.kb-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none;font-style:normal;background:var(--kb-det)}
.kb-dot.kb-k-llm{background:var(--kb-llm);border-radius:2px;transform:rotate(45deg) scale(.85)}
.kb-dot.kb-k-guard{background:var(--kb-guard);border-radius:2px;clip-path:polygon(50% 0,100% 100%,0 100%)}
.kb-dot.kb-k-human{background:var(--kb-human)}
.kb-dot.kb-k-solver{background:var(--kb-solver);border-radius:3px}
.kb-dot.kb-k-det{border-radius:2px}

/* 层间箭头 */
.kb-conn{display:flex;align-items:center;gap:14px;height:30px;padding-left:200px;margin-left:22px}
.kb-conn svg{flex:none}
.kb-conn-line{stroke:var(--kb-hot);stroke-width:1.5;fill:none;stroke-dasharray:3 4;animation:kb-flow 1.4s linear infinite}
.kb-conn-head{stroke:var(--kb-hot);stroke-width:1.6;fill:none;stroke-linecap:round;stroke-linejoin:round}
.kb-conn-t{font-size:13px;color:var(--kb-hot2);letter-spacing:.03em}
@keyframes kb-flow{to{stroke-dashoffset:-14}}
.kb-back{margin:10px 0 0;border:1px dashed rgba(232,128,63,.4);border-radius:10px;padding:8px 18px;text-align:center;font-size:14px;color:var(--kb-hot2)}
.kb-warn{margin-top:16px;padding:9px 16px;border:1px solid var(--kb-rule2);border-radius:9px;color:var(--kb-mu);font-size:14px}

/* 算法架构 */
.kb-algo-bar{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:14px}
.kb-sum{display:flex;gap:22px;font-size:15px;color:var(--kb-mu)}
.kb-sum span{display:inline-flex;align-items:center;gap:7px}
.kb-sum b{font-size:22px;font-weight:300;color:var(--kb-tx)}
.kb-filters{display:flex;gap:4px}
.kb-f{padding:5px 14px;border-radius:999px;border:1px solid var(--kb-rule);font-size:14px;color:var(--kb-mu)}
.kb-f.on{background:var(--kb-tx);color:#0c1524;border-color:var(--kb-tx)}
.kb-matrix{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:6px;align-items:start}
.kb-col{overflow:hidden;display:flex;flex-direction:column;gap:5px;border-top:2px solid var(--kb-rule2);padding-top:8px;min-width:0}
.kb-col.on{border-top-color:var(--kb-hot)}
.kb-colhead{display:flex;flex-direction:column;align-items:flex-start;gap:0;text-align:left;margin-bottom:3px}
.kb-colhead em{font:500 12px var(--mono);font-style:normal;color:var(--kb-hot2)}
.kb-colhead b{font-size:14px;font-weight:600;line-height:1.35}
.kb-col.on .kb-colhead b{color:var(--kb-hot2)}
.kb-pill{display:flex;align-items:flex-start;gap:6px;padding:6px 8px;border:1px solid var(--kb-rule);border-left:3px solid var(--kb-det);border-radius:6px;font-size:13px;line-height:1.4;text-align:left;background:rgba(255,255,255,.02)}
.kb-pill{min-width:0}.kb-pill span{min-width:0;overflow-wrap:anywhere}.kb-pill .kb-dot{margin-top:5px}
.kb-pill.kb-k-llm{border-left-color:var(--kb-llm)}.kb-pill.kb-k-guard{border-left-color:var(--kb-guard)}
.kb-pill.kb-k-human{border-left-color:var(--kb-human)}.kb-pill.kb-k-solver{border-left-color:var(--kb-solver)}
.kb-pill.dim{opacity:.28}
.kb-pill:hover{background:rgba(255,255,255,.07)}
.kb-detail{margin-top:20px;display:grid;grid-template-columns:minmax(300px,420px) minmax(0,1fr);gap:28px;padding:24px 26px;border:1px solid var(--kb-rule);border-radius:12px;background:var(--kb-card)}
.kb-d-l em{font:500 12px var(--mono);letter-spacing:.1em;color:var(--kb-hot2);font-style:normal}
.kb-d-l h3{margin:2px 0 4px;font-size:26px;font-weight:600}
.kb-d-line{margin:0 0 8px;color:var(--kb-hot2);font-size:15px}
.kb-d-l p{margin:0 0 10px;font-size:14.5px;color:var(--kb-mu);line-height:1.75}
.kb-io{display:grid;gap:8px;margin-top:12px}
.kb-io>div{border-top:1px solid var(--kb-rule);padding-top:7px}
.kb-io small{display:block;font-size:12px;letter-spacing:.1em;color:var(--kb-fa)}
.kb-io span{font-size:14px}
.kb-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;align-content:start}
.kb-card{padding:14px 16px;border:1px solid var(--kb-rule);border-top:2px solid var(--kb-det);border-radius:10px;background:var(--kb-card2);display:flex;flex-direction:column;gap:8px;min-width:0}
.kb-card.kb-k-llm{border-top-color:var(--kb-llm)}.kb-card.kb-k-guard{border-top-color:var(--kb-guard)}
.kb-card.kb-k-human{border-top-color:var(--kb-human)}.kb-card.kb-k-solver{border-top-color:var(--kb-solver)}
.kb-card-h{display:flex;align-items:center;gap:8px}
.kb-card-h b{font-size:16px;font-weight:600;flex:1;line-height:1.4}
.kb-tag{font-size:12px;color:var(--kb-fa);border:1px solid var(--kb-rule2);border-radius:999px;padding:0 9px;white-space:nowrap}
.kb-card p{margin:0;font-size:14px;color:var(--kb-mu);line-height:1.7}
.kb-card code{font:12.5px var(--mono);color:var(--kb-fa)}
.kb-eval{border-top:1px solid var(--kb-rule);padding-top:8px;display:flex;flex-direction:column;gap:5px}
.kb-eval>small{font-size:13px;color:var(--kb-fa)}
.kb-bar{display:grid;grid-template-columns:84px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:13px;color:var(--kb-mu)}
.kb-bar i{height:6px;background:rgba(232,226,214,.1);border-radius:3px;overflow:hidden;display:block}
.kb-bar u{display:block;height:100%;background:var(--kb-fa);border-radius:3px;text-decoration:none}
.kb-bar.new u{background:var(--kb-hot)}
.kb-bar b{font-size:15px;font-weight:500;color:var(--kb-tx)}
.kb-bar.new b{color:var(--kb-hot2)}
.kb-sig,.kb-evtxt{font-size:13px;color:var(--kb-mu)}
.kb-cav{font-size:13px;color:var(--kb-fa);line-height:1.6}
.kb-refs{display:flex;flex-wrap:wrap;gap:5px}
.kb-refs span{font-size:12px;padding:0 8px;border:1px solid var(--kb-rule2);border-radius:5px;color:var(--kb-fa)}
.kb-src{margin:12px 0 0;font-size:13px;color:var(--kb-fa)}
.kb-off{padding:20px;border:1px dashed var(--kb-rule2);border-radius:10px;color:var(--kb-fa)}

/* 知识资产墙 */
.kb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px}
.kb-asset{padding:18px 20px;border:1px solid var(--kb-rule);border-radius:12px;background:var(--kb-card);display:flex;flex-direction:column;gap:6px;min-width:0}
.kb-asset.off{opacity:.55}
.kb-asset-t b{font-size:16px;font-weight:600}
.kb-asset-big{display:flex;align-items:baseline;gap:8px;margin-top:2px}
.kb-asset-big b{font-size:44px;font-weight:300;line-height:1.1;letter-spacing:-.01em}
.kb-asset-big span{font-size:14px;color:var(--kb-fa)}
.kb-asset-big.off{font-size:22px;color:var(--kb-fa)}
.kb-asset-cap{font-size:13px;color:var(--kb-mu);line-height:1.6;display:block}
.kb-bar-t{font-size:12px;letter-spacing:.08em;color:var(--kb-fa);margin-top:8px}
.kb-strip{display:flex;height:8px;gap:2px;border-radius:4px;overflow:hidden}
.kb-seg{display:block;border-radius:1px;min-width:3px;font-style:normal;background:#6c86a8}
.kb-seg.s0{background:#e8803f}.kb-seg.s1{background:#c4916a}.kb-seg.s2{background:#8aa5c4}.kb-seg.s3{background:#6c86a8}.kb-seg.s4{background:#52698a}.kb-seg.s5{background:#41546f}.kb-seg.sx{background:#2f3e55}
.kb-legend{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:12.5px;color:var(--kb-mu)}
.kb-legend span{display:inline-flex;align-items:center;gap:5px}
.kb-legend .kb-seg{width:8px;height:8px;min-width:8px;border-radius:2px}
.kb-samples{margin-top:8px;border-top:1px solid var(--kb-rule);padding-top:8px}
.kb-samples summary{cursor:pointer;font-size:13px;color:var(--kb-hot2);list-style:none}
.kb-samples summary::-webkit-details-marker{display:none}
.kb-samples ul{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:3px;max-height:240px;overflow:auto}
.kb-samples li{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:var(--kb-mu)}
.kb-samples li small{color:var(--kb-fa);white-space:nowrap;font-size:12px}
.kb-corpus{margin-top:14px;padding:12px 20px;border:1px dashed var(--kb-rule2);border-radius:10px;display:flex;flex-wrap:wrap;gap:6px 26px;align-items:baseline;font-size:14px;color:var(--kb-mu)}
.kb-corpus>b{color:var(--kb-tx)}.kb-corpus small{font-size:12.5px;color:var(--kb-fa)}
.kb-corpus span b{color:var(--kb-tx);font-weight:500}

/* 项目闭环 */
.kb-loop-row{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr auto 1fr;gap:10px;align-items:stretch}
.kb-lnode{padding:18px 20px;border:1px solid var(--kb-rule);border-radius:12px;background:var(--kb-card);display:flex;flex-direction:column;gap:6px;min-width:0}
.kb-lnode b{font-size:22px;font-weight:600}
.kb-lnode p{margin:0;font-size:14px;color:var(--kb-mu);line-height:1.7;flex:1}
.kb-lstat{font-size:15px;color:var(--kb-hot2);border-top:1px solid var(--kb-rule);padding-top:8px}
.kb-lchev{align-self:center;font-style:normal;font-size:30px;color:var(--kb-hot);line-height:1}
.kb-return{position:relative;margin:0 10%;height:46px;border:1px solid rgba(232,128,63,.45);border-top:0;border-radius:0 0 14px 14px;display:flex;align-items:flex-end;justify-content:center}
.kb-return::before{content:"";position:absolute;left:-6px;top:-8px;border:6px solid transparent;border-bottom:8px solid var(--kb-hot);border-top:0}
.kb-return span{transform:translateY(50%);background:#0e182a;padding:0 14px;font-size:14px;color:var(--kb-hot2)}

@media (max-width:1500px){
  .kb{padding:26px 24px 40px}
  .kb-band{grid-template-columns:170px minmax(0,1fr) 320px;gap:16px}
  .kb-conn{padding-left:170px}
  .kb-matrix{grid-template-columns:repeat(6,minmax(0,1fr))}
  .kb-detail{grid-template-columns:1fr}
  .kb-loop-row{grid-template-columns:1fr 1fr;}
  .kb-lchev{display:none}
}
@media (prefers-reduced-motion:reduce){.kb-conn-line{animation:none}}

/* 外壳的全局 button 样式（底色、边框、字色、最小高度）会落到页内按钮上：这里用 .kb 前缀把它们压回去 */
.kb button.kb-pill{background:rgba(255,255,255,.03);color:var(--kb-tx);border:1px solid var(--kb-rule);border-left-width:3px;min-height:0;padding:6px 8px;box-shadow:none;border-radius:6px}
.kb button.kb-pill.kb-k-det{border-left-color:var(--kb-det)}.kb button.kb-pill.kb-k-llm{border-left-color:var(--kb-llm)}
.kb button.kb-pill.kb-k-guard{border-left-color:var(--kb-guard)}.kb button.kb-pill.kb-k-human{border-left-color:var(--kb-human)}
.kb button.kb-pill.kb-k-solver{border-left-color:var(--kb-solver)}
.kb button.kb-colhead{background:none;color:var(--kb-tx);border:0;padding:0;min-height:0;box-shadow:none;border-radius:0}
.kb button.kb-f{background:none;color:var(--kb-mu);border:1px solid var(--kb-rule2);padding:5px 14px;min-height:0;border-radius:999px;box-shadow:none}
.kb button.kb-f.on{background:var(--kb-tx);color:#0c1524;border-color:var(--kb-tx)}
.kb button.kb-stagechip{background:rgba(10,17,29,.4);color:var(--kb-tx);border:1px solid var(--kb-rule2);padding:3px 9px;min-height:0;border-radius:8px;box-shadow:none}
.kb .kb-nav button{background:none;color:var(--kb-mu);border:1px solid var(--kb-rule2);padding:7px 16px;min-height:0;border-radius:999px;box-shadow:none}
.kb .kb-nav button:hover,.kb button.kb-stagechip:hover{color:var(--kb-tx);border-color:var(--kb-hot)}
.kb button.kb-pill.dim{opacity:.28}
.kb button.kb-pill{white-space:normal;text-align:left;height:auto;line-height:1.4;align-items:flex-start;width:100%}
.kb button.kb-pill span{display:block;min-width:0;overflow-wrap:anywhere}
.kb .kb-card code{background:none;padding:0;border:0;color:var(--kb-fa)}

/* 展示版：层右侧改说明与能力标签；层间流转放大；四类方法分道；案例验证条 */
.kb-band-copy{border-left:1px solid var(--kb-rule);padding-left:22px;display:flex;flex-direction:column;gap:8px}
.kb-band-copy p{margin:0;font-size:14px;line-height:1.65;color:var(--kb-mu)}
.kb-tags{display:flex;flex-wrap:wrap;gap:5px}
.kb-tags span{font-size:12.5px;padding:0 10px;border:1px solid rgba(232,128,63,.45);border-radius:999px;color:var(--kb-hot2);background:rgba(232,128,63,.07)}
.kb-show .kb-band{grid-template-columns:200px minmax(0,1fr) 520px}
.kb-show .kb-conn{height:34px}
.kb-show .kb-conn-t{font-size:15px;font-weight:600;color:var(--kb-hot2)}
.kb-lanes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}
.kb-lane{border:1px solid var(--kb-rule);border-top:2px solid var(--kb-det);border-radius:10px;padding:12px 14px;background:var(--kb-card);display:flex;flex-direction:column;gap:8px;min-width:0}
.kb-lane.kb-k-llm{border-top-color:var(--kb-llm)}.kb-lane.kb-k-guard{border-top-color:var(--kb-guard)}.kb-lane.kb-k-human{border-top-color:var(--kb-human)}
.kb-lane-h{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center}
.kb-lane-h b{font-size:17px;font-weight:600}
.kb-lane-h small{grid-column:1/-1;font-size:13px;color:var(--kb-mu);line-height:1.55}
.kb-lane-s{display:flex;flex-wrap:wrap;gap:5px}
.kb-lane-s span{font-size:13px;padding:1px 9px;border:1px solid var(--kb-rule2);border-radius:6px;color:var(--kb-tx)}
.kb-lane-s em{font:500 12px var(--mono);font-style:normal;color:var(--kb-fa);margin-right:5px}
.kb-sum-note{font-size:14px;color:var(--kb-fa)}
.kb-asset-show{gap:10px;min-height:150px}
.kb-asset-desc{margin:0;font-size:14.5px;line-height:1.7;color:var(--kb-mu)}
.kb-verified{margin-top:24px;padding:18px 22px;border:1px solid rgba(232,128,63,.4);border-radius:12px;background:rgba(232,128,63,.06)}
.kb-verified b{font-size:19px}
.kb-verified p{margin:6px 0 10px;font-size:14.5px;color:var(--kb-mu);line-height:1.7;max-width:90ch}
@media (max-width:1500px){.kb-show .kb-band{grid-template-columns:170px minmax(0,1fr) 380px}.kb-lanes{grid-template-columns:1fr 1fr}}
