@font-face{font-family:Archivo;src:url(/fonts/archivo-var.woff2)format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap}@font-face{font-family:Martian Mono;src:url(/fonts/martian-mono-var.woff2)format("woff2");font-weight:100 800;font-stretch:75% 112.5%;font-style:normal;font-display:swap}@font-face{font-family:Vazirmatn;src:url(/fonts/vazirmatn-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+6??,U+750-77F,U+8A0-8FF,U+200C-200F,U+2010-2011,U+204F,U+2E41,U+FDFC,U+FB50-FDFF,U+FE70-FEFF}@font-face{font-family:Vazirmatn;src:url(/fonts/vazirmatn-medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U+6??,U+750-77F,U+8A0-8FF,U+200C-200F,U+2010-2011,U+204F,U+2E41,U+FDFC,U+FB50-FDFF,U+FE70-FEFF}@font-face{font-family:Vazirmatn;src:url(/fonts/vazirmatn-bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U+6??,U+750-77F,U+8A0-8FF,U+200C-200F,U+2010-2011,U+204F,U+2E41,U+FDFC,U+FB50-FDFF,U+FE70-FEFF}:root{--font-display:"Archivo", ui-sans-serif, system-ui, sans-serif;--font-body:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"Martian Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--display-stretch:75%;--display-weight:800;--display-lh:.92;--display-tracking:-.02em;--readout-stretch:87.5%;--fs-2xs:.75rem;--fs-xs:.875rem;--fs-sm:.9375rem;--fs-base:1rem;--fs-md:1.125rem;--fs-lg:1.5rem;--fs-xl:2rem;--fs-2xl:2.75rem;--fs-3xl:3.5rem;--lh-tight:1.2;--lh-body:1.65;--lh-code:1.6;--measure:68ch;--s1:4px;--s2:8px;--s3:16px;--s4:24px;--s5:32px;--s6:48px;--s7:64px;--r-sm:2px;--r-md:3px;--r-lg:4px;--r-xl:6px;--r-pill:999px;--t-fast:.12s;--t-med:.18s;--t-slow:.24s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--sidebar-w:264px;--toc-w:224px;--header-h:64px;--content-max:48rem;--container:76rem;--gutter:clamp(1.25rem, 4vw, 2.5rem)}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fff;--surface:#f6f6f6;--surface-2:#f0f0f0;--surface-3:#e8e8e8;--border:#e2e2e2;--border-strong:#c9c9c9;--text:#0a0a0a;--text-2:#525252;--text-3:#707070;--accent:#0f766e;--accent-hover:#0b5c56;--accent-soft:#e6f2f0;--accent-line:#a7d3ce;--on-accent:#fff;--ok:#14683a;--ok-soft:#e3f3ea;--warn:#8a4b06;--warn-soft:#fbeedd;--danger:#ab2020;--danger-soft:#fbe9e9;--info-soft:#e8f0f6;--shadow-1:none;--scrim:#0a0a0a70;--slab:#0c0c0c;--on-slab:#fff;--slab-muted:#ffffff9e;--slab-line:#ffffff24;--code-bg:#f6f6f6;--code-panel:#ededed;--code-text:#0a0a0a;--code-muted:#646973;--code-border:#e2e2e2;--code-kw:#b3005e;--code-str:#1a6b32;--code-com:#8a8a8a;--code-num:#8a4b06;--code-typ:#1f4fa8;--code-fn:#7a4b00}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0a0c;--surface:#171316;--surface-2:#1a1a1c;--surface-3:#232326;--border:#28282b;--border-strong:#3f3f43;--text:#eaeae8;--text-2:#a8a8a5;--text-3:#80807e;--accent:#2dd4bf;--accent-hover:#5eead4;--accent-soft:#0e2e2a;--accent-line:#1d5b53;--on-accent:#04211e;--ok:#4ade80;--ok-soft:#10281a;--warn:#fbbf24;--warn-soft:#2b2110;--danger:#f87171;--danger-soft:#2c1516;--info-soft:#131f27;--shadow-1:none;--scrim:#0303039e;--slab:#1e1e21;--on-slab:#f0f0ee;--slab-muted:#f0f0eea8;--slab-line:#f0f0ee29;--code-bg:#0e0e0e;--code-panel:#161618;--code-text:#f0f0f0;--code-muted:#7d7a8c;--code-border:#2a2a2e;--code-kw:#ff7eb6;--code-str:#b5e48c;--code-com:#7d7a8c;--code-num:#ffb977;--code-typ:#7fdbec;--code-fn:#8fb4ff}[lang=fa]{--font-display:"Vazirmatn", "Archivo", Tahoma, sans-serif;--font-body:"Vazirmatn", ui-sans-serif, Tahoma, sans-serif;--lh-body:1.85;--measure:62ch}[lang=fa] :where(h1,h2,h3,h4,.hero__title,.display){letter-spacing:0;font-weight:700;font-stretch:100%;line-height:1.35}[lang=fa] :where(.readout,.section-head__eyebrow,.stat__label){font-stretch:100%}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + var(--s4))}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--fs-base);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}img,svg{max-width:100%;height:auto;display:block}button,input,select{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-underline-offset:3px;text-decoration:underline}.page :where(p,li,td,dd,.lede) a:not(.btn):not(.card):not(.crumb){color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:4px;transition:background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out)}.page :where(p,li,td,dd,.lede) a:not(.btn):not(.card):not(.crumb):hover{background:var(--text);color:var(--bg);text-decoration-color:#0000}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-md)}[hidden]{display:none!important}.skip-link{z-index:100;background:var(--accent);color:var(--on-accent);padding:var(--s2) var(--s3);border-radius:var(--r-sm);font-weight:600;position:absolute;inset-block-start:-100px;inset-inline-start:var(--s3)}.skip-link:focus{color:var(--on-accent);inset-block-start:var(--s2)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.masthead{z-index:40;height:var(--header-h);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:saturate(1.6)blur(10px);backdrop-filter:saturate(1.6)blur(10px);border-block-end:1px solid var(--border);position:sticky;inset-block-start:0}.masthead__inner{height:100%;max-width:var(--container);padding-inline:var(--gutter);align-items:center;gap:var(--s3);margin-inline:auto;display:flex}.brand{align-items:center;gap:var(--s2);color:var(--text);font-family:var(--font-display);font-weight:700;font-size:var(--fs-md);letter-spacing:-.02em;flex:none;display:inline-flex}.brand:hover{color:var(--text);text-decoration:none}.brand__mark{border-radius:var(--r-md);background:var(--accent);width:26px;height:26px;color:var(--on-accent);flex:none;place-items:center;font-size:15px;font-weight:700;line-height:1;display:grid}.brand__version{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3);border:1px solid var(--border);border-radius:var(--r-pill);padding:1px var(--s2);font-weight:400}.masthead__spacer{flex:auto}.masthead__tools{align-items:center;gap:var(--s2);flex:none;display:flex}.search-trigger{align-items:center;gap:var(--s2);min-height:36px;padding-inline:var(--s2) var(--s3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-3);font-size:var(--fs-xs);cursor:pointer;transition:border-color var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);display:inline-flex}.search-trigger:hover{border-color:var(--border-strong);color:var(--text-2)}.search-trigger__label{text-align:start;min-width:11ch}kbd{font-family:var(--font-mono);font-size:var(--fs-2xs);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text-2);white-space:nowrap;border-block-end-width:2px;padding:1px 5px}.icon-btn{border:1px solid var(--border);border-radius:var(--r-sm);width:36px;height:36px;color:var(--text-2);cursor:pointer;transition:border-color var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out), background var(--t-fast) var(--ease-out);background:0 0;flex:none;place-items:center;display:inline-grid}.icon-btn:hover{border-color:var(--border-strong);color:var(--text);background:var(--surface)}.icon-btn svg{width:18px;height:18px}.lang-switch{border:1px solid var(--border);border-radius:var(--r-sm);height:36px;display:inline-flex;overflow:hidden}.lang-switch__btn{padding-inline:var(--s2);font-family:var(--font-display);font-size:var(--fs-xs);color:var(--text-3);cursor:pointer;min-width:40px;transition:background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);background:0 0;border:0;font-weight:500}.lang-switch__btn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.nav-toggle{display:none}.shell{max-width:var(--container);padding-inline:var(--gutter);grid-template-columns:var(--sidebar-w) minmax(0, 1fr) var(--toc-w);gap:var(--s6);align-items:start;margin-inline:auto;display:grid}.sidebar{max-height:calc(100dvh - var(--header-h));overscroll-behavior:contain;padding-block:var(--s5) var(--s6);scrollbar-width:thin;padding-inline-end:var(--s2);position:sticky;inset-block-start:var(--header-h);overflow-y:auto}.nav-group+.nav-group{margin-block-start:var(--s5)}.nav-group__title{font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin:0 0 var(--s2);padding-inline-start:var(--s3);font-weight:700}.nav-list{flex-direction:column;gap:1px;margin:0;padding:0;list-style:none;display:flex}.nav-link{align-items:center;gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r-sm);color:var(--text-2);font-size:var(--fs-sm);transition:background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);line-height:1.4;display:flex}.nav-link:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-link[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-link__fa{color:var(--text-3);font-size:var(--fs-xs);font-weight:400}.nav-link[aria-current=page] .nav-link__fa{color:var(--accent);opacity:.75}.content{min-width:0;padding-block:var(--s5) var(--s7)}.page{max-width:var(--content-max)}.page:focus{outline:none}.page>*+*{margin-block-start:var(--s4)}.page-head{margin-block-end:var(--s6)}.page-head__eyebrow{font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-block-end:var(--s2);font-weight:700}h1,h2,h3,h4{font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:var(--display-weight);color:var(--text);letter-spacing:var(--display-tracking);scroll-margin-top:calc(var(--header-h) + var(--s4));margin:0}h1{font-size:clamp(1.9rem,1.3rem + 2.2vw,2.75rem);line-height:var(--display-lh)}h2{border-block-start:1px solid var(--border);margin-block-start:var(--s3);padding-block-start:var(--s5);font-size:clamp(1.35rem,1.1rem + .9vw,1.7rem);line-height:.98}h3{font-size:var(--fs-md);margin-block-start:var(--s3);line-height:1.15}h4{font-size:var(--fs-base);line-height:1.2}.readout,kbd,.pill,.badge,.code__lang,.copy-btn,.search__hit-route,.search__count,.brand__version,.api-entry__kind,.swatch__meta,.spec-row__key,.type-specimen__meta,.footer-note code,.crumbs,.pager__dir,.nav-group__title,.toc__title,.page-head__eyebrow,.section-head__eyebrow,.defs__caption,.announce,.stat__label{font-family:var(--font-mono);font-stretch:var(--readout-stretch);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.display{font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:var(--display-weight);line-height:var(--display-lh);letter-spacing:var(--display-tracking);text-wrap:balance}.page-head h1+p{margin-block-start:var(--s3)}.lede{font-size:var(--fs-md);color:var(--text-2);max-width:var(--measure)}p,ul,ol{max-width:var(--measure)}p+p{margin-block-start:var(--s3)}ul,ol{padding-inline-start:var(--s4)}li+li,li>ul,li>ol{margin-block-start:var(--s1)}strong{color:var(--text);font-weight:700}code{font-family:var(--font-mono);font-size:.875em}:not(pre)>code{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);white-space:nowrap;padding:.1em .35em}:where(a,button,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}hr{border:0;border-block-start:1px solid var(--border);margin-block:var(--s6)}.toc{max-height:calc(100dvh - var(--header-h));overscroll-behavior:contain;padding-block:var(--s5);font-size:var(--fs-xs);scrollbar-width:thin;position:sticky;inset-block-start:var(--header-h);overflow-y:auto}.toc__title{font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-block-end:var(--s2);font-weight:700}.toc__list{border-inline-start:1px solid var(--border);flex-direction:column;gap:1px;margin:0;padding:0;list-style:none;display:flex}.toc__link{padding:var(--s1) var(--s3);color:var(--text-3);border-inline-start:2px solid #0000;margin-inline-start:-1px;line-height:1.45;display:block}.toc__link:hover{color:var(--text);text-decoration:none}.toc__link[aria-current=true]{color:var(--accent);border-inline-start-color:var(--accent);font-weight:600}.toc__link--h3{padding-inline-start:var(--s5)}.scrim{z-index:45;background:var(--scrim);opacity:0;visibility:hidden;transition:opacity var(--t-med) var(--ease-out), visibility 0s linear var(--t-med);position:fixed;inset:0}body[data-drawer=open] .scrim{opacity:1;visibility:visible;transition:opacity var(--t-med) var(--ease-out)}.pill{align-items:center;gap:var(--s1);font-family:var(--font-display);font-size:var(--fs-2xs);padding:1px var(--s2);border-radius:var(--r-pill);white-space:nowrap;border:1px solid;font-weight:600;line-height:1.6;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.pill--ok{color:var(--ok);background:var(--ok-soft);border-color:color-mix(in srgb, var(--ok) 32%, transparent)}.pill--plan{color:var(--warn);background:var(--warn-soft);border-color:color-mix(in srgb, var(--warn) 32%, transparent)}.pill--none{color:var(--text-3);background:var(--surface-2);border-color:var(--border)}.pill--spec{color:var(--accent);background:var(--info-soft);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.badge-row{gap:var(--s2);flex-wrap:wrap;display:flex}.badge{align-items:center;gap:var(--s1);font-size:var(--fs-xs);color:var(--text-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-pill);padding:var(--s1) var(--s3);font-weight:500;display:inline-flex}.badge svg{width:14px;height:14px;color:var(--accent);flex:none}.btn{--cut:9px;isolation:isolate;justify-content:center;align-items:center;gap:var(--s2);min-height:44px;padding-inline:var(--s4);background:var(--text);color:var(--text);font-family:var(--font-display);font-stretch:100%;font-size:var(--fs-sm);letter-spacing:-.005em;cursor:pointer;clip-path:polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, 0 100%);border:0;font-weight:600;display:inline-flex;position:relative}.btn:before{content:"";z-index:-1;background:var(--bg);clip-path:polygon(0 0, calc(100% - var(--cut) + .62px) 0, 100% calc(var(--cut) - .62px), 100% 100%, 0 100%);position:absolute;inset:1.5px}.btn:hover,.btn:focus-visible{color:var(--bg);text-decoration:none}.btn:hover:before,.btn:focus-visible:before{background:0 0}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:inset 0 0 0 2px var(--accent)}.btn--primary{background:var(--accent);color:#fff}.btn--primary:before{background:var(--accent)}.btn--primary:hover,.btn--primary:focus-visible{background:var(--text);color:var(--bg)}.btn--primary:hover:before,.btn--primary:focus-visible:before{background:0 0}.btn svg{flex:none;width:16px;height:16px}.install{max-width:var(--measure);--cut:12px;min-height:56px;clip-path:polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, 0 100%);background:var(--slab);color:var(--on-slab);align-items:stretch;display:flex;overflow:hidden}.install__label{padding-inline:var(--s4) var(--s3);font-family:var(--font-mono);font-stretch:var(--readout-stretch);font-variant-numeric:tabular-nums;font-size:var(--fs-2xs);color:var(--accent);white-space:nowrap;background:0 0;border:0;place-items:center;display:grid}.install__code{min-width:0;padding:var(--s3) var(--s3) var(--s3) 0;font-family:var(--font-mono);font-stretch:var(--readout-stretch);font-size:var(--fs-sm);color:var(--on-slab);white-space:nowrap;flex:auto;overflow-x:auto}.code{border:1px solid var(--code-border);border-radius:var(--r-md);background:var(--code-bg);overflow:hidden}.code__bar{align-items:center;gap:var(--s2);min-height:40px;padding-inline:var(--s3);background:var(--code-panel);border-block-end:1px solid var(--code-border);display:flex}.code__file{font-family:var(--font-mono);font-stretch:var(--readout-stretch);font-size:var(--fs-2xs);color:var(--code-muted);text-overflow:ellipsis;white-space:nowrap;text-align:start;direction:ltr;min-width:0;overflow:hidden}.code__lang{font-size:var(--fs-2xs);font-family:var(--font-mono);font-stretch:var(--readout-stretch);color:var(--code-muted);border:1px solid var(--code-border);border-radius:var(--r-pill);padding:0 var(--s2);flex:none;font-weight:500}.copy-btn{align-items:center;gap:var(--s1);min-height:28px;padding-inline:var(--s2);border:1px solid var(--code-border);border-radius:var(--r-sm);color:var(--code-muted);font-family:var(--font-mono);font-stretch:var(--readout-stretch);font-size:var(--fs-2xs);cursor:pointer;transition:color var(--t-fast) var(--ease-out), border-color var(--t-fast) var(--ease-out);background:0 0;flex:none;margin-inline-start:auto;font-weight:600;display:inline-flex}.copy-btn:hover{color:var(--code-text);border-color:var(--border-strong)}.copy-btn[data-state=done]{color:var(--accent);border-color:var(--accent-line)}.copy-btn svg{width:13px;height:13px}.code pre{padding:var(--s3) var(--s3) var(--s3);font-family:var(--font-mono);font-size:var(--fs-sm);line-height:var(--lh-code);color:var(--code-text);text-align:start;tab-size:2;direction:ltr;margin:0;overflow-x:auto}.code pre code{font-size:inherit;white-space:pre;background:0 0;border:0;padding:0}.tok-com{color:var(--code-com);font-style:italic}.tok-str{color:var(--code-str)}.tok-kw{color:var(--code-kw)}.tok-typ{color:var(--code-typ)}.tok-num{color:var(--code-num)}.tok-fn{color:var(--code-fn)}.tok-pun{color:var(--code-muted)}.tabs{border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.tabs__list{gap:var(--s1);padding:var(--s1);background:var(--surface);border-block-end:1px solid var(--border);flex-wrap:wrap;display:flex}.tabs__tab{min-height:34px;padding-inline:var(--s3);border-radius:var(--r-sm);color:var(--text-3);font-family:var(--font-display);font-size:var(--fs-xs);cursor:pointer;transition:background var(--t-fast) var(--ease-out), color var(--t-fast) var(--ease-out);background:0 0;border:1px solid #0000;font-weight:600}.tabs__tab:hover{color:var(--text);background:var(--surface-2)}.tabs__tab[aria-selected=true]{background:var(--bg);border-color:var(--border);color:var(--accent)}.tabs__panel[hidden]{display:none}.callout{gap:var(--s3);padding:var(--s3) var(--s4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);font-size:var(--fs-sm);max-width:var(--measure);grid-template-columns:auto minmax(0,1fr);display:grid}.callout>*{max-width:none}.callout__icon{flex:none;width:20px;height:20px;margin-block-start:1px}.callout__title{font-family:var(--font-display);margin-block-end:2px;font-weight:700;display:block}.callout p,.callout ul,.callout ol{font-size:inherit}.callout--note{background:var(--info-soft);border-color:color-mix(in srgb, var(--accent) 26%, transparent)}.callout--note .callout__icon{color:var(--accent)}.callout--tip{background:var(--ok-soft);border-color:color-mix(in srgb, var(--ok) 26%, transparent)}.callout--tip .callout__icon{color:var(--ok)}.callout--warn{background:var(--warn-soft);border-color:color-mix(in srgb, var(--warn) 30%, transparent)}.callout--warn .callout__icon{color:var(--warn)}.callout--danger{background:var(--danger-soft);border-color:color-mix(in srgb, var(--danger) 30%, transparent)}.callout--danger .callout__icon{color:var(--danger)}.steps{counter-reset:step;max-width:none;padding:0;list-style:none}.step{counter-increment:step;padding-block-end:var(--s5);padding-inline-start:var(--s7);position:relative}.step:before{content:counter(step);background:var(--accent-soft);border:1px solid var(--accent-line);width:32px;height:32px;color:var(--accent);font-family:var(--font-display);font-weight:700;font-size:var(--fs-sm);border-radius:50%;place-items:center;display:grid;position:absolute;inset-block-start:-2px;inset-inline-start:0}.step:after{content:"";background:var(--border);width:1px;position:absolute;inset-block:34px 0;inset-inline-start:15px}.step:last-child{padding-block-end:0}.step:last-child:after{display:none}.step>h3{margin-block-start:0}.step__goal{color:var(--text-2);font-size:var(--fs-sm);max-width:var(--measure)}.table-wrap{border:1px solid var(--border);border-radius:var(--r-md);max-width:none;overflow:hidden}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}caption{text-align:start;padding:var(--s2) var(--s3);font-size:var(--fs-xs);color:var(--text-3);border-block-end:1px solid var(--border)}th,td{text-align:start;padding:var(--s2) var(--s3);border-block-end:1px solid var(--border);vertical-align:top;line-height:1.5}tbody tr:last-child td{border-block-end:0}thead th{background:var(--surface);font-family:var(--font-display);font-size:var(--fs-xs);color:var(--text-2);white-space:nowrap;font-weight:700;position:sticky;inset-block-start:0}th[data-sort]{cursor:pointer;-webkit-user-select:none;user-select:none}th[data-sort]:hover{color:var(--accent)}th[aria-sort=ascending]:after{content:" ↑";color:var(--accent)}th[aria-sort=descending]:after{content:" ↓";color:var(--accent)}td code,th code{white-space:nowrap}@media (max-width:767px){.table-scroll table,.table-scroll thead,.table-scroll tbody,.table-scroll tr,.table-scroll th,.table-scroll td{display:block}.table-scroll thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.table-scroll tbody tr{border-block-end:1px solid var(--border);padding:var(--s2) 0}.table-scroll tbody tr:last-child{border-block-end:0}.table-scroll tbody td{gap:var(--s2);padding:var(--s1) var(--s3);border:0;grid-template-columns:9rem minmax(0,1fr);display:grid}.table-scroll tbody td:before{content:attr(data-label);font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);font-weight:700}}.api-entry{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg);max-width:none;overflow:hidden}.api-entry+.api-entry{margin-block-start:var(--s3)}.api-entry__head{align-items:center;gap:var(--s2);width:100%;padding:var(--s3);background:var(--surface);text-align:start;cursor:pointer;border:0;min-height:44px;display:flex}.api-entry__head:hover{background:var(--surface-2)}.api-entry__kind{font-family:var(--font-mono);font-size:var(--fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent-line);border-radius:var(--r-md);padding:1px var(--s2);flex:none;font-weight:700}.api-entry__name{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.api-entry__toggle{width:16px;height:16px;color:var(--text-3);transition:transform var(--t-med) var(--ease-out);flex:none;margin-inline-start:auto}.api-entry[data-open=true] .api-entry__toggle{transform:rotate(180deg)}.api-entry__body{padding:var(--s4);border-block-start:1px solid var(--border)}.api-entry[data-open=false] .api-entry__body{display:none}.sig{font-family:var(--font-mono);font-size:var(--fs-sm);line-height:var(--lh-code);text-align:start;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s2) var(--s3);white-space:pre;direction:ltr;max-width:100%;overflow-x:auto}.sig+.sig{margin-block-start:var(--s2)}.defs{margin-block-start:var(--s4)}.defs__caption{font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-block-end:var(--s2);font-weight:700}.seq{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);padding:var(--s4);max-width:none;overflow-x:auto}.seq__track{gap:var(--s3);grid-template-columns:8.5rem minmax(0,1fr);align-items:start;display:grid}.seq__step+.seq__step{margin-block-start:var(--s3)}.seq__actor{font-family:var(--font-display);font-size:var(--fs-xs);color:var(--accent);padding-block-start:3px;font-weight:700}.seq__what{border-inline-start:2px solid var(--border-strong);padding-inline-start:var(--s3);padding-block:var(--s1) var(--s1)}.seq__what strong{font-family:var(--font-display);font-size:var(--fs-sm);display:block}.seq__what span{font-size:var(--fs-xs);color:var(--text-2);text-align:start;direction:ltr;display:block}.pager{gap:var(--s3);border-block-start:1px solid var(--border);margin-block-start:var(--s7);padding-block-start:var(--s5);display:flex}.pager__link{padding:var(--s3) var(--s4);border:1px solid var(--border);border-radius:var(--r-md);min-width:0;transition:border-color var(--t-fast) var(--ease-out);flex-direction:column;flex:1 1 0;gap:2px;display:flex}.pager__link:hover{border-color:var(--accent-line);text-decoration:none}.pager__link--next{text-align:end}.pager__dir{font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);font-weight:700}.pager__title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-sm);color:var(--accent)}.pager__spacer{flex:1 1 0}.crumbs{align-items:center;gap:var(--s2);font-size:var(--fs-xs);color:var(--text-3);flex-wrap:wrap;max-width:none;margin-block-end:var(--s3);padding:0;list-style:none;display:flex}.crumbs li{align-items:center;gap:var(--s2);margin:0;display:inline-flex}.crumbs li+li:before{content:"/";color:var(--border-strong)}.crumbs a{color:var(--text-3)}.crumbs a:hover{color:var(--accent)}.crumbs [aria-current=page]{color:var(--text-2);font-weight:500}.search{z-index:60;padding:var(--s5) var(--s3);background:var(--scrim);opacity:0;visibility:hidden;transition:opacity var(--t-med) var(--ease-out), visibility 0s linear var(--t-med);grid-template-rows:minmax(0,1fr);display:grid;position:fixed;inset:0}body[data-search=open] .search{opacity:1;visibility:visible;transition:opacity var(--t-med) var(--ease-out)}.search__panel{width:min(42rem,100%);background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--r-lg);max-height:min(32rem,78vh);box-shadow:var(--shadow-1);grid-template-rows:auto minmax(0,1fr) auto;margin-block-start:min(8vh, var(--s6));margin-inline:auto;display:grid;overflow:hidden}.search__field{align-items:center;gap:var(--s2);padding:var(--s3);border-block-end:1px solid var(--border);display:flex}.search__field svg{width:18px;height:18px;color:var(--text-3);flex:none}.search__input{min-width:0;font-size:var(--fs-md);background:0 0;border:0;outline:none;flex:auto}.search__input::placeholder{color:var(--text-3)}.search__results{overscroll-behavior:contain;padding:var(--s2);margin:0;list-style:none;overflow-y:auto}.search__hit{padding:var(--s2) var(--s3);border-radius:var(--r-sm);color:var(--text);display:block}.search__hit:hover,.search__hit[data-active=true]{background:var(--accent-soft);text-decoration:none}.search__hit[aria-selected=true]{background:var(--accent-soft);color:var(--accent)}.search__hit-title{font-family:var(--font-display);font-weight:600;font-size:var(--fs-sm);display:block}.search__hit-route{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3);direction:ltr;display:block}.search__hit-snippet{font-size:var(--fs-xs);color:var(--text-2);margin-block-start:2px;display:block}.search__empty{padding:var(--s5) var(--s3);text-align:center;color:var(--text-2);font-size:var(--fs-sm)}.search__empty strong{margin-block-end:var(--s1);display:block}.search__foot{align-items:center;gap:var(--s3);padding:var(--s2) var(--s3);border-block-start:1px solid var(--border);background:var(--surface);font-size:var(--fs-2xs);color:var(--text-3);display:flex}.search__count{font-family:var(--font-mono);margin-inline-start:auto}.swatch-grid{gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));max-width:none;display:grid}.swatch{border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg);overflow:hidden}.swatch__chip{border-block-end:1px solid var(--border);height:56px}.swatch__meta{padding:var(--s2) var(--s3);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-2);line-height:1.5}.swatch__meta b{color:var(--text);font-weight:700;display:block}.spec-row{gap:var(--s3);padding-block:var(--s2);border-block-end:1px solid var(--border);font-size:var(--fs-sm);grid-template-columns:12rem minmax(0,1fr);display:grid}.spec-row:last-child{border-block-end:0}.spec-row__key{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--accent);word-break:break-word}.spec-row__val{color:var(--text-2);min-width:0}@media (max-width:559px){.spec-row{gap:var(--s1);grid-template-columns:minmax(0,1fr)}}.type-specimen{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s4);max-width:none}.type-specimen+.type-specimen{margin-block-start:var(--s3)}.type-specimen__meta{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3);border-block-start:1px dashed var(--border);text-align:start;direction:ltr;margin-block-start:var(--s3);padding-block-start:var(--s2)}.site-footer{border-block-start:1px solid var(--border);background:var(--surface);margin-block-start:var(--s7)}.site-footer__inner{max-width:var(--container);padding:var(--s6) var(--gutter);gap:var(--s5);grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));margin-inline:auto;display:grid}.footer-col__title{font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-block-end:var(--s3);font-weight:700}.footer-col ul{gap:var(--s2);flex-direction:column;max-width:none;margin:0;padding:0;list-style:none;display:flex}.footer-col a{color:var(--text-2);font-size:var(--fs-sm)}.footer-col a:hover{color:var(--accent)}.footer-note{max-width:none;font-size:var(--fs-xs);color:var(--text-3)}.footer-note p{max-width:46ch;font-size:inherit}@media (max-width:1279px){.shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr)}.toc{display:none}}@media (max-width:1023px){.shell{grid-template-columns:minmax(0,1fr)}.nav-toggle{display:inline-grid}.sidebar{z-index:50;width:min(19rem,84vw);height:100%;max-height:none;padding:var(--s5) var(--s4);background:var(--bg);border-inline-end:1px solid var(--border);visibility:hidden;transition:transform var(--t-med) var(--ease-out), visibility 0s linear var(--t-med);position:fixed;inset-block:0;inset-inline-start:0;transform:translate(-100%)}[dir=rtl] .sidebar{transform:translate(100%)}body[data-drawer=open] .sidebar{visibility:visible;transition:transform var(--t-med) var(--ease-out);transform:translate(0)}body[data-drawer=open]{overflow:hidden}.content{padding-block:var(--s4) var(--s6)}}@media (max-width:767px){:root{--gutter:var(--s3)}.masthead__inner{gap:var(--s2)}.search-trigger__label,.brand__version{display:none}.search-trigger{justify-content:center;width:36px;padding-inline:0}.swatch-grid,.hair-grid--two{grid-template-columns:minmax(0,1fr)}.pager{flex-direction:column}.pager__link--next{text-align:start}.install{flex-direction:column}.install__label{border-inline-end:0;border-block-end:1px solid var(--code-border);padding-block:var(--s1);justify-content:start}.search__foot{flex-wrap:wrap}}@media (max-width:420px){.brand span:not(.brand__mark){display:none}.lang-switch__btn{min-width:34px;padding-inline:4px}}.hero{gap:var(--s4);flex-direction:column;padding-block-end:var(--s4);display:flex}.hero__title{letter-spacing:-.028em;max-width:20ch;font-size:clamp(2rem,1.25rem + 3.2vw,3.15rem)}.link-list{gap:var(--s2);flex-wrap:wrap;max-width:none;padding:0;list-style:none;display:flex}.link-list li{margin:0}.install .copy-btn{margin-block:var(--s2);border-color:var(--slab-line);color:var(--slab-muted);align-self:center;margin-inline-end:var(--s3)}.install .copy-btn:hover{color:var(--on-slab);border-color:var(--on-slab)}.install .copy-btn[data-state=done]{color:var(--accent);border-color:var(--accent)}.install .copy-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:inset 0 0 0 2px var(--accent)}.api-entry>summary{cursor:pointer;list-style:none}.api-entry>summary::-webkit-details-marker{display:none}.api-entry[open] .api-entry__toggle{transform:rotate(180deg)}.api-entry__body>*+*{margin-block-start:var(--s4)}.api-entry__body h4{font-family:var(--font-display);font-size:var(--fs-2xs);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);margin-block-start:var(--s5);font-weight:700}.api-entry__body>h4:first-child{margin-block-start:var(--s2)}.api-entry__body ul{padding-inline-start:var(--s4)}.api-entry__body .callout{margin-block-start:var(--s3)}@media (prefers-reduced-motion:no-preference){.page,.sidebar .nav-group:nth-child(2){animation:page-in var(--t-slow) var(--ease-out) both}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.shell{position:relative}.shell:before,.shell:after{content:"";background:var(--border);pointer-events:none;width:1px;position:absolute;inset-block:0}.shell:before{inset-inline-start:0}.shell:after{inset-inline-end:0}@media (max-width:1023px){.shell:before,.shell:after{display:none}}.cut{--cut:10px;clip-path:polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, 0 100%)}.cut-both{--cut:10px;clip-path:polygon(0 0, calc(100% - var(--cut)) 0, 100% var(--cut), 100% 100%, var(--cut) 100%, 0 calc(100% - var(--cut)))}@media (min-width:1024px){[data-route=\/] .shell{grid-template-columns:minmax(0,1fr)}[data-route=\/] .sidebar,[data-route=\/] .toc{display:none}}[data-route=\/] .page{max-width:none}[data-route=\/] .content{padding-block-start:0}[data-route=\/] .crumbs{display:none}.announce{align-items:center;gap:var(--s2);font-size:var(--fs-xs);color:var(--text-2);align-self:start;display:inline-flex}.announce__tag{background:var(--accent);color:var(--on-accent);flex:none;padding:3px 6px;font-size:10px;line-height:1}.announce__arrow{transition:transform var(--t-fast) var(--ease-out)}.announce:hover{color:var(--accent);text-decoration:none}.announce:hover .announce__arrow{transform:translate(2px)}[dir=rtl] .announce:hover .announce__arrow{transform:translate(-2px)}.hero{gap:var(--s4);padding-block:var(--s5) var(--s4);display:grid}.hero__title{max-width:22ch;font-size:clamp(2.25rem,1.3rem + 3.9vw,4rem)}.hero__lede{color:var(--text-2);max-width:54ch;font-size:clamp(1.05rem,1rem + .45vw,1.2rem);line-height:1.55}.hero__install-label{font-size:var(--fs-2xs);color:var(--text);letter-spacing:.02em;margin-block-end:calc(var(--s2) * -1);font-weight:600}.hero__actions{gap:var(--s2);flex-wrap:wrap;display:flex}.hero__accent{color:var(--accent)}.hero__copy{gap:var(--s4);align-content:start;min-width:0;display:grid}.hero__aside{align-content:start;gap:1px;min-width:0;display:grid}@media (min-width:1024px){.hero--split{align-items:start;column-gap:var(--s7);grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}}.section-head{gap:var(--s3);margin-block-start:var(--s7);margin-block-end:var(--s4);display:grid}.section-head>h2{border-block-start:0;max-width:24ch;margin-block-start:0;padding-block-start:0}.section-head>p{color:var(--text-2);font-size:var(--fs-sm);max-width:62ch}.section-head__eyebrow{font-size:var(--fs-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:600}.hair-grid{background:var(--border);border:1px solid var(--border);gap:1px;max-width:none;display:grid}.hair-grid--stats{grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr))}.hair-grid--tiles{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr))}.hair-grid--two{grid-template-columns:repeat(auto-fit,minmax(19rem,1fr))}.hair-grid>*{background:var(--bg);min-width:0}.stat{gap:var(--s2);padding:var(--s4);align-content:start;display:grid}.stat__value{font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:var(--display-weight);letter-spacing:var(--display-tracking);font-size:clamp(1.9rem,1.3rem + 1.8vw,2.6rem);line-height:1}.stat__label{font-family:var(--font-mono);font-stretch:var(--readout-stretch);font-variant-numeric:tabular-nums;font-size:var(--fs-2xs);color:var(--text-3);line-height:1.45}.tile{gap:var(--s2);padding:var(--s4);align-content:start;display:grid}.tile__name{font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:700;font-size:var(--fs-md);letter-spacing:var(--display-tracking);line-height:1.05}.tile__alt{font-size:var(--fs-xs);color:var(--text-3);line-height:1.5}.tile__meta{font-size:var(--fs-xs);color:var(--text-2);max-width:none;line-height:1.5}.tile__foot{gap:var(--s2);flex-wrap:wrap;margin-block-start:var(--s1);display:flex}.panel{background:var(--bg);border:0;align-content:start;display:grid}.panel__head{align-items:center;gap:var(--s2);padding:var(--s3) var(--s4);border-block-end:1px solid var(--border);display:flex}.panel__title{font-family:var(--font-mono);font-stretch:var(--readout-stretch);font-size:var(--fs-xs);text-align:start;direction:ltr;font-weight:600}.panel__body{padding:var(--s4)}.panel__body>*+*{margin-block-start:var(--s3)}.panel__note{font-size:var(--fs-xs);color:var(--text-2);max-width:none}.panel--code .panel__body{background:var(--code-bg);color:var(--code-text)}.panel--code pre{font-family:var(--font-mono);font-size:var(--fs-xs);line-height:var(--lh-code);text-align:start;tab-size:2;direction:ltr;margin:0;overflow-x:auto}.panel--code pre code{font-size:inherit;white-space:pre;background:0 0;border:0;padding:0}.cta{gap:var(--s4);padding:var(--s6) var(--s5);border:1px solid var(--border);background:var(--surface);justify-items:start;margin-block-start:var(--s7);display:grid}.cta__title{border-block-start:0;max-width:22ch;margin-block-start:0;padding-block-start:0;font-size:clamp(1.6rem,1.2rem + 1.6vw,2.4rem)}.cta__note{font-size:var(--fs-sm);color:var(--text-2);max-width:56ch}@media (max-width:767px){.cta{padding:var(--s5) var(--s4)}}
.seg{display:contents}.page>.seg>*+*,.page>.seg+.seg>:first-child{margin-block-start:var(--s4)}.od-cluster{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.od-nowrap{white-space:nowrap}.install__code{background:0 0;border:0}.card-grid{background:var(--bg);border:1px solid var(--border);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1px;max-width:none;display:grid}.card{gap:var(--s2);padding:var(--s4);background:var(--bg);color:var(--text);outline:1px solid var(--border);align-content:start;min-width:0;text-decoration:none;display:grid}.card:hover{background:var(--surface)}.card__title{font-family:var(--font-display);font-stretch:var(--display-stretch);font-weight:700;font-size:var(--fs-md);letter-spacing:var(--display-tracking);line-height:1.05}.card__body{font-size:var(--fs-xs);color:var(--text-2);max-width:none;line-height:1.5}.card__foot{gap:var(--s2);flex-wrap:wrap;margin-block-start:var(--s1);display:flex}.seq__step{display:contents}.seq__what span{display:inline}.seq__track{grid-template-columns:minmax(8.5rem,max-content) minmax(0,1fr)}[data-route=\/] .masthead__inner,[data-route=\/] .shell,[data-route=\/] .site-footer__inner{max-width:76rem;margin-inline:auto;padding-inline:clamp(1.25rem,4vw,2.5rem)}[data-route=\/] .page{max-width:none}[data-route]:not([data-route=\/]) .shell,[data-route]:not([data-route=\/]) .masthead__inner,[data-route]:not([data-route=\/]) .site-footer__inner{width:100%;max-width:none;margin-inline:0;padding-inline:clamp(1rem,2vw,2rem)}[data-route]:not([data-route=\/]) .page,[data-route]:not([data-route=\/]) .content,[data-route]:not([data-route=\/]) .page p,[data-route]:not([data-route=\/]) .page ul,[data-route]:not([data-route=\/]) .page ol,[data-route]:not([data-route=\/]) .page .lede{max-width:none}.panel,.panel__head,.panel__body,.panel--code,.panel--code pre,.code,.code pre,.hair-grid,.hair-grid>*,.hair-grid--two,.hair-grid--tiles,.hair-grid--stats{min-width:0}.panel--code pre,.code pre{text-align:left;direction:ltr;max-width:100%;overflow-x:auto}.hair-grid{background:var(--bg);border:1px solid var(--border)}.hair-grid>*{background:var(--bg);outline:1px solid var(--border);min-width:0}.hair-grid--tiles{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}:not(pre)>code{white-space:normal;overflow-wrap:anywhere;word-break:break-word;direction:ltr;unicode-bidi:isolate}.tile,.card{overflow-wrap:anywhere;min-width:0}.tile p,.card p{overflow-wrap:anywhere}
