body{margin:0}:root{--paper: #EDF0F3;--surface: #FFFFFF;--ink: #0F1F33;--ink-2: #51627A;--line: #CBD4DE;--mark: #FFD84D;--on-mark: #0F1F33;--signal: #0B7A85;--edge: #0F1F33;--on-ink: #EDF0F3;--band: #0F1F33;--on-band: #EAF0F6;--on-band-2: #A3B3C6;--band-line: rgba(234, 240, 246, .18);--display: "Bricolage Grotesque", "Noto Sans SC", system-ui, sans-serif;--body: "Noto Sans SC", system-ui, -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--nav-h: 56px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #0A1320;--surface: #111F31;--ink: #E8EEF5;--ink-2: #9AABBF;--line: #243449;--mark: #F2C94C;--signal: #4CC3CE;--edge: #2A3E58;--on-ink: #0A1320;--band: #15263C;color-scheme:dark}}:root[data-theme=dark]{--paper: #0A1320;--surface: #111F31;--ink: #E8EEF5;--ink-2: #9AABBF;--line: #243449;--mark: #F2C94C;--signal: #4CC3CE;--edge: #2A3E58;--on-ink: #0A1320;--band: #15263C;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:72px}body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.75}h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance;letter-spacing:-.015em}h2{font-size:clamp(1.7rem,3.6vw,2.6rem);line-height:1.2;font-weight:800}h3{font-size:1.1rem;line-height:1.4;font-weight:700}p{margin:0}a{color:inherit}:focus-visible{outline:3px solid var(--signal);outline-offset:3px;border-radius:3px}.wrap{max-width:1160px;margin-inline:auto;padding-inline:clamp(16px,4vw,32px)}.sec{padding-block:clamp(56px,9vw,104px)}.sec+.sec{border-top:1px solid var(--line)}.lead{font-size:1.1rem;color:var(--ink-2);max-width:36em}.btn{display:inline-flex;align-items:center;justify-content:center;font:700 15px/1 var(--body);padding:14px 20px;border-radius:6px;border:2px solid var(--ink);background:var(--ink);color:var(--on-ink);text-decoration:none;cursor:pointer;transition:transform .15s,box-shadow .15s}.btn:hover{transform:translate(-2px,-2px);box-shadow:3px 3px 0 var(--signal)}.btn.mark{background:var(--mark);border-color:var(--mark);color:var(--on-mark)}.btn.mark:hover{box-shadow:3px 3px 0 var(--on-band)}.btn.ghost{background:transparent;color:var(--ink)}.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;height:var(--nav-h);background:var(--paper);border-bottom:1px solid var(--line)}.nav .wrap{height:100%;display:flex;align-items:center;justify-content:space-between;gap:16px}.cite{font:500 10px/1 var(--mono);border:1px solid currentColor;border-radius:3px;padding:2px 4px;margin-left:3px;vertical-align:.5em}.nav ul{display:flex;gap:26px;list-style:none;margin:0;padding:0;font-size:14px;font-weight:500}.nav ul a{text-decoration:none;color:var(--ink-2)}.nav ul a:hover{color:var(--ink)}.nav .btn{padding:10px 16px;font-size:14px}@media(max-width:820px){.nav ul{display:none}}.crumb{font-size:14px;color:var(--ink-2);margin-bottom:20px}.crumb a{text-underline-offset:3px}.hero{padding-block:clamp(32px,5vw,72px) clamp(48px,7vw,88px)}.hero-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,5vw,64px);align-items:center}.hero h1{font-size:clamp(2.4rem,5.2vw,4rem);line-height:1.1;font-weight:800}.hero .sub{margin-top:20px;font-size:1.25rem;line-height:1.6;max-width:20em;font-weight:500}.hero .lead{margin-top:16px}.hero .cta{display:flex;flex-wrap:wrap;gap:14px 20px;align-items:center;margin-top:30px}.pricetag{font:800 1.2rem/1.3 var(--display)}.pricetag small{display:block;font:400 13px/1.4 var(--body);color:var(--ink-2)}@media(max-width:920px){.hero-grid{grid-template-columns:minmax(0,1fr)}}.demo{background:var(--surface);border:2px solid var(--edge);border-radius:10px;box-shadow:8px 8px 0 var(--edge);min-width:0}.demo-top{display:flex;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);font:400 13px var(--mono);flex-wrap:wrap}.demo-top small{color:var(--signal);font-size:12px}.flow{display:block;width:100%;height:auto;padding:8px 10px}.flow text{font:500 15px var(--body);fill:var(--ink);text-anchor:middle;dominant-baseline:central}.flow .sm{font-size:12px;fill:var(--ink-2)}.flow .box{fill:var(--surface);stroke:var(--ink);stroke-width:2}.flow .src .box{fill:var(--ink)}.flow .src text{fill:var(--on-ink);font-weight:700}.flow .basic .box{stroke:var(--ink-2);stroke-width:1.5}.flow .fin .box{stroke:var(--signal);stroke-width:2.5}.flow .tgt .box{stroke:var(--ink)}.flow .tgt.hit .box{fill:var(--mark);stroke:var(--mark)}.flow .tgt.hit text{fill:var(--on-mark)}.flow .tgt .sm{opacity:0}.flow .tgt.hit .sm{opacity:1;fill:var(--on-mark)}.flow path{fill:none;stroke:var(--line);stroke-width:2}.flow path.on{stroke:var(--signal)}.demo.arm .flow path{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .8s ease}.demo.arm .flow path.on{stroke-dashoffset:0}.demo.arm .flow .node{opacity:0;transition:opacity .4s}.demo.arm .flow .node.on{opacity:1}.flow .tgt .box,.flow .tgt text{transition:fill .4s,stroke .4s}.demo-foot{display:flex;justify-content:space-between;align-items:center;gap:8px 16px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-2)}.demo-foot button{font:500 12px var(--body);color:var(--ink);background:none;border:1px solid var(--line);border-radius:5px;padding:4px 10px;cursor:pointer}.demo-foot button:hover{border-color:var(--ink)}@media(max-width:560px){.demo{box-shadow:5px 5px 0 var(--edge)}}.when h2{margin-bottom:clamp(28px,4vw,44px);max-width:16em}.when-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:28px}.when-grid div{border-top:2px solid var(--ink);padding-top:14px}.when-grid p{color:var(--ink-2);font-size:15px;margin-top:6px}.anatomy-head{display:grid;gap:14px;margin-bottom:clamp(28px,4vw,44px)}.anatomy-note{margin-top:22px;color:var(--ink-2);font-size:15px;max-width:46em}.anatomy-note a{color:var(--ink);font-weight:700;text-underline-offset:3px}.del-head{display:grid;gap:14px;margin-bottom:clamp(28px,4vw,48px)}.mods{border-top:2px solid var(--ink)}.mods details{border-bottom:1px solid var(--line)}.mods summary{cursor:pointer;list-style:none;display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr) 28px;gap:4px 24px;align-items:baseline;padding:18px 0}.mods summary::-webkit-details-marker{display:none}.mods summary h3{font-size:1.2rem;font-weight:800}.mods summary span{color:var(--ink-2);font-size:15px}.mods summary:after{content:"+";font:500 1.5rem var(--mono);justify-self:end;transition:rotate .2s}.mods details[open] summary:after{rotate:45deg}.mods details[open] summary h3{background:linear-gradient(var(--mark),var(--mark)) 0 100% / 100% 40% no-repeat;width:fit-content;color:var(--ink)}.mod-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 40px;padding:4px 0 26px}.mod-body h4{margin:0 0 8px;font:700 14px/1.5 var(--body);color:var(--signal)}.mod-body ul{margin:0;padding:0;list-style:none;display:grid;gap:6px;font-size:15px}.mod-body li{padding-left:16px;position:relative;line-height:1.6}.mod-body li:before{content:"";position:absolute;left:0;top:.7em;width:6px;height:2px;background:var(--ink-2)}@media(max-width:760px){.mods summary{grid-template-columns:minmax(0,1fr) 28px}.mods summary span{grid-column:1;grid-row:2}.mods summary:after{grid-column:2;grid-row:1}.mod-body{grid-template-columns:minmax(0,1fr)}}.chan-head{display:grid;gap:14px;margin-bottom:clamp(28px,4vw,44px)}.chan-wrap{overflow-x:auto;border-top:2px solid var(--ink)}.chan-table{width:100%;border-collapse:collapse;min-width:520px}.chan-table th,.chan-table td{text-align:left;padding:14px 16px 14px 0;border-bottom:1px solid var(--line);vertical-align:baseline}.chan-table th{font:700 13px/1.4 var(--body);color:var(--ink-2)}.chan-table td:first-child{font-weight:700}.chan-table td:nth-child(2){color:var(--ink-2);font-size:14px;white-space:nowrap}.chan-table td:nth-child(3),.chan-table td:nth-child(4),.chan-table th:nth-child(3),.chan-table th:nth-child(4){font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}.chan-table th:nth-child(2),.chan-table td:nth-child(2){width:6.5em}.chan-table th:nth-child(3),.chan-table td:nth-child(3){width:4.5em}.chan-table th:nth-child(4),.chan-table td:nth-child(4){width:7.5em}.chan-note{margin-top:22px;color:var(--ink-2);font-size:15px;max-width:46em}.proc{list-style:none;margin:clamp(28px,4vw,44px) 0 0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));counter-reset:p;border-top:2px solid var(--ink)}.proc li{padding:20px 20px 4px 0;counter-increment:p;position:relative}.proc li:before{content:counter(p);display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--ink);color:var(--on-ink);font:700 14px var(--mono);margin-bottom:14px}.proc li:last-child:before{background:var(--mark);color:var(--on-mark)}.proc h3{font-size:1.02rem}.proc p{margin-top:6px;font-size:14px;color:var(--ink-2);line-height:1.65}@media(max-width:900px){.proc{grid-template-columns:minmax(0,1fr);border-top:0}.proc li{border-top:1px solid var(--line);padding:18px 0 18px 46px}.proc li:before{position:absolute;left:0;top:18px;margin:0}}.price-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(28px,5vw,64px);align-items:start}.price-grid .lead{margin-top:18px}.next{margin-top:28px;font-size:15px;color:var(--ink-2)}.next a{color:var(--ink);font-weight:700;text-underline-offset:3px}.card{background:var(--band);color:var(--on-band);border:1px solid var(--band-line);border-radius:12px;padding:clamp(22px,3vw,34px);min-width:0}.card .kind{font-size:13px;font-weight:700;color:var(--on-band-2)}.card .big{font:800 clamp(1.8rem,3.6vw,2.4rem)/1.2 var(--display);letter-spacing:-.02em;margin:6px 0 4px}.card .note{font-size:14px;color:var(--on-band-2)}.card ul{list-style:none;margin:22px 0 0;padding:0}.card li{padding:11px 0;border-top:1px solid var(--band-line);font-size:15px}@media(max-width:900px){.price-grid{grid-template-columns:minmax(0,1fr)}}.faq{max-width:820px;margin-top:32px;border-top:2px solid var(--ink)}.faq details{border-bottom:1px solid var(--line)}.faq summary{cursor:pointer;list-style:none;padding:20px 36px 20px 0;font-weight:700;font-size:1.05rem;position:relative}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";position:absolute;right:4px;top:50%;translate:0 -50%;font:500 1.5rem var(--mono);transition:rotate .2s}.faq details[open] summary:after{rotate:45deg}.faq details p{padding:0 0 22px;color:var(--ink-2);max-width:40em}.contact{background:var(--band);color:var(--on-band);padding-block:clamp(56px,9vw,104px)}.contact h2{max-width:16em}.contact .lead{color:var(--on-band-2);margin-top:18px}.ask{margin:22px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:8px}.ask li{border:1px solid var(--band-line);border-radius:5px;padding:4px 12px;font-size:14px}.contact-row{display:flex;flex-wrap:wrap;gap:20px;margin-top:28px}.wx{display:flex;align-items:center;gap:14px;border:1px solid var(--band-line);border-radius:8px;padding:10px 10px 10px 18px;min-width:0;flex-wrap:wrap}.wx small{color:var(--on-band-2);font-size:13px}.wx code{font:500 1.05rem var(--mono);user-select:all;overflow-wrap:anywhere}footer{padding-block:28px;font-size:13px;color:var(--ink-2)}footer .wrap{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.btn{transition:none}.demo.arm .flow path,.demo.arm .flow .node{transition:none}}.svcm{position:relative}.svcm summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:8px 4px;font:500 14px var(--body);color:var(--ink-2)}.svcm summary::-webkit-details-marker{display:none}.svcm summary:after{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;rotate:45deg;translate:0 -2px;transition:rotate .2s}.svcm[open] summary:after{rotate:-135deg;translate:0 2px}.svcm summary:hover,.svcm[open] summary{color:var(--ink)}.svcm-panel{position:absolute;top:calc(100% + 12px);right:0;z-index:30;width:min(560px,calc(100vw - 32px));background:var(--surface);color:var(--ink);border:2px solid var(--edge);border-radius:10px;box-shadow:6px 6px 0 var(--edge);padding:18px 22px 16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 28px}.svcm-panel h4{margin:0 0 4px;font:700 12px/1.5 var(--body);color:var(--ink-2)}.svcm-panel a{display:block;padding:5px 0;font-size:14.5px;line-height:1.5;text-decoration:none;color:var(--ink)}.svcm-panel a:hover{text-decoration:underline;text-decoration-color:var(--mark);text-decoration-thickness:3px;text-underline-offset:4px}.svcm-panel a[aria-current]{font-weight:700}.svcm-panel .full{grid-column:1 / -1;padding-bottom:8px;border-bottom:1px solid var(--line)}@media(max-width:640px){.svcm-panel{position:fixed;left:16px;right:16px;width:auto;top:calc(var(--nav-h) + env(safe-area-inset-top,0px) + 8px);grid-template-columns:minmax(0,1fr);max-height:calc(100vh - var(--nav-h) - 40px);overflow-y:auto}}.svcm-panel .row{display:flex;gap:24px}.soc{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px}footer .soc a{color:var(--ink);text-underline-offset:3px}footer .soc code{font-family:var(--mono);user-select:all}.follow{margin:18px 0 0;font-size:15px;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:4px 16px;align-items:baseline}.follow b{color:var(--ink)}.follow a{color:var(--ink);font-weight:700;text-underline-offset:3px}.follow code{font:500 14px var(--mono);color:var(--ink);user-select:all}
