@font-face{font-family:geistSans;src:url(../media/Geist_Variable-s.p.0b15c81f.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:geistSans Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}.geistsans_e5e5b04a-module__VMOqjW__className{font-family:geistSans,geistSans Fallback}.geistsans_e5e5b04a-module__VMOqjW__variable{--font-geist-sans:"geistSans","geistSans Fallback"}
@font-face{font-family:geistMono;src:url(../media/GeistMono_Variable-s.p.97c687d1.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:geistMono Fallback;src:local(Arial);ascent-override:76.43%;descent-override:22.43%;line-gap-override:0.0%;size-adjust:131.49%}.geistmono_783311-module__F2MfAW__className{font-family:geistMono,geistMono Fallback}.geistmono_783311-module__F2MfAW__variable{--font-geist-mono:"geistMono","geistMono Fallback"}
:root{--bg:#fafafa;--surface:#fff;--surface-2:#f0f0f0;--hover:#ececec;--border:#e6e6e6;--border-strong:#d4d4d4;--text:#0a0a0a;--text-2:#2b2f36;--text-3:#5b616b;--nav:#3d424a;--accent:#0b6bcb;--accent-soft:#e6f0fb;--primary:#111;--primary-fg:#fff;--code-bg:#f5f5f5;--hero:#fff;--ok:#16794c;--ok-soft:#e5f4ec;--warn:#8a5200;--warn-soft:#fbf0dc;--shadow:0 1px 2px #0000000a,0 8px 24px #0000000f;--dur:.16s;--ease:cubic-bezier(.4,0,.2,1);--top-h:60px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#0a0a0a;--surface:#111;--surface-2:#212121;--hover:#1a1a1a;--border:#232323;--border-strong:#303030;--text:#fff;--text-2:#d5d9e2;--text-3:#a4a9b3;--nav:#fff9;--accent:#5aacff;--accent-soft:#10243a;--primary:#f5f5f5;--primary-fg:#0a0a0a;--code-bg:#0d0d0d;--hero:#141414;--ok:#4cc38a;--ok-soft:#10261b;--warn:#f0b252;--warn-soft:#2a1f0c;--shadow:0 1px 2px #0000004d,0 12px 32px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0}body{font-family:var(--font-geist-sans),system-ui,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;line-height:24px}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}code,kbd,pre{font-family:var(--font-geist-mono),ui-monospace,monospace}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.top{z-index:30;height:var(--top-h);background:color-mix(in srgb,var(--bg)85%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);align-items:center;gap:28px;padding:0 24px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:10px;font-weight:600;display:flex}.brand .wordmark{width:auto;height:22px;display:block}.brand .wm-light,[data-theme=dark] .brand .wm-dark{display:none}[data-theme=dark] .brand .wm-light{display:block}.brand small{color:var(--text-3);border-left:1px solid var(--border-strong);padding-left:10px;font-size:14px;font-weight:500;line-height:18px}.tabs{gap:2px;display:flex}.tab{color:var(--nav);transition:background var(--dur)var(--ease),color var(--dur)var(--ease);white-space:nowrap;border-radius:8px;padding:6px 12px;font-size:14px;font-weight:500}.tab:hover{color:var(--text);background:var(--hover)}.tab[aria-current=true]{color:var(--text);background:var(--surface-2)}.top .spacer{flex:1}.search-btn{border:1px solid var(--border-strong);width:280px;height:36px;color:var(--text-3);background:var(--surface);transition:border-color var(--dur)var(--ease);border-radius:999px;align-items:center;gap:8px;padding:0 8px 0 12px;font-size:13px;display:flex}.search-btn:hover{border-color:var(--text-3)}.search-btn span{text-align:left;flex:1}kbd{border:1px solid var(--border-strong);color:var(--text-3);background:var(--surface-2);border-radius:5px;padding:0 6px;font-size:11px;line-height:18px}.icon-btn{width:36px;height:36px;color:var(--text-2);transition:background var(--dur)var(--ease);border-radius:999px;place-items:center;display:grid}.icon-btn:hover{background:var(--hover);color:var(--text)}.menu-btn{display:none}.pill{background:var(--primary);height:36px;color:var(--primary-fg);transition:opacity var(--dur)var(--ease);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 16px;font-size:13px;font-weight:500;display:inline-flex}.pill:hover{opacity:.88}.pill:active{transform:scale(.98)}.pill.ghost{color:var(--text);border:1px solid var(--border-strong);background:0 0}.pill.sm{height:30px;padding:0 12px;font-size:12px}.layout{grid-template-columns:280px minmax(0,1fr) 260px;display:grid}.layout.no-toc{grid-template-columns:280px minmax(0,1fr)}.side{top:var(--top-h);height:calc(100vh - var(--top-h));border-right:1px solid var(--border);scrollbar-width:thin;padding:20px 16px 40px;position:sticky;overflow-y:auto}.grp{margin-bottom:22px}.grp h4{color:var(--text);align-items:center;gap:8px;margin:0 0 6px;padding:0 10px;font-size:13px;font-weight:500;display:flex}.grp h4 .dot{border-radius:3px;flex:none;width:8px;height:8px}.grp h4 .app-logo,.grp h4 .app-ico{margin-left:-2px}.nav-item{color:var(--nav);transition:background var(--dur)var(--ease),color var(--dur)var(--ease);border-radius:8px;padding:6px 10px;font-size:13px;font-weight:500;line-height:19px;display:block}.nav-item:hover{color:var(--text);background:var(--hover)}.nav-item[aria-current=page]{color:var(--text);background:var(--surface-2)}main{min-width:0;padding:32px 56px 96px}.page{max-width:860px;margin:0 auto}.page.wide{max-width:none}.crumb{color:var(--text-2);align-items:center;gap:6px;margin-bottom:14px;font-size:14px;display:flex}.crumb a:hover{color:var(--text)}h1{letter-spacing:-.01em;color:var(--text);margin:0 0 14px;font-size:44px;font-weight:500;line-height:1.1}.lead{color:var(--text-2);margin:0 0 18px;font-size:16px;line-height:26px}.meta-row{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 32px;font-size:13px;display:flex}.aud{background:var(--surface-2);color:var(--text-2);border-radius:999px;padding:0 8px;font-size:12px;line-height:20px}.prose{color:var(--text-2)}.prose h2{letter-spacing:-.01em;color:var(--text);margin:48px 0 12px;scroll-margin-top:84px;font-size:24px;font-weight:500;line-height:32px;position:relative}.prose h3{color:var(--text);margin:28px 0 8px;scroll-margin-top:84px;font-size:16px;font-weight:500;line-height:24px;position:relative}.prose h4{color:var(--text);margin:20px 0 6px;font-size:14px;font-weight:600}.prose .anchor{color:var(--text-3);opacity:0;transition:opacity var(--dur)var(--ease);font-weight:400;position:absolute;left:-22px}.prose h2:hover .anchor,.prose h3:hover .anchor{opacity:1}.prose p{margin:0 0 14px}.prose strong{color:var(--text);font-weight:500}.prose a{color:var(--accent)}.prose a:hover{text-decoration:underline}.prose ul{margin:0 0 14px;padding-left:20px}.prose ul li{margin:4px 0}.prose code{background:var(--surface-2);color:var(--text);border-radius:5px;padding:1px 5px;font-size:12px}.prose pre{background:var(--code-bg);border:1px solid var(--border);border-radius:12px;padding:14px 16px;font-size:12.5px;line-height:1.7;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose hr{border:0;border-top:1px solid var(--border);margin:32px 0}.ui{border:1px solid var(--border-strong);color:var(--text);background:var(--surface);white-space:nowrap;border-radius:5px;align-items:center;padding:0 6px;font-size:12.5px;font-weight:500;line-height:20px;display:inline-flex}.prose ol{counter-reset:s;margin:18px 0 8px;padding:0;list-style:none}.prose ol>li{padding:0 0 18px 44px;position:relative}.prose ol>li:before{counter-increment:s;content:counter(s);border:1px solid var(--border-strong);width:26px;height:26px;color:var(--text);background:var(--bg);border-radius:50%;place-items:center;font-size:12px;font-weight:500;display:grid;position:absolute;top:-1px;left:0}.prose ol>li:after{content:"";background:var(--border);width:1px;position:absolute;top:29px;bottom:3px;left:13px}.prose ol>li:last-child:after{display:none}.prose ol>li>p{margin:0 0 6px}.callout{border:1px solid var(--border);background:var(--surface);border-radius:10px;gap:12px;margin:18px 0;padding:12px 14px;display:flex}.callout>div{min-width:0}.callout p{margin:0 0 6px}.callout p:last-child{margin:0}.callout-label{color:var(--text);float:left;margin-right:6px;font-weight:500}.callout-ico{background:var(--accent);border-radius:50%;flex:none;width:16px;height:16px;margin-top:4px;-webkit-mask:radial-gradient(circle,#000 35%,#0000 37%);mask:radial-gradient(circle,#000 35%,#0000 37%)}.callout.tip .callout-ico{background:var(--ok);border-radius:4px;transform:rotate(45deg)scale(.6);-webkit-mask:none;mask:none}.callout.warn{border-color:color-mix(in srgb,var(--warn)30%,var(--border));background:var(--warn-soft)}.callout.warn .callout-ico{background:var(--warn);clip-path:polygon(50% 0,100% 100%,0 100%);border-radius:0;-webkit-mask:none;mask:none}figure.shot{margin:20px 0 22px}figure.shot a{border:1px solid var(--border-strong);box-shadow:var(--shadow);background:#f4f4f2;border-radius:12px;display:block;overflow:hidden}figure.shot img{width:100%;height:auto;display:block}figure.shot figcaption{color:var(--text-3);text-align:center;margin-top:10px;font-size:13px}.table-wrap{border:1px solid var(--border);border-radius:10px;margin:14px 0 18px;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:14px}.prose th{text-align:left;color:var(--text);background:var(--surface-2);border-bottom:1px solid var(--border);padding:8px 12px;font-size:13px;font-weight:500}.prose td{border-bottom:1px solid var(--border);vertical-align:top;padding:10px 12px}.prose tr:last-child td{border-bottom:0}.prose td:first-child{color:var(--text)}.foot-nav{grid-template-columns:1fr 1fr;gap:12px;margin-top:40px;display:grid}.foot-nav a{border:1px solid var(--border);transition:border-color var(--dur)var(--ease);border-radius:12px;padding:14px 16px}.foot-nav a:hover{border-color:var(--border-strong)}.foot-nav small{color:var(--text-3);font-size:12px;display:block}.foot-nav b{font-weight:500}.foot-nav .next{text-align:right;grid-column:2}.helpful{border-top:1px solid var(--border);color:var(--text-2);flex-wrap:wrap;align-items:center;gap:10px;margin-top:48px;padding-top:20px;font-size:13px;display:flex}.helpful .thanks{color:var(--ok)}.toc{top:var(--top-h);height:calc(100vh - var(--top-h));padding:32px 24px 32px 16px;font-size:13px;line-height:20px;position:sticky;overflow-y:auto}.toc h5{color:var(--text);align-items:center;gap:6px;margin:0 0 10px;font-size:13px;font-weight:500;display:flex}.toc a{border-left:1px solid var(--border);color:var(--nav);transition:color var(--dur)var(--ease),border-color var(--dur)var(--ease);padding:5px 0 5px 12px;font-weight:500;display:block}.toc a.sub{padding-left:24px;font-weight:400}.toc a:hover{color:var(--text)}.toc a.on{color:var(--text);border-left-color:var(--text)}.toc .box{border:1px solid var(--border);border-radius:12px;margin-top:24px;padding:12px}.toc .box b{color:var(--text);margin-bottom:4px;font-weight:500;display:block}.toc .box p{color:var(--text-2);margin:0 0 10px;font-size:12px;line-height:18px}.toc .box .pill{justify-content:center;width:100%}.hero{background:var(--hero);border:1px solid var(--border);border-radius:20px;grid-template-columns:minmax(0,1fr) minmax(340px,520px);align-items:center;gap:48px;padding:64px;display:grid;position:relative;overflow:hidden}.hero:before{content:"";background-image:radial-gradient(var(--border-strong)1px,transparent 1px);opacity:.7;pointer-events:none;background-size:18px 18px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(120deg,#0000 40%,#000 100%);mask-image:linear-gradient(120deg,#0000 40%,#000 100%)}.hero>*{position:relative}.hero h1{letter-spacing:-.035em;margin-bottom:18px;font-size:clamp(40px,4.4vw,64px);font-weight:400;line-height:1.04}.hero h1 em{color:var(--text-3);font-style:normal}.hero p{color:var(--text-2);max-width:460px;margin:0 0 26px;font-size:16px;line-height:26px}.cta{flex-wrap:wrap;gap:10px;display:flex}.ask{background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);border-radius:16px;overflow:hidden}.ask-head{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:12px 14px;font-size:13px;font-weight:500;display:flex}.ask-head .muted{color:var(--text-3);margin-left:auto;font-size:12px;font-weight:400}.ask-intro{color:var(--text-2);padding:18px 16px 6px;font-size:14px}.ask-form{border:1px solid var(--border-strong);background:var(--bg);border-radius:12px;align-items:center;gap:8px;margin:10px 12px 12px;padding:6px 6px 6px 14px;display:flex}.ask-form input{min-width:0;color:var(--text);font:inherit;background:0 0;border:0;outline:0;flex:1}.ask-form input::placeholder{color:var(--text-3)}.send{background:var(--primary);width:30px;height:30px;color:var(--primary-fg);border-radius:8px;flex:none;place-items:center;display:grid}.send:disabled{opacity:.4;cursor:default}.chips{flex-wrap:wrap;gap:6px;padding:0 12px 14px;display:flex}.chip{border:1px solid var(--border);color:var(--text-2);transition:border-color var(--dur)var(--ease),color var(--dur)var(--ease);border-radius:999px;padding:1px 10px;font-size:12px;line-height:22px}.chip:hover{border-color:var(--text-3);color:var(--text)}.cono{background:conic-gradient(from 200deg,#5aacff,#a78bfa,#f472b6,#5aacff);border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:grid}.cono:after{content:"";background:var(--surface);border-radius:50%;width:8px;height:8px}.section-title{justify-content:space-between;align-items:baseline;margin:52px 0 16px;display:flex}.section-title h2{letter-spacing:-.01em;margin:0;font-size:24px;font-weight:500;line-height:32px}.section-title span{color:var(--text-3);font-size:13px}.apps{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.app-card{border:1px solid var(--border);background:var(--surface);transition:border-color var(--dur)var(--ease),transform var(--dur)var(--ease);border-radius:14px;flex-direction:column;gap:10px;padding:18px;display:flex}.app-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}.app-card .row{align-items:center;gap:12px;display:flex}.app-card b{font-size:15px;font-weight:500}.app-card .row small{color:var(--text-3);margin-left:auto;font-size:12px}.app-card p{color:var(--text-2);margin:0;font-size:14px}.app-card .links{flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.app-card .links span{color:var(--text-2);background:var(--surface-2);border-radius:6px;padding:0 7px;font-size:12px;line-height:20px}.app-ico{flex:none;place-items:center;display:grid}.app-logo{border-radius:24%;flex:none;display:block}[data-theme=dark] .app-logo{box-shadow:0 0 0 1px var(--border-strong)}.paths{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;display:grid}.path{border:1px solid var(--border);transition:background var(--dur)var(--ease);border-radius:14px;flex-direction:column;gap:6px;padding:18px;display:flex}.path:hover{background:var(--surface)}.path .k{color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;font-size:11px}.path b{font-size:15px;font-weight:500}.path p{color:var(--text-2);margin:0;font-size:14px}.path .go{color:var(--accent);align-items:center;gap:4px;margin-top:8px;font-size:13px;display:flex}.scrim{z-index:50;animation:fade var(--dur)var(--ease);background:#00000073;justify-content:center;align-items:flex-start;padding-top:12vh;display:flex;position:fixed;inset:0}.scrim[data-state=closed]{animation:fade var(--dur)var(--ease)reverse forwards}.scrim .dlg{animation:pop var(--dur)var(--ease)}.scrim[data-state=closed] .dlg{animation:pop var(--dur)var(--ease)reverse forwards}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(-6px)scale(.98)}}.dlg{background:var(--surface);border:1px solid var(--border-strong);border-radius:16px;flex-direction:column;width:min(680px,92vw);max-height:76vh;display:flex;overflow:hidden;box-shadow:0 24px 64px #0006}.dlg-in{border-bottom:1px solid var(--border);color:var(--text-3);align-items:center;gap:10px;padding:14px 16px;display:flex}.dlg-in input{min-width:0;color:var(--text);font:inherit;background:0 0;border:0;outline:0;flex:1;font-size:15px}.dlg-in input::placeholder{color:var(--text-3)}.res{padding:8px;overflow-y:auto}.res .lbl{color:var(--text-3);padding:8px 10px 4px;font-size:11px}.res a,.res button.row{text-align:left;border-radius:9px;align-items:center;gap:10px;width:100%;padding:9px 10px;display:flex}.res .sel{background:var(--surface-2)}.res .row-body{flex:1;min-width:0}.res b{color:var(--text);font-size:13px;font-weight:500;display:block}.res small{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;font-size:12px;display:block;overflow:hidden}.res mark{color:var(--accent);background:0 0}.empty{text-align:center;color:var(--text-3);padding:28px;font-size:13px}.dlg-foot{border-top:1px solid var(--border);color:var(--text-3);gap:14px;padding:8px 14px;font-size:11px;display:flex}.answer{padding:16px 18px 18px;overflow-y:auto}.answer .q{justify-content:flex-end;margin-bottom:14px;display:flex}.answer .q span{background:var(--surface-2);max-width:85%;color:var(--text);border-radius:14px 14px 4px;padding:8px 12px;font-size:14px}.answer .a{gap:10px;display:flex}.answer .a .prose{flex:1;min-width:0;font-size:14px}.answer .prose ol>li{padding-bottom:8px}.answer .prose ol>li:after{display:none}.answer .err{color:var(--warn)}.typing{background:var(--text-2);vertical-align:-2px;width:7px;height:14px;animation:1s steps(2,end) infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.answer-foot{border-top:1px solid var(--border);align-items:center;gap:8px;padding:10px 14px;display:flex}.answer-foot .note{color:var(--text-3);margin-right:auto;font-size:11px}.drawer{display:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media (max-width:1280px){.layout,.layout.no-toc{grid-template-columns:250px minmax(0,1fr)}.toc{display:none}.hero{padding:48px}}@media (max-width:1100px){.hero{grid-template-columns:1fr}}@media (max-width:860px){.top{gap:12px;padding:0 14px}.layout,.layout.no-toc{grid-template-columns:1fr}.layout>.side{display:none}main{padding:20px 18px 60px}.hero{padding:28px}.hero h1{font-size:40px}h1{font-size:32px}.search-btn{background:0 0;border:0;justify-content:center;width:36px;padding:0}.search-btn span,.search-btn kbd,.tabs,.top .pill{display:none}.menu-btn{display:grid}.brand small{display:none}.drawer{inset:var(--top-h)0 0 0;z-index:40;background:var(--bg);display:block;position:fixed}.drawer .side{border:0;height:100%;display:block;position:static}.drawer .tabs{padding:12px 16px 0;display:flex}.prose .anchor{display:none}}figure.shot a{cursor:zoom-in}.lightbox{z-index:60;animation:fade var(--dur)var(--ease);background:#000000d1;justify-content:center;align-items:center;gap:12px;padding:56px 24px 24px;display:flex;position:fixed;inset:0}.lightbox[data-state=closed]{animation:fade var(--dur)var(--ease)reverse forwards}.lb-figure{min-width:0;max-width:min(1280px,100%);max-height:100%;animation:pop var(--dur)var(--ease);flex-direction:column;align-items:center;gap:12px;margin:0;display:flex}.lightbox[data-state=closed] .lb-figure{animation:pop var(--dur)var(--ease)reverse forwards}.lb-figure img{width:min(var(--nw,800px),calc(100vw - 160px),calc((100vh - 150px)*var(--ar,1.6)));cursor:zoom-out;background:#f4f4f2;border-radius:10px;max-width:100%;height:auto;display:block;box-shadow:0 24px 64px #00000080}.lb-figure figcaption{color:#e5e7eb;text-align:center;max-width:760px;font-size:14px;line-height:20px}.lb-count{color:#9ca3af;font-variant-numeric:tabular-nums;margin-top:4px;font-size:12px;display:block}.lb-btn{color:#fff;width:44px;height:44px;transition:background var(--dur)var(--ease);background:#ffffff1a;border-radius:999px;flex:none;place-items:center;display:grid}.lb-btn:hover{background:#fff3}.lb-btn:focus-visible{outline-offset:2px;outline:2px solid #fff}.lb-close{position:absolute;top:12px;right:12px}@media (max-width:640px){.lightbox{gap:4px;padding:56px 8px 16px}.lb-btn{width:36px;height:36px}.lb-figure img{width:min(var(--nw,800px),calc(100vw - 96px),calc((100vh - 150px)*var(--ar,1.6)))}}
