:root{--header-h:62px;--sidebar-w:292px;--rail-w:220px;--bg:#f7f5f0;--bg-soft:#fffdf9;--surface:#fff;--surface-2:#f2efe8;--line:#e4dfd4;--line-strong:#d3ccbc;--ink:#1b1a18;--ink-2:#3b3833;--muted:#6f6a60;--faint:#948d80;--accent:#0f766e;--accent-ink:#0b4f4a;--accent-soft:#e6f3f1;--accent-line:#bcdcd8;--table-head:#0f766e;--table-head-ink:#fff;--amber:#b45309;--amber-soft:#fdf4e7;--amber-line:#f0d9b5;--violet:#7c3aed;--radius:14px;--radius-sm:9px;--shadow-sm:0 1px 2px rgba(28,26,23,.06),0 1px 3px rgba(28,26,23,.04);--shadow:0 4px 16px rgba(28,26,23,.07),0 1px 4px rgba(28,26,23,.05);--shadow-lg:0 18px 48px rgba(28,26,23,.16);--font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Source Han Sans SC","Noto Sans CJK SC",sans-serif;--mono:"JetBrains Mono","Cascadia Code","SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace}[data-theme=dark]{--bg:#121417;--bg-soft:#16191d;--surface:#1a1e23;--surface-2:#21262c;--line:#2b3138;--line-strong:#3a424b;--ink:#ecebe8;--ink-2:#cfcdc8;--muted:#9aa2ad;--faint:#78828e;--accent:#34d3c0;--accent-ink:#7ff0e2;--accent-soft:#16302e;--accent-line:#245c56;--table-head:#115e59;--table-head-ink:#ecfdf5;--amber:#f0b264;--amber-soft:#332614;--amber-line:#5c4423;--shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow:0 6px 20px rgba(0,0,0,.45);--shadow-lg:0 22px 60px rgba(0,0,0,.6)}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15.5px;line-height:1.75;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}img{max-width:100%}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--faint);background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.progress{position:fixed;inset:0 auto auto 0;height:3px;background:linear-gradient(90deg,var(--accent),var(--amber));z-index:60;transition:width .1s linear}.topbar{position:fixed;inset:0 0 auto 0;height:var(--header-h);gap:12px;padding:0 18px;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid var(--line);z-index:50}.topbar,.topbar__brand{display:flex;align-items:center}.topbar__brand{gap:10px;font-weight:700;color:var(--ink);letter-spacing:-.01em;white-space:nowrap;min-width:0}.topbar__brandtext{min-width:0;overflow:hidden}.topbar__brand:hover{text-decoration:none}.topbar__mark{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(140deg,var(--accent),var(--accent-ink));color:#fff;font-size:16px;box-shadow:var(--shadow-sm)}.topbar__title{font-size:15px}.topbar__sub{font-size:11.5px;color:var(--faint);font-weight:500;letter-spacing:.02em}.topbar__spacer{flex:1 1}.topbar__actions{display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 13px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;transition:.16s ease;white-space:nowrap}.btn:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--shadow-sm);text-decoration:none}.btn--primary{background:linear-gradient(135deg,var(--accent),var(--accent-ink));border-color:transparent;color:#fff}.btn--ghost{background:transparent;border-color:transparent}.btn--ghost:hover{background:var(--surface-2);transform:none;box-shadow:none}.btn--icon{width:36px;padding:0;justify-content:center}.btn--icon svg{width:15px;height:15px;display:block}.btn__kbd{font-size:11px;padding:1px 5px;border-radius:5px;border:1px solid var(--line);background:var(--surface-2);color:var(--faint);font-family:var(--mono)}.topbar__menu{display:none}.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);padding-top:var(--header-h);min-height:100vh}.sidebar{position:-webkit-sticky;position:sticky;top:var(--header-h);height:calc(100vh - var(--header-h));overflow-y:auto;border-right:1px solid var(--line);background:var(--bg-soft);padding:18px 14px 60px}.sidebar__group{margin-bottom:18px}.sidebar__label{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);font-weight:700;padding:0 10px 8px}.navlink{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:9px;color:var(--ink-2);font-size:13.8px;line-height:1.4;border-left:2px solid transparent;transition:.14s ease}.navlink:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.navlink.is-active{background:var(--accent-soft);color:var(--accent-ink);border-left-color:var(--accent);font-weight:600}.navlink__icon{font-size:11.5px;flex:none;width:22px;height:22px;display:grid;place-items:center;border-radius:7px;background:transparent;border:1px solid transparent;line-height:1;transition:.14s ease}.navlink:hover .navlink__icon{background:var(--surface);border-color:var(--line)}.navlink.is-active .navlink__icon{background:var(--surface);border-color:var(--accent-line)}.navlink__count{margin-left:auto;font-size:11px;color:var(--faint);background:var(--surface-2);border-radius:99px;padding:1px 7px;font-weight:600}.navlink--sub{font-size:13px;padding:6px 10px 6px 30px;color:var(--muted);border-left-color:transparent}.navlink--sub.is-active{color:var(--accent-ink)}.main{display:grid;grid-template-columns:minmax(0,1fr) var(--rail-w);grid-gap:40px;gap:40px;max-width:1240px;padding:34px 40px 120px;width:100%}.shell__body{min-width:0;display:flex;flex-direction:column}.main--solo{grid-template-columns:minmax(0,1fr);max-width:1000px;margin-inline:auto}.rail{position:-webkit-sticky;position:sticky;top:calc(var(--header-h) + 34px);align-self:start;max-height:calc(100vh - var(--header-h) - 80px);overflow-y:auto;font-size:13px}.rail__label{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);font-weight:700;margin-bottom:10px}.rail a{display:block;padding:5px 0 5px 12px;color:var(--muted);border-left:2px solid var(--line);line-height:1.45}.rail a:hover{color:var(--ink);border-left-color:var(--line-strong);text-decoration:none}.rail a.is-active{color:var(--accent-ink);border-left-color:var(--accent);font-weight:600}.pagehead{margin-bottom:34px;padding-bottom:22px;border-bottom:1px solid var(--line)}.pagehead__eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);padding:4px 11px;border-radius:99px;margin-bottom:14px}.pagehead h1{font-size:34px;line-height:1.28;margin:0 0 10px;letter-spacing:-.02em;color:var(--ink)}.pagehead p{margin:0;color:var(--muted);font-size:15px}.hero{position:relative;overflow:hidden;border-radius:22px;padding:54px 44px 46px;margin-bottom:40px;background:radial-gradient(1200px 420px at 12% -10%,var(--accent-soft),transparent 62%),radial-gradient(800px 320px at 96% 6%,var(--amber-soft),transparent 60%),var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}.hero__badge{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:var(--accent-ink);background:var(--surface);border:1px solid var(--accent-line);padding:5px 12px;border-radius:99px;margin-bottom:20px;box-shadow:var(--shadow-sm)}.hero h1{font-size:clamp(30px,4.4vw,50px);line-height:1.16;letter-spacing:-.03em;margin:0 0 16px;max-width:20ch}.hero h1 .grad{background:linear-gradient(120deg,var(--accent),var(--amber));-webkit-background-clip:text;background-clip:text;color:transparent}.hero p.lead{font-size:17px;color:var(--ink-2);max-width:62ch;margin:0 0 28px}.hero__cta{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:32px}.hero__cta .btn{height:44px;padding:0 20px;font-size:14.5px;border-radius:12px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.stat{background:var(--surface);padding:15px 16px}.stat__v{font-size:23px;font-weight:800;letter-spacing:-.02em;color:var(--accent-ink);line-height:1.2}.stat__k{font-size:12px;color:var(--muted);margin-top:2px}.section-title{display:flex;align-items:baseline;gap:12px;margin:42px 0 18px}.section-title h2{font-size:21px;margin:0;letter-spacing:-.01em}.section-title span{color:var(--faint);font-size:13px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:16px;gap:16px}.card{display:flex;flex-direction:column;gap:10px;padding:20px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);position:relative;overflow:hidden}.card,.card:after{transition:.18s ease}.card:after{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--accent),transparent);opacity:0}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line-strong);text-decoration:none}.card:hover:after{opacity:1}.card__top{display:flex;align-items:center;gap:11px}.card__icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-size:19px;background:var(--accent-soft);border:1px solid var(--accent-line);flex:none}.card h3{margin:0;font-size:16.5px;color:var(--ink);letter-spacing:-.01em}.card__blurb{color:var(--muted);font-size:13.6px;line-height:1.62;margin:0}.card__list{margin:4px 0 0;list-style:none;display:flex;flex-direction:column;gap:4px;border-top:1px dashed var(--line);padding:10px 0 0}.card__list li{font-size:12.8px;color:var(--muted);display:flex;gap:7px}.card__list li:before{content:"›"}.card__list li:before,.card__more{color:var(--accent);font-weight:700}.card__more{margin-top:auto;padding-top:10px;font-size:13px}.quickstart{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:14px;gap:14px;margin-top:8px}.qs{border:1px dashed var(--line-strong);border-radius:var(--radius);padding:18px;background:var(--bg-soft)}.qs__n{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:8px;background:var(--accent);color:#fff;font-size:12.5px;font-weight:800;margin-bottom:9px}.qs h4{margin:0 0 6px;font-size:14.5px}.qs p{margin:0;font-size:13px;color:var(--muted)}.prose{max-width:78ch;color:var(--ink-2)}.prose>:first-child{margin-top:0}.anchor-target,.prose [id]{scroll-margin-top:calc(var(--header-h) + 22px)}.prose h2,.prose h3,.prose h4{color:var(--ink);line-height:1.4;letter-spacing:-.01em;position:relative}.prose h2{font-size:24px;margin:46px 0 16px;padding-bottom:10px;border-bottom:1px solid var(--line)}.prose h3{font-size:18.5px;margin:34px 0 12px;padding-left:12px;border-left:3px solid var(--amber)}.prose h4{font-size:16px;margin:26px 0 10px}.prose .hanchor{position:absolute;left:-.72em;color:var(--faint);opacity:0;font-weight:400;text-decoration:none;transition:.15s}.prose h2:hover .hanchor,.prose h3:hover .hanchor,.prose h4:hover .hanchor{opacity:1}.prose p{margin:0 0 15px}.prose h2+p,.prose h3+p{margin-top:0}.prose strong{color:var(--ink);font-weight:700}.prose ol,.prose ul{margin:0 0 16px;padding-left:22px}.prose li{margin:6px 0}.prose li::marker{color:var(--accent)}.prose li.is-task{list-style:none;display:flex;gap:9px;align-items:flex-start;margin-left:-22px}.taskbox{flex:none;width:17px;height:17px;border-radius:5px;border:1.5px solid var(--line-strong);display:grid;place-items:center;font-size:11px;margin-top:4px;color:#fff}.taskbox.is-done{background:var(--accent);border-color:var(--accent)}.prose a{color:var(--accent);font-weight:500;border-bottom:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}.prose a:hover{border-bottom-color:var(--accent);text-decoration:none}.prose code.inline{font-family:var(--mono);font-size:.87em;padding:2px 6px;border-radius:6px;background:var(--amber-soft);border:1px solid var(--amber-line);color:var(--amber);font-weight:600;white-space:nowrap}.prose hr{border:0;border-top:1px solid var(--line);margin:36px 0}.part-intro{margin-bottom:30px;padding:4px 0 22px;border-bottom:1px dashed var(--line)}.part-intro .callout{margin-top:0}.part-intro>p:first-child{font-size:16px;color:var(--ink)}.callout{margin:20px 0;padding:16px 18px;border-radius:var(--radius-sm);border:1px solid var(--accent-line);border-left:4px solid var(--accent);background:var(--accent-soft)}.callout--warn{border-color:var(--amber-line);border-left-color:var(--amber);background:var(--amber-soft)}.callout>:last-child{margin-bottom:0}.callout>:first-child{margin-top:0}.callout p{color:var(--ink-2)}.callout ul{margin-bottom:0}.callout .cb{margin:12px 0 0}.tablewrap{margin:22px 0;border:1px solid var(--line);border-radius:var(--radius);overflow:auto;background:var(--surface);box-shadow:var(--shadow-sm);max-height:70vh}.tablewrap table{border-collapse:separate;border-spacing:0;width:100%;font-size:13.6px;min-width:520px}.tablewrap th{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:var(--table-head);color:var(--table-head-ink);text-align:left;font-weight:700;padding:11px 14px;white-space:nowrap;border-bottom:1px solid color-mix(in srgb,var(--table-head) 70%,#000)}.tablewrap td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top;line-height:1.62}.tablewrap td:last-child,.tablewrap th:last-child{min-width:6.5em}.tablewrap tbody tr:nth-child(2n){background:var(--surface-2)}.tablewrap tbody tr:hover{background:var(--accent-soft)}.tablewrap tbody tr:last-child td,.tablewrap td a{border-bottom:0}.ta-center{text-align:center}.ta-right{text-align:right}.tablewrap td code.inline{white-space:normal}.cb{margin:20px 0;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2);box-shadow:var(--shadow-sm)}.cb__bar{display:flex;align-items:center;justify-content:space-between;padding:7px 12px;background:color-mix(in srgb,var(--surface-2) 70%,var(--line));border-bottom:1px solid var(--line)}.cb__lang{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:700}.cb__copy{font:inherit;font-size:12px;font-weight:600;color:var(--muted);background:transparent;border:1px solid transparent;border-radius:7px;padding:3px 9px;cursor:pointer;transition:.15s}.cb__copy:hover{color:var(--accent);background:var(--surface);border-color:var(--line)}.cb__copy.is-done{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.cb pre{margin:0;padding:14px 16px;overflow-x:auto;font-size:12.9px;line-height:1.72}.cb code,.cb pre{font-family:var(--mono)}.cb code{white-space:pre}.hljs-comment,.hljs-quote{color:var(--faint);font-style:italic}.hljs-keyword,.hljs-link,.hljs-literal,.hljs-section,.hljs-selector-tag{color:var(--violet);font-weight:600}.hljs-addition,.hljs-attr,.hljs-regexp,.hljs-string{color:var(--accent)}.hljs-built_in,.hljs-meta,.hljs-number,.hljs-template-variable,.hljs-variable{color:var(--amber)}.hljs-function .hljs-title,.hljs-name,.hljs-selector-class,.hljs-selector-id,.hljs-title{color:#2563eb;font-weight:600}[data-theme=dark] .hljs-name,[data-theme=dark] .hljs-selector-class,[data-theme=dark] .hljs-selector-id,[data-theme=dark] .hljs-title{color:#7cb8ff}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-deletion{color:#dc2626}.pager{display:flex;justify-content:space-between;gap:14px;margin-top:56px;padding-top:26px;border-top:1px solid var(--line)}.pager__item{flex:1 1;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;background:var(--surface);transition:.16s}.pager__item:hover{border-color:var(--accent-line);box-shadow:var(--shadow-sm);transform:translateY(-2px);text-decoration:none}.pager__k{font-size:11.5px;color:var(--faint);font-weight:700;text-transform:uppercase;letter-spacing:.08em}.pager__t{font-size:14.5px;font-weight:700;color:var(--ink);margin-top:3px}.pager__item--next{text-align:right}.footer{margin-top:60px;padding:26px 40px 40px;border-top:1px solid var(--line);color:var(--faint);font-size:12.8px;display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center}.footer a{color:var(--muted)}.overlay{position:fixed;inset:0;background:rgba(20,18,16,.44);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:80;display:grid;align-items:start;justify-items:center;padding:12vh 18px 18px}.searchbox{width:min(720px,100%);background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);overflow:hidden;animation:pop .16s ease}@keyframes pop{0%{transform:translateY(-8px) scale(.985);opacity:0}}.searchbox__input{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line)}.searchbox__input input{flex:1 1;border:0;background:transparent;font:inherit;font-size:16px;color:var(--ink);outline:none}.searchbox__hint{font-size:11.5px;color:var(--faint);font-family:var(--mono)}.searchbox__results{max-height:56vh;overflow-y:auto;padding:8px}.hit{display:block;padding:11px 14px;border-radius:11px;color:var(--ink)}.hit.is-cursor,.hit:hover{background:var(--accent-soft);text-decoration:none}.hit__top{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--faint);margin-bottom:3px}.hit__title{font-weight:700;font-size:14.5px;color:var(--ink)}.hit__snip{font-size:12.8px;color:var(--muted);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hit mark{background:color-mix(in srgb,var(--amber) 28%,transparent);color:inherit;border-radius:3px;padding:0 2px}.searchbox__empty{padding:34px 18px;text-align:center;color:var(--faint);font-size:13.5px}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(10px);background:var(--ink);color:var(--bg);padding:9px 18px;border-radius:99px;font-size:13px;font-weight:600;opacity:0;pointer-events:none;transition:.2s ease;z-index:90;box-shadow:var(--shadow-lg)}.toast.is-on{opacity:1;transform:translateX(-50%) translateY(0)}.drawer-bg{display:none}[data-theme=dark] .hero h1{color:#cbd5e1}[data-theme=dark] .hero h1 .grad{background:linear-gradient(120deg,#5eead4,#fbbf24);-webkit-background-clip:text;background-clip:text;color:transparent}@media (max-width:1180px){.main{grid-template-columns:minmax(0,1fr)}.rail{display:none}}@media (max-width:900px){.shell{grid-template-columns:minmax(0,1fr)}.topbar__menu{display:inline-flex}.topbar__sub{display:none}.sidebar{position:fixed;top:var(--header-h);left:0;width:min(86vw,var(--sidebar-w));z-index:70;transform:translateX(-102%);transition:transform .24s cubic-bezier(.32,.72,0,1);box-shadow:var(--shadow-lg)}.sidebar[data-open=true]{transform:none}.drawer-bg{display:block;position:fixed;inset:var(--header-h) 0 0 0;background:rgba(20,18,16,.4);z-index:65;opacity:0;pointer-events:none;transition:.2s}.drawer-bg[data-open=true]{opacity:1;pointer-events:auto}.main{padding:22px 18px 90px}.hero{padding:34px 22px 30px;border-radius:18px}.pagehead h1{font-size:26px}.footer{padding:22px 18px 40px}}@media (max-width:620px){.hide-sm{display:none!important}.btn__kbd,.btn__label{display:none}.topbar{padding:0 12px;gap:8px}.topbar__brand{flex:1 1 auto;min-width:0;overflow:hidden}.topbar__title{display:block;overflow:hidden;text-overflow:ellipsis;font-size:13.5px}.topbar__spacer,.topbar__sub{display:none}.topbar__actions{flex:0 0 auto}.hero{padding:26px 16px 24px}.hero h1,.hero p.lead,.hero__badge{overflow-wrap:anywhere}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat:last-child{grid-column:1/-1}.stat__v{font-size:20px}.main{padding:18px 14px 80px}}@media print{.cb__copy,.footer,.pager,.progress,.rail,.sidebar,.topbar{display:none!important}.main,.shell{display:block;padding:0;max-width:none}.tablewrap{max-height:none;box-shadow:none}body{background:#fff;font-size:11.5pt}.prose h2{page-break-after:avoid}}