@charset "UTF-8";
/* =============================================================================
   Code date creation · 官网样式
   设计立意：让官网本身就是一台「CDC 程序」——深色工作区、等宽字、状态栏。
   ============================================================================= */

/* ── 0. 变量 ──────────────────────────────────────────────────────────── */
:root{
  --bg:#0b0f16;
  --bg-2:#0e141d;
  --panel:#131c28;
  --panel-2:#18232f;
  --panel-3:#1e2b3a;
  --line:#212f3d;
  --line-2:#2d4053;

  --tx:#e6edf7;
  --tx-2:#9bb0c9;
  --tx-3:#6b8199;
  --tx-4:#46596d;

  --accent:#3b82f6;
  --accent-2:#22d3ee;
  --accent-3:#8b5cf6;
  --ok:#3fb950;
  --warn:#d29922;
  --err:#f85149;

  --t-com:#5f7787;
  --t-str:#d9a06b;
  --t-num:#a5d6a7;
  --t-kw:#7aa2f7;

  --mono:"Cascadia Mono","Cascadia Code",Consolas,"JetBrains Mono","SFMono-Regular",Menlo,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei UI","Microsoft YaHei","PingFang SC",sans-serif;

  --r:8px;
  --r-lg:14px;
  /* 落地窗（炫酷效果包）新增 —— 移植自团队官网，原站没有这三个 */
  --r-pill:999px;
  --grad:linear-gradient(100deg,var(--accent),var(--accent-2) 55%,var(--accent-3));
  --ease-out-expo:cubic-bezier(.16,1,.3,1);
  --tb-h:46px;
  --sb-h:28px;
  --side-w:220px;
  --code-fs:12.5px;
  --code-lh:1.72;
}

/* ── 1. 基础 ──────────────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;}
html,body{height:100%;}
body{
  margin:0;
  background:var(--bg);
  color:var(--tx);
  font:15px/1.7 var(--sans);
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
}
h1,h2,h3,h4,p,ul,ol,figure{margin:0;padding:0;}
ul,ol{list-style:none;}
a{color:inherit;text-decoration:none;}
code,kbd,pre{font-family:var(--mono);}
img,svg{display:block;}
::selection{background:rgba(59,130,246,.32);}

/* 滚动条 —— 做成 IDE 那种细长条 */
.ws,.sidebar,.code-body,.tree,.doc-nav{scrollbar-width:thin;scrollbar-color:var(--line-2) transparent;}
.ws::-webkit-scrollbar,.sidebar::-webkit-scrollbar,.code-body::-webkit-scrollbar{width:10px;height:10px;}
.ws::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb,.code-body::-webkit-scrollbar-thumb{
  background:var(--line-2);border-radius:6px;border:3px solid var(--bg);
}
.ws::-webkit-scrollbar-thumb:hover,.sidebar::-webkit-scrollbar-thumb:hover{background:#3d5568;}
.ws::-webkit-scrollbar-track,.sidebar::-webkit-scrollbar-track{background:transparent;}

/* ── 2. 窗口骨架 ──────────────────────────────────────────────────────── */
.win{
  height:100vh;
  display:grid;
  grid-template-rows:var(--tb-h) minmax(0,1fr) var(--sb-h);
  background:var(--bg);
}
.win-body{
  display:grid;
  grid-template-columns:var(--side-w) minmax(0,1fr);
  min-height:0;
  border-top:1px solid var(--line);
}

/* ── 3. 标题栏 ────────────────────────────────────────────────────────── */
.titlebar{
  display:flex;align-items:center;gap:14px;
  padding:0 16px;
  background:linear-gradient(180deg,#101823,#0c131c);
  border-bottom:1px solid var(--line);
  position:relative;
}
.titlebar::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(59,130,246,.5),rgba(34,211,238,.35),transparent);
}
.dots{display:flex;gap:6px;flex:0 0 auto;}
.dots i{width:11px;height:11px;border-radius:50%;background:var(--line-2);}
.dots i:nth-child(1){background:#ff5f57;}
.dots i:nth-child(2){background:#febc2e;}
.dots i:nth-child(3){background:#28c840;}

.brand{display:flex;align-items:center;gap:9px;min-width:0;}
.brand-mark{
  display:grid;place-items:center;width:26px;height:26px;flex:0 0 auto;
  border-radius:7px;background:var(--panel-2);border:1px solid var(--line-2);color:var(--tx);
}
.brand-mark--lg{width:32px;height:32px;border-radius:9px;}
.brand-text{display:flex;flex-direction:column;line-height:1.15;min-width:0;}
.brand-text b{font:600 13.5px/1.2 var(--mono);letter-spacing:.2px;white-space:nowrap;}
.brand-text em{font-style:normal;font-size:10.5px;color:var(--tx-3);white-space:nowrap;}

.tb-tag{
  font:11px/1 var(--mono);color:var(--accent-2);
  padding:5px 9px;border-radius:999px;
  background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.22);
  white-space:nowrap;flex:0 0 auto;
}
.tb-links{margin-left:auto;display:flex;align-items:center;gap:6px;flex:0 0 auto;}
.tb-links a{
  font-size:12.5px;color:var(--tx-2);padding:6px 11px;border-radius:6px;
  border:1px solid transparent;transition:.16s;white-space:nowrap;
}
.tb-links a:hover{color:var(--tx);background:var(--panel-2);border-color:var(--line);}
.tb-links a.tb-dl{
  color:var(--tx);font-weight:600;
  background:linear-gradient(180deg,var(--accent),#2f6fd0);border-color:#4c8ae8;
}
.tb-links a.tb-dl:hover{filter:brightness(1.12);}

/* ── 4. 侧栏 ──────────────────────────────────────────────────────────── */
.sidebar{
  display:flex;flex-direction:column;gap:6px;
  padding:16px 10px 12px;
  background:var(--bg-2);
  border-right:1px solid var(--line);
  overflow-y:auto;
}
.side-cap{
  font:10.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--tx-4);padding:8px 10px 6px;
}
.snav{display:flex;flex-direction:column;gap:2px;}
.snav-i{
  display:flex;align-items:center;gap:9px;
  padding:8px 10px;border-radius:7px;
  color:var(--tx-2);font-size:13.5px;
  border:1px solid transparent;
  transition:.14s;
}
.snav-i:hover{background:var(--panel);color:var(--tx);border-color:var(--line);}
.snav-i.is-on{
  background:linear-gradient(90deg,rgba(59,130,246,.16),rgba(59,130,246,.03));
  border-color:rgba(59,130,246,.32);
  color:var(--tx);font-weight:600;
  box-shadow:inset 2px 0 0 var(--accent);
}
.snav-ic{
  width:20px;flex:0 0 auto;text-align:center;
  font-family:var(--mono);font-size:13px;color:var(--tx-3);
}
.snav-i.is-on .snav-ic{color:var(--accent-2);}
.snav-tx{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.snav--sm .snav-i{font-size:12.5px;padding:6px 10px;}

.side-foot{
  margin-top:auto;padding:12px 10px 4px;
  border-top:1px solid var(--line);
  display:flex;flex-direction:column;gap:8px;
}
.side-ver{display:flex;align-items:baseline;justify-content:space-between;}
.side-ver span{font-size:11px;color:var(--tx-4);}
.side-ver b{font:600 15px var(--mono);color:var(--accent-2);}
.side-note{font-size:11px;color:var(--tx-4);text-align:center;}

/* ── 5. 按钮 ──────────────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 16px;border-radius:7px;
  font-size:13.5px;font-weight:600;
  border:1px solid var(--line-2);background:var(--panel-2);color:var(--tx);
  cursor:pointer;transition:.16s;white-space:nowrap;
}
.btn:hover{background:var(--panel-3);border-color:#3d566d;transform:translateY(-1px);}
.btn--fill{
  background:linear-gradient(180deg,var(--accent),#2f6fd0);
  border-color:#4c8ae8;color:#fff;
  box-shadow:0 6px 18px -8px rgba(59,130,246,.9);
}
.btn--fill:hover{filter:brightness(1.1);}
.btn--ghost{background:transparent;}
.btn--block{width:100%;}
.btn--sm{padding:6px 12px;font-size:12.5px;}

/* ── 6. 内容区与区块 ──────────────────────────────────────────────────── */
.ws{overflow-y:auto;background:var(--bg);}
.sec{padding:60px 48px;}
.sec--tint{background:var(--bg-2);border-block:1px solid var(--line);}
.sec-in{max-width:1080px;margin:0 auto;}
.sec-cap{
  font:11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;
  color:var(--accent-2);display:flex;align-items:center;gap:9px;margin-bottom:12px;
}
.sec-cap::before{content:"";width:18px;height:1px;background:var(--accent-2);opacity:.6;}
.sec-t{font:600 clamp(22px,2.6vw,31px)/1.28 var(--sans);letter-spacing:-.2px;}
.sec-d{color:var(--tx-2);margin-top:10px;max-width:720px;font-size:14.5px;}

/* ── 7. Hero ──────────────────────────────────────────────────────────── */
.hero{position:relative;padding:56px 48px 52px;overflow:hidden;}
.hero::before{
  content:"";position:absolute;inset:-40% 20% 40% -10%;pointer-events:none;
  background:radial-gradient(60% 60% at 30% 40%,rgba(59,130,246,.16),transparent 70%),
             radial-gradient(50% 50% at 80% 20%,rgba(34,211,238,.1),transparent 72%);
  filter:blur(10px);
}
.hero-grid{
  position:relative;max-width:1180px;margin:0 auto;
  display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);
  gap:44px;align-items:center;
}
.ver-badge{
  display:inline-flex;align-items:center;gap:9px;margin-bottom:20px;
  padding:6px 13px 6px 7px;border-radius:999px;
  background:var(--panel);border:1px solid var(--line-2);
  font:11.5px var(--mono);color:var(--tx-2);
}
.ver-badge b{
  background:rgba(34,211,238,.14);color:var(--accent-2);
  padding:2px 8px;border-radius:999px;font-weight:600;
}
.hero-h{
  font:600 clamp(30px,4vw,48px)/1.14 var(--sans);
  letter-spacing:-1px;margin-bottom:18px;
}
.hero-h .g{
  background:linear-gradient(100deg,var(--accent),var(--accent-2) 55%,var(--accent-3));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.hero-h .mono{font-family:var(--mono);font-weight:500;}
.hero-lead{color:var(--tx-2);font-size:15px;max-width:520px;margin-bottom:26px;}
.hero-acts{display:flex;gap:11px;flex-wrap:wrap;margin-bottom:26px;}
.hero-meta{display:flex;gap:18px;flex-wrap:wrap;font:12px var(--mono);color:var(--tx-4);}
.hero-meta span{display:flex;align-items:center;gap:6px;}
.hero-meta i{width:5px;height:5px;border-radius:50%;background:var(--ok);flex:0 0 auto;}

/* ── 8. 伪程序界面（Hero 右侧） ───────────────────────────────────────── */
.mock{
  border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:var(--panel);overflow:hidden;
  box-shadow:0 30px 70px -32px rgba(0,0,0,.95),0 0 0 1px rgba(255,255,255,.02) inset;
}
.mock-bar{
  display:flex;align-items:center;gap:10px;padding:9px 13px;
  background:linear-gradient(180deg,#18232f,#131c28);
  border-bottom:1px solid var(--line);
}
.mock-bar .dots i{width:9px;height:9px;}
.mock-title{font:12px var(--mono);color:var(--tx-2);}
.mock-ver{
  margin-left:auto;font:10.5px var(--mono);color:var(--accent-2);
  padding:2px 8px;border-radius:999px;background:rgba(34,211,238,.1);
}
.mock-body{display:grid;grid-template-columns:190px minmax(0,1fr);min-height:314px;}
.mock-pane{
  padding:12px;border-right:1px solid var(--line);background:var(--bg-2);
  display:flex;flex-direction:column;gap:10px;
}
.mock-tabs{display:flex;gap:3px;background:var(--panel);padding:3px;border-radius:6px;border:1px solid var(--line);}
.mock-tabs b{
  flex:1;text-align:center;font:11px var(--mono);font-weight:500;color:var(--tx-3);
  padding:3px 0;border-radius:4px;
}
.mock-tabs b.on{background:var(--accent);color:#fff;}
.mock-fields{display:flex;flex-direction:column;gap:8px;}
.mock-fields label{display:flex;flex-direction:column;gap:3px;font-size:10.5px;color:var(--tx-4);}
.mock-fields span{
  font:11px var(--mono);color:var(--tx-2);
  background:var(--panel);border:1px solid var(--line);border-radius:5px;
  padding:5px 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.mock-run{
  margin-top:auto;font:600 12px var(--mono);
  background:linear-gradient(180deg,var(--accent),#2f6fd0);color:#fff;
  border:0;border-radius:6px;padding:8px;cursor:default;
}
.mock-main{display:flex;flex-direction:column;min-width:0;}
.mock-editor{flex:0 0 auto;background:#0a0e15;border-bottom:1px solid var(--line);overflow:hidden;}
.mock-editor pre{
  margin:0;padding:11px 14px;font:var(--code-fs)/var(--code-lh) var(--mono);
  color:var(--tx-2);white-space:pre;overflow-x:auto;
}
.mock-console{
  flex:1 1 auto;min-height:118px;padding:10px 14px;
  background:#090d13;font:11.5px/1.85 var(--mono);
  display:flex;flex-direction:column;justify-content:flex-end;gap:1px;overflow:hidden;
}
.con-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tx-2);opacity:0;animation:conIn .26s ease forwards;}
@keyframes conIn{from{opacity:0;transform:translateY(3px);}to{opacity:1;transform:none;}}
.con-line.cmd{color:var(--tx);}
.con-line.cmd::before{content:"$ ";color:var(--accent-2);}
.con-line.dim{color:var(--tx-4);}
.con-line.info{color:var(--accent);}
.con-line.ok{color:var(--ok);}
.con-line.ok::before{content:"✓ ";}

/* ── 9. 数据条 ────────────────────────────────────────────────────────── */
.stat-row{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:1px;background:var(--line);
  border-block:1px solid var(--line);
}
.stat{background:var(--bg-2);padding:20px 24px;display:flex;flex-direction:column;gap:3px;}
.stat-v{font:600 25px/1.1 var(--mono);color:var(--tx);}
.stat-v u{text-decoration:none;font-size:13px;color:var(--tx-3);margin-left:3px;}
.stat-k{font-size:11.5px;color:var(--tx-4);font-family:var(--mono);}

/* ── 10. 功能模块 ─────────────────────────────────────────────────────── */
.feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(326px,1fr));gap:16px;margin-top:36px;}
.feat{
  position:relative;padding:20px 20px 18px;border-radius:var(--r);
  background:var(--panel);border:1px solid var(--line);
  transition:.2s;overflow:hidden;
}
.feat::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;
  background:linear-gradient(180deg,var(--accent),var(--accent-2));
  opacity:0;transition:.2s;
}
.feat:hover{border-color:var(--line-2);background:var(--panel-2);transform:translateY(-2px);}
.feat:hover::before{opacity:1;}
.feat-top{display:flex;align-items:center;gap:9px;margin-bottom:11px;}
.feat-file{
  font:11.5px var(--mono);color:var(--accent-2);
  background:rgba(34,211,238,.07);padding:3px 8px;border-radius:5px;
  border:1px solid rgba(34,211,238,.16);
}
.feat-tag{
  margin-left:auto;font:10.5px var(--mono);color:var(--tx-4);
  border:1px solid var(--line-2);padding:2px 7px;border-radius:999px;
}
.feat h3{font-size:16px;font-weight:600;margin-bottom:8px;}
.feat p{color:var(--tx-2);font-size:13.5px;}
.feat-list{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px;}
.feat-list li{
  font:11px var(--mono);color:var(--tx-3);
  background:var(--bg-2);border:1px solid var(--line);border-radius:5px;padding:3px 8px;
}

/* ── 11. 工作流（终端） ───────────────────────────────────────────────── */
.flow{
  margin-top:34px;border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:#090d13;overflow:hidden;
}
.flow-bar{
  display:flex;align-items:center;gap:9px;padding:9px 14px;
  background:var(--panel);border-bottom:1px solid var(--line);
}
.flow-bar span{font:11.5px var(--mono);color:var(--tx-3);}
.flow-body{padding:6px 0;}
.flow-i{display:grid;grid-template-columns:52px minmax(0,1fr);gap:0;padding:12px 18px;border-bottom:1px solid rgba(33,47,61,.5);}
.flow-i:last-child{border-bottom:0;}
.flow-n{font:600 12px var(--mono);color:var(--tx-4);padding-top:2px;}
.flow-cmd{font:12.5px var(--mono);color:var(--ok);margin-bottom:5px;display:flex;align-items:center;gap:8px;}
.flow-cmd::before{content:"$";color:var(--accent-2);}
.flow-t{font-size:14.5px;font-weight:600;margin-bottom:4px;}
.flow-d{color:var(--tx-2);font-size:13.5px;}

/* ── 12. 标签页（四种模式） ───────────────────────────────────────────── */
.tabs{display:flex;gap:4px;margin-top:34px;border-bottom:1px solid var(--line);overflow-x:auto;}
.tab{
  display:flex;align-items:center;gap:8px;
  padding:11px 17px;font-size:13.5px;color:var(--tx-3);
  border:1px solid transparent;border-bottom:0;border-radius:8px 8px 0 0;
  background:transparent;cursor:pointer;white-space:nowrap;transition:.16s;
  font-family:inherit;
}
.tab:hover{color:var(--tx-2);background:var(--panel);}
.tab.is-on{
  color:var(--tx);font-weight:600;
  background:var(--panel);border-color:var(--line);
  box-shadow:inset 0 2px 0 var(--accent);
  position:relative;top:1px;
}
.tab-ic{font-size:14px;}
.tab-panel{display:none;padding:26px 2px 4px;}
.tab-panel.is-on{display:block;animation:fadeUp .3s ease;}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.tab-panel p{color:var(--tx-2);font-size:14px;max-width:760px;}
.mode-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:9px;margin-top:20px;}
.mode-list li{
  display:flex;align-items:flex-start;gap:10px;
  padding:11px 14px;border-radius:var(--r);
  background:var(--panel);border:1px solid var(--line);
  font-size:13.5px;color:var(--tx-2);
}
.mode-list li::before{
  content:"›";color:var(--accent-2);font-family:var(--mono);
  font-weight:700;flex:0 0 auto;
}

/* ── 13. 技术内幕入口 ─────────────────────────────────────────────────── */
.entry{
  margin-top:36px;border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:linear-gradient(135deg,var(--panel),var(--bg-2));
  padding:30px 32px;display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;
  position:relative;overflow:hidden;
}
.entry::after{
  content:"</>";position:absolute;right:26px;bottom:-16px;
  font:700 84px/1 var(--mono);color:rgba(59,130,246,.07);pointer-events:none;
}
.entry-t{font-size:19px;font-weight:600;margin-bottom:8px;}
.entry-d{color:var(--tx-2);font-size:13.5px;max-width:660px;}
.entry-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:15px;}
.entry-chips span{
  font:11px var(--mono);color:var(--tx-3);
  border:1px dashed var(--line-2);border-radius:999px;padding:3px 10px;
}

/* ── 13.5 幻想增强 DLL（v8.0.0） ──────────────────────────────────────── */
.fx-bar{
  margin-top:30px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 14px;border-radius:var(--r) var(--r) 0 0;
  background:var(--panel);border:1px solid var(--line);border-bottom:0;
}
.fx-bar>span{font:11.5px var(--mono);color:var(--tx-2);}
.fx-bar-tag{
  margin-left:auto;font:10.5px var(--mono);color:var(--warn);
  border:1px solid rgba(210,153,34,.3);background:rgba(210,153,34,.08);
  padding:2px 9px;border-radius:999px;
}
.fx-points{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:9px;
  padding:16px;border:1px solid var(--line);border-top:0;background:var(--bg-2);
}
.fx-points li{
  display:flex;align-items:flex-start;gap:9px;
  font-size:13.5px;color:var(--tx-2);
}
.fx-points li::before{
  content:"✓";font-family:var(--mono);font-weight:700;
  color:var(--ok);flex:0 0 auto;line-height:1.5;
}
.fx-kinds{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px;}
.fx-kinds span{
  display:inline-flex;align-items:center;gap:6px;
  font:11px var(--mono);color:var(--tx-3);
  border:1px dashed var(--line-2);border-radius:999px;padding:3px 10px;
}
.fx-kinds b{font-weight:400;color:var(--accent-2);}
.fx-kinds u{text-decoration:none;color:var(--tx-4);}
.fx-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));
  gap:12px;margin-top:16px;
}
.fx{
  position:relative;padding:15px 16px 14px;border-radius:var(--r);
  background:var(--panel);border:1px solid var(--line);
  transition:.2s;overflow:hidden;
}
.fx::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;
  background:linear-gradient(180deg,var(--accent-3),var(--accent-2));
  opacity:0;transition:.2s;
}
.fx:hover{border-color:var(--line-2);background:var(--panel-2);transform:translateY(-2px);}
.fx:hover::before{opacity:1;}
.fx-top{display:flex;align-items:center;gap:9px;margin-bottom:9px;}
.fx-no{font:11.5px var(--mono);color:var(--accent-2);}
.fx-kind{
  margin-left:auto;font:10.5px var(--mono);color:var(--tx-4);
  border:1px solid var(--line-2);padding:2px 7px;border-radius:999px;
}
.fx h3{font-size:14px;font-weight:600;margin-bottom:6px;}
.fx p{color:var(--tx-3);font-size:12.5px;line-height:1.6;}
.fx-note{
  margin-top:16px;font-size:13px;color:var(--tx-3);line-height:1.7;
  border-left:2px solid var(--line-2);padding-left:12px;
}
.fx-note code{
  font:12px var(--mono);color:var(--accent-2);
  background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:1px 5px;
}

/* ── 14. 版本历史（git log 样式） ─────────────────────────────────────── */
.gitlog{margin-top:34px;position:relative;padding-left:24px;}
.gitlog::before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:var(--line);}
.git-i{position:relative;padding:0 0 26px 22px;}
.git-i::before{
  content:"";position:absolute;left:-24px;top:7px;width:12px;height:12px;border-radius:50%;
  background:var(--bg);border:2px solid var(--line-2);
}
.git-i.is-latest::before{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 4px rgba(59,130,246,.16);}
.git-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.git-v{font:600 15px var(--mono);color:var(--tx);}
.git-i.is-latest .git-v{color:var(--accent-2);}
.git-tag{
  font:10.5px var(--mono);color:var(--accent-3);
  border:1px solid rgba(139,92,246,.3);background:rgba(139,92,246,.08);
  padding:2px 8px;border-radius:999px;
}
.git-head{font:10.5px var(--mono);color:var(--ok);}
.git-date{font:11px var(--mono);color:var(--tx-4);margin-left:auto;}
.git-sum{color:var(--tx-2);font-size:13.5px;margin-bottom:9px;}
.git-changes{display:flex;flex-direction:column;gap:5px;}
.git-changes li{
  font-size:13px;color:var(--tx-3);padding-left:16px;position:relative;
}
.git-changes li::before{
  content:"+";position:absolute;left:0;font-family:var(--mono);color:var(--ok);font-weight:700;
}

/* ── 15. 下载块 ───────────────────────────────────────────────────────── */
.dl-box{
  margin-top:34px;border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:var(--panel);padding:28px;display:grid;grid-template-columns:1fr auto;gap:28px;align-items:center;
}
.dl-name{font:600 19px var(--mono);color:var(--tx);margin-bottom:9px;word-break:break-all;}
.dl-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;}
.dl-meta span{
  font:11.5px var(--mono);color:var(--tx-3);
  background:var(--bg-2);border:1px solid var(--line);border-radius:5px;padding:3px 9px;
}
.dl-note{color:var(--tx-3);font-size:13px;}
.dl-btn{font-size:15px;padding:13px 26px;}

/* ── 15.5 节点测速面板（v8.0.0） ─────────────────────────────────────── */
.sp-panel{
  margin-top:20px;border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:var(--panel);padding:22px 24px;
}
.sp-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.sp-head b{font:600 14px var(--mono);color:var(--tx);}
.sp-head span{color:var(--tx-3);font-size:12.5px;flex:1;min-width:160px;}
.sp-head .btn{font-size:13px;padding:8px 18px;}
.sp-head .btn:disabled{opacity:.55;cursor:progress;}
.sp-empty{color:var(--tx-3);font-size:13px;margin:0;padding:14px 0;}
.sp-note{color:var(--tx-3);font-size:12px;margin:12px 0 0;}
.sp-table{width:100%;border-collapse:collapse;font-size:13px;}
.sp-table th{
  text-align:left;font:11.5px var(--mono);color:var(--tx-3);font-weight:400;
  border-bottom:1px solid var(--line-2);padding:0 10px 8px;
}
.sp-table td{padding:9px 10px;border-bottom:1px solid var(--line);}
.sp-table tr.sp-best td{color:var(--tx);background:rgba(34,211,238,.06);}
.sp-table tr.sp-dead td{color:var(--tx-3);opacity:.55;}
.sp-num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;}
.sp-g{font:600 11.5px var(--mono);padding:2px 8px;border-radius:5px;}
.sp-g.g3{color:#4ade80;background:rgba(74,222,128,.12);}
.sp-g.g2{color:#22d3ee;background:rgba(34,211,238,.12);}
.sp-g.g1{color:#fbbf24;background:rgba(251,191,36,.12);}
.sp-g.g0{color:#f87171;background:rgba(248,113,113,.12);}
.sp-go{font-size:12px;padding:5px 14px;}

/* 未发布提示条 */
.sp-warn{border-color:rgba(251,191,36,.35);background:rgba(251,191,36,.07);}
.sp-warn b{color:#fbbf24;font:600 14px var(--mono);}
.sp-warn p{color:var(--tx-3);font-size:13px;margin:9px 0 0;line-height:1.75;}
.sp-warn a{color:var(--accent-2);text-decoration:none;}
.sp-warn a:hover{text-decoration:underline;}
@media (max-width:640px){
  .sp-panel{padding:16px;}
  .sp-table th:nth-child(3),.sp-table td:nth-child(3){display:none;}
}

/* ── 16. 表格 ─────────────────────────────────────────────────────────── */
.tbl-wrap{margin-top:26px;border:1px solid var(--line);border-radius:var(--r);overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:13.5px;}
thead th{
  text-align:left;padding:11px 15px;font:600 11.5px var(--mono);
  letter-spacing:.06em;text-transform:uppercase;color:var(--tx-3);
  background:var(--bg-2);border-bottom:1px solid var(--line);white-space:nowrap;
}
tbody td{padding:12px 15px;border-bottom:1px solid rgba(33,47,61,.6);color:var(--tx-2);vertical-align:top;}
tbody tr:last-child td{border-bottom:0;}
tbody tr:hover td{background:var(--panel);}
tbody td:first-child{color:var(--tx);white-space:nowrap;}
.td-v{font-family:var(--mono);color:var(--accent-2) !important;}
.td-pw{font-family:var(--mono);color:var(--warn) !important;}
.td-dim{color:var(--tx-4) !important;font-family:var(--mono);font-size:12px;}
.blk-tbl{width:100%;}
.hero-l,.hero-r{min-width:0;}

/* ── 17. 团队 ─────────────────────────────────────────────────────────── */
.team{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:13px;margin-top:32px;}
.team-i{
  display:flex;align-items:center;gap:12px;padding:14px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--panel);
  transition:.18s;
}
.team-i:hover{border-color:var(--line-2);background:var(--panel-2);transform:translateY(-2px);}
.team-i--static{cursor:default;}
.team-i--static:hover{transform:none;border-color:var(--line);background:var(--panel);}
.team-cta{margin-top:24px;}
.team-cta .btn{display:inline-flex;}
.team-av{
  width:38px;height:38px;flex:0 0 auto;border-radius:9px;
  display:grid;place-items:center;
  font:600 16px var(--mono);color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent-3));
}
.team-n{font-size:14px;font-weight:600;word-break:break-all;}
.team-r{font-size:11.5px;color:var(--tx-3);font-family:var(--mono);}

/* ── 18. FAQ ──────────────────────────────────────────────────────────── */
.faq{margin-top:32px;border-top:1px solid var(--line);}
.faq-i{border-bottom:1px solid var(--line);}
.faq-q{
  width:100%;display:flex;align-items:center;gap:14px;
  padding:17px 4px;background:transparent;border:0;cursor:pointer;
  color:var(--tx);font:600 14.5px/1.5 var(--sans);text-align:left;font-family:var(--sans);
}
.faq-q:hover{color:var(--accent-2);}
.faq-q i{
  margin-left:auto;flex:0 0 auto;font-style:normal;font-family:var(--mono);
  color:var(--tx-4);transition:.22s;font-size:15px;
}
.faq-i.is-open .faq-q i{transform:rotate(45deg);color:var(--accent-2);}
.faq-a{display:none;padding:0 4px 19px 30px;color:var(--tx-2);font-size:14px;max-width:860px;}
.faq-i.is-open .faq-a{display:block;animation:fadeUp .24s ease;}
.faq-q::before{
  content:"?";flex:0 0 auto;width:18px;height:18px;border-radius:50%;
  display:grid;place-items:center;font:700 11px var(--mono);
  color:var(--accent-2);background:rgba(34,211,238,.1);
}

/* ── 19. 提示条 / 提醒 ────────────────────────────────────────────────── */
.notes{margin-top:26px;display:flex;flex-direction:column;gap:8px;}
.note{
  display:flex;gap:12px;padding:12px 15px;border-radius:var(--r);
  background:var(--panel);border:1px solid var(--line);border-left:2px solid var(--warn);
  font-size:13.5px;color:var(--tx-2);
}
.note b{font:11.5px var(--mono);color:var(--warn);flex:0 0 auto;}

/* ── 20. CTA ──────────────────────────────────────────────────────────── */
.cta{
  margin-top:38px;padding:36px;border-radius:var(--r-lg);
  border:1px solid var(--line-2);
  background:linear-gradient(135deg,rgba(59,130,246,.14),rgba(139,92,246,.1) 60%,transparent);
  display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;
}
.cta-t{font-size:21px;font-weight:600;margin-bottom:8px;}
.cta-d{color:var(--tx-2);font-size:14px;}

/* ── 21. 页脚 ─────────────────────────────────────────────────────────── */
.foot{border-top:1px solid var(--line);background:var(--bg-2);padding:48px 48px 26px;}
.foot-grid{
  max-width:1080px;margin:0 auto;
  display:grid;grid-template-columns:minmax(0,1.6fr) repeat(3,minmax(0,1fr));gap:34px;
}
.foot-brand p{color:var(--tx-3);font-size:13px;margin-top:13px;max-width:330px;}
.foot-logo{display:flex;align-items:center;gap:11px;}
.foot-logo b{display:block;font-size:14.5px;}
.foot-logo em{font-style:normal;font-size:11.5px;color:var(--tx-4);}
.foot-col h4{
  font:600 11px var(--mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--tx-4);margin-bottom:13px;
}
.foot-col a,.foot-col span{display:block;font-size:13px;color:var(--tx-3);margin-bottom:7px;transition:.14s;}
.foot-col a:hover{color:var(--accent-2);}
.foot-mono{font-family:var(--mono) !important;font-size:12px !important;}
.foot-bar{
  max-width:1080px;margin:36px auto 0;padding-top:20px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  font-size:12px;color:var(--tx-4);
}
.foot-warn{color:var(--warn);opacity:.75;}

/* ── 22. 状态栏 ───────────────────────────────────────────────────────── */
.statusbar{
  display:flex;align-items:center;gap:0;
  padding:0 12px;font:11.5px var(--mono);color:var(--tx-3);
  background:linear-gradient(180deg,#121a25,#0d141d);
  border-top:1px solid var(--line);overflow:hidden;
}
.sb-i{padding:0 11px;white-space:nowrap;display:flex;align-items:center;gap:6px;height:100%;}
.sb-i + .sb-i{border-left:1px solid var(--line);}
.sb-ready{color:var(--ok);}
.sb-ready i{width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 6px var(--ok);}
.sb-grow{flex:1 1 auto;}
.sb-clock{color:var(--accent-2);}

/* ── 23. 回到顶部 ─────────────────────────────────────────────────────── */
.totop{
  position:fixed;right:22px;bottom:44px;z-index:60;
  width:38px;height:38px;border-radius:9px;
  border:1px solid var(--line-2);background:var(--panel);color:var(--tx-2);
  font:16px var(--mono);cursor:pointer;
  opacity:0;pointer-events:none;transform:translateY(8px);transition:.22s;
}
.totop.is-on{opacity:1;pointer-events:auto;transform:none;}
.totop:hover{background:var(--panel-3);color:var(--tx);border-color:var(--accent);}

/* ── 24. 技术内幕页 ───────────────────────────────────────────────────── */
.src-head{padding:52px 48px 40px;border-bottom:1px solid var(--line);background:var(--bg-2);}
.src-head .sec-in{max-width:1080px;}
.src-no{font:12px var(--mono);color:var(--accent-2);letter-spacing:.1em;margin-bottom:12px;}
.src-title{font:600 clamp(24px,3vw,36px)/1.24 var(--sans);letter-spacing:-.4px;margin-bottom:12px;}
.src-lead{color:var(--tx-2);font-size:15px;max-width:800px;}
.src-hint{margin-top:20px;display:flex;gap:8px;flex-wrap:wrap;}
.src-hint span{
  font:11px var(--mono);color:var(--tx-4);
  border:1px solid var(--line-2);border-radius:999px;padding:4px 11px;
}
.src-wrap{display:grid;grid-template-columns:264px minmax(0,1fr);align-items:start;}
.tree{
  position:sticky;top:0;max-height:calc(100vh - var(--tb-h) - var(--sb-h));
  overflow-y:auto;padding:22px 14px;
  border-right:1px solid var(--line);background:var(--bg-2);
}
.tree-cap{
  font:10.5px var(--mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--tx-4);padding:0 9px 9px;
}
.tree-g + .tree-g{margin-top:18px;}
.tree-g p{
  font:600 11.5px var(--mono);color:var(--tx-3);
  padding:5px 9px;display:flex;align-items:center;gap:7px;
}
.tree-g p::before{content:"▾";color:var(--tx-4);font-size:9px;}
.tree-i{
  display:flex;align-items:baseline;gap:9px;
  padding:6px 9px 6px 20px;border-radius:6px;
  font-size:13px;color:var(--tx-3);border-left:2px solid transparent;
  transition:.14s;
}
.tree-i:hover{background:var(--panel);color:var(--tx);}
.tree-i.is-on{
  background:rgba(59,130,246,.1);color:var(--tx);
  border-left-color:var(--accent);font-weight:600;
}
.tree-no{font:10.5px var(--mono);color:var(--tx-4);flex:0 0 auto;}
.tree-i.is-on .tree-no{color:var(--accent-2);}
.src-body{padding:40px 48px 70px;min-width:0;}
.src-art{max-width:840px;margin:0 auto;}

/* 正文块 */
.blk-p{color:var(--tx-2);font-size:14.5px;margin-bottom:16px;}
.blk-p strong,strong{color:var(--tx);font-weight:600;}
.blk-h{
  font:600 18px/1.4 var(--sans);color:var(--tx);
  margin:34px 0 14px;padding-left:13px;border-left:3px solid var(--accent);
}
.blk-h4{font:600 15px var(--sans);color:var(--tx);margin:24px 0 10px;}
.blk-ul,.blk-ol{margin:0 0 18px;display:flex;flex-direction:column;gap:8px;}
.blk-ul li,.blk-ol li{
  position:relative;padding-left:20px;color:var(--tx-2);font-size:14px;
}
.blk-ul li::before{
  content:"▸";position:absolute;left:2px;color:var(--accent-2);font-size:11px;top:1px;
}
.blk-ol{counter-reset:o;}
.blk-ol li{counter-increment:o;}
.blk-ol li::before{
  content:counter(o);position:absolute;left:0;top:2px;
  font:10.5px var(--mono);color:var(--accent-2);
}
.blk-note{
  margin:18px 0;padding:14px 17px;border-radius:var(--r);
  background:rgba(34,211,238,.05);border:1px solid rgba(34,211,238,.16);
  border-left:3px solid var(--accent-2);
  color:var(--tx-2);font-size:13.5px;
}
code{
  font-size:.9em;color:var(--accent-2);
  background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.14);
  border-radius:4px;padding:1px 5px;
}

/* ── 25. 代码块 ───────────────────────────────────────────────────────── */
.code{
  margin:18px 0;border:1px solid var(--line-2);border-radius:var(--r);
  background:#090d13;overflow:hidden;
}
.code figcaption{
  display:flex;align-items:center;gap:10px;padding:8px 14px;
  background:var(--panel);border-bottom:1px solid var(--line);
}
.code-lang{
  font:600 10.5px var(--mono);letter-spacing:.08em;
  color:var(--accent-2);background:rgba(34,211,238,.1);
  padding:2px 8px;border-radius:4px;
}
.code-n{margin-left:auto;font:10.5px var(--mono);color:var(--tx-4);}
.code-body{display:flex;overflow-x:auto;}
.code-nums{
  flex:0 0 auto;margin:0;padding:14px 11px;text-align:right;
  color:var(--tx-4);opacity:.65;border-right:1px solid var(--line);
  font:var(--code-fs)/var(--code-lh) var(--mono);user-select:none;
}
.code-nums span{display:block;}
.code-pre{
  flex:1 1 auto;margin:0;padding:14px 18px;
  font:var(--code-fs)/var(--code-lh) var(--mono);white-space:pre;
}
.code-pre code{background:none;border:0;padding:0;color:var(--tx-2);font-size:inherit;}
.t-c{font-style:italic;color:var(--t-com);}
.t-s{font-style:normal;color:var(--t-str);}
.t-n{font-style:normal;color:var(--t-num);}
.t-k{font-style:normal;color:var(--t-kw);font-weight:500;}

/* ── 26. 手册页 ───────────────────────────────────────────────────────── */
.doc-wrap{display:grid;grid-template-columns:236px minmax(0,1fr);align-items:start;}
.doc-nav{
  position:sticky;top:0;max-height:calc(100vh - var(--tb-h) - var(--sb-h));
  overflow-y:auto;padding:26px 14px;border-right:1px solid var(--line);background:var(--bg-2);
}
.doc-nav a{
  display:block;padding:6px 10px;border-radius:6px;font-size:13px;
  color:var(--tx-3);border-left:2px solid transparent;transition:.14s;
}
.doc-nav a:hover{background:var(--panel);color:var(--tx);}
.doc-nav a.is-on{background:rgba(59,130,246,.1);color:var(--tx);border-left-color:var(--accent);font-weight:600;}
.doc-nav .doc-cap{
  font:10.5px var(--mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--tx-4);padding:0 10px 9px;
}
.doc-body{padding:40px 48px 70px;min-width:0;}
.doc-art{max-width:840px;margin:0 auto;}
.doc-sec{padding-bottom:44px;margin-bottom:44px;border-bottom:1px solid var(--line);scroll-margin-top:20px;}
.doc-sec:last-child{border-bottom:0;margin-bottom:0;}
.doc-h{font:600 21px/1.35 var(--sans);margin-bottom:14px;display:flex;align-items:center;gap:12px;}
.doc-h em{
  font:600 11px var(--mono);font-style:normal;color:var(--accent-2);
  background:rgba(34,211,238,.1);border-radius:5px;padding:3px 8px;
}
.steps{margin:18px 0;display:flex;flex-direction:column;gap:10px;counter-reset:s;}
.steps li{
  counter-increment:s;position:relative;padding:13px 16px 13px 46px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  color:var(--tx-2);font-size:13.5px;
}
.steps li::before{
  content:counter(s);position:absolute;left:14px;top:12px;
  width:20px;height:20px;border-radius:6px;display:grid;place-items:center;
  font:600 11px var(--mono);color:var(--accent-2);
  background:rgba(34,211,238,.1);border:1px solid rgba(34,211,238,.2);
}
.kv{margin:16px 0;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;}
.kv-r{display:grid;grid-template-columns:118px 1fr;border-bottom:1px solid rgba(33,47,61,.6);}
.kv-r:last-child{border-bottom:0;}
.kv-r b{
  font:600 11.5px var(--mono);color:var(--tx-3);
  padding:12px 15px;background:var(--bg-2);border-right:1px solid var(--line);
}
.kv-r span{padding:12px 15px;font-size:13.5px;color:var(--tx-2);}

/* ── 27. 响应式 ───────────────────────────────────────────────────────── */
@media (max-width:1180px){
  .hero-grid{grid-template-columns:minmax(0,1fr);gap:34px;}
  .hero-lead{max-width:none;}
  .foot-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .src-wrap,.doc-wrap{grid-template-columns:224px minmax(0,1fr);}
}
@media (max-width:980px){
  .sec,.hero,.src-head,.src-body,.doc-body,.foot{padding-left:26px;padding-right:26px;}
  .src-wrap,.doc-wrap{grid-template-columns:minmax(0,1fr);}
  .tree,.doc-nav{
    position:sticky;top:0;max-height:none;border-right:0;
    border-bottom:1px solid var(--line);padding:12px 14px;
    display:flex;gap:8px;overflow-x:auto;white-space:nowrap;z-index:20;
  }
  .tree-cap,.tree-g p,.doc-nav .doc-cap{display:none;}
  .tree-g,.tree-g + .tree-g{margin:0;display:flex;gap:4px;}
  .tree-i,.doc-nav a{
    border-left:0;border-bottom:2px solid transparent;padding:7px 11px;flex:0 0 auto;
  }
  .tree-i.is-on,.doc-nav a.is-on{border-left:0;border-bottom-color:var(--accent);}
  .entry,.dl-box,.cta{grid-template-columns:minmax(0,1fr);}
  .entry::after{display:none;}
  .dl-btn{width:100%;}
}
@media (max-width:820px){
  :root{--side-w:auto;}
  body{overflow-y:auto;overflow-x:hidden;}
  .win{height:auto;min-height:100vh;max-width:100vw;grid-template-rows:auto auto auto;}
  .win-body{grid-template-columns:minmax(0,1fr);}
  .ws{overflow:visible;max-width:100vw;}
  /* 窄屏下 pre / 表格 / 伪界面会撑破容器，必须允许收缩，滚动交给块自己 */
  .mock,.mock-main,.mock-editor,.mock-console,.code,.code-body,.flow,.tbl-wrap,.src-art,.doc-art{
    min-width:0;max-width:100%;
  }
  .mock-editor pre{overflow-x:auto;}
  .snav--sm{display:none;}
  .sidebar{
    flex-direction:row;align-items:center;gap:8px;
    overflow-x:auto;padding:9px 12px;
    border-right:0;border-bottom:1px solid var(--line);
    position:sticky;top:var(--tb-h);z-index:40;
    background:rgba(14,20,29,.96);backdrop-filter:blur(8px);
  }
  .side-cap,.side-foot{display:none;}
  .snav,.snav--sm{flex-direction:row;gap:4px;}
  .snav-i{padding:6px 11px;font-size:12.5px;border:1px solid var(--line);}
  .snav-i.is-on{box-shadow:none;}
  .snav-ic{width:auto;}
  .statusbar{position:sticky;bottom:0;z-index:40;}
  .tb-links a:not(.tb-dl){display:none;}
  .brand-text em{display:none;}
  .mock-body{grid-template-columns:minmax(0,1fr);}
  .mock-pane{border-right:0;border-bottom:1px solid var(--line);}
  .stat-row{grid-template-columns:repeat(2,minmax(0,1fr));}
  .sec{padding-top:44px;padding-bottom:44px;}
  .foot-grid{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:560px){
  .tb-tag{display:none;}
  .hero-h{letter-spacing:-.6px;}
  .hero-acts .btn{flex:1 1 auto;}
  .feat-grid{grid-template-columns:minmax(0,1fr);}
  .fx-grid{grid-template-columns:minmax(0,1fr);}
  .fx-bar-tag{margin-left:0;}
  .kv-r{grid-template-columns:minmax(0,1fr);}
  .kv-r b{border-right:0;border-bottom:1px solid var(--line);}
  .stat-row{grid-template-columns:repeat(2,minmax(0,1fr));}
  .stat{padding:15px 17px;}
  .sb-hide-sm{display:none;}
  .git-date{margin-left:0;width:100%;}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important;}
  .ws{scroll-behavior:auto;}
}

/* ══════════════════════════════════════════════════════════════════
   30. 落地窗（炫酷效果包，移植自团队官网 CodeGlass 版）
   ──────────────────────────────────────────────────────────────────
   ① 3D 倾斜样机   ② 轮播   ③ AI 对话演示   ④ Toast
   全部改写成本站深色工作台配色，不搬原站那套浅色玻璃拟态。
   ══════════════════════════════════════════════════════════════════ */

/* ── ① 3D 倾斜样机 ────────────────────────────────────────────── */
.mock-wrap{position:relative;perspective:2400px;perspective-origin:50% 18%;}
.mock-tilt{
  position:relative;z-index:1;
  transform:rotateX(7deg) rotateY(-7deg);
  transform-style:preserve-3d;
  transition:transform .9s var(--ease-out-expo);
  will-change:transform;
}
.mock-wrap:hover .mock-tilt{transform:rotateX(2deg) rotateY(-2deg);}
.mock-glow{
  position:absolute;z-index:0;inset:-22% -6% -18% -6%;pointer-events:none;
  background:radial-gradient(50% 50% at 50% 50%,rgba(59,130,246,.30),transparent 72%);
  filter:blur(42px);animation:glowPulse 6.5s ease-in-out infinite alternate;
}
@keyframes glowPulse{
  from{opacity:.5;transform:scale(1);}
  to  {opacity:.85;transform:scale(1.08);}
}
.mock-tilt .mock{transform:translateZ(28px);}

/* ── ② 轮播 ─────────────────────────────────────────────────── */
.carousel{
  position:relative;border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:var(--panel);overflow:hidden;
  box-shadow:0 30px 70px -32px rgba(0,0,0,.95);
}
.carousel-viewport{
  position:relative;overflow:hidden;
  /* ★ 左右 padding 必须为 0 —— 否则 flex:0 0 100% 参照的是「内容宽」而不是
     「视口宽」，translate3d(-100%) 只移一屏的「内容宽」，相邻卡片会露出来。
     留白改由 .tcard 自己的 padding 承担。 */
  padding:clamp(26px,4vw,44px) 0;
  touch-action:pan-y;cursor:grab;
}
.carousel-viewport.dragging{cursor:grabbing;}
.carousel-track{
  display:flex;min-width:0;
  transition:transform .7s var(--ease-out-expo);will-change:transform;
}
.carousel-track.dragging{transition:none;}
.carousel-track>*{min-width:0;max-width:100%;}
.tcard{
  flex:0 0 100%;min-width:0;overflow:hidden;
  padding:0 clamp(20px,5vw,60px);
  display:grid;grid-template-columns:auto minmax(0,1fr);
  gap:clamp(18px,3vw,32px);align-items:center;
}
.tcard-av{
  width:clamp(58px,7vw,78px);height:clamp(58px,7vw,78px);border-radius:50%;
  display:grid;place-items:center;flex:none;overflow:hidden;
  background:var(--grad);color:#fff;font:700 22px var(--sans);
  box-shadow:0 14px 30px -10px rgba(59,130,246,.55);
}
.tcard-quote{
  font:500 clamp(16px,1.8vw,22px)/1.55 var(--sans);
  color:var(--tx);overflow-wrap:anywhere;letter-spacing:-.01em;
}
.tcard-author{color:var(--tx-3);font:13.5px var(--mono);margin-top:12px;}
.tcard-author b{color:var(--tx);font-weight:600;}
.carousel-controls{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px clamp(20px,5vw,60px) 18px;border-top:1px solid var(--line);
}
.cdots{display:flex;gap:8px;}
.cdot{
  width:8px;height:8px;border-radius:50%;padding:0;border:0;cursor:pointer;
  background:var(--line-2);
  transition:background-color .3s,width .4s var(--ease-out-expo),border-radius .3s;
}
.cdot.active{background:var(--grad);width:24px;border-radius:var(--r-pill);}
.carrows{display:flex;gap:8px;}
.carrow{
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  background:var(--panel-2);border:1px solid var(--line-2);color:var(--tx-2);
  font:16px/1 var(--mono);
  transition:background-color .3s,color .3s,transform .3s,border-color .3s;
}
.carrow:hover{background:var(--accent);color:#fff;border-color:transparent;transform:scale(1.06);}

/* ── ③ AI 对话演示 ────────────────────────────────────────────── */
.mu{
  border:1px solid var(--line-2);border-radius:var(--r-lg);
  background:linear-gradient(180deg,#0e141d,#0a0e15);
  overflow:hidden;box-shadow:0 30px 70px -32px rgba(0,0,0,.95);
}
.mu-head{
  display:flex;align-items:center;gap:10px;padding:13px 18px;
  border-bottom:1px solid var(--line);background:var(--bg-2);
}
.mu-head-ic{
  width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:none;
  background:var(--grad);color:#fff;font:700 12px var(--mono);
}
.mu-head b{font-size:14px;font-weight:600;color:var(--tx);}
.mu-head-status{
  margin-left:auto;display:flex;align-items:center;gap:6px;
  font:11.5px var(--mono);color:var(--tx-4);
}
.mu-head-status i{
  width:6px;height:6px;border-radius:50%;background:var(--ok);flex:none;
  animation:pulseDot 2.4s var(--ease-out-expo) infinite;
}
@keyframes pulseDot{0%,100%{opacity:.35;}50%{opacity:1;}}
.mu-body{
  padding:20px clamp(14px,3vw,24px);display:flex;flex-direction:column;gap:13px;
  min-height:210px;
}
.mu-msg{
  display:flex;gap:10px;max-width:88%;
  opacity:0;transform:translateY(12px);
  animation:muIn .55s var(--ease-out-expo) forwards;
}
@keyframes muIn{to{opacity:1;transform:none;}}
.mu-msg.me{margin-left:auto;flex-direction:row-reverse;}
.mu-av{
  width:27px;height:27px;border-radius:8px;flex:none;display:grid;place-items:center;
  font:700 11px var(--mono);color:#fff;
}
.mu-msg.ai .mu-av{background:var(--grad);}
.mu-msg.me .mu-av{background:var(--panel-3);color:var(--tx-2);}
.mu-bubble{
  padding:11px 15px;border-radius:13px;
  font:14px/1.65 var(--sans);
  background:var(--panel-2);border:1px solid var(--line-2);color:var(--tx-2);
}
.mu-msg.me .mu-bubble{
  background:linear-gradient(180deg,var(--accent),#2f6fd0);
  border-color:transparent;color:#fff;
}
.mu-bubble code{
  font:12.4px var(--mono);padding:2px 5px;border-radius:5px;
  background:rgba(255,255,255,.1);color:var(--tx);
}
.mu-msg.me .mu-bubble code{background:rgba(255,255,255,.2);color:#fff;}

/* ── ④ Toast ──────────────────────────────────────────────────── */
.toast-wrap{
  position:fixed;z-index:300;left:50%;bottom:44px;
  transform:translate(-50%,150%);
  transition:transform .55s var(--ease-out-expo);
}
.toast-wrap.show{transform:translate(-50%,0);}
.toast{
  display:flex;align-items:center;gap:11px;padding:12px 20px;
  border-radius:var(--r-pill);background:var(--panel-2);
  border:1px solid var(--line-2);
  color:var(--tx);font-size:14px;font-weight:500;
  box-shadow:0 20px 50px -16px rgba(0,0,0,.9);
}
.toast b{font-weight:650;}
.toast .tk{color:var(--accent-2);font-weight:600;}
.toast>span:first-child{
  width:22px;height:22px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:var(--grad);color:#fff;font:700 12px var(--sans);
}
/* 数据条数字：数字本身由 PHP 直出终值，只做 CSS 淡入
   （原本是 JS 逐帧滚动，见 app.js 第 9 项的踩坑说明） */
.stat-v b{font:inherit;color:inherit;animation:cdFadeUp .55s var(--ease-out-expo) both;}
@keyframes cdFadeUp{from{opacity:0;transform:translateY(7px);}to{opacity:1;transform:none;}}

/* ── 落地窗 · 响应式 ──────────────────────────────────────────── */
@media (max-width:860px){
  .tcard{grid-template-columns:1fr;text-align:center;}
  .tcard-av{margin:0 auto;}
  .mock-tilt{transform:rotateX(3.5deg) rotateY(-2.5deg);}
}
@media (max-width:560px){
  .mock-tilt{transform:none;}
  .mock-glow{display:none;}
  .toast-wrap{left:12px;right:12px;bottom:38px;transform:translate(0,150%);}
  .toast-wrap.show{transform:translate(0,0);}
}
