@font-face{font-family:"Space Grotesk";src:url(../../assets/fonts/SpaceGrotesk.woff2) format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(../../assets/fonts/JetBrainsMono.woff2) format("woff2");font-weight:400 700;font-display:swap}
:root{
  --bg:#08090b;--bg1:#0c0d10;--bg2:#111318;--bg3:#16181e;
  --line:rgba(255,255,255,.075);--line2:rgba(255,255,255,.13);--line3:rgba(255,255,255,.22);
  --ink:#f2efe8;--ink2:#c3c0b9;--mut:#8b8882;--amb:#f5b63d;--amb2:#e8893a;--ok:#62d99a;--bad:#ff6b5b;--info:#8fb1ff;--teal:#5cc8c0;--lilac:#c4a1ff;
  --display:"Space Grotesk","Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --top:60px;--draft:40px;--sb:268px;--tocw:220px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--bg);color:var(--ink);font:16px/1.7 var(--display);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-padding-top:calc(var(--top) + 24px)}
body{min-height:100vh;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img,svg{display:block}
button,input{font:inherit;color:inherit;background:none;border:0}
::selection{background:var(--amb);color:#0b0c0f}
:focus-visible{outline:2px solid var(--amb);outline-offset:2px;border-radius:6px}
kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border:1px solid var(--line2);border-bottom-width:2px;border-radius:5px;font:500 11px/1 var(--mono);color:var(--ink2);background:var(--bg2)}
[hidden]{display:none!important}
.skip{position:absolute;left:-999px;top:8px;z-index:200;padding:8px 14px;background:var(--amb);color:#000;border-radius:8px}
.skip:focus{left:12px}

/* top bar */
.top{position:sticky;top:0;z-index:60;height:var(--top);background:rgba(8,9,11,.86);-webkit-backdrop-filter:blur(14px) saturate(150%);backdrop-filter:blur(14px) saturate(150%);border-bottom:1px solid var(--line)}
.top-in{height:100%;display:flex;align-items:center;gap:20px;padding:0 24px}
.logo{display:flex;align-items:center;gap:12px;flex:none}
.logo img{height:22px;width:auto}
.docs-tag{padding:3px 8px;border:1px solid rgba(245,182,61,.35);border-radius:6px;font:600 11px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amb);background:rgba(245,182,61,.06)}
.menu{display:none;width:38px;height:38px;place-items:center;border:1px solid var(--line2);border-radius:9px;cursor:pointer}
.menu svg{width:18px;height:18px}
.search-btn{display:flex;align-items:center;gap:10px;width:min(360px,34vw);height:38px;margin-left:28px;padding:0 8px 0 12px;border:1px solid var(--line2);border-radius:10px;background:var(--bg1);color:var(--mut);font-size:14px;cursor:pointer;transition:border-color .2s,color .2s}
.search-btn:hover{border-color:var(--line3);color:var(--ink2)}
.search-btn svg{width:16px;height:16px;flex:none}
.search-btn span{flex:1;text-align:left}
.top-links{display:flex;align-items:center;gap:24px;margin-left:auto;font-size:14px;color:var(--ink2)}
.top-links a:hover{color:var(--ink)}
.top-links .xl{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line2);border-radius:9px}
.top-links .xl svg{width:14px;height:14px}

.draft{position:relative;z-index:5;border-bottom:1px solid var(--line);background:linear-gradient(90deg,rgba(245,182,61,.07),rgba(245,182,61,.015) 60%,transparent)}
.draft-in{display:flex;align-items:center;gap:14px;min-height:var(--draft);padding:8px 24px;font-size:13.5px;line-height:1.45;color:var(--ink2)}
.draft-tag{flex:none;padding:3px 8px;border-radius:999px;border:1px solid rgba(245,182,61,.35);font:600 10.5px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amb)}
.draft-in a{flex:none;margin-left:auto;color:var(--ink);border-bottom:1px solid var(--line3);font-size:13px}

/* shell */
.shell{display:grid;grid-template-columns:var(--sb) minmax(0,1fr) var(--tocw);max-width:1480px;margin:0 auto}
.home .shell{grid-template-columns:var(--sb) minmax(0,1fr)}
.home .toc{display:none}
.sidebar{position:sticky;top:var(--top);height:calc(100vh - var(--top));overflow-y:auto;padding:22px 18px 18px 24px;border-right:1px solid var(--line);display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:var(--line2) transparent}
.sb-group{margin-bottom:18px}
.sb-title{font:600 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:0 0 8px 10px}
.sb-group ul{list-style:none;display:grid;gap:1px}
.sb-group a{display:block;padding:5px 10px;border-radius:8px;font-size:14px;line-height:1.35;color:var(--ink2);transition:background .15s,color .15s}
.sb-group a:hover{background:rgba(255,255,255,.04);color:var(--ink)}
.sb-group a.cur{background:rgba(245,182,61,.09);color:var(--amb);box-shadow:inset 2px 0 0 var(--amb)}
.sb-foot{margin-top:auto;padding:16px 10px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;font:500 11px/1.4 var(--mono);color:var(--mut)}

.main{min-width:0;padding:44px 56px 40px}
.home .main{padding:0 0 40px}
.doc{max-width:760px}
.home .doc{max-width:none}
.toc{position:sticky;top:var(--top);height:calc(100vh - var(--top));overflow-y:auto;padding:44px 24px 24px 8px;scrollbar-width:none}
.toc::-webkit-scrollbar{display:none}
.toc-title{font:600 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-bottom:12px}
.toc ul{list-style:none;border-left:1px solid var(--line)}
.toc a{display:block;margin-left:-1px;padding:4px 0 4px 14px;border-left:1px solid transparent;font-size:13px;line-height:1.4;color:var(--mut);transition:color .15s,border-color .15s}
.toc li.l3 a{padding-left:26px;font-size:12.5px}
.toc a:hover{color:var(--ink2)}
.toc a.on{color:var(--amb);border-left-color:var(--amb)}

/* page header */
.ph{margin-bottom:34px;padding-bottom:28px;border-bottom:1px solid var(--line)}
.crumb{font:500 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--amb);margin-bottom:16px}
.ph h1{font-size:clamp(32px,4vw,44px);line-height:1.08;letter-spacing:-.035em;font-weight:600}
.ph .lead{margin-top:14px;font-size:18.5px;line-height:1.6;color:var(--ink2)}

/* prose */
.doc>p,.doc li,.doc dd,.doc td{color:var(--ink2)}
.doc p{margin:0 0 18px}
.doc h2{position:relative;font-size:27px;line-height:1.2;letter-spacing:-.025em;font-weight:600;margin:52px 0 16px;padding-top:6px}
.doc h3{position:relative;font-size:19.5px;line-height:1.3;letter-spacing:-.015em;font-weight:600;margin:34px 0 12px}
.doc h4{font-size:16px;font-weight:600;margin:24px 0 8px}
.doc h2+p,.doc h3+p{margin-top:0}
.doc .anchor{position:absolute;left:-26px;top:0;padding:0 8px;color:var(--mut);opacity:0;transition:opacity .15s;font-weight:400}
.doc h2 .anchor{top:6px}
.doc h2:hover .anchor,.doc h3:hover .anchor,.doc .anchor:focus{opacity:1}
.doc .anchor:hover{color:var(--amb)}
.doc a:not(.anchor):not(.card):not(.btn){color:var(--ink);border-bottom:1px solid rgba(245,182,61,.45);transition:border-color .15s,color .15s}
.doc a:not(.anchor):not(.card):not(.btn):hover{color:var(--amb);border-bottom-color:var(--amb)}
.doc strong{color:var(--ink);font-weight:600}
.doc ul,.doc ol{margin:0 0 18px;padding-left:22px}
.doc li{margin:6px 0}
.doc li::marker{color:var(--mut)}
.doc ol>li::marker{font:500 13px var(--mono);color:var(--amb)}
.doc hr{border:0;border-top:1px solid var(--line);margin:40px 0}
.doc blockquote{margin:0 0 18px;padding:2px 0 2px 18px;border-left:2px solid var(--line3);color:var(--ink2)}
.doc :not(pre)>code{padding:2px 6px;border:1px solid var(--line);border-radius:6px;background:var(--bg2);font:500 .86em/1.4 var(--mono);color:#ffd38a;white-space:break-spaces;word-break:break-word}
.doc a code{color:inherit}
.doc dl{margin:0 0 18px}
.doc dt{font-weight:600;color:var(--ink);margin-top:14px}
.doc dd{margin:4px 0 0 0}

/* tables */
.table{margin:0 0 22px;border:1px solid var(--line2);border-radius:12px;overflow-x:auto;background:var(--bg1)}
.doc table{width:100%;border-collapse:collapse;font-size:14.5px;line-height:1.5}
.doc th{padding:11px 14px;text-align:left;font:600 11.5px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--mut);background:rgba(255,255,255,.02);border-bottom:1px solid var(--line2);white-space:nowrap}
.doc td{padding:11px 14px;border-top:1px solid var(--line);vertical-align:top}
.doc tr:first-child td{border-top:0}
.doc td code{white-space:nowrap}

/* code */
.highlight,.doc pre{position:relative;margin:0 0 22px}
.highlight{border:1px solid var(--line2);border-radius:12px;background:#0b0c0f;overflow:hidden}
.highlight .filename{display:flex;align-items:center;gap:8px;padding:9px 16px;border-bottom:1px solid var(--line);font:500 12px/1.3 var(--mono);color:var(--ink2);background:rgba(255,255,255,.02)}
.highlight .filename::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--amb);opacity:.8}
.highlight pre{margin:0;padding:16px 18px;overflow-x:auto;font:500 13.5px/1.65 var(--mono);color:#e6e3dc;tab-size:2;scrollbar-width:thin;scrollbar-color:var(--line2) transparent}
.highlight pre code{font:inherit;background:none;border:0;padding:0;color:inherit}
.copy{position:absolute;top:8px;right:8px;z-index:2;display:flex;align-items:center;gap:6px;height:28px;padding:0 9px;border:1px solid var(--line2);border-radius:7px;background:#14161b;font:500 11.5px/1 var(--mono);color:var(--ink2);cursor:pointer;opacity:0;transition:opacity .15s,border-color .15s,color .15s}
.highlight:hover .copy,.copy:focus-visible{opacity:1}
.highlight .filename~.copy{top:44px}
.copy:hover{border-color:var(--line3);color:var(--ink)}
.copy.ok{color:var(--ok);border-color:rgba(98,217,154,.4);opacity:1}
.copy svg{width:13px;height:13px}
@media (hover:none){.copy{opacity:1}}
.highlight .hll{background:rgba(245,182,61,.1);display:block;margin:0 -18px;padding:0 18px;box-shadow:inset 2px 0 0 var(--amb)}
/* syntax */
.highlight .c,.highlight .c1,.highlight .cm,.highlight .cs,.highlight .ch,.highlight .cpf,.highlight .sd{color:#77746d;font-style:italic}
.highlight .k,.highlight .kd,.highlight .kn,.highlight .kr,.highlight .kp,.highlight .ow,.highlight .cp{color:#f5b63d}
.highlight .kc,.highlight .bp{color:#ef8b5a}
.highlight .kt,.highlight .nc,.highlight .nn,.highlight .nb{color:#5cc8c0}
.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sa,.highlight .sc,.highlight .dl,.highlight .sx,.highlight .sr,.highlight .ss,.highlight .sh{color:#a9d98c}
.highlight .se,.highlight .si{color:#ffd38a}
.highlight .m,.highlight .mi,.highlight .mf,.highlight .mh,.highlight .mo,.highlight .il{color:#8fb1ff}
.highlight .nf,.highlight .fm{color:#ffd38a}
.highlight .nd{color:#c4a1ff}
.highlight .na,.highlight .nt,.highlight .py{color:#c4a1ff}
.highlight .nv,.highlight .vi,.highlight .vg{color:#ef8b5a}
.highlight .o{color:#c3c0b9}
.highlight .p{color:#9a978f}
.highlight .gp{color:#f5b63d;user-select:none}
.highlight .go{color:#8b8882}
.highlight .gi{color:#62d99a}.highlight .gd{color:#ff6b5b}
.highlight .err{color:inherit;background:none}

/* tabs (pymdownx.tabbed alternate style) */
.tabbed-set{position:relative;display:flex;flex-wrap:wrap;margin:0 0 22px;border:1px solid var(--line2);border-radius:12px;background:#0b0c0f;overflow:hidden}
.tabbed-set>input{position:absolute;opacity:0;pointer-events:none}
.tabbed-labels{display:flex;width:100%;gap:2px;padding:6px 6px 0;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02);overflow-x:auto;scrollbar-width:none}
.tabbed-labels>label{position:relative;padding:8px 14px 10px;font:500 12.5px/1 var(--mono);color:var(--mut);cursor:pointer;white-space:nowrap;border-radius:7px 7px 0 0;transition:color .15s}
.tabbed-labels>label:hover{color:var(--ink2)}
.tabbed-content{width:100%}
.tabbed-block{display:none}
.tabbed-set>input:nth-child(1):checked~.tabbed-labels>:nth-child(1),.tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4){color:var(--amb)}
.tabbed-set>input:nth-child(1):checked~.tabbed-labels>:nth-child(1)::after,.tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2)::after,.tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3)::after,.tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4)::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;background:var(--amb);border-radius:2px}
.tabbed-set>input:nth-child(1):checked~.tabbed-content>:nth-child(1),.tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4){display:block}
.tabbed-block>.highlight{margin:0;border:0;border-radius:0}
.tabbed-block>.highlight .filename{background:transparent}
.tabbed-block>*:not(.highlight){margin-left:18px;margin-right:18px}
.tabbed-block>p:first-child{margin-top:16px}

/* admonitions */
.admonition{position:relative;margin:0 0 22px;padding:14px 18px 14px 50px;border:1px solid var(--line2);border-radius:12px;background:var(--bg1)}
.admonition::before{content:"";position:absolute;left:18px;top:17px;width:18px;height:18px;background:currentColor;-webkit-mask:var(--ico) center/contain no-repeat;mask:var(--ico) center/contain no-repeat;color:var(--info)}
.admonition .admonition-title{margin:0 0 4px;font-weight:600;color:var(--ink);font-size:15px}
.admonition>p{font-size:15px;line-height:1.65}
.admonition>:last-child{margin-bottom:0}
.admonition.note{--ico:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><circle cx='10' cy='10' r='8' fill='none' stroke='black' stroke-width='1.8'/><path d='M10 9v5M10 6.2v.3' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>");border-color:rgba(143,177,255,.25);background:linear-gradient(180deg,rgba(143,177,255,.06),rgba(143,177,255,.015))}
.admonition.tip{--ico:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 2.5a5.5 5.5 0 0 0-3.2 10c.5.4.7.9.7 1.5v.5h5v-.5c0-.6.2-1.1.7-1.5a5.5 5.5 0 0 0-3.2-10zM8 17.5h4' fill='none' stroke='black' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'/></svg>");border-color:rgba(98,217,154,.25);background:linear-gradient(180deg,rgba(98,217,154,.06),rgba(98,217,154,.015))}
.admonition.tip::before{color:var(--ok)}
.admonition.warning{--ico:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 3l8 14H2z' fill='none' stroke='black' stroke-width='1.7' stroke-linejoin='round'/><path d='M10 8v4M10 14.6v.3' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>");border-color:rgba(245,182,61,.3);background:linear-gradient(180deg,rgba(245,182,61,.07),rgba(245,182,61,.015))}
.admonition.warning::before{color:var(--amb)}
.admonition.danger{--ico:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 2.5l6.5 2.4v4.6c0 3.9-2.8 7-6.5 8-3.7-1-6.5-4.1-6.5-8V4.9z' fill='none' stroke='black' stroke-width='1.7' stroke-linejoin='round'/><path d='M10 7v4M10 13.6v.3' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>");border-color:rgba(255,107,91,.3);background:linear-gradient(180deg,rgba(255,107,91,.07),rgba(255,107,91,.015))}
.admonition.danger::before{color:var(--bad)}
.admonition.draft,.admonition.example{--ico:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M4 16l1-4 8.5-8.5a2 2 0 0 1 3 3L8 15z' fill='none' stroke='black' stroke-width='1.7' stroke-linejoin='round'/></svg>");border-style:dashed;border-color:rgba(196,161,255,.35);background:linear-gradient(180deg,rgba(196,161,255,.06),rgba(196,161,255,.012))}
.admonition.draft::before,.admonition.example::before{color:var(--lilac)}
details{margin:0 0 18px;border:1px solid var(--line2);border-radius:12px;background:var(--bg1);padding:0 18px}
details summary{cursor:pointer;padding:12px 0;font-weight:600;color:var(--ink)}
details[open] summary{border-bottom:1px solid var(--line);margin-bottom:12px}

/* steps */
.steps{counter-reset:st;margin:0 0 24px}
.steps>ol{list-style:none;padding:0;margin:0}
.steps>ol>li{position:relative;counter-increment:st;padding:0 0 10px 48px;margin:0}
.steps>ol>li::before{content:counter(st);position:absolute;left:0;top:0;width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(245,182,61,.4);border-radius:50%;background:#14120c;font:600 13px/1 var(--mono);color:var(--amb)}
.steps>ol>li::after{content:"";position:absolute;left:15px;top:36px;bottom:4px;width:1px;background:linear-gradient(var(--line3),transparent)}
.steps>ol>li:last-child::after{display:none}
.steps>ol>li>p:first-child{font-weight:600;color:var(--ink);font-size:17px;margin:2px 0 8px}

/* cards */
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0 0 24px}
.card{position:relative;display:block;padding:18px 18px 18px;border:1px solid var(--line2);border-radius:14px;background:linear-gradient(180deg,var(--bg2),var(--bg1));transition:border-color .2s,transform .2s,background .2s}
.card:hover{border-color:rgba(245,182,61,.45);transform:translateY(-2px)}
.card b{display:flex;align-items:center;gap:10px;font-size:16.5px;color:var(--ink);font-weight:600}
.card b svg{width:18px;height:18px;color:var(--amb);flex:none}
.card span{display:block;margin-top:6px;font-size:14.5px;line-height:1.55;color:var(--ink2)}
.card i{position:absolute;right:16px;top:18px;font-style:normal;color:var(--mut);transition:transform .2s,color .2s}
.card:hover i{transform:translateX(3px);color:var(--amb)}

/* diagrams */
.diagram{margin:6px 0 26px;padding:18px;border:1px solid var(--line2);border-radius:14px;background:radial-gradient(circle at 50% 0%,rgba(245,182,61,.05),transparent 60%),var(--bg1);overflow-x:auto}
.diagram svg{width:100%;min-width:560px;height:auto}
.diagram figcaption{margin-top:10px;font:500 12px/1.5 var(--mono);color:var(--mut)}
.d-box{fill:#111318;stroke:rgba(255,255,255,.2);stroke-width:1.2}
.d-box.amb{stroke:rgba(245,182,61,.7);fill:#15130d}
.d-box.fill{fill:var(--amb);stroke:var(--amb)}
.d-box.side{stroke-dasharray:4 4;fill:#0d0e11}
.d-box.bad{stroke:rgba(255,107,91,.6);fill:#150e0d}
.d-box.zone{fill:rgba(255,255,255,.015);stroke:rgba(255,255,255,.1);stroke-dasharray:5 5}
.d-line{stroke:rgba(255,255,255,.32);stroke-width:1.3;fill:none}
.d-line.amb{stroke:var(--amb)}
.d-line.dash{stroke-dasharray:4 4}
.d-line.bad{stroke:rgba(255,107,91,.7)}
.d-t{font:600 12px var(--mono);fill:var(--ink);letter-spacing:.02em}
.d-t.dark{fill:#0b0c0f}
.d-s{font:500 10.5px var(--mono);fill:var(--mut);letter-spacing:.02em}
.d-s.amb{fill:var(--amb)}
.d-h{font:600 10px var(--mono);fill:var(--mut);letter-spacing:.12em}
.d-dot{fill:var(--amb)}
.d-arr{fill:rgba(255,255,255,.45)}
.d-arr.amb{fill:var(--amb)}
.d-arr.bad{fill:rgba(255,107,91,.8)}

/* pager + footer */
.pager{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:760px;margin-top:56px}
.pg{display:block;padding:14px 18px;border:1px solid var(--line2);border-radius:12px;transition:border-color .2s}
.pg:hover{border-color:rgba(245,182,61,.45)}
.pg small{display:block;font:500 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.pg span{font-weight:600;color:var(--ink)}
.pg.next{text-align:right}
.pg.prev span::before{content:"← ";color:var(--mut)}
.pg.next span::after{content:" →";color:var(--mut)}
.home .pager{display:none}
.dfoot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;max-width:760px;margin-top:40px;padding-top:22px;border-top:1px solid var(--line);font:500 12px/1.5 var(--mono);color:var(--mut)}
.home .dfoot{max-width:none;margin:40px 56px 0}
.dfoot a{color:var(--ink2)}
.dfoot a:hover{color:var(--ink)}

/* home */
.hx{position:relative;padding:64px 56px 56px;border-bottom:1px solid var(--line);overflow:hidden}
.hx::before{content:"";position:absolute;inset:0;background:radial-gradient(600px 380px at 85% 20%,rgba(245,182,61,.1),transparent 70%);pointer-events:none}
.hx::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse 60% 80% at 80% 30%,#000,transparent 75%);mask-image:radial-gradient(ellipse 60% 80% at 80% 30%,#000,transparent 75%);pointer-events:none}
.hx-in{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,520px);gap:48px;align-items:center;max-width:1180px}
.hx .crumb{display:inline-flex;align-items:center;gap:10px}
.hx h1{font-size:clamp(38px,4.6vw,60px);line-height:1;letter-spacing:-.04em;font-weight:600;margin:6px 0 20px}
.hx h1 em{font-style:normal;color:var(--amb)}
.hx p.lead{font-size:18.5px;line-height:1.6;color:var(--ink2);max-width:34em;margin:0}
.hx-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.btn{display:inline-flex;align-items:center;gap:9px;height:44px;padding:0 18px;border-radius:11px;font-weight:600;font-size:15px;border:1px solid transparent;transition:background .2s,border-color .2s,transform .2s}
.btn.primary{background:var(--amb);color:#0b0c0f}
.btn.primary:hover{background:#f8c45f;transform:translateY(-1px)}
.btn.ghost{border-color:var(--line2);color:var(--ink)}
.btn.ghost:hover{border-color:var(--line3);background:rgba(255,255,255,.04)}
.hx-code .tabbed-set{margin:0;box-shadow:0 40px 90px -40px #000}
.hx-code .highlight pre{font-size:13px}
.hsec{padding:52px 56px 8px;max-width:1236px}
.hsec>h2{font-size:28px;letter-spacing:-.025em;margin:0 0 8px;padding:0}
.hsec>p.sub{color:var(--ink2);margin:0 0 24px;max-width:44em}
.hsec .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.ns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:12px}
.ns div{padding:16px 18px;border:1px solid var(--line2);border-radius:14px;background:var(--bg1)}
.ns code{font:600 13px var(--mono)!important;color:var(--amb)!important;background:none!important;border:0!important;padding:0!important}
.ns p{margin:6px 0 0!important;font-size:14.5px;line-height:1.55;color:var(--ink2)}
.flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;counter-reset:fl}
.flow div{position:relative;padding:18px;border:1px solid var(--line2);border-radius:14px;background:var(--bg1);counter-increment:fl}
.flow div::before{content:"0" counter(fl);display:block;font:600 12px/1 var(--mono);color:var(--amb);margin-bottom:12px}
.flow b{display:block;color:var(--ink);font-size:16px}
.flow p{margin:6px 0 0!important;font-size:14.5px;line-height:1.55;color:var(--ink2)}
.flow code{font-size:12.5px!important}

/* search */
.scrim{position:fixed;inset:0;z-index:80;background:rgba(4,5,6,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.search{position:fixed;inset:0;z-index:90;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;pointer-events:none}
.search-box{pointer-events:auto;width:min(640px,100%);max-height:70vh;display:flex;flex-direction:column;border:1px solid var(--line2);border-radius:16px;background:#101216;box-shadow:0 40px 120px -20px #000,0 0 0 1px rgba(0,0,0,.5);overflow:hidden}
.search-in{flex:none;display:flex;align-items:center;gap:12px;padding:0 16px;height:56px;border-bottom:1px solid var(--line)}
.search-in svg{width:18px;height:18px;color:var(--mut);flex:none}
.search-in input{flex:1;height:100%;outline:none;font-size:16.5px}
.search-in input::placeholder{color:var(--mut)}
.search-in input::-webkit-search-cancel-button{display:none}
.results{flex:1 1 auto;min-height:0;overflow-y:auto;padding:8px}
.results:empty{display:none}
.res{display:block;padding:10px 12px;border-radius:10px;cursor:pointer}
.res.on,.res:hover{background:rgba(245,182,61,.09)}
.res .rp{font:500 11px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--mut)}
.res .rh{display:block;margin-top:2px;font-weight:600;color:var(--ink);font-size:15px}
.res .rx{display:block;margin-top:2px;font-size:13.5px;line-height:1.5;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.res mark{background:none;color:var(--amb)}
.res-empty{padding:26px 14px;text-align:center;color:var(--mut);font-size:14px}
.search-foot{flex:none;display:flex;gap:18px;padding:10px 16px;border-top:1px solid var(--line);font-size:12px;color:var(--mut)}
.search-foot kbd{margin-right:3px}

/* responsive */
@media (max-width:1240px){
  .shell{grid-template-columns:var(--sb) minmax(0,1fr)}
  .toc{display:none}
  .hx-in{grid-template-columns:minmax(0,1fr)}
  .hx-code{max-width:640px}
}
@media (max-width:1020px){
  .top-links a:not(.xl){display:none}
  .hsec .cards,.ns{grid-template-columns:repeat(2,minmax(0,1fr))}
  .flow{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){
  .menu{display:grid}
  .shell,.home .shell{grid-template-columns:minmax(0,1fr)}
  .sidebar{position:fixed;top:var(--top);left:0;z-index:85;width:min(300px,86vw);height:calc(100vh - var(--top));background:#0b0c0f;transform:translateX(-102%);transition:transform .25s ease;box-shadow:30px 0 60px -30px #000}
  body.nav-open .sidebar{transform:none}
  .main{padding:32px 22px 32px}
  .search-btn{margin-left:auto;width:auto;flex:1;max-width:320px}
  .top-links{margin-left:0}
  .doc .anchor{display:none}
  .hx{padding:40px 22px 36px}
  .hsec{padding:40px 22px 4px}
  .home .dfoot{margin:32px 22px 0}
}
@media (max-width:640px){
  .top-in{gap:10px;padding:0 14px}
  .logo img{height:19px}
  .docs-tag{display:none}
  .search-btn span,.search-btn kbd{display:none}
  .search-btn{flex:none;width:38px;height:38px;justify-content:center;padding:0;margin-left:auto}
  .draft-in{padding:8px 14px;font-size:12.5px;flex-wrap:wrap;gap:6px 10px}
  .draft-in a{margin-left:0}
  .ph h1{font-size:31px}
  .ph .lead{font-size:16.5px}
  .doc h2{font-size:23px;margin-top:44px}
  .cards,.hsec .cards,.ns,.flow{grid-template-columns:minmax(0,1fr)}
  .pager{grid-template-columns:minmax(0,1fr)}
  .highlight pre{font-size:12.5px;padding:14px}
  .search{padding-top:10px}
  .hx h1{font-size:36px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
