:root{
--primary:#4f46e5;--accent:#fbbf24;--radius:0px;
--nav-on-bg:#4f46e5;--nav-on-fg:#fff;
--ink:#0f172a;--muted:#475569;--line:#0f172a;--bg:#ffffff;--soft:#f1f5f9;--card:#ffffff;--hero-bg:linear-gradient(120deg,#eef2ff,#fef3c7);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
/* 页内锚点跳转时留出吸顶导航的高度，否则目标区块标题会被盖住 */
@media(prefers-reduced-motion:no-preference){html{scroll-padding-top:84px}}
:target{scroll-margin-top:84px}
body{margin:0;color:var(--ink);background:var(--bg);line-height:1.68;font-size:16px;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1080px;margin:0 auto;padding:0 22px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:var(--bg);padding:8px;border:1px solid var(--line);z-index:99}
h1{font-size:clamp(30px,4.2vw,50px);line-height:1.14;margin:0 0 18px;letter-spacing:-.025em;font-weight:800}
h2{font-size:clamp(23px,3vw,34px);line-height:1.22;margin:0 0 14px;letter-spacing:-.015em;font-weight:750}
h3{font-size:18px;margin:0 0 9px;font-weight:700}
.lead{font-size:18px;color:var(--muted);margin:0 0 26px;max-width:68ch}
.rt{margin:0 0 20px;max-width:72ch}
.rt p{margin:0 0 15px}
.rt ul,.rt ol{padding-left:22px;margin:0 0 15px}
.rt li{margin:0 0 7px}
.rt blockquote{margin:0 0 16px;padding:14px 18px;border-left:3px solid var(--primary);background:var(--soft);color:var(--muted)}
.rt code{background:var(--soft);padding:2px 6px;border-radius:4px;font-size:.92em}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));list-style:none;padding:0;margin:30px 0 0}
/* 卡片数量填不满最后一行的兜底（只对 auto-fit 网格生效）。
   固定列数的结构模板（如 .feat .grid 的 4 列）靠 :nth-child(3n+1)
   判断会误判，把第 4 张卡也拉成通栏，所以这里限定为 auto-fit。 */
.grid:not([data-cols])>*:last-child:nth-child(3n+1){grid-column:1/-1}
/* 卡片数 fill 最后一行的兜底：视觉模板的 grid 常是固定 3/4 列，
   上一行 n+1 会把 4 张里第 4 张拉成通栏。这里按「实际渲染到的列数」
   把孤零零的最后一行卡片撑成与上一行对齐的等宽（窄屏 1 列时自动失效）。 */
.grid>*:last-child:nth-child(4){grid-column:1/-1;justify-self:center;width:calc((100% - 40px)/3);max-width:100%}
@media(max-width:900px){.grid>*:last-child:nth-child(4){grid-column:auto;width:auto}}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.btn{display:inline-block;padding:12px 24px;background:var(--primary);color:#fff;border-radius:var(--radius);font-weight:650;border:0;transition:filter .15s,transform .15s}
.btn:hover{filter:brightness(1.08);text-decoration:none;transform:translateY(-1px)}
.faq details{border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px;margin:0 0 12px;background:var(--card)}
.faq summary{cursor:pointer;font-weight:650;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+ ";color:var(--primary);font-weight:800}
.faq details[open] summary::before{content:"− "}
.faq details p{margin:12px 0 0;color:var(--muted)}
.kv{list-style:none;padding:0;margin:22px 0 0}
.kv li{padding:12px 0;border-bottom:1px solid var(--line);color:var(--muted)}
.ftr{padding:36px 0;color:var(--muted);font-size:14px;border-top:1px solid var(--line);background:var(--soft)}
.ftr p{margin:5px 0}
/* 页脚相关推荐链接区 */
.ftr-rel{margin:0 0 22px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.ftr-h{margin:0 0 11px;font-size:11.5px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:var(--ink);opacity:.72}
.ftr-links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 10px}
.ftr-links li{margin:0}
.ftr-links a{display:inline-block;padding:5px 11px;border:1px solid var(--line);border-radius:var(--r-sm,6px);font-size:13px;color:inherit;text-decoration:none;transition:border-color .15s,color .15s,background .15s}
.ftr-links a:hover{color:var(--ink);border-color:currentColor}
.ftr-note{margin:13px 0 0;font-size:12px;opacity:.65;line-height:1.6}
nav a.on{font-weight:700;color:var(--primary)}
/* ---------- 导航选中态（最后加载的兜底层） ---------- */
/* 结构模板会在页头导航上叠自己的字体、下划线和颜色声明，很多只改 color、
   不改 background。两者一叠就变成「主色底 + 主色字」，选中项看起来像消失了。
   这里用 --nav-on-bg / --nav-on-fg 一对变量统一兜底，背景和文字永远反色，
   任何视觉模板的主色下都清晰可读。多写几个选择器形状，是因为结构模板
   本身的选择器写法不统一（.hdr nav a / header nav a / .hdr .nav a 都有）。 */
.hdr a.on,.hdr nav a.on,.hdr .nav a.on,.hdr .navlink.on,
header a.on,header nav a.on,header .nav a.on{background:var(--nav-on-bg) !important;color:var(--nav-on-fg) !important;border-color:var(--nav-on-bg) !important;font-weight:700 !important}
.hdr a.on:hover,.hdr nav a.on:hover,.hdr .nav a.on:hover,header a.on:hover,header nav a.on:hover{background:var(--nav-on-bg) !important;color:var(--nav-on-fg) !important}
/* 选中态带下划线风格的模板：下划线跟主色一致，文字也不能用主色 */
.hdr nav a.on[aria-current],header nav a.on[aria-current]{color:var(--nav-on-fg) !important}
/* ---------- 单页站：导航放进页头，靠右对齐 ---------- */
/* 单页站没有其它页面，导航项全是页内锚点。位置上跟多页站保持一致：
   都在 .hdr 里、logo 右侧，只是换成胶囊样式，栏数多时可横向滚动。 */
.pagenav{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin-left:auto;padding:4px 0}
.pagenav::-webkit-scrollbar{display:none}
.pagenav a{flex:0 0 auto;padding:6px 13px;border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);border:1px solid var(--line);white-space:nowrap;text-decoration:none;transition:color .15s,border-color .15s,background .15s}
.pagenav a:hover{color:var(--ink);border-color:currentColor;text-decoration:none}
/* 选中态必须压过各结构模板的页头导航规则（那些规则只改 color、
   不改背景）。模板选择器特异性是 0,2,1，这里用 0,3,0 才盖得住；
   否则会出现「主色底 + 主色字」看不出文字的情况。 */
.hdr .pagenav a.on{background:var(--primary);border-color:var(--primary);color:#fff}
.hdr .pagenav a.on:hover{color:#fff;border-color:var(--primary)}
@media(max-width:600px){.pagenav a{padding:5px 11px;font-size:12.5px}}
/* ---------- 站点骨架：logo 标记 / 面包屑 ---------- */
.logo-mk{display:inline-block;width:9px;height:9px;margin-right:8px;border-radius:2px;background:linear-gradient(135deg,var(--primary),var(--accent));vertical-align:middle;transform:translateY(-1px)}
.crumbs{border-bottom:1px solid var(--line);background:var(--soft);font-size:13px}
.crumb-in{display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding-top:11px;padding-bottom:11px;color:var(--muted)}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--primary);text-decoration:underline}
.crumbs [aria-current]{color:var(--ink);font-weight:600}
.crumb-sep{opacity:.4}
/* ---------- 图片 ---------- */
.hero-split{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;max-width:1180px}
.hero-art img{width:100%;height:auto;border-radius:var(--radius);box-shadow:0 24px 60px -30px rgba(15,23,42,.45)}
/* ---------- 首屏右栏要点卡（无配图时的填充） ----------
   min-height 是个保底值：卡片被 grid 拉伸到与左栏等高时，内容靠
   flex 居中，不会全堆在顶部留一大块空底。 */
.hero-aside{display:flex;flex-direction:column;justify-content:center;text-align:left;margin:0;padding:34px 30px;border-radius:20px;background:#0f1a16;color:#dbe7e1;box-shadow:0 22px 48px -26px rgba(10,20,15,.55);border:1px solid rgba(255,255,255,.06)}
.hero-aside .ha-t{margin:0 0 20px;font-size:17px;font-weight:800;letter-spacing:.01em;color:#fff;line-height:1.5;text-align:left}
.hero-aside .ha-t::after{content:"";display:block;width:36px;height:2px;margin-top:13px;background:var(--accent);border-radius:2px;opacity:.9}
.hero-aside .ha-list{list-style:none;margin:0;padding:0;display:grid;gap:18px;counter-reset:ha}
/* 卡片很高时（.ha-list[data-fit]）让列表撑满剩余空间，行与行之间均分；
   比单纯放大字号协调得多：内容少时不会变成几行巨型字。 */
.hero-aside .ha-list[data-fit]{flex:1 1 auto;align-content:space-evenly;gap:0}
.hero-aside .ha-list>li{position:relative;padding-left:30px;font-size:14.5px;line-height:1.85;color:#c3d3cb;text-align:left}
.hero-aside .ha-list>li::before{content:"";position:absolute;left:0;top:.42em;width:17px;height:17px;border-radius:50%;background:rgba(255,255,255,.09)}
.hero-aside .ha-list>li::after{content:"";position:absolute;left:4.5px;top:calc(.42em + 4.5px);width:8px;height:4px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg)}
@media(max-width:959px){.hero-aside{margin-top:26px;padding:26px 22px}}
/* 卡片被拉伸到很高时（左栏文字很长），把标题、字号、行距一起放大，
   否则中间一小条内容、上下两大块空白。
   这里不靠媒体查询拍脑袋：“填满多少”是内容量÷卡片高度，CSS 未知。
   由内联 JS 量完高度后按比例写到 --ha-k（字号缩放系数），
   CSS 只负责乘上去。 */
.hero-aside{--ha-k:1;--ha-g:1}
@media(min-width:960px){
  .hero-aside{padding:calc(36px * var(--ha-g)) clamp(30px,3vw,42px)}
  .hero-aside .ha-t{font-size:calc(17px * var(--ha-k));margin-bottom:calc(20px * var(--ha-g))}
  /* [data-fit] 的列表要自己均分剩余空间（gap 归零），不能被这里的行距覆盖 */
  .hero-aside .ha-list:not([data-fit]){gap:calc(18px * var(--ha-g))}
  .hero-aside .ha-list>li{font-size:calc(14.5px * var(--ha-k));line-height:1.85}
}
/* 卡片只有 500px 高时内容基本填满，系数接近 1，不额外放大。 */
.hero-txt{min-width:0}
.fig{margin:30px 0 0}
.fig img{width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--line)}
.art-fig{margin:0 0 30px}
.art .fig img{box-shadow:0 16px 40px -28px rgba(15,23,42,.5)}
/* feature 卡片图标 */
.ic{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-bottom:13px;border-radius:calc(var(--radius) * .7);background:var(--soft);border:1px solid var(--line);color:var(--primary)}
.ic svg{width:19px;height:19px}
.more{display:inline-block;margin-top:11px;font-size:14px;font-weight:600}
/* ---------- 新增区块：stats / steps / gallery / timeline / logos / quote ---------- */
.stats .stat-grid{list-style:none;padding:0;margin:30px 0 0;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
/* 统计数字不够一行的倍数时，最后一个橑满剩余，不让右边缘空出一截 */
.stats .stat-grid>*:last-child:nth-child(4n+1){grid-column:1/-1}
.stats .stat-grid li{padding:26px 22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);text-align:center}
.stat-num{margin:0 0 6px;font-size:clamp(28px,3.4vw,40px);font-weight:800;letter-spacing:-.03em;color:var(--primary);line-height:1.1}
.stat-lbl{margin:0;font-weight:650}
.stat-txt{margin:8px 0 0;font-size:14px;color:var(--muted)}
.step-list{list-style:none;counter-reset:s;padding:0;margin:30px 0 0;display:grid;gap:0}
.step-list li{position:relative;padding:0 0 26px 54px;border-left:2px solid var(--line);margin-left:15px}
.step-list li:last-child{border-left-color:transparent;padding-bottom:0}
.step-n{position:absolute;left:-16px;top:-2px;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--primary);color:#fff;font-size:14px;font-weight:700}
.step-list h3{margin:0 0 6px;font-size:17px}
.step-list p{margin:0;color:var(--muted);font-size:15px;max-width:66ch}
.gal-grid{list-style:none;padding:0;margin:30px 0 0;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.gal-item{margin:0}
.gal-item img{width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--line);display:block}
.gal-item p{margin:9px 0 0;font-size:14px;color:var(--muted);font-weight:600}
.tl-list{list-style:none;padding:0;margin:30px 0 0}
.tl-list li{display:grid;grid-template-columns:110px 1fr;gap:22px;padding:0 0 24px}
.tl-when{font-weight:700;color:var(--primary);font-size:15px;font-variant-numeric:tabular-nums}
.tl-body{border-left:2px solid var(--line);padding-left:22px;margin-left:-12px}
.tl-body h3{margin:0 0 6px;font-size:17px}
.tl-body p{margin:0;color:var(--muted);font-size:15px}
.logos{padding:34px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--soft)}
.logos-h{margin:0 0 16px;text-align:center;font-size:12.5px;letter-spacing:.9px;text-transform:uppercase;color:var(--muted);font-weight:700}
.logos-row{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;justify-content:center;gap:16px 38px}
.logos-row li{font-weight:700;font-size:15px;color:var(--muted);opacity:.8;letter-spacing:.02em}
.logos-note{margin:16px 0 0;text-align:center;font-size:12.5px;color:var(--muted);opacity:.8}
.quote{padding:60px 0;background:var(--soft)}
.quote .wrap{max-width:820px}
.quote blockquote{margin:0;padding:0;border:0;background:none;font-size:clamp(19px,2.3vw,25px);line-height:1.6;font-weight:500;color:var(--ink)}
.quote blockquote p{margin:0 0 12px}
.quote-by{margin:18px 0 0;color:var(--muted);font-size:14.5px}
/* 价格卡片徽标 / 价格单位 */
.price .card{position:relative}
.price .badge{position:absolute;top:-11px;right:16px;background:var(--accent);color:#fff;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:99px;letter-spacing:.02em}
.price .amt small{font-size:14px;font-weight:600;opacity:.7;margin-left:3px}
@media(max-width:860px){.hero-split{grid-template-columns:1fr;gap:34px}.hero-art{order:-1}}
/* 相关阅读列表 */
.rel{background:var(--soft)}
.tbl-scroll{overflow-x:auto}
/* mcol-reset：打断结构模板的 CSS 多栏流，让表格占满整行。
   CSS 多栏下 max-width:none 会让内部块直接溢出到栏外，必须显式 width:100%。 */
.mcol-reset{column-span:all;break-inside:avoid;width:100%;max-width:100%;min-width:0;float:none;clear:both}
.mcol-reset>table{margin:20px 0}
.rt table{width:100%;border-collapse:collapse;margin:20px 0;font-size:14.5px;min-width:520px}
.rt th,.rt td{padding:11px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.rt th{background:var(--soft);font-weight:700;white-space:nowrap}
.rt tbody tr:hover{background:var(--soft)}
.rel-list{list-style:none;padding:0;margin:26px 0 0;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.rel-list li{margin:0;padding:14px 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;gap:4px;transition:border-color .15s,transform .15s}
.rel-list li:hover{border-color:var(--primary);transform:translateY(-2px)}
.rel-list a{font-weight:650;font-size:15px;line-height:1.45}
.rel-list span{font-size:13px;color:var(--muted)}
@media(max-width:560px){.tl-list li{grid-template-columns:1fr;gap:6px}.tl-body{margin-left:0}.step-list li{padding-left:46px}}
@media(max-width:640px){.wrap{padding:0 18px}.cta-row{flex-direction:column}.btn{text-align:center}.ftr-links a{padding:4px 9px;font-size:12.5px}}

body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
.hero{text-align:center}.hero .lead{margin-left:auto;margin-right:auto}
section{padding:70px 0;border-bottom:1px solid var(--line)}
section:last-of-type{border-bottom:0}
.hero{padding:92px 0 72px;background:var(--hero-bg)}
.hero .cta-row{justify-content:center}
.feat h2,.feat .lead,.price h2,.price .lead,.faq h2,.faq .lead,.cta h2,.cta .lead{text-align:center}
.feat .lead,.price .lead,.faq .lead,.cta .lead{margin-left:auto;margin-right:auto}
.cta .cta-row{justify-content:center}
.hdr{border-bottom:3px solid var(--ink);position:sticky;top:0;background:var(--bg);z-index:20}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:70px;flex-wrap:wrap}
.logo{font-weight:900;font-size:20px;color:var(--ink);letter-spacing:-.04em}
.hdr nav{display:flex;gap:24px;flex-wrap:wrap}
.hdr nav a{color:var(--ink);font-size:14px;font-weight:700}
h1{font-size:clamp(38px,6.2vw,74px);font-weight:900;letter-spacing:-.045em;line-height:1.02}
h2{font-size:clamp(26px,4vw,44px);font-weight:900;letter-spacing:-.035em}
h3{font-weight:800;font-size:19px}
.lead{font-size:20px;color:var(--muted);font-weight:500}
.btn{background:var(--ink);border-radius:0;padding:15px 32px;font-weight:800;font-size:15px;letter-spacing:.02em}
.btn:hover{background:var(--accent);color:var(--ink);transform:none;filter:none}
.hero{border-bottom:3px solid var(--ink)}
.hero .lead{color:var(--ink)}
.feat{background:var(--soft)}
.feat .grid li{background:var(--bg);border:3px solid var(--ink);border-radius:0;padding:26px}
.feat .grid li h3{font-weight:900;font-size:17px}
.feat .grid li p{color:var(--muted);font-size:15px;margin:0}
.price{background:var(--bg)}
.price .card{border:3px solid var(--ink);border-radius:0;box-shadow:none}
.price .amt{font-size:38px;font-weight:900;color:var(--ink)}
.price .card:hover{background:var(--accent)}
.cta{background:var(--accent);border-top:3px solid var(--ink)}
.cta .lead{color:var(--ink)}
.faq details{border:2px solid var(--ink);border-radius:0}
.faq summary{font-weight:900}
.faq summary::before{color:var(--ink)}
.art{max-width:800px;padding:80px 22px}
.ftr{border-top:3px solid var(--ink);background:var(--ink);color:#fff}
.ftr a{color:var(--accent)}

/* ---- 结构排版模板 ---- */
.stx-docs-wiki{--stx-w:1240px;--stx-nav:270px}
.stx-docs-wiki .wrap{max-width:var(--stx-w);margin:0 auto;padding:0 24px}
.stx-docs-wiki .hdr{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.stx-docs-wiki .hdr-in{max-width:var(--stx-w);margin:0 auto;padding:0 24px;min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.stx-docs-wiki .hdr .logo{font-weight:800;font-size:16px}
.stx-docs-wiki .hdr nav{display:flex;gap:6px;flex-wrap:wrap;border:none}
.stx-docs-wiki .hdr nav a{font-size:14px;color:var(--muted);padding:6px 11px;border-radius:6px}
.stx-docs-wiki .hdr nav a:hover,.stx-docs-wiki .hdr nav a.on{background:var(--soft);color:var(--primary);text-decoration:none}
.stx-docs-wiki section{padding:36px 0}
.stx-docs-wiki h2{font-size:20px;margin:0 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line);letter-spacing:-.01em}
.stx-docs-wiki .lead{color:var(--muted);margin:0 0 20px;font-size:15px}
.stx-docs-wiki .hero{padding:44px 0 36px;background:var(--hero-bg)}
.stx-docs-wiki .hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:36px;align-items:center}
/* 有右侧栏（配图/要点卡）时必须两端对齐：align-items:center 会把右栏
   改成内容高度，自动插画只有 260px 高而左栏文字 500px，下方留一片白。 */
.stx-docs-wiki .hero .wrap:has(>.hero-art),.stx-docs-wiki .hero .wrap:has(>.hero-aside){align-items:stretch}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt{display:flex;flex-direction:column;justify-content:center}
.stx-docs-wiki .hero h1{font-size:32px;line-height:1.26;letter-spacing:-.025em;margin:0 0 12px}
.stx-docs-wiki .hero .lead{font-size:15px;margin-bottom:18px}
.stx-docs-wiki .hero .cta-row{display:flex;gap:10px;flex-wrap:wrap}
.stx-docs-wiki .hero-art img{border-radius:10px;border:1px solid var(--line);display:block;max-width:100%;height:auto}
.stx-docs-wiki .grid{display:grid;gap:16px;margin:0;padding:0;list-style:none}
.stx-docs-wiki .grid-3,.stx-docs-wiki .feat .grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.stx-docs-wiki .grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.stx-docs-wiki .feat .grid li,.stx-docs-wiki .price .card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px;transition:border-color .18s}
.stx-docs-wiki .feat .grid li:hover{border-color:var(--primary)}
.stx-docs-wiki .feat .grid li h3{font-size:15px;margin:0 0 6px;line-height:1.45}
.stx-docs-wiki .feat .grid li p{font-size:13px;line-height:1.7;color:var(--muted);margin:0;min-height:calc(1.7em * 3)}
/* 文章区块：标题通栏，正文再分栏。
   标题必须跨满整行，否则会被挤进左列变成长条。 */
/* 文章区块：文档流靠左，标题/导语/正文/信息条共用同一条左基线，
   全文按 78ch 收窄行宽，读起来接近纸质手册。 */
.stx-docs-wiki .art{max-width:var(--stx-w);margin:0 auto;padding:46px 24px 68px;display:block}
.stx-docs-wiki .art>.rt{display:block;max-width:78ch;min-width:0}
.stx-docs-wiki .art h1,.stx-docs-wiki .art h2{font-weight:800}
.stx-docs-wiki .art>h2{font-size:30px;line-height:1.24;letter-spacing:-.024em;margin:0 0 10px;padding-bottom:0;border-bottom:0}
/* 标题下不再用一条硬横线收边（横线会把标题和正文切开，显得生硬），
   改用一条从主色渐变到透明的细线，视觉上有起点也有消退。 */
.stx-docs-wiki .art>h2::after{content:"";display:block;height:3px;width:72px;margin:18px 0 26px;border-radius:2px;background:linear-gradient(90deg,var(--primary),transparent)}
.stx-docs-wiki .art>.lead{font-size:16.5px;line-height:1.75;color:var(--muted);margin:0 0 26px;max-width:74ch}
.stx-docs-wiki .art>.kv{list-style:none;padding:0;margin:32px 0 0;display:grid;gap:0;border-top:1px solid var(--line);max-width:74ch}
.stx-docs-wiki .art>.kv li{display:grid;grid-template-columns:140px minmax(0,1fr);gap:18px;padding:13px 0;border-bottom:1px solid var(--line);font-size:15px;line-height:1.7}
.stx-docs-wiki .art>.kv strong{font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.stx-docs-wiki .rt{font-size:15.5px;line-height:1.9;counter-reset:dh;color:var(--ink)}
/* 首段稍大一点，充当导语 */
.stx-docs-wiki .rt>p:first-of-type{font-size:16.5px;line-height:1.85;color:var(--ink);margin-bottom:22px}
.stx-docs-wiki .rt h2{font-size:20px;margin:40px 0 14px;counter-increment:dh;line-height:1.4;font-weight:750;display:flex;align-items:baseline;gap:9px}
.stx-docs-wiki .rt h2::before{content:counter(dh);flex:0 0 auto;color:var(--primary);font-weight:800;font-size:14px;font-variant-numeric:tabular-nums;background:var(--soft);border:1px solid var(--line);border-radius:6px;padding:1px 8px;line-height:1.7}
.stx-docs-wiki .rt h3{font-size:16.5px;margin:28px 0 9px;font-weight:700;line-height:1.5}
.stx-docs-wiki .rt p{margin:0 0 16px}
.stx-docs-wiki .rt>p+p{margin-top:-4px}
.stx-docs-wiki .rt ul,.stx-docs-wiki .rt ol{padding-left:24px;margin:0 0 18px}
.stx-docs-wiki .rt li{margin-bottom:8px;line-height:1.8}
.stx-docs-wiki .rt li::marker{color:var(--primary)}
/* 表格与代码块在文档里是「独立模块」，要能一眼和正文分开 */
.stx-docs-wiki .rt code{background:var(--soft);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:.9em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.stx-docs-wiki .rt pre{background:#0f172a;color:#e2e8f0;border-radius:10px;padding:16px 18px;overflow-x:auto;font-size:13px;line-height:1.7;margin:0 0 18px}
.stx-docs-wiki .rt pre code{background:none;border:none;padding:0;color:inherit;font-size:inherit}
.stx-docs-wiki .rt blockquote{background:var(--soft);border-left:3px solid var(--primary);border-radius:0 8px 8px 0;padding:14px 20px;margin:0 0 20px;color:var(--muted);font-size:14.5px;line-height:1.85}
.stx-docs-wiki .rt blockquote p:last-child{margin:0}
.stx-docs-wiki .rt table{width:100%;border-collapse:collapse;font-size:14px;margin:6px 0 20px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.stx-docs-wiki .rt th,.stx-docs-wiki .rt td{border-bottom:1px solid var(--line);padding:11px 14px;text-align:left;vertical-align:top}
.stx-docs-wiki .rt th{background:var(--soft);font-weight:700;white-space:nowrap}
.stx-docs-wiki .tbl table{width:100%;border-collapse:collapse;font-size:14px}
.stx-docs-wiki .tbl th,.stx-docs-wiki .tbl td{border:1px solid var(--line);padding:10px 12px;text-align:left}
.stx-docs-wiki .tbl th{background:var(--soft)}
.stx-docs-wiki .steps .step-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.stx-docs-wiki .steps .step-list li{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 18px;display:flex;gap:14px;align-items:flex-start}
.stx-docs-wiki .steps .step-n{position:static;left:auto;top:auto;flex:0 0 24px;height:24px;border-radius:6px;background:var(--primary);color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center}
.stx-docs-wiki .steps .step-list h3{font-size:15px;margin:0 0 4px}
.stx-docs-wiki .steps .step-list p{font-size:13px;color:var(--muted);margin:0;line-height:1.7}
.stx-docs-wiki .faq details{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:13px 16px;margin-bottom:8px}
.stx-docs-wiki .faq summary{cursor:pointer;font-weight:600;font-size:14px}
.stx-docs-wiki .faq details p{font-size:13px;color:var(--muted);line-height:1.75;margin:8px 0 0}
.stx-docs-wiki .ftr{background:var(--card);border-top:1px solid var(--line);padding:30px 0;font-size:13px;color:var(--muted)}
.stx-docs-wiki .ftr .ftr-links{display:flex;gap:16px;list-style:none;padding:0;margin:0 0 12px;flex-wrap:wrap}
@media(max-width:960px){
.stx-docs-wiki .art{grid-template-columns:1fr;gap:24px}
.stx-docs-wiki .hero .wrap{grid-template-columns:1fr}
.stx-docs-wiki .grid-3,.stx-docs-wiki .grid-2,.stx-docs-wiki .feat .grid{grid-template-columns:1fr}
.stx-docs-wiki .hero h1{font-size:26px}
}
/* ===== 统一排版：保留各自骨架 + 文字居中 + 响应式（自动追加，勿手改） ===== */
.stx-docs-wiki .hero .hero-txt{text-align:center}
.stx-docs-wiki .hero h1,.stx-docs-wiki .hero .lead{text-align:center;margin-left:auto;margin-right:auto}
.stx-docs-wiki .hero .rt,.stx-docs-wiki .hero .rt>p{text-align:center;margin-left:auto;margin-right:auto}
@media (min-width:960px){
.stx-docs-wiki .hero .wrap:has(>.hero-art),.stx-docs-wiki .hero .wrap:has(>.hero-aside){display:grid !important;grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr) !important;gap:48px;align-items:stretch;max-width:var(--stx-w,1080px);margin-left:auto;margin-right:auto}
.stx-docs-wiki .hero .wrap>.hero-txt{grid-column:1;align-self:stretch;display:flex;flex-direction:column;justify-content:center}
.stx-docs-wiki .hero .wrap>.hero-art{grid-column:2;align-self:stretch;display:flex;align-items:stretch}
.stx-docs-wiki .hero .wrap>.hero-art>img{width:100%;height:100%;min-height:260px;object-fit:cover;object-position:center}
.stx-docs-wiki .hero .wrap>.hero-art.is-portrait{overflow:hidden}
.stx-docs-wiki .hero .wrap>.hero-art.is-portrait>img{width:100%;height:100%;min-height:100%;object-fit:cover;object-position:center}
.stx-docs-wiki .hero .wrap>.hero-aside{grid-column:2;align-self:stretch}
.stx-docs-wiki .hero .wrap:not(:has(>.hero-art)):not(:has(>.hero-aside)){display:block !important;width:100%;max-width:var(--stx-w,1080px);margin-left:auto;margin-right:auto}
}
@media (min-width:960px){
.stx-docs-wiki .hero .wrap:not(:has(>.hero-art)):not(:has(>.hero-aside))>.hero-txt{max-width:none !important;width:100%;margin-left:0;margin-right:0}
.stx-docs-wiki .hero .wrap:not(:has(>.hero-art)):not(:has(>.hero-aside)) .lead,.stx-docs-wiki .hero .wrap:not(:has(>.hero-art)):not(:has(>.hero-aside)) .rt,.stx-docs-wiki .hero .wrap:not(:has(>.hero-art)):not(:has(>.hero-aside)) h1{max-width:none !important}
}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt,.stx-docs-wiki .hero .wrap:has(>.hero-aside)>.hero-txt{text-align:left}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt>h1,.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt>.lead,.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt>.rt,.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt>.cta-row,.stx-docs-wiki .hero .wrap:has(>.hero-aside)>.hero-txt>h1,.stx-docs-wiki .hero .wrap:has(>.hero-aside)>.hero-txt>.lead,.stx-docs-wiki .hero .wrap:has(>.hero-aside)>.hero-txt>.rt,.stx-docs-wiki .hero .wrap:has(>.hero-aside)>.hero-txt>.cta-row{text-align:left;justify-content:flex-start;max-width:100% !important;margin-left:0;margin-right:0}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt .rt *,.stx-docs-wiki .hero .wrap:has(>.hero-aside)>.hero-txt .rt *{text-align:left}
}
.stx-docs-wiki .hero{padding-top:52px;padding-bottom:46px;text-align:center;border-bottom:1px solid rgba(15,23,42,.08)}
.stx-docs-wiki .hero h1{font-size:clamp(24px,2.4vw,32px) !important;line-height:1.32;max-width:22em;font-weight:700}
.stx-docs-wiki .hero .lead{font-size:15px;line-height:1.8;max-width:640px;margin-top:10px;color:var(--muted,#475569)}
.stx-docs-wiki .hero .hero-txt{max-width:900px;margin-left:auto;margin-right:auto}
.stx-docs-wiki .hero .btn{border-radius:8px;padding:10px 20px;font-size:14px}
.stx-docs-wiki .hero .hero-art{margin-top:22px;border-radius:10px;border:1px solid rgba(15,23,42,.10);background:#fff}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-art{margin-top:0}
@media (max-width:959px){.stx-docs-wiki .hero .wrap{display:block !important;max-width:100%}.stx-docs-wiki .hero .hero-art{grid-column:auto !important;margin:28px auto 0;max-width:100%}.stx-docs-wiki .hero h1{font-size:clamp(24px,6.4vw,40px) !important;line-height:1.24}.stx-docs-wiki .hero{padding-top:44px;padding-bottom:40px}}
.stx-docs-wiki .hero-art img,.stx-docs-wiki .hero-art svg{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}
.stx-docs-wiki section h1, .stx-docs-wiki section h2, .stx-docs-wiki section h3, .stx-docs-wiki section h4,
.stx-docs-wiki .wrap>h2, .stx-docs-wiki .art>h2, .stx-docs-wiki .art>h3{text-align:center;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0;text-indent:0;border-left:0;border-right:0;background-image:none}
.stx-docs-wiki h1, .stx-docs-wiki h2, .stx-docs-wiki h3, .stx-docs-wiki h4{text-align:center;margin-left:auto;margin-right:auto;padding-left:0;padding-right:0;text-indent:0;border-left:0;border-right:0;background:none}
.stx-docs-wiki section h2, .stx-docs-wiki section h3{justify-content:center;align-items:center}
.stx-docs-wiki section .lead, .stx-docs-wiki .art>.lead{text-align:center;margin-left:auto;margin-right:auto;max-width:760px}
.stx-docs-wiki .art>h2::after,.stx-docs-wiki .wrap>h2::after{margin-left:auto;margin-right:auto}
.stx-docs-wiki .art .rt, .stx-docs-wiki .art .rt>p{text-align:center;margin-left:auto;margin-right:auto}
.stx-docs-wiki .art .rt h2, .stx-docs-wiki .art .rt h3, .stx-docs-wiki .art .rt h4{text-align:center;margin-left:auto;margin-right:auto}
.stx-docs-wiki .art .rt ul, .stx-docs-wiki .art .rt ol{margin-left:auto;margin-right:auto;padding-left:0;list-style-position:inside;text-align:center}
.stx-docs-wiki .art .rt blockquote{margin-left:auto;margin-right:auto;text-align:center;border-left:0;padding-left:0}
.stx-docs-wiki .art .rt img, .stx-docs-wiki .art .rt figure, .stx-docs-wiki .art .rt table{margin-left:auto;margin-right:auto}
.stx-docs-wiki .art>h2, .stx-docs-wiki .art>.lead{text-align:center}
.stx-docs-wiki .art>.rt>p{text-align:center;margin-left:auto;margin-right:auto;max-width:72ch}
@media (max-width:959px){.stx-docs-wiki .art{display:block;grid-template-columns:1fr;column-gap:0;max-width:100%;margin-left:auto;margin-right:auto;padding-left:20px;padding-right:20px;border-left:0}.stx-docs-wiki .art>*{grid-column:auto;width:100%;max-width:100%;margin-left:auto;margin-right:auto;padding-left:0;border-left:0}.stx-docs-wiki .art>.rt{padding-left:0;border-left:0}}
.stx-docs-wiki .grid li,.stx-docs-wiki .step-list li,.stx-docs-wiki .tl-list li,.stx-docs-wiki .price .card{text-align:center}
.stx-docs-wiki .feat .grid li p,.stx-docs-wiki .step-list li p,.stx-docs-wiki .tl-body p{text-align:center;margin-left:auto;margin-right:auto}
.stx-docs-wiki .grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important;align-items:stretch}
.stx-docs-wiki .grid:has(>li:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.stx-docs-wiki .grid:has(>li:nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr)) !important}
.stx-docs-wiki .feat .grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
.stx-docs-wiki .feat .grid:has(>li:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.stx-docs-wiki .grid>li{grid-column:auto !important;justify-self:stretch !important;width:auto !important;max-width:none !important}
.stx-docs-wiki .grid li{display:flex;flex-direction:column;justify-content:flex-start;min-width:0}
.stx-docs-wiki .grid li h3,.stx-docs-wiki .grid li p,.stx-docs-wiki .grid li .more,.stx-docs-wiki .grid li .btn{margin-left:auto;margin-right:auto}
.stx-docs-wiki .grid li .more,.stx-docs-wiki .grid li .btn{margin-top:auto}
@media (max-width:959px){.stx-docs-wiki .grid,.stx-docs-wiki .feat .grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}}
@media (max-width:639px){.stx-docs-wiki .grid,.stx-docs-wiki .feat .grid{grid-template-columns:1fr !important}}
.stx-docs-wiki .step-n{margin-left:auto;margin-right:auto;position:static;left:auto;top:auto}
.stx-docs-wiki .step-list{grid-template-columns:repeat(2,minmax(0,1fr)) !important;gap:16px;margin-left:0;padding-left:0;counter-reset:none}
.stx-docs-wiki .step-list li{display:block;text-align:center;border-left:0;border-radius:14px;margin-left:0;padding:22px 20px;place-items:center;position:static;counter-increment:none}
.stx-docs-wiki .step-list>li{grid-column:auto !important;justify-self:stretch !important;width:auto !important;max-width:none !important}
.stx-docs-wiki .step-list:has(>li:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.stx-docs-wiki .step-list:has(>li:nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr)) !important}
.stx-docs-wiki .steps .step-list li{text-align:center;display:block;grid-template-columns:1fr;grid-template-rows:auto;padding:22px 20px;margin-left:0;border-left:0;border-bottom:0;column-gap:0;row-gap:0;place-items:center;position:static}
.stx-docs-wiki .steps .step-list:has(>li:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.stx-docs-wiki .steps .step-list:has(>li:nth-child(4):last-child){grid-template-columns:repeat(2,minmax(0,1fr)) !important}
.stx-docs-wiki .step-n{position:static;left:auto;top:auto;flex:none;grid-column:auto;grid-row:auto;margin:0 auto 12px;width:30px;height:30px;font-size:14px;line-height:30px;text-align:center}
.stx-docs-wiki .step-list li h3, .stx-docs-wiki .step-list li p{margin-left:auto;margin-right:auto;max-width:100%;grid-column:auto;grid-row:auto;text-align:center}
@media (max-width:959px){.stx-docs-wiki .steps .step-list{grid-template-columns:repeat(2,minmax(0,1fr)) !important}}
@media (max-width:639px){.stx-docs-wiki .steps .step-list{grid-template-columns:1fr !important}}
.stx-docs-wiki .tl-when{display:block;text-align:center;margin:0 auto 6px;padding-left:0}
.stx-docs-wiki .tl-list li{text-align:center;display:block;grid-template-columns:1fr;gap:6px;margin-left:0;padding-left:0}
.stx-docs-wiki .tl-body{text-align:center;margin-left:0;padding-left:0;border-left:0}
.stx-docs-wiki .logos-row,.stx-docs-wiki .cta-row,.stx-docs-wiki .logos{justify-content:center;text-align:center}
.stx-docs-wiki .logos-h,.stx-docs-wiki .logos-note,.stx-docs-wiki .quote-by{text-align:center;margin-left:auto;margin-right:auto}
.stx-docs-wiki .faq summary,.stx-docs-wiki .faq details p,.stx-docs-wiki blockquote{text-align:center;margin-left:auto;margin-right:auto}
.stx-docs-wiki .faq details{text-align:center}
.stx-docs-wiki .quote .wrap{text-align:center}
.stx-docs-wiki blockquote, .stx-docs-wiki blockquote.rt{max-width:var(--center-rt,760px);margin-left:auto;margin-right:auto;text-align:center;border-left:0;padding-left:0}
.stx-docs-wiki .kv{margin-left:auto;margin-right:auto;max-width:820px;display:block;width:100%}
.stx-docs-wiki .kv li{display:block;text-align:center;align-items:center;align-content:center;justify-items:center;grid-template-columns:1fr;padding-left:0;padding-right:0;border-left:0}
.stx-docs-wiki .kv li strong{display:block;margin:0 auto 4px;flex:none;width:auto}
.stx-docs-wiki .tbl .rt,.stx-docs-wiki .tbl .tbl-scroll{max-width:none;width:100%;margin-left:auto;margin-right:auto;padding-left:0}
.stx-docs-wiki .tbl table{width:100%;margin-left:auto;margin-right:auto}
.stx-docs-wiki table{margin-left:auto;margin-right:auto}
.stx-docs-wiki th, .stx-docs-wiki td, .stx-docs-wiki .tbl th, .stx-docs-wiki .tbl td, .stx-docs-wiki .rt th, .stx-docs-wiki .rt td, .stx-docs-wiki .tbl-scroll th, .stx-docs-wiki .tbl-scroll td{text-align:center}
.stx-docs-wiki table th, .stx-docs-wiki table td, .stx-docs-wiki .tbl-scroll table th, .stx-docs-wiki .tbl-scroll table td{text-align:center}
.stx-docs-wiki .tbl th:first-child, .stx-docs-wiki .tbl td:first-child, .stx-docs-wiki table th:first-child, .stx-docs-wiki table td:first-child{text-align:center;font-weight:inherit}
.stx-docs-wiki .ftr{text-align:center}
.stx-docs-wiki .ftr .wrap{display:flex;flex-direction:column;align-items:center;text-align:center;justify-items:center}
.stx-docs-wiki .ftr .wrap>*{max-width:100%}
.stx-docs-wiki .ftr-rel{text-align:center;border-bottom:none;padding-bottom:0;margin:0 0 14px}
.stx-docs-wiki .ftr-h,.stx-docs-wiki .ftr-note,.stx-docs-wiki .ftr p{text-align:center;margin-left:auto;margin-right:auto}
.stx-docs-wiki .ftr-links{justify-content:center;text-align:center;flex-wrap:wrap}
.stx-docs-wiki .hdr{position:static !important;top:auto !important;background:transparent !important;border-bottom:1px solid var(--line);box-shadow:none !important;backdrop-filter:none !important}
.stx-docs-wiki .hdr-in{justify-content:center;gap:12px 32px;min-height:76px}.stx-docs-wiki .hdr nav{justify-content:center}
@media (max-width:767px){.stx-docs-wiki .hdr-in{min-height:auto;flex-direction:column;justify-content:center;gap:10px;padding-top:14px;padding-bottom:14px}}
@media (max-width:767px){.stx-docs-wiki .hdr nav{width:100%;justify-content:center;gap:12px 16px}}
@media (min-width:960px){.stx-docs-wiki .feat>.wrap>.rt,.stx-docs-wiki .feat .wrap>.rt,.stx-docs-wiki .art>.rt,.stx-docs-wiki .art .rt,.stx-docs-wiki .tbl>.wrap>.rt,.stx-docs-wiki .tbl .wrap>.rt,.stx-docs-wiki main>.feat>.rt{max-width:min(100%,var(--rt-wide,980px)) !important;width:100%;margin-left:auto;margin-right:auto;text-align:left}.stx-docs-wiki section .lead,.stx-docs-wiki section>.wrap>.lead,.stx-docs-wiki .art>.lead{max-width:min(100%,var(--rt-wide,980px)) !important;width:100%;margin-left:auto;margin-right:auto}}

/* ===== 首屏右栏配图等高（自动追加，勿手改） ===== */
@media (min-width:960px){
.stx-docs-wiki .hero .wrap:has(>.hero-art){align-items:stretch !important}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-txt{align-self:stretch;display:flex;flex-direction:column;justify-content:center;min-width:0}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-art{align-self:stretch;margin-top:0 !important;display:flex;align-items:stretch;overflow:hidden}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-art>img{width:100%;height:100%;min-height:260px;max-width:100%;object-fit:cover;object-position:center;display:block;margin:0 auto}
.stx-docs-wiki .hero .wrap:has(>.hero-art)>.hero-aside{align-self:stretch;margin-top:0 !important}
}


/* ---- 导航安全区 ---- */
.hdr .pagenav a.on{background:var(--nav-on-bg) !important;border-color:var(--nav-on-bg) !important;color:var(--nav-on-fg) !important}
.hdr .pagenav a.on:hover{background:var(--nav-on-bg) !important;border-color:var(--nav-on-bg) !important;color:var(--nav-on-fg) !important}
