@font-face{font-family:system-local;src:local("SF Pro Display")}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{--bg:#fff;--canvas:#faf8f5;--ink:#292725;--muted:#77736d;--line:#e9e5df;--soft:#f4f1ec;--accent:#b84e24;--accent-bg:#fff0e5;--code:#252825;margin:0;background:var(--bg);color:var(--ink);font-family:system-local,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}body.dark{--bg:#1c1e1c;--canvas:#21231f;--ink:#e5e4dc;--muted:#a1a297;--line:#363931;--soft:#2a2d27;--accent:#efa57b;--accent-bg:#3a2c23;--code:#141714}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer;color:inherit}button,a,input{outline-offset:4px}button{border:0}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent)}.topbar{height:72px;position:fixed;inset:0 0 auto;z-index:40;background:var(--bg);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 30px}.brand{display:flex;align-items:center;gap:11px;white-space:nowrap;min-width:222px}.brand img{width:38px;height:38px}.brand strong{font-size:25px;letter-spacing:-1px}.brand-sub{font-size:13px;color:var(--muted)}.brand-divider{width:1px;height:18px;background:var(--line);margin:0 2px 0 6px}.search-trigger{display:flex;align-items:center;gap:10px;max-width:400px;width:100%;height:37px;padding:0 12px;background:var(--canvas);border:1px solid var(--line);border-radius:7px;color:var(--muted);text-align:left;font-size:12px}.search-symbol{font-size:23px;line-height:1}.search-trigger kbd{margin-left:auto}kbd{font:11px ui-monospace,SFMono-Regular,monospace;border:1px solid var(--line);border-radius:4px;padding:1px 5px;background:var(--bg);color:var(--muted)}.header-links{display:flex;gap:20px;margin-left:auto;align-items:center;white-space:nowrap}.version{font:11px ui-monospace,monospace;color:var(--muted);background:var(--soft);padding:3px 9px;border-radius:4px}.repository-link{font-size:12px}.repository-link span{color:var(--muted);padding-left:5px}.icon-button{width:32px;height:32px;background:transparent;border-radius:5px;font-size:21px}.icon-button:hover{background:var(--soft)}.sidebar{position:fixed;left:0;top:72px;bottom:0;width:250px;background:var(--canvas);border-right:1px solid var(--line);overflow-y:auto;padding:27px 17px 20px;z-index:30}.nav-home{display:flex;gap:11px;padding:9px 13px;border-radius:5px;font-weight:600;font-size:13px}.nav-home span{font-size:19px;line-height:1.2}.nav-group{margin-top:25px}.nav-group h2{font-size:10px;letter-spacing:1.8px;font-weight:600;color:var(--muted);margin:0 13px 8px;text-transform:uppercase}.nav-link{display:flex;align-items:center;gap:10px;border-radius:5px;padding:7px 13px;font-size:12px;color:var(--muted);margin:2px 0;line-height:1.6}.nav-link:hover,.nav-home:hover{background:var(--soft);color:var(--ink)}.nav-link.active,.nav-home.active{background:var(--accent-bg);color:var(--accent);font-weight:600}.nav-link.active:before{content:"";width:4px;height:4px;border-radius:50%;background:var(--accent);margin-left:-8px}.nav-number{font:10px ui-monospace,monospace;color:var(--muted);opacity:.65;min-width:17px}.sidebar-bottom{border-top:1px solid var(--line);margin:28px 12px 0;padding-top:18px;color:var(--muted);font-size:10px}.sidebar-bottom small{display:block;padding-left:14px;margin-top:2px}.status-dot{display:inline-block;background:#7a8e6f;height:5px;width:5px;border-radius:50%;margin-right:7px}main{margin-left:250px;padding-top:72px;min-height:100vh}.home-content{max-width:1330px;margin:auto;padding:44px 54px 0}.eyebrow{font:10px ui-monospace,monospace;letter-spacing:2px;color:var(--accent);display:flex;gap:10px;align-items:center}.eyebrow:before{content:"";width:22px;height:1px;background:var(--accent)}.hero{display:grid;grid-template-columns:1.08fr 1fr;gap:36px;padding:27px 0 43px;align-items:center}.hero h1{font-size:clamp(34px,3.4vw,53px);letter-spacing:-1.8px;font-weight:650;line-height:1.22;margin:18px 0 22px}.hero h1 em{font-style:normal;color:var(--accent)}.hero-description{max-width:410px;font-size:14px;line-height:1.95;color:var(--muted);margin-bottom:27px}.hero-actions{display:flex;gap:17px;align-items:center}.primary-button{background:var(--ink);color:var(--bg);border-radius:5px;font-size:12px;padding:11px 17px;font-weight:550}.primary-button span{padding-left:15px}.text-link{font-size:12px;color:var(--muted)}.text-link:hover{color:var(--accent)}.platforms{display:flex;gap:15px;margin-top:20px;color:var(--muted);font:10px ui-monospace,monospace}.hero-visual{position:relative;min-width:0;padding-top:10px}.console{background:#262b27;border:1px solid #384037;border-radius:9px;box-shadow:0 18px 40px #25282213;transform:rotate(-1deg);overflow:hidden;color:#dde4d8}.console-title{display:flex;align-items:center;gap:5px;border-bottom:1px solid #3a4038;padding:13px 15px;font:9px ui-monospace,monospace;letter-spacing:1px}.console-title i{width:5px;height:5px;background:#778072;border-radius:50%}.console-title span{margin-left:9px}.console-title b{margin-left:auto;color:#a9c694;font-size:8px;font-weight:400}.console-body{padding:21px 18px 23px;font:10px/2.65 ui-monospace,SFMono-Regular,monospace}.console-line{display:flex;gap:10px;white-space:nowrap}.console-line time{color:#858f7d}.console-line .tag{color:#b8c8aa;min-width:43px}.console-line .warn{color:#efb584}.console-line .body-copy{overflow:hidden;text-overflow:ellipsis}.console-highlight{border-left:2px solid #d49c70;padding-left:10px;margin-left:-12px;background:#d49c700d}.console-note{display:flex;gap:7px;align-items:center;margin-top:16px;padding-top:10px;border-top:1px solid #3b4137;color:#a8b79b;font-size:9px}.visual-caption{font-size:9px;color:var(--muted);text-align:right;margin-top:12px;letter-spacing:.8px}.starter-strip{display:flex;gap:17px;align-items:center;background:var(--canvas);border:1px solid var(--line);border-radius:6px;padding:16px 20px;margin-bottom:40px}.strip-icon{width:30px;height:30px;background:var(--accent-bg);color:var(--accent);border-radius:6px;display:grid;place-items:center;font-size:15px}.starter-strip p{margin:0;font-size:12px;color:var(--muted)}.starter-strip strong{color:var(--ink);font-size:13px;margin-right:12px}.starter-strip a{font-size:11px;margin-left:auto;white-space:nowrap;color:var(--accent)}.section-heading{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:18px}.section-heading h2{font-size:21px;font-weight:600;letter-spacing:-.6px;margin:0}.section-heading span{font:10px ui-monospace,monospace;color:var(--muted)}.path-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:42px}.path-card{padding:23px 22px 22px 0;position:relative}.path-card+.path-card{padding-left:22px;border-left:1px solid var(--line)}.path-card .index{color:var(--accent);font:10px ui-monospace,monospace}.path-card h3{font-size:15px;font-weight:600;margin:12px 0 6px}.path-card p{font-size:12px;line-height:1.85;color:var(--muted);margin:0 0 17px}.path-card .path-links{display:flex;flex-wrap:wrap;gap:7px 12px}.path-card a{font-size:11px;text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--line)}.path-card a:hover{color:var(--accent)}.module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 27px;margin-bottom:33px}.module-link{display:flex;gap:15px;padding:17px 0;border-bottom:1px solid var(--line);align-items:center}.module-glyph{width:35px;height:35px;flex-shrink:0;background:var(--canvas);border:1px solid var(--line);border-radius:7px;display:grid;place-items:center;font:15px ui-monospace,monospace;color:var(--muted)}.module-link h3{font-size:13px;margin:0 0 2px;font-weight:600}.module-link p{color:var(--muted);font-size:11px;margin:0}.module-link .arrow{margin-left:auto;color:var(--muted);transition:transform .15s}.module-link:hover .arrow{transform:translateX(3px);color:var(--accent)}.module-link:hover h3{color:var(--accent)}.home-bottom{display:grid;grid-template-columns:1fr 1fr;gap:30px;padding:16px 0 38px}.bottom-link{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}.bottom-link strong{display:block;color:var(--ink);font-size:13px;margin-bottom:4px}.site-footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:10px;color:var(--muted);padding:23px 0 28px}.site-footer a:hover{color:var(--accent)}.article-layout{max-width:1240px;margin:auto;padding:44px 50px;display:grid;grid-template-columns:minmax(0,780px) 165px;gap:45px}.article-top{font-size:11px;color:var(--muted);display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.article-top button{background:none;color:var(--muted);font-size:11px}.article-title{font-size:34px;letter-spacing:-1px;line-height:1.35;font-weight:650;margin:0 0 17px}.article-meta{font:10px ui-monospace,monospace;color:var(--muted);padding-bottom:27px;border-bottom:1px solid var(--line);margin-bottom:30px}.prose{font-size:14px;line-height:1.95;overflow-wrap:anywhere}.prose h3{font-size:21px;font-weight:600;line-height:1.5;margin:40px 0 16px;letter-spacing:-.4px;scroll-margin-top:105px}.prose h3:first-child{margin-top:0}.prose h4{font-size:16px;margin:28px 0 12px}.prose p{margin:16px 0;color:var(--ink)}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--accent),transparent 65%)}.prose ul,.prose ol{padding-left:23px;margin:17px 0}.prose li{padding-left:3px;margin:6px 0}.prose li::marker{color:var(--accent);font-weight:600}.prose strong{font-weight:600}.prose code{font:12px/1.65 ui-monospace,SFMono-Regular,monospace;background:var(--soft);padding:3px 5px;border-radius:4px}.code-wrap{position:relative}.prose pre{padding:22px 20px;border-radius:7px;background:var(--code);color:#e2e8dc;overflow-x:auto;line-height:1.8;margin:22px 0}.prose pre code{padding:0;background:none;color:inherit;white-space:pre;font-size:12px}.copy-code{position:absolute;right:9px;top:9px;background:#ffffff13;color:#cad3c4;padding:4px 8px;border:1px solid #ffffff25;border-radius:4px;font-size:10px}.table-wrap{overflow-x:auto;margin:22px 0;border:1px solid var(--line);border-radius:6px}.prose table{border-collapse:collapse;width:100%;font-size:12px;line-height:1.8}.prose th{background:var(--canvas);text-align:left;font-weight:600;white-space:nowrap}.prose th,.prose td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}.prose tbody tr:last-child td{border-bottom:0}.prose td:first-child{min-width:110px}.prose blockquote{margin:22px 0;padding:2px 18px;border-left:3px solid var(--accent);background:var(--canvas);color:var(--muted)}.toc{align-self:start;position:sticky;top:111px;font-size:11px;border-left:1px solid var(--line);padding-left:17px;max-height:calc(100vh - 150px);overflow:auto}.toc-label{color:var(--ink);font-weight:600;margin-bottom:14px}.toc a{display:block;color:var(--muted);padding:5px 0;line-height:1.65}.toc a:hover,.toc a.active{color:var(--accent)}.toc-actions{border-top:1px solid var(--line);padding-top:12px;margin-top:18px}.pager{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-top:1px solid var(--line);padding-top:24px;margin-top:46px}.pager a{padding:12px 0}.pager a:last-child{text-align:right}.pager small{display:block;color:var(--muted);font-size:10px;margin-bottom:4px}.pager strong{font-size:13px;font-weight:500}.pager a:hover strong{color:var(--accent)}.article-aside-note{padding:13px 16px;margin:18px 0 25px;background:var(--accent-bg);font-size:12px;color:var(--accent);border-radius:5px}dialog{width:min(650px,calc(100% - 28px));padding:0;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:0 20px 100px #0004;top:12vh;margin:0 auto;max-height:75vh}dialog::backdrop{background:#15171266;backdrop-filter:blur(3px)}.search-input-row{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding:16px 19px}.search-input-row>span{font-size:26px;color:var(--muted)}.search-input-row input{flex:1;width:0;font-size:15px;background:none;color:var(--ink);border:0;outline:none;min-height:30px}.esc-button{background:var(--soft);border:1px solid var(--line);color:var(--muted);font:10px ui-monospace,monospace;border-radius:4px;padding:4px 6px}.search-results{padding:10px;max-height:50vh;overflow:auto}.search-result{display:block;border-radius:5px;padding:12px 14px}.search-result.selected,.search-result:hover{background:var(--soft)}.search-result strong{font-size:13px;display:block;margin-bottom:4px}.search-result p{font-size:11px;color:var(--muted);margin:0;line-height:1.8}.search-result mark{background:var(--accent-bg);color:var(--accent)}.empty-search{padding:22px 15px;color:var(--muted);font-size:13px}.search-footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:11px 18px;color:var(--muted);font-size:10px}.search-footer kbd{margin:0 3px}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);background:var(--ink);color:var(--bg);padding:9px 18px;border-radius:6px;font-size:12px;opacity:0;pointer-events:none;transition:.2s;z-index:70}.toast.show{opacity:1;transform:translate(-50%,0)}.mobile-menu,.mobile-shade{display:none}.skip-link{position:fixed;top:-60px;left:20px;background:var(--ink);color:var(--bg);padding:10px;z-index:100}.skip-link:focus{top:8px}.sr-only{position:absolute;clip:rect(0,0,0,0);height:1px;width:1px;overflow:hidden} @media(min-width:1600px){.home-content{padding-top:60px}.hero{padding-top:40px;padding-bottom:60px}.hero h1{font-size:59px}}@media(max-width:1200px){.topbar{padding:0 22px;gap:20px}.brand{min-width:202px}.sidebar{width:225px}.home-content{padding:35px 34px 0}main{margin-left:225px}.hero{gap:23px}.hero h1{font-size:37px}.console-body{font-size:9px;padding:19px 12px}.console-line{gap:7px}.article-layout{padding:36px 33px;gap:30px;grid-template-columns:minmax(0,1fr) 140px}.header-links{gap:12px}}@media(max-width:1020px){.hero{grid-template-columns:1fr}.hero-visual{max-width:600px}.hero h1 br{display:none}.hero h1{font-size:42px}.hero-description{max-width:600px}.console-body{font-size:11px}.article-layout{display:block}.toc{display:none}.search-trigger{max-width:300px}.repository-link{display:none}.starter-strip strong{display:block}.path-grid{grid-template-columns:1fr}.path-card+.path-card{border-left:0;border-top:1px solid var(--line);padding-left:0}.path-card{padding:19px 0}.path-card p{margin-bottom:12px}.home-bottom{grid-template-columns:1fr;gap:25px}.module-grid{grid-template-columns:1fr}.home-content{max-width:850px}}@media(max-width:760px){.topbar{height:62px;padding:0 14px;gap:10px}.mobile-menu{display:block;font-size:18px;flex-shrink:0}.brand{min-width:0;gap:7px}.brand img{width:31px;height:31px}.brand strong{font-size:22px}.brand-sub,.brand-divider{display:none}.search-trigger{width:34px;min-width:34px;margin-left:auto;padding:0;justify-content:center;background:none;border:0}.search-trigger>span:not(.search-symbol),.search-trigger kbd{display:none}.header-links{margin-left:0;gap:7px}.version{font-size:9px;padding:3px 6px}.sidebar{top:62px;width:265px;transform:translateX(-100%);transition:transform .2s}.menu-open .sidebar{transform:translateX(0)}.mobile-shade{position:fixed;inset:62px 0 0;z-index:25;background:#0005}.menu-open .mobile-shade{display:block}main{margin-left:0;padding-top:62px}.home-content{padding:29px 24px 0}.hero{padding:15px 0 28px;gap:25px}.hero h1{font-size:39px;letter-spacing:-1.5px}.hero-description{font-size:13px}.hero-actions{gap:18px}.console-body{font-size:10px}.starter-strip{padding:14px;gap:11px;align-items:flex-start;margin-bottom:30px}.starter-strip p{font-size:11px}.starter-strip a{font-size:0}.starter-strip a::after{content:"↗";font-size:16px}.strip-icon{flex-shrink:0}.section-heading h2{font-size:19px}.section-heading span{font-size:9px}.article-layout{padding:28px 23px}.article-title{font-size:30px}.prose{font-size:13px}.prose h3{font-size:20px}.prose td,.prose th{padding:10px}.prose table{min-width:470px}.prose code{font-size:11px}.article-top{font-size:10px}.site-footer{font-size:9px}.search-footer{font-size:9px}.search-footer kbd{margin:0 1px}dialog{top:8vh}.pager{gap:12px}.pager strong{font-size:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media print{.topbar,.sidebar,.toc,.pager,.article-top button,.copy-code,.search-trigger{display:none!important}main{margin:0;padding:0}.article-layout{display:block;padding:0}.prose pre{white-space:pre-wrap}.table-wrap{overflow:visible}.prose table{min-width:0}body{background:white;color:black}}
