body{background:var(--paper)}
main{margin:0 auto;padding:0 clamp(16px,4vw,48px);max-width:1160px}
.x-topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:70px;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}
.x-topbar .tb-links{display:flex;gap:18px}
.x-hero{padding:34px 0 8px}
.x-hero h1{font-size:clamp(24px,2.7vw,36px);line-height:1.32;letter-spacing:-.8px;margin:12px 0 14px}
.x-lede{font-size:15px;max-width:780px;color:var(--ink);margin:0}
h2.x-h{font-size:20px;font-weight:600;margin:46px 0 10px}
h2.x-h .x-num{font:12px Consolas,monospace;color:var(--orange);letter-spacing:1px;margin-right:10px}
.x-cap{font-size:12.5px;color:var(--muted);margin:0 0 14px}
.figure{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px;overflow:hidden;margin:0 0 6px}
.figure+.x-cap{margin:10px 0 18px}
svg{display:block;width:100%;height:auto}
.sv text{font-family:"Segoe UI","Microsoft YaHei",sans-serif;font-size:12.5px;fill:var(--ink)}
.sv .cap{font-size:10.5px;font-weight:700;letter-spacing:.8px;fill:var(--muted)}
.sv .mono{font-family:Consolas,monospace;font-size:11px}
.sv .mono2{font-family:Consolas,monospace;font-size:12px}
.sv .mut{fill:var(--muted)}
.sv .o{fill:#fff;stroke:var(--line);stroke-width:1.2}
.sv .odash{fill:#fafaf7;stroke:#b9bfb8;stroke-width:1.2;stroke-dasharray:4 3}
.sv .ohi{fill:#f8e8e1;stroke:var(--orange);stroke-width:1.6}
.sv .ook{fill:#e7f0e9;stroke:var(--green);stroke-width:1.6}
.sv .odark{fill:#172b3a;stroke:none}
.sv .chip{fill:#f0f1ec;stroke:#d8dcd4;stroke-width:1}
.sv .chipHi{fill:#f8e8e1;stroke:var(--orange);stroke-width:1.3}
.sv .rdash{fill:none;stroke:var(--orange);stroke-width:1.4;stroke-dasharray:6 4}
.sv .ln{stroke:#8d99a3;stroke-width:1.4;fill:none;marker-end:url(#ar)}
.sv .lnhi{stroke:var(--orange);stroke-width:2.1;fill:none;marker-end:url(#arO)}
.sv .lnok{stroke:var(--green);stroke-width:1.8;fill:none;marker-end:url(#arG)}
.sv .lnx{stroke:var(--orange);stroke-width:1.6;fill:none;stroke-dasharray:5 3;marker-end:url(#arO)}
.sv .gridd{stroke:#e3e6e0;stroke-width:1}
.sv .badgen{text-anchor:middle;font-family:Consolas,monospace;font-weight:700}
/* 时间线 */
.tl{border-left:2px solid var(--line);margin:6px 0 0 7px;padding:2px 0 2px 0}
.tl-item{position:relative;padding:0 0 22px 26px}
.tl-item:last-child{padding-bottom:4px}
.tl-item::before{content:'';position:absolute;left:-7px;top:5px;width:12px;height:12px;border-radius:50%;background:var(--paper);border:2.5px solid #8d99a3}
.tl-item.hot::before{border-color:var(--orange);background:#f8e8e1}
.tl-date{font:11px Consolas,monospace;letter-spacing:.6px;color:var(--muted)}
.tl-item.hot .tl-date{color:var(--orange);font-weight:700}
.tl-item h3{font-size:14.5px;margin:4px 0 6px}
.tl-item p{font-size:13px;line-height:1.75;margin:0;max-width:820px;color:var(--ink)}
.tl-item .num{font:12px Consolas,monospace;background:#f1f3f1;border-radius:4px;padding:1px 6px;white-space:nowrap}
/* 代码块 */
.codebox{background:#172936;color:#e4edf0;border-radius:8px;padding:16px 18px;font:11.5px/1.85 Consolas,monospace;overflow:auto;margin:0}
.codebox .cm{color:#7d95a5}.codebox .kw{color:#f6bd60}.codebox .str{color:#a8d5a2}.codebox .fn{color:#8ecae6}
/* 词典卡 */
.terms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.term{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--green);border-radius:7px;padding:15px 17px;min-width:0}
.term h3{margin:0 0 4px;font-size:13.5px;line-height:1.45}
.term h3 .en{font:10.5px Consolas,monospace;color:var(--muted);margin-left:8px}
.term .one{font-size:12.5px;color:var(--ink);margin:6px 0 10px;line-height:1.7}
.term .mini{background:#fbfbf9;border:1px solid #eceae3;border-radius:6px;padding:8px 10px;font:10.5px/1.7 Consolas,monospace;overflow:auto;word-break:break-all}
.term p.meta{font-size:11px;color:var(--muted);margin:9px 0 0}
.term p.meta b{color:#216b51}
.term .no{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#172b3a;color:#f6bd60;font:11px Consolas,monospace;margin-right:7px;flex:none;vertical-align:middle}
/* 步骤条 */
.steps{counter-reset:st;display:grid;gap:10px;max-width:860px}
.step{display:flex;gap:13px;align-items:baseline;background:var(--card);border:1px solid var(--line);border-radius:7px;padding:12px 16px}
.step::before{counter-increment:st;content:counter(st,decimal-leading-zero);font:12px Consolas,monospace;color:var(--orange);font-weight:700;flex:none}
.step div{font-size:13px;line-height:1.7}
.step b{font-size:13.5px}
.step .why{color:var(--muted);font-size:12px;display:block;margin-top:3px}
/* 三步演化 */
.evo{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.evo article{background:var(--card);border:1px solid var(--line);border-top:3px solid var(--orange);border-radius:7px;padding:15px 17px}
.evo h3{font-size:13.5px;margin:0 0 8px}
.evo h3 span{font:10.5px Consolas,monospace;color:var(--orange);display:block;letter-spacing:1px;margin-bottom:5px}
.evo p{font-size:12.5px;line-height:1.75;margin:0}
.evo .cons{font-size:11px;color:var(--muted);margin-top:9px;display:block}
.facts{display:flex;gap:26px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px 18px;margin-top:14px}
.facts div{font-size:11px;color:var(--muted);line-height:1.5}
.facts div b{display:block;font:17px Consolas,monospace;color:var(--ink)}
.docfoot{margin:42px 0 36px;padding-top:18px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted)}
.docfoot a{margin-right:18px}
@media(max-width:940px){.terms,.evo{grid-template-columns:minmax(0,1fr)}}
@media(max-width:760px){.tl-item .num{white-space:normal;overflow-wrap:anywhere}.figure{overflow:auto}.figure>svg{min-width:920px}.evo .figure>svg{min-width:300px}}
/* 由行内 style 属性迁来（CSP style-src 'self' 禁行内样式） */
.defs-anchor{position:absolute}
.figure.tight{margin:4px 0 8px}
.x-cap.tight{margin-top:4px}

