:root,[data-theme="dark"]{--white:#ffffff;--grey-50:#fcfcf9;--grey-100:#ebebe8;--grey-200:#dfdfdd;--grey-300:#d4d4d2;--grey-450:#9c9c99;--grey-500:#646462;--grey-600:#3c3c3a;--grey-700:#2b2b29;--black:#171716;--blue:#1d0fed;--blue-soft:#8fa9ff;--orange:#f27332;--ground-dark:#0f0f0e;--ground-light:#f5f5f2;--ground:var(--ground-dark);--surface:var(--black);--raised:var(--grey-700);--line:var(--grey-700);--edge:var(--grey-600);--wash:rgba(43,43,41,0.5);--ink:var(--white);--ink-body:var(--grey-300);--ink-muted:var(--grey-450);--accent-ink:var(--blue-soft);--accent-soft:rgba(47,99,255,0.16);--primary:var(--grey-50);--on-primary:var(--black);--focus-ring:var(--accent-ink);--warn-ink:var(--orange);--syntax-plain:var(--grey-300);--syntax-keyword:var(--blue-soft);--syntax-function:#f4df9a;--syntax-type:#6fcfd6;--syntax-string:#f2a0c2;--syntax-comment:var(--grey-450);color-scheme:dark}[data-theme="light"]{--ground:var(--ground-light);--surface:var(--white);--raised:var(--grey-100);--line:var(--grey-200);--edge:var(--grey-300);--wash:rgba(235,235,232,0.5);--ink:var(--black);--ink-body:var(--grey-600);--ink-muted:var(--grey-500);--accent-ink:var(--blue);--accent-soft:rgba(29,15,237,0.1);--primary:var(--black);--on-primary:var(--white);--focus-ring:var(--accent-ink);--warn-ink:#ad4a00;--syntax-plain:var(--grey-600);--syntax-keyword:var(--blue);--syntax-function:#6d24b5;--syntax-type:#0a6b75;--syntax-string:#a8205b;--syntax-comment:var(--grey-500);color-scheme:light}@media (prefers-color-scheme:light){[data-theme="system"]{--ground:var(--ground-light);--surface:var(--white);--raised:var(--grey-100);--line:var(--grey-200);--edge:var(--grey-300);--wash:rgba(235,235,232,0.5);--ink:var(--black);--ink-body:var(--grey-600);--ink-muted:var(--grey-500);--accent-ink:var(--blue);--accent-soft:rgba(29,15,237,0.1);--primary:var(--black);--on-primary:var(--white);--focus-ring:var(--accent-ink);--warn-ink:#ad4a00;--syntax-plain:var(--grey-600);--syntax-keyword:var(--blue);--syntax-function:#6d24b5;--syntax-type:#0a6b75;--syntax-string:#a8205b;--syntax-comment:var(--grey-500);color-scheme:light}}:root{--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-24:24px;--space-32:32px;--space-48:48px;--space-64:64px;--radius-control:4px;--radius-card:6px;--page-max:1440px;--measure:54ch;--page-pad:48px;--control-md:32px;--control-sm:28px;--vx-motion:150ms ease-out;--font-display:var(--font-sans);--font-sans:Geist,system-ui,sans-serif;--font-mono:"Geist Mono",ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Cascadia Mono","Liberation Mono",monospace}@media (max-width:640px){:root{--page-pad:16px}}.vx-display{font-family:var(--font-display);font-size:64px;line-height:0.98;font-weight:500;letter-spacing:-0.02em}.vx-h1{font-family:var(--font-display);font-size:48px;line-height:1.05;font-weight:500;letter-spacing:-0.02em}.vx-h2{font-family:var(--font-display);font-size:36px;line-height:1.1;font-weight:500;letter-spacing:-0.02em}.vx-h3{font-family:var(--font-display);font-size:28px;line-height:1.15;font-weight:500;letter-spacing:-0.02em}.vx-h4{font-family:var(--font-display);font-size:22px;line-height:1.2;font-weight:600;letter-spacing:-0.02em}.vx-h5{font-family:var(--font-display);font-size:18px;line-height:1.25;font-weight:600;letter-spacing:-0.01em}.vx-display-mono{font-family:var(--font-mono);font-size:40px;line-height:1.1;font-weight:500;letter-spacing:-0.04em}.vx-label{font-family:var(--font-mono);font-size:12px;line-height:1.3;font-weight:500;letter-spacing:0}.vx-label-sm{font-family:var(--font-mono);font-size:11px;line-height:1.3;font-weight:500;letter-spacing:0}:where([class*="vx-"]),:where([class*="vx-"])::before,:where([class*="vx-"])::after{box-sizing:border-box}.vx-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.vx-skip-link{position:fixed;top:var(--space-8);left:var(--space-8);z-index:1200;padding:var(--space-8) var(--space-12);border-radius:var(--radius-control);background:var(--ground);color:var(--ink);font-family:var(--font-mono);font-size:12px;line-height:1.3;font-weight:500;text-decoration:none}.vx-skip-link:not(:focus){width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}main[tabindex="-1"]:focus{outline:none}.vx-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card)}.vx-label,.vx-label-sm{color:var(--ink-muted)}.vx-ref{font-family:var(--font-mono);font-size:inherit;text-transform:none;letter-spacing:0;user-select:all;overflow-wrap:anywhere}.vx-num{font-variant-numeric:tabular-nums}.vx-link,.vx-prose a:not([class*="vx-"]){color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb,var(--ink) 30%,transparent);text-underline-offset:3px;transition:color var(--vx-motion),text-decoration-color var(--vx-motion)}.vx-link:hover,.vx-prose a:not([class*="vx-"]):hover{color:var(--accent-ink);text-decoration-color:currentColor}:where(.vx-display,.vx-display-mono,.vx-h1,.vx-h2,.vx-h3,.vx-h4,.vx-h5){color:var(--ink)}.vx-chain{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-8);font:400 12.5px/1 var(--font-mono);color:var(--ink-body)}.vx-chain-step{padding:var(--space-4) var(--space-8);background:var(--raised);border:1px solid var(--edge);border-radius:var(--radius-control)}.vx-chain-arrow{color:var(--ink-muted)}.vx-nav-link{display:inline-flex;align-items:center;gap:var(--space-4);color:var(--ink-muted);text-decoration:none;white-space:nowrap;transition:color var(--vx-motion)}.vx-nav-link:hover,.vx-nav-link[aria-current="page"],.vx-nav-link[aria-current="true"]{color:var(--ink)}.vx-nav-link svg{width:16px;height:16px;fill:currentColor}.vx-source{display:inline-flex;flex-wrap:wrap;white-space:normal;align-items:center;gap:var(--space-4)}.vx-btn{display:inline-flex;align-items:center;gap:var(--space-8);height:var(--control-md);padding:0 var(--space-16);border:1px solid transparent;border-radius:var(--radius-control);font:500 14px/1 var(--font-sans);color:var(--ink);background:transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background-color var(--vx-motion),border-color var(--vx-motion)}.vx-btn svg{width:16px;height:16px;fill:currentColor}.vx-btn[disabled],.vx-btn[aria-disabled="true"]{background:transparent;border-color:var(--line);color:var(--ink-muted);cursor:not-allowed}.vx-btn-primary{background:var(--primary);color:var(--on-primary)}.vx-btn-secondary{border-color:var(--edge)}.vx-btn-secondary:hover{border-color:var(--ink)}.vx-btn-ghost:hover{background:var(--raised)}.vx-btn-primary:active:not([disabled],[aria-disabled="true"]){background:color-mix(in srgb,var(--primary) 82%,var(--ground))}.vx-btn-secondary:active:not([disabled],[aria-disabled="true"]){background:var(--raised)}.vx-btn-ghost:active:not([disabled],[aria-disabled="true"]){background:var(--edge)}.vx-btn.is-mono{padding:0 var(--space-12);font:400 13px/1 var(--font-mono)}.vx-btn-count{display:inline-flex;align-items:center;gap:var(--space-4);padding-left:var(--space-12);border-left:1px solid var(--edge);color:var(--ink-muted)}.vx-btn-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-12)}.vx-header{position:sticky;top:0;z-index:1000;display:flex;align-items:center;gap:var(--space-24);width:100%;max-width:var(--page-max);height:64px;margin-inline:auto;padding:0 var(--page-pad);background:var(--ground);border-bottom:1px solid var(--line)}html:has(.vx-header){scroll-padding-top:calc(var(--space-64) + var(--space-8))}.vx-header-start{display:flex;flex-shrink:0;align-items:center}.vx-header-mark{height:24px;width:auto;display:block}.vx-header-mark.is-light,[data-theme="light"] .vx-header-mark.is-dark{display:none}[data-theme="light"] .vx-header-mark.is-light{display:block}@media (prefers-color-scheme:light){[data-theme="system"] .vx-header-mark.is-dark{display:none}[data-theme="system"] .vx-header-mark.is-light{display:block}}.vx-header-nav{display:flex;gap:var(--space-24)}.vx-header-tools{display:flex;align-items:center;gap:var(--space-12);min-width:0;margin-left:auto}.vx-header-end{display:flex;flex-shrink:0;align-items:center;gap:var(--space-16);margin-left:auto}.vx-header-tools + .vx-header-end{margin-left:0}@media (min-width:961px){.vx-header-start{padding-right:var(--space-32)}.vx-header-end{padding-left:var(--space-32)}}.vx-header-search{position:relative;display:flex;align-items:center;flex:0 1 320px;min-width:160px;margin:0;color:var(--ink-muted)}.vx-header-search svg{position:absolute;left:var(--space-12);width:16px;height:16px;fill:currentColor;pointer-events:none}.vx-header-search input{box-sizing:border-box;width:100%;height:var(--control-md);margin:0;padding:0 var(--space-12) 0 calc(var(--space-12) + 16px + var(--space-8));background:var(--raised);border:1px solid var(--edge);border-radius:var(--radius-control);color:var(--ink);font:400 14px/1 var(--font-sans);transition:border-color var(--vx-motion)}.vx-header-search input:hover{border-color:var(--ink)}.vx-header-search input::placeholder{color:var(--ink-muted);opacity:1}.vx-header-search-link{display:none}.vx-header-menu{display:none}.vx-header-menu>summary{list-style:none}.vx-header-menu>summary::-webkit-details-marker{display:none}.vx-header-menu>summary .is-close,.vx-header-menu[open]>summary .is-open{display:none}.vx-header-menu[open]>summary .is-close{display:block}.vx-header-menu[open]>summary{border-color:var(--ink)}.vx-header-menu-panel{position:absolute;z-index:10;top:calc(100% + var(--space-8));right:var(--page-pad);display:grid;width:220px;padding:var(--space-4) 0;background:var(--ground);border:1px solid var(--edge);border-radius:var(--radius-card)}.vx-header-menu-panel .vx-nav-link{display:flex;min-height:44px;padding:0 var(--space-16)}.vx-header-menu-panel .vx-nav-link:hover{background:var(--wash)}.vx-header-menu-spill{display:none}@media (max-width:1180px){.vx-header-repo,.vx-header .vx-btn-count{display:none}}@media (max-width:960px){.vx-header-nav,.vx-header-search{display:none}.vx-header-menu{display:block}.vx-header-search-link{display:inline-flex}}@media (max-width:640px){.vx-header{gap:var(--space-12)}.vx-header-end,.vx-header-tools{gap:var(--space-8)}.vx-header-end>.vx-theme-switch,.vx-header-end>.vx-header-github{display:none}.vx-header-menu-spill{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);padding:var(--space-8) var(--space-16);border-top:1px solid var(--line)}a.vx-header-menu-spill{padding-block:0}.vx-header-menu-text{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}.vx-footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-16) var(--space-24);padding:var(--space-16) var(--page-pad);border-top:1px solid var(--line);font:400 11px/1.5 var(--font-mono);letter-spacing:0.02em;color:var(--ink-muted)}.vx-footer-mark{height:12px;width:auto;opacity:0.85}[data-theme="light"] .vx-footer-mark{filter:invert(1)}@media (prefers-color-scheme:light){[data-theme="system"] .vx-footer-mark{filter:invert(1)}}.vx-footer-text{flex:1 1 420px;min-width:0;max-width:96ch;margin:0;text-wrap:balance}.vx-footer-credit{white-space:nowrap}.vx-footer-nav{display:flex;flex-wrap:wrap;gap:var(--space-8) var(--space-16);margin-left:auto}@media (max-width:640px){.vx-footer-nav{margin-left:0}}.vx-theme-switch,.vx-switch{display:inline-flex;gap:2px;min-width:0;margin:0;padding:2px;background:var(--raised);border:1px solid var(--edge);border-radius:var(--radius-control)}.vx-theme-switch button{all:unset;box-sizing:border-box;cursor:pointer;display:grid;place-items:center;width:26px;height:26px;border-radius:var(--radius-control);color:var(--ink-muted);transition:color var(--vx-motion),background-color var(--vx-motion)}.vx-switch button{all:unset;box-sizing:border-box;cursor:pointer;height:26px;padding:0 var(--space-12);border-radius:var(--radius-control);font:400 12.5px/26px var(--font-sans);white-space:nowrap;color:var(--ink-muted);transition:color var(--vx-motion),background-color var(--vx-motion)}.vx-theme-switch button:hover,.vx-switch button:hover{color:var(--ink)}.vx-theme-switch button[aria-pressed="true"],.vx-switch button[aria-pressed="true"],:root[data-theme-choice="light"] .vx-theme-switch:not(:has([aria-pressed="true"])) button[data-choice="light"],:root[data-theme-choice="dark"] .vx-theme-switch:not(:has([aria-pressed="true"])) button[data-choice="dark"],:root[data-theme-choice="system"] .vx-theme-switch:not(:has([aria-pressed="true"])) button[data-choice="system"]{background:var(--surface);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}.vx-theme-switch button:active,.vx-switch button:active{background:var(--edge)}.vx-theme-switch svg{width:16px;height:16px;fill:currentColor}.vx-status{flex:1 0 auto;display:grid;grid-template-columns:minmax(0,760px);align-content:center;gap:var(--space-48);padding:var(--space-32) var(--page-pad)}.vx-status.has-mark{grid-template-columns:minmax(0,760px) minmax(320px,1fr);align-content:normal}.vx-status-text{display:grid;align-content:center;justify-items:start;gap:var(--space-24)}.vx-status-text>*{margin:0}.vx-status-sentence{font:400 16px/1.6 var(--font-mono);color:var(--ink-body)}.vx-status-code{font:500 64px/0.98 var(--font-mono);letter-spacing:-0.04em;color:var(--ink)}.vx-status-mark{position:relative;min-height:0;container-type:size}.vx-status-mark>*{position:absolute;inset:0;height:min(100cqh,90cqw);margin:auto 0}@media (max-width:1099px){.vx-status.has-mark{grid-template-columns:minmax(0,1fr);align-content:center;gap:var(--space-24)}.vx-status-mark{height:320px}}@media (max-width:640px){.vx-status-mark{height:240px}}@media (max-width:640px){.vx-status-code{font-size:48px}}.has-dot-field{position:relative;isolation:isolate}.vx-dot-field{--dot-field-ink:var(--grey-700);position:absolute;inset:0 0 auto;height:min(100%,1400px);z-index:-1;pointer-events:none;font:400 12px/14px var(--font-mono);background-image:radial-gradient(circle at 0.5ch 10px,var(--dot-field-ink) 0.8px,transparent 1.2px);background-size:2ch 28px;-webkit-mask-image:radial-gradient(closest-side,#000 40%,transparent 100%);mask-image:radial-gradient(closest-side,#000 40%,transparent 100%)}[data-theme="light"] .vx-dot-field{--dot-field-ink:var(--grey-300)}@media (prefers-color-scheme:light){[data-theme="system"] .vx-dot-field{--dot-field-ink:var(--grey-300)}}@media (forced-colors:active),print{.vx-dot-field{display:none}}.vx-docs{margin:0;background:var(--ground);color:var(--ink-body);font:400 1rem/1.6 var(--font-sans);overflow-x:clip}.vx-docs *,.vx-docs ::before,.vx-docs ::after{box-sizing:border-box}.vx-docs svg{width:16px;height:16px;flex:none;fill:currentColor}.vx-docs summary{list-style:none;cursor:pointer}.vx-docs summary::-webkit-details-marker{display:none}.vx-docs-skip{position:absolute;z-index:9;left:var(--space-8);top:-6rem;padding:var(--space-8) var(--space-12);background:var(--surface);color:var(--ink);border:1px solid var(--edge);border-radius:var(--radius-control)}.vx-docs-skip:focus{top:var(--space-8)}.vx-docs-toggle{display:none;position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.vx-docs-label,.vx-docs-toc p,.vx-docs-fold>summary,.vx-docs-nav .toctree-l1>a,.vx-docs-main p.rubric,.vx-docs-main .highlight::before{font:500 0.75rem/1.3 var(--font-mono);color:var(--ink-muted)}.vx-docs-menu{display:none}.vx-docs-menu{align-items:center;height:var(--control-md);padding:0 var(--space-12);border:1px solid var(--edge);border-radius:var(--radius-control);font:400 0.8125rem/1 var(--font-mono);color:var(--ink-body);cursor:pointer;transition:border-color var(--vx-motion)}.vx-docs-menu:hover{border-color:var(--ink)}.vx-docs-layout{display:grid;grid-template-columns:260px minmax(0,1fr) 220px;max-width:var(--page-max);margin:0 auto;padding:0 var(--page-pad)}.vx-docs-nav,.vx-docs-toc{grid-row:1;position:sticky;top:var(--space-64);align-self:start;max-height:calc(100vh - var(--space-64));overflow-y:auto}.vx-docs-page{grid-column:2;grid-row:1;min-width:0;padding:var(--space-32) var(--space-32) var(--space-48);background:var(--surface);border-inline:1px solid var(--line)}.vx-docs-main{font-size:1rem;line-height:1.6;text-wrap:pretty}.vx-docs-toc{grid-column:3;padding:var(--space-16) 0 var(--space-32) var(--space-24)}.vx-docs-nav{padding:var(--space-8) var(--space-12) var(--space-32) 0;font-size:0.875rem;line-height:1.3}.vx-docs-nav ul,.vx-docs-toc ul{list-style:none;margin:0;padding:0}.vx-docs-nav li{position:relative}.vx-docs-nav ul ul{padding-left:var(--space-12)}.vx-docs-nav .toctree-l1{margin-top:var(--space-4)}.vx-docs-nav a{display:flex;align-items:center;min-height:var(--control-sm);padding:2px var(--space-32) 2px var(--space-8);border-radius:var(--radius-control);font:400 0.8125rem/1.3 var(--font-mono);color:var(--ink-body);text-decoration:none;transition:background-color var(--vx-motion),color var(--vx-motion)}.vx-docs-nav a:hover,.vx-docs-nav summary:hover{background:var(--wash);color:var(--ink)}.vx-docs-nav a:active{background:var(--edge)}.vx-docs-nav a[aria-current="page"]{background:var(--raised);color:var(--ink);font-weight:500}.vx-docs-nav summary{position:absolute;top:0;right:0;width:var(--control-sm);height:var(--control-sm);border-radius:var(--radius-control);color:var(--ink-muted)}.vx-docs-nav summary::after,.vx-docs-fold>summary::after{content:"";position:absolute;inset:var(--space-8);background:currentColor;mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'><path d='M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z'/></svg>") center / contain no-repeat;transition:rotate var(--vx-motion)}.vx-docs-nav details[open]>summary::after,.vx-docs-fold[open]>summary::after{rotate:90deg}.vx-docs-toc p{margin:0 0 var(--space-12)}.vx-docs-toc ul ul{padding-left:var(--space-12)}.vx-docs-toc nav>ul{border-left:1px solid var(--line)}.vx-docs-toc a,.vx-docs-fold a{display:block;margin-left:-1px;padding:3px 0 3px var(--space-16);font:400 0.8125rem/1.4 var(--font-mono);color:var(--ink-muted);text-decoration:none;overflow-wrap:anywhere;transition:color var(--vx-motion)}.vx-docs-toc a:hover,.vx-docs-fold a:hover{color:var(--ink)}.vx-docs-fold{display:none;margin:0 0 var(--space-24);border:1px solid var(--line);border-radius:var(--radius-card)}.vx-docs-fold>summary{position:relative;padding:var(--space-8) var(--space-12);line-height:20px}.vx-docs-fold>summary::after{inset:var(--space-12) var(--space-12) auto auto;width:16px;height:16px}.vx-docs-fold ul{list-style:none;margin:0 var(--space-12) var(--space-12);padding:0}.vx-docs-fold ul ul{margin:0;padding-left:var(--space-12)}.vx-docs-pager{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-16);margin-top:var(--space-48)}.vx-docs-pager a{padding:var(--space-12) var(--space-16);border:1px solid var(--line);border-radius:var(--radius-card);font:500 0.875rem/1.4 var(--font-mono);color:var(--ink);text-decoration:none;transition:background-color var(--vx-motion)}.vx-docs-pager a:hover{background:var(--wash)}.vx-docs-pager a:active{background:var(--edge)}.vx-docs-pager .vx-docs-label{display:block;margin-bottom:var(--space-4)}.vx-docs-pager .is-next{grid-column:2;text-align:right}.vx-docs-edit{margin:var(--space-32) 0 0;font-size:0.875rem}.vx-docs-edit a{color:var(--ink-muted);transition:color var(--vx-motion)}.vx-docs-edit a:hover{color:var(--ink)}.vx-docs-main :where(section>*,dd>*,.admonition>*){margin:0 0 var(--space-16)}.vx-docs-main :where(section>:is(p,ul,ol,blockquote,dl.simple)){max-width:var(--measure)}.vx-docs-main li + li{margin-top:var(--space-4)}.vx-docs-main li::marker{color:var(--ink-muted)}.vx-docs-main :is(h1,h2,h3,h4){scroll-margin-top:var(--space-16);color:var(--ink);text-wrap:balance}.vx-docs-main h1{margin:0 0 var(--space-24);font:500 1.75rem/1.15 var(--font-mono);letter-spacing:-0.02em}.vx-docs-main h2{margin:var(--space-32) 0 var(--space-8);font:600 1.375rem/1.2 var(--font-mono);letter-spacing:-0.02em}.vx-docs-main h3{margin:var(--space-24) 0 var(--space-8);font:600 1.125rem/1.25 var(--font-mono);letter-spacing:-0.01em}.vx-docs-main h4{margin:var(--space-16) 0 var(--space-4);font:600 1rem/1.25 var(--font-mono);letter-spacing:-0.01em}.vx-docs-main strong{font-weight:600;color:var(--ink)}.vx-docs-main a{color:var(--accent-ink);text-decoration:underline 1px color-mix(in srgb,var(--accent-ink) 40%,transparent);text-underline-offset:3px;transition:color var(--vx-motion),text-decoration-color var(--vx-motion)}.vx-docs-main a:hover{text-decoration-color:currentColor}.vx-docs-main a:has(>code){text-decoration:none}.vx-docs-main hr{margin:var(--space-32) 0;border:0;border-top:1px solid var(--line)}.vx-docs-main blockquote{padding-left:var(--space-16);border-left:2px solid var(--edge)}.vx-docs-main img{max-width:100%;height:auto}.vx-docs-main figcaption{margin-top:var(--space-8);font-size:0.875rem;line-height:1.5;color:var(--ink-muted)}.vx-docs-main figcaption p{margin:0}.vx-docs-main p.rubric{margin:var(--space-24) 0 var(--space-8)}.vx-docs-main a.headerlink{display:inline-flex;margin-left:var(--space-8);vertical-align:middle;font-size:0;opacity:0;transition:opacity var(--vx-motion)}.vx-docs-main a.headerlink::before{content:"";width:16px;height:16px;background:var(--ink-muted);mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'><path d='M440-280H280q-83 0-141.5-58.5T80-480q0-83 58.5-141.5T280-680h160v80H280q-50 0-85 35t-35 85q0 50 35 85t85 35h160v80ZM320-440v-80h320v80H320Zm200 160v-80h160q50 0 85-35t35-85q0-50-35-85t-85-35H520v-80h160q83 0 141.5 58.5T880-480q0 83-58.5 141.5T680-280H520Z'/></svg>") center / contain no-repeat}.vx-docs-main :hover>a.headerlink,.vx-docs-main a.headerlink:focus-visible{opacity:1}.vx-docs-main code.literal{padding:1px var(--space-4);font:400 0.875em/1 var(--font-mono);color:var(--ink);background:var(--raised);border:1px solid var(--edge);border-radius:var(--radius-control);overflow-wrap:anywhere;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:border-color var(--vx-motion)}.vx-docs-main a:hover>code.literal{border-color:var(--ink)}.vx-docs-main a.reference>code.xref{color:var(--syntax-type);text-decoration:underline 1px color-mix(in srgb,currentColor 40%,transparent);text-underline-offset:2px}.vx-docs-main a.reference:hover>code.xref{text-decoration-color:currentColor}.vx-docs-main div[class*="highlight-"]>.highlight{background:var(--raised);border-radius:var(--radius-card);overflow:hidden}.vx-docs-main :where(div[class*="highlight-"])>.highlight::before{content:"Text";display:block;padding:var(--space-4) var(--space-16);border-bottom:1px solid var(--edge);line-height:20px}.vx-docs-main :is(.highlight-python,.highlight-pycon)>.highlight::before{content:"Python"}.vx-docs-main :is(.highlight-bash,.highlight-sh,.highlight-shell,.highlight-console)>.highlight::before{content:"Shell"}.vx-docs-main .highlight-rust>.highlight::before{content:"Rust"}.vx-docs-main .highlight-sql>.highlight::before{content:"SQL"}.vx-docs-main .highlight-java>.highlight::before{content:"Java"}.vx-docs-main .highlight-kotlin>.highlight::before{content:"Kotlin"}.vx-docs-main .highlight-c>.highlight::before{content:"C"}.vx-docs-main .highlight-cpp>.highlight::before{content:"C++"}.vx-docs-main .highlight-json>.highlight::before{content:"JSON"}.vx-docs-main .highlight-toml>.highlight::before{content:"TOML"}.vx-docs-main .highlight-xml>.highlight::before{content:"XML"}.vx-docs-main .highlight-cmake>.highlight::before{content:"CMake"}.vx-docs-main .highlight-protobuf>.highlight::before{content:"Protobuf"}.vx-docs-main .highlight pre{margin:0;padding:var(--space-12) var(--space-16);overflow-x:auto;font:400 0.8125rem/1.5 var(--font-mono);color:var(--syntax-plain);tab-size:4}.vx-docs-main .highlight :is(.k,.kn,.kd,.kr,.kp,.ow,.nt){color:var(--syntax-keyword)}.vx-docs-main .highlight :is(.nf,.fm,.nb,.bp,.nd){color:var(--syntax-function)}.vx-docs-main .highlight :is(.nc,.ne,.nn,.kt){color:var(--syntax-type)}.vx-docs-main .highlight :is(.s,.s1,.s2,.sa,.sb,.sc,.sd,.se,.sh,.si,.sx,.m,.mi,.mf,.mh,.mo,.il,.kc){color:var(--syntax-string)}.vx-docs-main .highlight :is(.c,.c1,.cm,.ch,.cs,.cp,.gp){color:var(--syntax-comment)}.vx-docs-main .highlight :is(.c,.c1,.cm,.ch,.cs){font-style:italic}.vx-docs-main .admonition{position:relative;padding:var(--space-12) var(--space-16) var(--space-12) var(--space-48);background:var(--raised);border-radius:var(--radius-card);font-size:0.875rem;line-height:1.55}.vx-docs-main .admonition::before{content:"";position:absolute;left:var(--space-16);top:13px;width:20px;height:20px;background:var(--ink);mask:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'><path d='M440-280h80v-240h-80v240Zm40-320q17 0 28.5-11.5T520-640q0-17-11.5-28.5T480-680q-17 0-28.5 11.5T440-640q0 17 11.5 28.5T480-600Zm0 520q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Z'/></svg>") center / contain no-repeat}.vx-docs-main :is(.warning,.caution,.attention,.danger,.error)::before{mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 -960 960 960'><path d='m40-120 440-760 440 760H40Zm138-80h604L480-720 178-200Zm302-40q17 0 28.5-11.5T520-280q0-17-11.5-28.5T480-320q-17 0-28.5 11.5T440-280q0 17 11.5 28.5T480-240Zm-40-120h80v-200h-80v200Z'/></svg>");background:var(--warn-ink)}.vx-docs-main .admonition>*{margin-bottom:var(--space-8)}.vx-docs-main .admonition>:last-child{margin-bottom:0}.vx-docs-main p.admonition-title{margin-bottom:2px;font-weight:600;color:var(--ink)}.vx-docs-main :is(.warning,.caution,.attention,.danger,.error)>p.admonition-title{color:var(--warn-ink)}.vx-docs-main table.docutils{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:0.875rem;line-height:1.4;font-variant-numeric:tabular-nums}.vx-docs-main table.docutils th{padding:calc(var(--space-12) / 2) var(--space-12) calc(var(--space-12) / 2) 0;border-bottom:1px solid var(--edge);text-align:left;vertical-align:bottom;font:500 0.6875rem/1.3 var(--font-mono);color:var(--ink-muted)}.vx-docs-main table.docutils td{padding:calc(var(--space-12) / 2) var(--space-12) calc(var(--space-12) / 2) 0;border-bottom:1px solid var(--line);vertical-align:top}@media (min-width:761px){.vx-docs-main table.autosummary td:first-child code{overflow-wrap:normal}}.vx-docs-main :is(td,th)>p{margin:0}.vx-docs-main :is(dl.py,dl.c){margin:var(--space-32) 0}.vx-docs-main :is(dl.py,dl.c) :is(dl.py,dl.c){margin:var(--space-24) 0}.vx-docs-main dt.sig{padding:var(--space-8) var(--space-12);background:var(--raised);border-radius:var(--radius-control);font:400 0.875rem/1.6 var(--font-mono);color:var(--syntax-plain);overflow-wrap:anywhere}.vx-docs-main dt.sig .sig-name{font-weight:600;color:var(--ink)}.vx-docs-main dt.sig :is(.sig-prename,.sig-paren){color:var(--ink-muted)}.vx-docs-main dt.sig .property,.vx-docs-main dt.sig .k{font-style:normal;color:var(--syntax-keyword)}.vx-docs-main dt.sig em{font-style:normal}.vx-docs-main dt.sig a{text-decoration:none}.vx-docs-main dt.sig :is(a.reference,.sig-return-typehint){color:var(--syntax-type)}.vx-docs-main dt.sig a.reference:hover{text-decoration:underline}.vx-docs-main :is(dl.py,dl.c)>dd{margin:var(--space-12) 0 0 var(--space-24)}.vx-docs-main dl.field-list{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--space-8) var(--space-24);font-size:1rem}.vx-docs-main dl.field-list>dt{padding-top:var(--space-4);font:600 0.875rem/1.5 var(--font-mono);color:var(--ink)}.vx-docs-main dl.field-list>dt .colon{display:none}.vx-docs-main dl.field-list>dd{margin:0}.vx-docs-main dl.field-list>dd>:last-child{margin-bottom:0}.vx-docs-main dl.field-list a.reference>code.xref{padding:0;background:none;border:0;color:var(--syntax-type)}.vx-docs-main dl.field-list a.reference:hover>code.xref{text-decoration:underline}.vx-docs-main aside.footnote{display:flex;gap:var(--space-8);font-size:0.875rem;color:var(--ink-muted)}.vx-docs-main aside.footnote>p{margin:0}.vx-docs-main table.indextable{width:100%;border-collapse:collapse;font-size:0.875rem}.vx-docs-main table.indextable td{padding:var(--space-4) var(--space-16) var(--space-4) 0;vertical-align:top}.vx-docs-main table.indextable ul{margin:0;padding:0;list-style:none}.vx-docs-main table.indextable tr.cap td{padding-top:var(--space-24);font:500 0.75rem/1.3 var(--font-mono);color:var(--ink-muted)}.vx-docs-main :is(.genindex-jumpbox,.modindex-jumpbox){font-family:var(--font-mono);overflow-wrap:anywhere}.vx-docs-main form:not([role]){display:flex;gap:var(--space-8)}.vx-docs-main form:not([role]) input{height:var(--control-md);padding:0 var(--space-12);background:var(--raised);border:1px solid var(--edge);border-radius:var(--radius-control);color:var(--ink);font:400 0.875rem var(--font-sans)}.vx-docs-main form:not([role]) input[type="text"]{flex:1;min-width:0}.vx-docs-main form:not([role]) input[type="submit"]{cursor:pointer}.vx-docs-main ul.search{padding:0;list-style:none}.vx-docs-main ul.search>li{padding:var(--space-16) 0;border-bottom:1px solid var(--line)}.vx-docs-main ul.search p.context{margin:var(--space-4) 0 0;font-size:0.875rem;color:var(--ink-muted)}.vx-docs-main span.highlighted{background:var(--accent-soft);color:var(--ink)}@media (max-width:1120px){.vx-docs-layout{grid-template-columns:260px minmax(0,1fr)}.vx-docs-layout>.vx-docs-toc{display:none}.vx-docs-fold{display:block}}@media (max-width:760px){.vx-docs-layout{display:block;padding:0}.vx-docs-layout>.vx-docs-nav{display:none;position:static;max-height:none;padding:var(--space-8) var(--page-pad) var(--space-24);border-bottom:1px solid var(--line)}.vx-docs-toggle{display:block}.vx-docs-toggle:checked ~ .vx-docs-layout .vx-docs-nav{display:block}.vx-docs-menu{display:inline-flex}.vx-docs-page{padding:var(--space-24) var(--page-pad) var(--space-32);border:0}.vx-docs-main dl.field-list{grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.vx-docs-main table.genindextable,.vx-docs-main table.genindextable :is(tbody,tr,td){display:block}}:is(a,button,input,select,textarea,summary,[tabindex]):focus-visible,.vx-docs-toggle:focus-visible ~ .vx-header .vx-docs-menu{outline:2px solid var(--focus-ring);outline-offset:2px}:is(.vx-docs-nav a,.vx-docs-nav summary,.vx-docs-toc a,.vx-docs-fold a,.vx-post-row,.vx-tree-node,.vx-tabs-list button,.vx-switch button,.vx-theme-switch button,.vx-table-wrap :is(a,button),.vx-docs-main table.docutils a):focus-visible{outline-offset:-2px}@font-face{font-family:"Geist Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/geist-mono-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}[data-theme="dark"] .only-light,[data-theme="light"] .only-dark{display:none!important}@media (prefers-color-scheme:dark){[data-theme="system"] .only-light{display:none!important}}@media (prefers-color-scheme:light){[data-theme="system"] .only-dark{display:none!important}}.page-index .vx-docs-main>section>h1{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.vx-docs-main .vortex-wordmark{display:block;max-width:min(400px,100%);margin:var(--space-24) auto var(--space-48)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--space-16)}.card{position:relative;padding:var(--space-12) var(--space-16);border:1px solid var(--line);border-radius:var(--radius-card);font-size:0.875rem;line-height:1.5;transition:background-color var(--vx-motion)}.card:hover{background:var(--wash)}.vx-docs-main .card>*{margin:0 0 var(--space-8)}.vx-docs-main .card>:last-child{margin-bottom:0}.vx-docs-main .card>p:first-child a{text-decoration:none}.card>p:first-child a::after{content:"";position:absolute;inset:0}table.versioning-terms td:first-child{white-space:nowrap}figure.versioning-diagram{margin-inline:0}figure.versioning-diagram img{border-radius:var(--radius-card)}body.page-404{display:flex;flex-direction:column;min-height:100dvh}.vx-docs-status{flex:1 0 auto;display:flex;flex-direction:column}.vx-ascii-mark-still{position:absolute;inset:0;margin:auto;width:40%;height:auto;opacity:0.85}:root[data-theme-choice] .vx-ascii-mark-still{visibility:hidden}:root[data-theme-choice] [data-mark-mode="static"]>.vx-ascii-mark-still,:root[data-theme-choice] [data-mark-mode="error"]>.vx-ascii-mark-still{visibility:visible}[data-theme="light"] .vx-ascii-mark-still{filter:invert(1)}@media (prefers-color-scheme:light){[data-theme="system"] .vx-ascii-mark-still{filter:invert(1)}}