@font-face{font-family:PP Mori;src:url(/fonts/PPMori-Light.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:PP Mori;src:url(/fonts/PPMori-Regular.woff2)format("woff2");font-weight:400 500;font-style:normal;font-display:swap}@font-face{font-family:PP Mori;src:url(/fonts/PPMori-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/IBMPlexMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/IBMPlexMono-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/fonts/IBMPlexMono-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:PP Mori Fallback;src:local(Helvetica Neue),local(Arial);size-adjust:98%;ascent-override:96%;descent-override:24%;line-gap-override:0%}@font-face{font-family:IBM Plex Mono Fallback;src:local(Menlo),local(Courier New);size-adjust:100%;ascent-override:102%;descent-override:27%;line-gap-override:0%}:root{--ink:#0a0a0a;--brand-deep:#162f29;--brand:#3ddc84;--page:#fcfcfc;--body-c:#2e2e2e;--muted:#757575;--faint:#9a9a9a;--line:#e7e7e7;--line2:#f0f0f0;--green-ink:#0d6b43;--green-tint:#ebfaf2;--green-line:#cbefdc;--panel:#12261f;--panel-head:#0e1f19;--panel-line:#254539;--code-ink:#cbded4;--code-key:#8fc6ea;--code-str:#5fe3a1;--code-num:#e5c77e;--code-cmt:#587264;--amber:#a85b10;--amber-bg:#fcf6ec;--amber-line:#efdfc6;--slate:#33527a;--slate-bg:#eef3f8;--slate-line:#d9e3ee;--surface:#fff;--surface2:#f7f7f7;--hover:#f4f4f4;--chip:#f4f4f4;--scroll:#e0e0e0;--header-bg:#fcfcfce0;--diagram-line:#9a9a9a;--panel-ink:#f2f7f4;--panel-muted:#9db5aa;--sidebar-w:264px;--header-h:56px;--codecol:432px;--sans:"PP Mori","PP Mori Fallback",system-ui,sans-serif;--mono:"IBM Plex Mono","IBM Plex Mono Fallback",monospace}html[data-theme=dark]{--page:#0a0a0a;--surface:#131313;--surface2:#171717;--hover:#1a1a1a;--chip:#1c1c1c;--scroll:#2e2e2e;--ink:#f4f4f4;--body-c:#c9c9c9;--muted:#8f8f8f;--faint:#6e6e6e;--line:#242424;--line2:#1b1b1b;--green-ink:#3ddc84;--green-tint:#0f1f16;--green-line:#1f4433;--header-bg:#0a0a0adb;--amber:#e2a94f;--amber-bg:#211809;--amber-line:#453413;--slate:#93b4de;--slate-bg:#131e2c;--slate-line:#263850;--diagram-line:#6e6e6e}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--page);color:var(--ink);font:400 14px/1.65 var(--sans);letter-spacing:-.002em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}::selection{background:#3ddc8447}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}header.site{height:var(--header-h);background:var(--header-bg);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);z-index:80;align-items:center;gap:16px;padding:0 24px;display:flex;position:fixed;inset:0 0 auto}.logo{color:var(--ink);align-items:center;text-decoration:none;display:flex}.logo svg{width:auto;height:19px;display:block}.lsep{background:var(--line);width:1px;height:20px}.lsub{color:var(--muted);letter-spacing:-.004em;font-size:13px;font-weight:500}.topnav{gap:2px;margin-left:8px;display:flex}.topnav a{color:var(--body-c);letter-spacing:-.004em;border-radius:6px;padding:6px 10px;font-size:13px;font-weight:500;text-decoration:none}.topnav a:hover{background:var(--hover);color:var(--ink)}.topnav a.on{color:var(--green-ink)}.search{align-items:center;margin-left:auto;display:flex;position:relative}.search input{border:1px solid var(--line);background:var(--surface);width:236px;font:400 13px var(--sans);letter-spacing:-.004em;color:var(--ink);border-radius:8px;outline:none;padding:7px 58px 7px 30px;transition:border-color .12s}.search input::placeholder{color:var(--faint)}.search input:focus{border-color:var(--brand)}.search .sicon{width:14px;height:14px;stroke:var(--faint);fill:none;stroke-width:1.7px;position:absolute;left:9px}.search kbd{font:500 10.5px var(--mono);color:var(--faint);border:1px solid var(--line);background:var(--surface);border-bottom-width:2px;border-radius:6px;padding:1px 5px;position:absolute;right:7px}.qresults{background:var(--surface);border:1px solid var(--line);z-index:90;border-radius:8px;width:340px;max-height:380px;padding:5px;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 8px 28px #0000002e}.qresults a{border-radius:6px;padding:7px 10px;text-decoration:none;display:block}.qresults a .qt{letter-spacing:-.004em;color:var(--ink);font-size:13px;font-weight:600;display:block}.qresults a .qh{color:var(--muted);letter-spacing:-.004em;font-size:12px;display:block}.qresults a:hover,.qresults a.sel{background:var(--hover)}.qresults a.sel .qt{color:var(--green-ink)}.qresults .qempty{color:var(--faint);padding:9px 10px;font-size:12.5px;display:block}.status{color:var(--muted);white-space:nowrap;align-items:center;gap:7px;font-size:12.5px;font-weight:400;display:flex}.status .led{background:var(--brand);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #3ddc842e}.ver{font:500 11px var(--mono);color:var(--muted);border:1px solid var(--line);background:var(--surface);white-space:nowrap;border-radius:6px;padding:3px 8px}.menu-btn{border:1px solid var(--line);background:var(--surface);font:600 13px var(--sans);cursor:pointer;color:var(--ink);border-radius:8px;padding:6px 11px;display:none}nav.side{top:var(--header-h);width:var(--sidebar-w);background:var(--page);border-right:1px solid var(--line2);padding:24px 16px 60px 24px;position:fixed;bottom:0;left:0;overflow-y:auto}nav.side::-webkit-scrollbar{width:8px}nav.side::-webkit-scrollbar-thumb{background:var(--scroll);border:2px solid var(--page);border-radius:8px}main{margin-left:var(--sidebar-w);padding:calc(var(--header-h) + 44px) 56px 120px;max-width:1248px}section.doc{scroll-margin-top:calc(var(--header-h) + 24px);margin-bottom:104px}.eyebrow{font:500 11px var(--mono);letter-spacing:.09em;color:var(--green-ink);text-transform:uppercase;margin-bottom:10px}h1{letter-spacing:-.022em;color:var(--ink);margin-bottom:10px;font-size:27px;font-weight:600;line-height:1.18}h2{letter-spacing:-.014em;border-bottom:1px solid var(--line2);color:var(--ink);margin:48px 0 12px;padding-bottom:9px;font-size:18px;font-weight:600}h3{letter-spacing:-.008em;color:var(--ink);margin:28px 0 7px;font-size:14.5px;font-weight:600}p{color:var(--body-c);max-width:70ch;margin-bottom:12px}p.lead{letter-spacing:-.008em;color:var(--body-c);max-width:62ch;margin-bottom:10px;font-size:17px;font-weight:300;line-height:1.62}ul,ol{color:var(--body-c);max-width:68ch;margin:0 0 14px 20px}li{margin-bottom:6px}li::marker{color:var(--faint)}strong{color:var(--ink);font-weight:600}a.inline{color:var(--green-ink);border-bottom:1px solid var(--green-line);font-weight:500;text-decoration:none}a.inline:hover{border-bottom-color:var(--green-ink)}hr.sec{border:0;border-top:1px solid var(--line2);margin:0 0 64px}.lastupd{font:400 11.5px var(--mono);color:var(--faint);letter-spacing:0;margin-top:48px}.apirow{grid-template-columns:minmax(0,1fr) minmax(0,var(--codecol));align-items:start;gap:44px;display:grid}.apirow .codecol{top:calc(var(--header-h) + 28px);position:sticky}.apirow .prose h2:first-child{margin-top:8px}.tblwrap{border:1px solid var(--line);background:var(--surface);border-radius:11px;margin:14px 0 24px;overflow-x:auto}.tbl{border-collapse:collapse;letter-spacing:-.004em;font-variant-numeric:tabular-nums;width:100%;font-size:13px}.tbl th{letter-spacing:.09em;text-transform:uppercase;color:var(--muted);text-align:left;background:var(--surface2);border-bottom:1px solid var(--line);padding:8px 12px;font-size:10.5px;font-weight:600}.tbl td{border-bottom:1px solid var(--line2);vertical-align:top;color:var(--body-c);padding:8px 12px}.tbl tr:last-child td{border-bottom:0}.tbl tr:not(:first-child):hover td{background:var(--hover)}.tbl code,code.ic{font:500 12px var(--mono);background:var(--chip);border:1px solid var(--line);color:var(--ink);white-space:nowrap;letter-spacing:0;border-radius:6px;padding:1px 5px}.attr{border-top:1px solid var(--line2);padding:12px 2px}.attr:last-of-type{border-bottom:1px solid var(--line2)}.attr .aname{font:600 12.5px var(--mono);color:var(--ink);letter-spacing:0}.attr .atype{font:400 11px var(--mono);color:var(--faint);letter-spacing:0;margin-left:9px}.attr p{margin:4px 0 0;font-size:13px}.endpoint{flex-wrap:wrap;align-items:center;gap:10px;margin:18px 0 10px;display:flex}.pill{font:600 10.5px var(--mono);letter-spacing:.05em;border-radius:6px;padding:3px 8px}.pill.post{background:var(--green-tint);color:var(--green-ink);border:1px solid var(--green-line)}.pill.get{background:var(--slate-bg);color:var(--slate);border:1px solid var(--slate-line)}.path{font:500 13px var(--mono);color:var(--ink);letter-spacing:0}.code{background:var(--panel);border:1px solid var(--panel-line);border-radius:11px;margin:10px 0 18px;position:relative;overflow:hidden}.codehead{background:var(--panel-head);border-bottom:1px solid var(--panel-line);align-items:center;gap:9px;padding:8px 12px;display:flex}.codehead .cl{font:500 10.5px var(--mono);letter-spacing:.09em;text-transform:uppercase;color:#5e7a6c}.codehead .resp{font:600 10.5px var(--mono);color:var(--code-str);background:#3ddc841f;border:1px solid #3ddc8438;border-radius:6px;padding:1px 7px}.code pre{font:400 12.5px/1.62 var(--mono);color:var(--code-ink);letter-spacing:0;padding:16px;overflow-x:auto}.code pre::-webkit-scrollbar{height:8px}.code pre::-webkit-scrollbar-thumb{background:#2c4a3d;border-radius:8px}.codetab{color:#5e7a6c;font:500 10.5px var(--mono);letter-spacing:.09em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 7px}.codetab.on{color:#d8eee2;background:#3ddc841a}.copy{color:#7f9c8d;font:500 11px var(--sans);cursor:pointer;background:0 0;border:1px solid #2b4b3e;border-radius:6px;margin-left:auto;padding:3px 9px;transition:color .12s,border-color .12s}.copy:hover{color:#d8eee2;border-color:#3e6a56}.s{color:var(--code-str)}.n{color:var(--code-num)}.c{color:var(--code-cmt)}.k{color:var(--code-key)}.note{background:var(--green-tint);border:1px solid var(--green-line);color:var(--body-c);border-radius:11px;gap:12px;max-width:78ch;margin:16px 0 22px;padding:12px 16px;font-size:13px;display:flex}.note b{color:var(--green-ink)}.note:before{content:"";background:var(--brand);border-radius:3px;flex:0 0 3px}.cards{grid-template-columns:repeat(auto-fit,minmax(228px,1fr));gap:14px;margin:22px 0 8px;display:grid}.card{border:1px solid var(--line);background:var(--surface);border-radius:11px;padding:16px}.card .ct{letter-spacing:-.008em;margin-bottom:4px;font-size:14px;font-weight:600}.card p{color:var(--muted);margin:0;font-size:12.5px;line-height:1.55}.card .ico{background:var(--green-tint);border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;margin-bottom:12px;display:flex}.card .ico svg{width:16px;height:16px;stroke:var(--green-ink);fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.hero{position:relative}.hero-art{width:340px;height:260px;color:var(--line);opacity:.4;pointer-events:none;z-index:-1;position:absolute;top:-44px;right:-40px;overflow:hidden}.hero-art svg{width:160%;height:auto;margin-left:12%;display:block}.hero-h1{letter-spacing:-.03em;color:var(--ink);margin-bottom:14px;font-size:40px;font-weight:600;line-height:1.08}.ctas{flex-wrap:wrap;gap:10px;margin:18px 0 8px;display:flex}.btn{letter-spacing:-.004em;border-radius:8px;align-items:center;gap:7px;padding:8px 14px;font-size:13px;font-weight:600;text-decoration:none;transition:background .12s,border-color .12s;display:inline-flex}.btn.pri{background:var(--ink);color:var(--page);border:1px solid var(--ink)}.btn.pri:hover{opacity:.9}.btn.gho{background:var(--surface);color:var(--ink);border:1px solid var(--line)}.btn.gho:hover{border-color:var(--faint)}.plinks{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:12px;margin:16px 0 8px;display:grid}.plink{border:1px solid var(--line);background:var(--surface);border-radius:11px;padding:14px 16px;text-decoration:none;transition:border-color .12s;display:block}.plink:hover{border-color:var(--green-line)}.plink h4{letter-spacing:-.008em;color:var(--ink);margin-bottom:3px;font-size:14px;font-weight:600}.plink h4:after{content:"→";color:var(--faint);margin-left:6px;font-weight:400;transition:transform .12s,color .12s;display:inline-block}.plink:hover h4:after{color:var(--green-ink);transform:translate(2px)}.plink p{color:var(--muted);margin:0;font-size:12.5px;line-height:1.55}.steps{grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0 18px;display:grid}.step{border:1px solid var(--line);background:var(--surface);border-radius:11px;gap:12px;padding:14px 16px;display:flex}.step .sn{font:600 11px var(--mono);color:var(--green-ink);border:1px solid var(--green-line);background:var(--green-tint);letter-spacing:.04em;border-radius:6px;flex:none;justify-content:center;align-items:center;min-width:28px;height:22px;display:flex}.step b{color:var(--ink);letter-spacing:-.004em;font-size:13px;font-weight:600;display:block}.step p{color:var(--muted);margin:3px 0 0;font-size:12.5px;line-height:1.5}.feat{grid-template-columns:1fr 1fr;gap:12px;margin:14px 0 12px;display:grid}.fcard{border:1px solid var(--line);background:var(--surface);border-radius:11px;padding:18px;text-decoration:none;transition:border-color .12s;display:block}.fcard:hover{border-color:var(--green-line)}.fcard .ct{letter-spacing:-.01em;color:var(--ink);margin-bottom:5px;font-size:15px;font-weight:600}.fcard .ct:after{content:"→";color:var(--faint);margin-left:7px;font-weight:400;transition:transform .12s,color .12s;display:inline-block}.fcard:hover .ct:after{color:var(--green-ink);transform:translate(2px)}.fcard p{color:var(--muted);max-width:none;margin:0 0 11px;font-size:13px;line-height:1.55}.fmeta{flex-wrap:wrap;gap:7px;display:flex}.fmeta code{font:500 11px var(--mono);background:var(--chip);border:1px solid var(--line);color:var(--body-c);letter-spacing:0;border-radius:6px;padding:2px 7px}.mgrid{grid-template-columns:1fr 1fr;gap:0 32px;margin:2px 0 6px;display:grid}.mlink{border-bottom:1px solid var(--line2);align-items:baseline;gap:10px;min-width:0;padding:10px 2px;text-decoration:none;display:flex}.mlink span{letter-spacing:-.004em;color:var(--ink);white-space:nowrap;font-size:13px;font-weight:600}.mlink em{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12.5px;font-style:normal;overflow:hidden}.mlink:after{content:"→";color:var(--faint);flex:none;font-weight:400}.mlink:hover span,.mlink:hover:after{color:var(--green-ink)}.nextlink{margin-top:28px;font-size:13px}@media (width<=880px){.steps,.feat,.mgrid{grid-template-columns:1fr}}.tbtn{border:1px solid var(--line);background:var(--surface);cursor:pointer;width:30px;height:30px;color:var(--muted);border-radius:8px;justify-content:center;align-items:center;display:flex}.tbtn:hover{color:var(--ink);border-color:var(--faint)}.tbtn svg{stroke:currentColor;fill:none;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.tbtn .moon{display:block}.tbtn .sun,html[data-theme=dark] .tbtn .moon{display:none}html[data-theme=dark] .tbtn .sun{display:block}.pagefb{border-top:1px solid var(--line2);color:var(--muted);align-items:center;gap:12px;margin-top:24px;padding-top:22px;font-size:13px;display:flex}.pagefb button{border:1px solid var(--line);background:var(--surface);color:var(--body-c);font:500 12.5px var(--sans);cursor:pointer;border-radius:8px;padding:5px 12px}.pagefb button:hover{border-color:var(--faint);color:var(--ink)}main h2{position:relative}main h2 .anch{color:var(--faint);opacity:0;font-weight:400;text-decoration:none;transition:opacity .1s;position:absolute;top:0;left:-20px}main h2:hover .anch{opacity:1}main h2 .anch:hover{color:var(--green-ink)}h2[id]{scroll-margin-top:calc(var(--header-h) + 20px)}.diagram{background:var(--surface);border:1px solid var(--line);border-radius:11px;margin:20px 0 26px;padding:18px 14px}.diagram svg{width:100%;height:auto;display:block}.diagram .nb{fill:var(--surface);stroke:var(--line);stroke-width:1px}.diagram .ng{fill:var(--green-tint);stroke:var(--green-line);stroke-width:1px}.diagram .nd{fill:var(--panel);stroke:var(--panel-line);stroke-width:1px}.diagram .nt{font:600 14px var(--sans);fill:var(--ink);letter-spacing:-.1px}.diagram .ntd{font:600 14px var(--sans);fill:var(--panel-ink);letter-spacing:-.1px}.diagram .ns{font:400 11.5px var(--sans);fill:var(--muted)}.diagram .nsd{font:400 11.5px var(--sans);fill:var(--panel-muted)}.diagram .nm{font:500 11px var(--mono);fill:var(--green-ink)}.diagram .ln{stroke:var(--diagram-line);stroke-width:1.4px;fill:none;marker-end:url(#ah)}.diagram .lnd{stroke:var(--diagram-line);stroke-width:1.4px;fill:none;marker-end:url(#ah);stroke-dasharray:4 5}.diagram .pill{fill:var(--surface);stroke:var(--line)}.diagram .pt{font:500 11px var(--sans);fill:var(--muted)}.diagram .ptm{font:500 10.5px var(--mono);fill:var(--muted)}.onpage{top:calc(var(--header-h) + 44px);font-size:12.5px;position:sticky}.onpage .oplabel{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:10.5px;font-weight:600}.onpage a{color:var(--muted);letter-spacing:-.004em;padding:3px 0;text-decoration:none;display:block}.onpage a:hover{color:var(--ink)}.onpage a.on{color:var(--green-ink)}.tocrow{grid-template-columns:minmax(0,1fr) 200px;align-items:start;gap:44px;display:grid}@media (width<=1180px){.tocrow{grid-template-columns:1fr}.tocrow .onpage{display:none}}.cl-item{border-bottom:1px solid var(--line2);grid-template-columns:112px 1fr;gap:22px;padding:16px 0;display:grid}.cl-item:last-child{border-bottom:0}.cl-date{font:400 12.5px var(--mono);color:var(--faint);letter-spacing:0;padding-top:2px}.cl-item .ct{letter-spacing:-.008em;margin-bottom:3px;font-size:14px;font-weight:600}.cl-item p{margin:0;font-size:13px}.tag{letter-spacing:.05em;vertical-align:2px;text-transform:uppercase;border-radius:999px;margin-left:8px;padding:2px 7px;font-size:10.5px;font-weight:600;display:inline-block}.tag.new{background:var(--green-tint);color:var(--green-ink)}.tag.beta{background:var(--slate-bg);color:var(--slate)}footer.site{margin-left:var(--sidebar-w);border-top:1px solid var(--line2);color:var(--faint);padding:40px 56px 48px;font-size:12.5px}.fcols{grid-template-columns:1.5fr 1fr 1fr 1fr;gap:28px;max-width:1248px;display:grid}.fbrand{flex-direction:column;gap:10px;display:flex}.fbrand .fm{color:var(--ink);align-items:center;gap:9px;display:flex}.fbrand .fm svg{width:17px;height:17px;display:block}.fbrand .fm span{font:600 13.5px var(--sans);letter-spacing:-.008em}.fbrand p{color:var(--muted);max-width:26ch;margin:0;font-size:12.5px;line-height:1.6}.fcol .flabel{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:2px 0 10px;font-size:10.5px;font-weight:600}.fcol a{color:var(--body-c);margin-bottom:7px;font-size:13px;text-decoration:none;display:block}.fcol a:hover{color:var(--ink)}.flegal{border-top:1px solid var(--line2);color:var(--muted);flex-wrap:wrap;align-items:center;gap:18px;margin-top:30px;padding-top:18px;font-size:12px;display:flex}.flegal .mono{font:400 11.5px var(--mono);letter-spacing:0}.flegal .sp{margin-left:auto}@media (width<=820px){.fcols{grid-template-columns:1fr 1fr}}@media (width<=1180px){.apirow{grid-template-columns:1fr}.apirow .codecol{position:static}}@media (width<=980px){nav.side{z-index:90;box-shadow:1px 0 0 var(--line);background:var(--page);transition:transform .22s;transform:translate(-105%)}nav.side.open{transform:none}main,footer.site{margin-left:0;padding-left:20px;padding-right:20px}.menu-btn{display:block}.topnav,.status,.search,.ver,.lsub,.lsep{display:none}h1{font-size:23px}.hero-art{display:none}}@media print{header.site,nav.side,.copy,footer.site{display:none}main{max-width:100%;margin:0;padding:0}.code pre{color:#141414}.code{background:#f7f8f7;border:1px solid #ddd}.codehead{background:#eff1f0}body{background:#fff}.apirow{grid-template-columns:1fr}}.cobrand{align-items:center;gap:6px;margin-left:2px;display:flex}.cobrand .cx{color:var(--faint);font-size:13px;font-weight:400}.cobrand .cn{letter-spacing:-.01em;color:var(--ink);font-size:14px;font-weight:600}.side-section{letter-spacing:.14em;text-transform:uppercase;color:var(--green-ink);margin:0 0 14px 10px;font-size:10.5px;font-weight:600}details.navgroup{margin-bottom:6px}details.navgroup>summary{cursor:pointer;letter-spacing:-.004em;color:var(--ink);border-radius:6px;justify-content:space-between;align-items:center;padding:5px 10px;font-size:12.5px;font-weight:600;list-style:none;display:flex}details.navgroup>summary::-webkit-details-marker{display:none}details.navgroup>summary:after{content:"";border-right:1.5px solid var(--faint);border-bottom:1.5px solid var(--faint);width:6px;height:6px;margin-right:3px;transition:transform .15s;transform:rotate(-45deg)}details.navgroup[open]>summary:after{transform:rotate(45deg)}details.navgroup>summary:hover{background:var(--hover)}.navgroup-items{padding:2px 0 8px}.navgroup-items a{color:var(--body-c);letter-spacing:-.006em;border-radius:6px;margin-bottom:1px;padding:5px 10px 5px 18px;font-size:12.5px;font-weight:400;line-height:1.4;text-decoration:none;display:block;position:relative}.navgroup-items a:hover{color:var(--ink);background:var(--hover)}.navgroup-items a.active{color:var(--green-ink);background:var(--green-tint);font-weight:600}.navgroup-items a.active:before{content:"";background:var(--brand);border-radius:2px;width:2px;position:absolute;top:6px;bottom:6px;left:2px}.prose{max-width:52rem;color:var(--body-c);font-size:14px;line-height:1.7}.prose>:first-child{margin-top:0}.prose h1{letter-spacing:-.022em;color:var(--ink);margin:0 0 14px;font-size:30px;font-weight:600;line-height:1.15}.prose h2{letter-spacing:-.014em;border-bottom:1px solid var(--line2);color:var(--ink);margin:44px 0 12px;padding-bottom:9px;font-size:19px;font-weight:600;position:relative}.prose h3{letter-spacing:-.008em;color:var(--ink);margin:28px 0 7px;font-size:15px;font-weight:600;position:relative}.prose h4{letter-spacing:-.004em;color:var(--ink);margin:22px 0 6px;font-size:13.5px;font-weight:600}.prose h2[id],.prose h3[id]{scroll-margin-top:calc(var(--header-h) + 20px)}.prose p{color:var(--body-c);margin:0 0 14px}.prose a{color:var(--green-ink);border-bottom:1px solid var(--green-line);font-weight:500;text-decoration:none}.prose a:hover{border-bottom-color:var(--green-ink)}.prose strong{color:var(--ink);font-weight:600}.prose ul,.prose ol{color:var(--body-c);margin:0 0 16px;padding-left:22px}.prose li{margin-bottom:7px}.prose li::marker{color:var(--faint)}.prose li>ul,.prose li>ol{margin:7px 0 0}.prose blockquote{border-left:3px solid var(--green-line);background:var(--green-tint);color:var(--body-c);border-radius:0 8px 8px 0;margin:16px 0;padding:2px 16px}.prose blockquote p{margin:10px 0}.prose hr{border:0;border-top:1px solid var(--line2);margin:28px 0}.prose img{border:1px solid var(--line);border-radius:8px;max-width:100%;height:auto;margin:12px 0}.prose .anch{color:var(--faint);opacity:0;border:0;font-weight:400;text-decoration:none;transition:opacity .1s;position:absolute;top:0;left:-18px}.prose h2:hover .anch,.prose h3:hover .anch{opacity:1}.prose .anch:hover{color:var(--green-ink)}.prose :not(pre)>code{font:500 12.5px var(--mono);background:var(--chip);border:1px solid var(--line);color:var(--ink);white-space:nowrap;letter-spacing:0;border-radius:6px;padding:1px 5px}.prose pre{border:1px solid var(--panel-line);font:400 12.5px/1.62 var(--mono);border-radius:11px;margin:14px 0 20px;padding:16px;position:relative;overflow-x:auto;background:var(--panel)!important}.prose pre code{font:inherit;white-space:pre;color:inherit;counter-reset:none;background:0 0;border:0;padding:0}.prose pre::-webkit-scrollbar{height:8px}.prose pre::-webkit-scrollbar-thumb{background:#2c4a3d;border-radius:8px}.codecopy{color:#7f9c8d;font:500 11px var(--sans);cursor:pointer;opacity:0;background:#0a141099;border:1px solid #2b4b3e;border-radius:6px;padding:3px 9px;transition:opacity .12s,color .12s,border-color .12s;position:absolute;top:8px;right:8px}.prose pre:hover .codecopy{opacity:1}.codecopy:hover{color:#d8eee2;border-color:#3e6a56}.prose table{border-collapse:collapse;letter-spacing:-.004em;border:1px solid var(--line);border-radius:11px;width:100%;margin:14px 0 24px;font-size:13px;display:block;overflow-x:auto}.prose thead{background:var(--surface2)}.prose th{letter-spacing:.09em;text-transform:uppercase;color:var(--muted);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 12px;font-size:10.5px;font-weight:600}.prose td{border-bottom:1px solid var(--line2);vertical-align:top;color:var(--body-c);padding:9px 12px}.prose tr:last-child td{border-bottom:0}.prose td code,.prose th code{white-space:nowrap}.srcnote{border-top:1px solid var(--line2);color:var(--faint);margin-top:40px;padding-top:16px;font-size:12px}.srcnote a{color:var(--muted);border-bottom:1px solid var(--line)}.onpage a.toc-sub{padding-left:12px;font-size:12px}main.bare{max-width:1100px}.hero .eyebrow{font:500 11px var(--mono);letter-spacing:.14em;color:var(--green-ink);text-transform:uppercase;margin-bottom:12px}.jv-note{border:1px solid var(--line);background:var(--surface);border-radius:14px;align-items:flex-start;gap:16px;margin:40px 0 8px;padding:20px 22px;display:flex}.jv-note svg{width:26px;height:26px;color:var(--green-ink);flex:none;margin-top:2px}.jv-note b{color:var(--ink);letter-spacing:-.008em;margin-bottom:4px;font-size:14px;display:block}.jv-note p{color:var(--muted);max-width:70ch;margin:0;font-size:13px;line-height:1.6}.side-powered{border-top:1px solid var(--line2);margin-top:28px;padding:14px 10px 4px}.side-powered span{font:600 11px var(--mono);letter-spacing:.04em;color:var(--green-ink);margin-bottom:5px;display:block}.side-powered p{color:var(--faint);margin:0;font-size:11.5px;line-height:1.5}
