@font-face{font-family:poppins;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/poppins-latin-600-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:poppins;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/poppins-latin-700-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:atkinson hyperlegible;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/atkinson-hyperlegible-latin-400-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:atkinson hyperlegible;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/atkinson-hyperlegible-latin-700-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:fira code;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/fira-code-latin-400-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:fira code;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/fira-code-latin-500-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:fira code;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/fira-code-latin-600-normal.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--radius:0.625rem;--background:oklch(1 0 0);--foreground:oklch(0.1743 0.0105 276.35);--card:oklch(1 0 0);--popover:oklch(1 0 0);--primary:oklch(0.5809 0.2683 319.62);--primary-foreground:oklch(0.985 0 0);--primary-hover:oklch(0.4793 0.209 318.89);--secondary:oklch(0.97 0 0);--muted:oklch(0.97 0 0);--muted-foreground:oklch(0.556 0 0);--accent:oklch(0.97 0 0);--border:oklch(0.922 0 0);--border-strong:oklch(0.781 0.006 288.8)}.dark{--background:oklch(0.1743 0.0105 276.35);--foreground:oklch(0.985 0 0);--card:oklch(0.205 0.0105 276.35);--popover:oklch(0.205 0.0105 276.35);--primary:oklch(0.6809 0.2483 319.62);--primary-foreground:oklch(0.1743 0.0105 276.35);--primary-hover:oklch(0.6009 0.2483 319.62);--secondary:oklch(0.269 0 0);--muted:oklch(0.269 0 0);--muted-foreground:oklch(0.708 0 0);--accent:oklch(0.269 0 0);--border:oklch(0.275 0 0);--border-strong:oklch(1 0 0 / 20%)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--background);color:var(--foreground);font-family:atkinson hyperlegible,system-ui,sans-serif;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.site-header{position:sticky;top:0;z-index:20;background:color-mix(in oklch,var(--background) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.site-header__inner{max-width:100rem;margin:0 auto;height:3.5rem;padding:0 1.5rem;display:flex;align-items:center;gap:1.5rem}.site-header__brand{display:flex;align-items:center;gap:.625rem;color:var(--foreground);font-weight:600;font-size:.875rem}.site-header__brand img{height:2rem}.site-header__brand .sep{color:var(--muted-foreground)}.site-header__nav{display:flex;gap:1.25rem;font-size:.875rem;margin-left:.5rem}.site-header__nav a{color:var(--muted-foreground)}.site-header__nav a:hover{color:var(--foreground);text-decoration:none}.site-header__tabs{display:flex;gap:1rem;margin-left:.5rem;height:100%;align-items:stretch}.site-header__tab{display:inline-flex;align-items:center;padding:0 .25rem;font-size:.875rem;color:var(--muted-foreground);border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.site-header__tab:hover{color:var(--foreground);text-decoration:none}.site-header__tab--active{color:var(--foreground);border-bottom-color:var(--primary);font-weight:500}.search{position:relative}.search__label{position:relative;display:inline-flex;align-items:center}.search__icon{position:absolute;left:.6rem;width:.9rem;height:.9rem;color:var(--muted-foreground);pointer-events:none}.search__input{width:14rem;height:2rem;padding:0 .65rem 0 1.9rem;font-size:.85rem;font-family:inherit;color:var(--foreground);background:var(--muted);border:1px solid var(--border);border-radius:.5rem;outline:none;transition:background .15s,border-color .15s,width .15s}.search__input:focus{background:var(--background);border-color:var(--border-strong);width:18rem}.search__input::-webkit-search-cancel-button{display:none}.search__drawer{position:absolute;top:calc(100% + .5rem);right:0;width:min(28rem,90vw);max-height:70vh;overflow-y:auto;background:var(--background);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem;box-shadow:0 10px 30px -10px rgb(0 0 0/.15);z-index:30}.dark .search__drawer{box-shadow:0 10px 30px -10px rgb(0 0 0/.45)}.search__list{list-style:none;margin:0;padding:0}.search__result{display:block;padding:.55rem .75rem;border-radius:.375rem;color:var(--foreground)}.search__result:hover{background:var(--muted);text-decoration:none}.search__result-title{font-size:.875rem;font-weight:500;margin-bottom:.15rem}.search__result-section{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted-foreground);margin-bottom:.25rem}.search__result-snippet{font-size:.78rem;color:var(--muted-foreground);line-height:1.4}.search__result-snippet mark{background:color-mix(in oklch,var(--primary) 20%,transparent);color:var(--foreground);padding:0 .1em;border-radius:2px}.search__empty{margin:0;padding:.65rem .75rem;font-size:.85rem;color:var(--muted-foreground)}.site-header__actions{margin-left:auto;display:flex;align-items:center;gap:.625rem}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--border);border-radius:.375rem;background:0 0;color:var(--muted-foreground);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.icon-btn:hover{background:var(--accent);color:var(--foreground)}.icon-btn svg{width:1rem;height:1rem}.layout{max-width:100rem;margin:0 auto;padding:0 1.5rem;display:grid;grid-template-columns:14rem 1fr;gap:2rem}.nav-toggle{display:none}.nav-backdrop{display:none;position:fixed;inset:0;background:rgb(0 0 0/.4);z-index:15}.nav-backdrop--visible{display:block}@media(max-width:768px){.layout{grid-template-columns:1fr;padding:0 1rem}.nav-toggle{display:inline-flex}.layout>.sidebar{position:fixed;top:3.5rem;left:0;width:min(16rem,85vw);height:calc(100vh - 3.5rem);z-index:30;background:var(--background);border-right:1px solid var(--border);padding:1.5rem 1rem;transform:translateX(-100%);transition:transform .25s ease;overflow-y:auto}.layout>.sidebar--open{transform:translateX(0)}.search__input{width:7rem}.search__input:focus{width:9rem}.site-header__inner{padding:0 .75rem;gap:.625rem}.site-header__tabs,.version-picker,.lang-picker,.site-header__brand .sep,.site-header__brand span{display:none}.sidebar__mobile-nav{display:block;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.icon-btn{width:2.5rem;height:2.5rem}}body.nav-open{overflow:hidden}.sidebar{position:sticky;top:3.5rem;height:calc(100vh - 3.5rem);overflow-y:auto;padding:2rem 1.5rem 2rem 0;border-right:1px solid var(--border);font-size:.875rem}.sidebar__section{margin-bottom:1.5rem}.sidebar__mobile-nav{display:none}.sidebar__group--static{margin-bottom:1.5rem}.sidebar__subhead{margin:0 0 .5rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-foreground)}.sidebar__group{margin-bottom:1.5rem;border:none;padding:0}.sidebar__heading{display:flex;align-items:center;justify-content:space-between;list-style:none;margin:0 0 .5rem;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-foreground);cursor:pointer;user-select:none}.sidebar__heading::-webkit-details-marker{display:none}.sidebar__heading::after{content:'';display:inline-block;width:.55rem;height:.55rem;border-right:1.5px solid;border-bottom:1.5px solid;transform:rotate(-45deg);transition:transform .2s;flex-shrink:0}.sidebar__group[open]>.sidebar__heading::after{transform:rotate(45deg)}.sidebar__list{list-style:none;margin:0;padding:0}.sidebar__list li{margin:0}.sidebar__link{display:block;padding:.35rem .625rem;border-radius:.375rem;color:color-mix(in oklch,var(--foreground) 72%,transparent);transition:background .15s,color .15s}.sidebar__link:hover{background:var(--muted);color:var(--foreground);text-decoration:none}.sidebar__link--active{background:color-mix(in oklch,var(--primary) 12%,transparent);color:var(--primary);font-weight:500}.sidebar__stub{display:flex;align-items:center;justify-content:space-between;padding:.35rem .625rem;color:color-mix(in oklch,var(--muted-foreground) 80%,transparent)}.sidebar__badge{background:var(--muted);color:var(--muted-foreground);border-radius:999px;padding:.1rem .45rem;font-size:.65rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.main{min-width:0;padding:2.5rem 0;max-width:66rem;overflow-wrap:break-word}.page-with-toc .main{max-width:none}.main h1,.main h2,.main h3,.main h4,.main h5,.main h6{font-family:poppins,system-ui,sans-serif}.main h1{font-size:2rem;font-weight:700;letter-spacing:-.02em;margin:0 0 1rem}.main h2{font-size:1.5rem;font-weight:600;letter-spacing:-.015em;margin:2.5rem 0 .75rem;scroll-margin-top:4rem}.main h3{font-size:1.15rem;font-weight:600;margin:1.75rem 0 .5rem}.main p,.main ul,.main ol{margin:0 0 1rem}.main ul,.main ol{padding-left:1.25rem}.main blockquote{border-left:3px solid var(--primary);background:var(--muted);padding:.5rem 1rem;margin:1.25rem 0;border-radius:0 var(--radius)var(--radius)0;color:var(--muted-foreground)}.main .table-wrap{margin:1.25rem 0;overflow-x:auto;-webkit-overflow-scrolling:touch}.main table{width:100%;border-collapse:collapse;margin:0;font-size:.9rem;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.main .table-wrap th,.main .table-wrap td{white-space:normal;min-width:6rem}.main th,.main td{padding:.55rem .85rem;text-align:left;border-bottom:1px solid var(--border)}.main th{background:var(--muted);color:var(--muted-foreground);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.main tr:last-child td{border-bottom:none}.main :not(pre)>code{font-family:fira code,ui-monospace,SFMono-Regular,monospace;background:var(--muted);border-radius:4px;padding:.1em .35em;font-size:.85em}.main pre.chroma,.highlight pre,.main pre{background:#1e1e2e;color:#cdd6f4;border:1px solid #313244;border-radius:var(--radius);padding:.9rem 1rem;margin:1.25rem 0;font-family:fira code,ui-monospace,SFMono-Regular,monospace;font-feature-settings:'liga' 1,'calt' 1;font-size:.85rem;line-height:1.6;overflow-x:auto}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr{color:#cba6f7}.chroma .kt,.chroma .nc,.chroma .nn{color:#f9e2af}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sc,.chroma .sd{color:#a6e3a1}.chroma .se{color:#f5c2e7}.chroma .nf,.chroma .nt{color:#89b4fa}.chroma .nb{color:#f38ba8}.chroma .na,.chroma .m,.chroma .mi,.chroma .mf{color:#fab387}.chroma .o{color:#89dceb}.chroma .p{color:#9399b2}.chroma .c,.chroma .c1,.chroma .cm,.chroma .cs{color:#6c7086;font-style:italic}.chroma .gi{color:#a6e3a1}.chroma .gd{color:#f38ba8}.chroma .ln{color:#6c7086}.main h2,.main h3,.main h4{position:relative}.heading-anchor{margin-left:.4rem;color:var(--muted-foreground);opacity:0;text-decoration:none;font-weight:400;transition:opacity .15s,color .15s}.main h2:hover .heading-anchor,.main h3:hover .heading-anchor,.main h4:hover .heading-anchor,.heading-anchor:focus{opacity:1}.heading-anchor:hover{color:var(--primary);text-decoration:none}.highlight{position:relative}.copy-btn{position:absolute;top:.45rem;right:.45rem;height:1.6rem;padding:0 .6rem;font-family:inherit;font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:#a6adc8;background:rgb(255 255 255/4%);border:1px solid #313244;border-radius:4px;cursor:pointer;opacity:0;transition:opacity .15s,background .15s,color .15s,border-color .15s}.highlight:hover .copy-btn,.copy-btn:focus-visible{opacity:1}.copy-btn:hover{background:rgb(255 255 255/8%);color:#cdd6f4}.copy-btn[data-state=copied]{color:#a6e3a1;border-color:#a6e3a1;opacity:1}.copy-btn[data-state=failed]{color:#f38ba8;border-color:#f38ba8;opacity:1}.main .mermaid{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;margin:1.25rem 0;text-align:center}.breadcrumbs{margin:0 0 .5rem;font-size:.78rem}.breadcrumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.35rem;color:var(--muted-foreground)}.breadcrumbs li+li::before{content:"›";margin-right:.35rem;color:var(--muted-foreground)}.breadcrumbs a{color:var(--muted-foreground);text-decoration:none}.breadcrumbs a:hover{color:var(--foreground);text-decoration:underline}.breadcrumbs [aria-current=page]{color:var(--foreground)}.last-updated{font-size:.78rem;color:var(--muted-foreground);margin:-.5rem 0 1.5rem}.last-updated time{font-variant-numeric:tabular-nums}.edit-link{display:inline-block;margin-top:2rem;font-size:.82rem;color:var(--muted-foreground);text-decoration:none;border:1px solid var(--border);border-radius:.375rem;padding:.25rem .6rem;transition:color .15s,border-color .15s}.edit-link:hover{color:var(--foreground);border-color:var(--foreground)}.page-lede{color:var(--muted-foreground);font-size:1.05rem;margin:-.25rem 0 1rem}.version-picker,.lang-picker{position:relative}.version-picker>summary,.lang-picker>summary{display:inline-flex;align-items:center;gap:.35rem;height:2rem;padding:0 .7rem;font-size:.8rem;color:var(--muted-foreground);background:0 0;border:1px solid var(--border);border-radius:.375rem;cursor:pointer;list-style:none;user-select:none}.version-picker>summary::-webkit-details-marker,.lang-picker>summary::-webkit-details-marker{display:none}.version-picker>summary:hover,.lang-picker>summary:hover{color:var(--foreground);background:var(--accent)}.version-picker__chevron{width:.85rem;height:.85rem;transition:transform .15s}.version-picker[open] .version-picker__chevron{transform:rotate(180deg)}.version-picker>ul,.lang-picker>ul{position:absolute;top:calc(100% + .35rem);right:0;margin:0;padding:.35rem;min-width:10rem;list-style:none;background:var(--background);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 10px 30px -10px rgb(0 0 0/.15);z-index:30}.version-picker>ul a,.lang-picker>ul a{display:block;padding:.35rem .6rem;border-radius:.25rem;font-size:.85rem;color:var(--foreground)}.version-picker>ul a:hover,.lang-picker>ul a:hover{background:var(--muted);text-decoration:none}.version-picker>ul a[aria-current=true],.lang-picker>ul a[aria-current=true]{color:var(--primary);font-weight:500}.lang-picker>summary svg{width:.9rem;height:.9rem}.not-found{text-align:center;padding:4rem 1rem;max-width:36rem;margin:0 auto}.not-found__code{font-family:fira code,monospace;font-size:4.5rem;font-weight:600;color:var(--primary);margin:0;line-height:1}.not-found__lede{color:var(--muted-foreground);margin:1rem 0 2rem}.not-found__actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.not-found__btn{display:inline-flex;align-items:center;height:2.25rem;padding:0 1rem;font-size:.875rem;font-weight:500;border-radius:.5rem;background:var(--primary);color:var(--primary-foreground);text-decoration:none;transition:background .15s}.not-found__btn:hover{background:var(--primary-hover);text-decoration:none}.not-found__btn--ghost{background:0 0;color:var(--foreground);border:1px solid var(--border)}.not-found__btn--ghost:hover{background:var(--accent)}.page-with-toc{display:grid;grid-template-columns:minmax(0,1fr)var(--toc-w,14rem);gap:2rem;align-items:start}.page-with-toc>article{min-width:0}.toc{position:sticky;top:4.5rem;max-height:calc(100vh - 5rem);overflow-y:auto;font-size:.8rem;padding-left:1rem;border-left:1px solid var(--border)}.toc__title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted-foreground);margin:0 0 .5rem}.toc #TableOfContents ul{list-style:none;margin:0;padding:0}.toc #TableOfContents ul ul{padding-left:.75rem}.toc #TableOfContents a{display:block;padding:.2rem 0;color:color-mix(in oklch,var(--foreground) 72%,transparent);text-decoration:none;line-height:1.4;transition:color .15s}.toc #TableOfContents a:hover{color:var(--foreground)}.toc #TableOfContents a.is-active{color:var(--primary);font-weight:500}@media(max-width:1024px){.toc{display:none}.page-with-toc{grid-template-columns:minmax(0,1fr)}}@media(max-width:768px){.page-with-toc{grid-template-columns:minmax(0,1fr)}}.callout{border-left:4px solid var(--border-strong);background:color-mix(in oklch,var(--muted) 80%,transparent);border-radius:0 var(--radius)var(--radius)0;padding:.75rem 1rem;margin:1.25rem 0}.callout__title{font-family:poppins,system-ui,sans-serif;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;margin:0 0 .4rem}.callout__body{margin:0}.callout__body>*:last-child{margin-bottom:0}.callout--note{border-left-color:var(--primary);background:color-mix(in oklch,var(--primary) 8%,var(--background))}.callout--note .callout__title{color:var(--primary)}.callout--tip{border-left-color:#20aaa1;background:color-mix(in srgb,#20AAA1 8%,transparent)}.callout--tip .callout__title{color:#20aaa1}.callout--warning{border-left-color:#eab54e;background:color-mix(in srgb,#EAB54E 8%,transparent)}.callout--warning .callout__title{color:#c9951f}.callout--caution{border-left-color:#f38ba8;background:color-mix(in srgb,#f38ba8 8%,transparent)}.callout--caution .callout__title{color:#f38ba8}.site-footer{border-top:1px solid var(--border);margin-top:4rem;font-size:.75rem;color:var(--muted-foreground)}.site-footer__inner{max-width:100rem;margin:0 auto;padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between}