@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2) format("woff2-variations");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}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2) format("woff2-variations");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}:root{color-scheme:light dark}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}:root{--bg: light-dark(oklch(98.6% .004 85), oklch(17% .012 255));--surface-1: light-dark(oklch(100% 0 0), oklch(20.5% .013 255));--surface-2: light-dark(oklch(96.4% .005 85), oklch(24% .014 255));--surface-3: light-dark(oklch(93.2% .006 85), oklch(28% .015 255));--surface-inset: light-dark(oklch(95.6% .006 85), oklch(14.5% .011 255));--surface-code: light-dark(oklch(97.3% .005 85), oklch(15% .011 255));--backdrop: light-dark(oklch(98.6% .004 85 / .78), oklch(17% .012 255 / .74));--scrim: light-dark(oklch(25% .02 255 / .35), oklch(5% .01 255 / .6));--border-subtle: light-dark(oklch(92.5% .006 85), oklch(25% .013 255));--border: light-dark(oklch(87.5% .008 85), oklch(31% .015 255));--border-strong: light-dark(oklch(76% .01 85), oklch(42% .016 255));--text: light-dark(oklch(22% .014 260), oklch(93.5% .008 250));--text-2: light-dark(oklch(38% .014 260), oklch(81% .01 250));--text-muted: light-dark(oklch(47% .013 260), oklch(69% .012 250));--text-faint: light-dark(oklch(66% .01 260), oklch(48% .012 250));--accent: light-dark(oklch(60% .165 52), oklch(80% .155 72));--accent-hover: light-dark(oklch(54% .16 48), oklch(85% .14 76));--accent-text: light-dark(oklch(49% .14 46), oklch(82% .14 74));--accent-solid: light-dark(oklch(50% .15 45), oklch(80% .155 72));--accent-solid-hover: light-dark(oklch(45% .14 42), oklch(85% .14 76));--accent-bg: light-dark(oklch(95.5% .035 75), oklch(26% .045 65));--accent-border: light-dark(oklch(83% .09 68), oklch(45% .09 65));--on-accent: light-dark(oklch(99% .005 85), oklch(18% .03 60));--selection: light-dark(oklch(89% .08 78), oklch(40% .09 65));--info-text: light-dark(oklch(45% .13 245), oklch(78% .1 240));--info-bg: light-dark(oklch(95.5% .025 240), oklch(24% .04 245));--info-border: light-dark(oklch(82% .07 240), oklch(42% .08 245));--success-text: light-dark(oklch(44% .12 155), oklch(80% .13 155));--success-bg: light-dark(oklch(95.5% .03 155), oklch(24% .04 155));--success-border: light-dark(oklch(82% .08 155), oklch(42% .08 155));--warn-text: light-dark(oklch(47% .12 75), oklch(83% .13 85));--warn-bg: light-dark(oklch(96% .04 90), oklch(26% .045 80));--warn-border: light-dark(oklch(83% .1 85), oklch(45% .08 80));--danger-text: light-dark(oklch(48% .17 25), oklch(76% .13 22));--danger-bg: light-dark(oklch(95.5% .025 20), oklch(25% .05 22));--danger-border: light-dark(oklch(82% .08 20), oklch(45% .1 22));--tip-text: light-dark(oklch(45% .14 300), oklch(80% .1 300));--tip-bg: light-dark(oklch(95.5% .025 300), oklch(25% .045 300));--tip-border: light-dark(oklch(83% .07 300), oklch(44% .08 300));--ring: var(--accent);--shadow-color: light-dark(oklch(30% .02 255 / .1), oklch(0% 0 0 / .45));--grid-line: light-dark(oklch(30% .02 255 / .055), oklch(90% .02 255 / .045));--hexfield-ink: light-dark(oklch(45% .02 255 / .2), oklch(80% .02 250 / .14));--hexfield-hot: light-dark(oklch(60% .165 52 / .75), oklch(80% .155 72 / .8));--hex-zero: light-dark(oklch(53% .01 260), oklch(64% .012 250));--hex-ascii: light-dark(oklch(45% .12 150), oklch(78% .11 150));--hex-control: light-dark(oklch(50% .13 250), oklch(75% .09 240));--hex-high: light-dark(oklch(50% .15 330), oklch(76% .11 330));--discord-bg: light-dark(oklch(98.5% .002 260), oklch(31% .012 270));--discord-hover: light-dark(oklch(96% .004 260), oklch(28.5% .012 270));--discord-text: light-dark(oklch(30% .01 260), oklch(90% .006 260));--discord-muted: light-dark(oklch(52% .01 260), oklch(68% .01 260));--discord-name: light-dark(oklch(28% .02 265), oklch(95% .005 260));--discord-mention: light-dark(oklch(52% .18 275), oklch(78% .1 275));--discord-mention-bg: light-dark(oklch(92% .04 275), oklch(38% .07 275));--discord-role-admin: light-dark(oklch(52% .19 25), oklch(70% .17 25));--discord-role-mod: light-dark(oklch(50% .13 155), oklch(76% .15 155));--discord-role-dev: light-dark(oklch(50% .15 250), oklch(74% .12 245));--discord-role-bot: light-dark(oklch(50% .18 275), oklch(70% .15 275));--discord-avatar: light-dark(oklch(48% .15 275), oklch(46% .14 275));--discord-avatar-text: light-dark(oklch(98.5% 0 0), oklch(98.5% 0 0))}:root{--font-sans: "Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--font-ui: var(--font-sans);--font-code: var(--font-mono);--step--2: clamp(.72rem, .7rem + .1vw, .78rem);--step--1: clamp(.82rem, .8rem + .12vw, .88rem);--step-0: clamp(1rem, .96rem + .2vw, 1.0625rem);--step-1: clamp(1.15rem, 1.08rem + .35vw, 1.3rem);--step-2: clamp(1.35rem, 1.22rem + .6vw, 1.65rem);--step-3: clamp(1.6rem, 1.38rem + 1.1vw, 2.2rem);--step-4: clamp(1.95rem, 1.55rem + 2vw, 3rem);--step-5: clamp(2.3rem, 1.7rem + 3vw, 4rem);--leading-tight: 1.2;--leading-snug: 1.4;--leading-body: 1.7;--tracking-tight: -.02em;--tracking-wide: .06em;--weight-regular: 400;--weight-medium: 520;--weight-semibold: 620;--weight-bold: 720;--space-0: 0;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--space-9: 6rem;--radius-1: 4px;--radius-2: 6px;--radius-3: 10px;--radius-4: 16px;--radius-full: 999px;--border-width: 1px;--shadow-1: 0 1px 2px var(--shadow-color);--shadow-2: 0 2px 8px var(--shadow-color), 0 1px 2px var(--shadow-color);--shadow-3: 0 12px 32px var(--shadow-color), 0 2px 6px var(--shadow-color);--dur-1: .12s;--dur-2: .2s;--dur-3: .32s;--dur-4: .64s;--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--gutter: clamp(1rem, 4vw, 2rem);--measure: 44rem;--wide: 58rem;--page: 74rem;--header-h: 3.5rem;--tap: 2.75rem;--z-base: 0;--z-raised: 10;--z-header: 50;--z-overlay: 100}@property --read-width{syntax: "<length>"; inherits: true; initial-value: 46rem;}:root{--read-width: 46rem;transition:--read-width var(--dur-3) var(--ease-out)}@media(min-width:100rem){:root{--read-width: 54rem}}:root[data-width=narrow]{--read-width: 38rem}:root[data-width=medium]{--read-width: 46rem}:root[data-width=wide]{--read-width: 62rem}@media(prefers-reduced-motion:reduce){:root{--dur-1: 0ms;--dur-2: 0ms;--dur-3: 0ms;--dur-4: 0ms}}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:none;text-size-adjust:none;scroll-padding-top:calc(var(--header-h) + var(--space-4));interpolate-size:allow-keywords;hanging-punctuation:first last}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{min-height:100dvh;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--step-0);line-height:var(--leading-body);font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}img,picture,video,canvas,svg{display:block;max-width:100%}img,video{height:auto}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,h4{line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);text-wrap:balance;font-weight:var(--weight-semibold)}p,li,dd,figcaption{text-wrap:pretty}a{color:var(--accent-text);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color var(--dur-1) var(--ease-out)}a:hover{color:var(--accent-hover)}code,kbd,samp,pre{font-family:var(--font-mono)}::selection{background:var(--selection);color:var(--text)}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:var(--radius-1)}:target{scroll-margin-top:calc(var(--header-h) + var(--space-4))}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;inset-inline-start:var(--space-4);inset-block-start:var(--space-2);z-index:var(--z-overlay);padding:var(--space-2) var(--space-4);border-radius:var(--radius-2);background:var(--accent-solid);color:var(--on-accent);translate:0 -200%}.skip-link:focus-visible{translate:0 0}html{scrollbar-color:var(--border-strong) transparent}@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root){animation-duration:var(--dur-3);animation-timing-function:var(--ease-out)}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){[data-reveal]{animation:reveal linear both;animation-timeline:view();animation-range:entry 0% entry 45%}}}@keyframes reveal{0%{opacity:0;translate:0 1.25rem}to{opacity:1;translate:0 0}}.page{display:grid;grid-template-rows:auto 1fr auto;min-height:100dvh}.container{width:min(100% - 2 * var(--gutter),var(--page));margin-inline:auto}.container--measure{width:min(100% - 2 * var(--gutter),var(--measure))}.container--wide{width:min(100% - 2 * var(--gutter),var(--wide))}.container--read{width:min(100% - 2 * var(--gutter),var(--read-width))}.mono{font-family:var(--font-mono)}.eyebrow{font-family:var(--font-ui);font-size:var(--step--1);color:var(--text-muted);letter-spacing:.01em}.eyebrow:before{content:"// ";color:var(--accent)}@counter-style hex-offset{system:numeric;symbols:"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F";pad:2 "0";prefix:"0x"}.prose{counter-reset:section;color:var(--text-2);font-size:var(--step-0);line-height:var(--leading-body);min-width:0}.prose>*+*{margin-block-start:var(--space-5)}.prose :where(h2,h3,h4){color:var(--text);position:relative;scroll-margin-top:calc(var(--header-h) + var(--space-4))}.prose>:where(h2,h3,h4){margin-block-start:var(--space-7)}.prose>:where(h2,h3,h4)+*{margin-block-start:var(--space-3)}.prose h2{counter-increment:section;font-size:var(--step-2)}.prose h2:before{content:counter(section,hex-offset);display:block;margin-block-end:var(--space-1);font-family:var(--font-mono);font-size:var(--step--1);font-weight:var(--weight-medium);letter-spacing:.02em;color:var(--accent-text)}.prose h3{font-size:var(--step-1)}.prose h4{font-size:var(--step-0)}.prose .heading-anchor{margin-inline-start:var(--space-2);color:var(--text-faint);text-decoration:none;font-weight:var(--weight-regular);opacity:0;transition:opacity var(--dur-1) var(--ease-out)}.prose :where(h2,h3,h4):hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}@media(hover:none){.prose .heading-anchor{opacity:.6}}.prose strong{color:var(--text);font-weight:var(--weight-semibold)}.prose :where(ul,ol):not([class]){padding-inline-start:var(--space-5)}.prose :where(ul,ol):not([class])>li+li{margin-block-start:var(--space-2)}.prose :where(ul,ol):not([class])>li::marker{color:var(--text-faint);font-family:var(--font-ui)}.prose ol:not([class])>li::marker{font-size:.9em}.prose li>:where(ul,ol):not([class]){margin-block-start:var(--space-2)}.prose hr{border:0;height:1px;background:var(--border);margin-block:var(--space-7)}.prose :not(pre)>code:not([class]){padding:.12em .36em;border-radius:var(--radius-1);background:var(--surface-inset);border:var(--border-width) solid var(--border-subtle);color:var(--text);font-size:.86em;overflow-wrap:anywhere}.prose a:not([class]){font-weight:var(--weight-medium)}.prose a[data-external]:after{content:"↗";display:inline-block;margin-inline-start:.1em;font-size:.8em;color:var(--text-faint)}.prose blockquote:not([class]),.quote{padding-block:var(--space-1);padding-inline-start:var(--space-5);border-inline-start:2px solid var(--accent);color:var(--text);font-style:normal}.prose blockquote:not([class])>*+*{margin-block-start:var(--space-3)}.expressive-code .ec-source{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);min-height:2rem;padding:var(--space-1) var(--space-4);border-block-start:var(--border-width) solid var(--border-subtle);background:var(--surface-code);font-family:var(--font-ui);font-size:var(--step--2);color:var(--text-muted);text-decoration:none;overflow-wrap:anywhere}.expressive-code .ec-source:hover{color:var(--accent-text)}.expressive-code .ec-source__label{font-family:var(--font-code)}.prose>*{max-width:100%}.prose img{border-radius:var(--radius-2)}.callout{--tone-text: var(--info-text);--tone-bg: var(--info-bg);--tone-border: var(--info-border);padding:var(--space-3) var(--space-4);border:var(--border-width) solid var(--tone-border);border-inline-start-width:3px;border-radius:var(--radius-2);background:var(--tone-bg);color:var(--text-2);font-style:normal}.callout>*+*{margin-block-start:var(--space-2)}.callout[data-kind=tip]{--tone-text: var(--tip-text);--tone-bg: var(--tip-bg);--tone-border: var(--tip-border)}.callout[data-kind=important]{--tone-text: var(--accent-text);--tone-bg: var(--accent-bg);--tone-border: var(--accent-border)}.callout[data-kind=warning]{--tone-text: var(--warn-text);--tone-bg: var(--warn-bg);--tone-border: var(--warn-border)}.callout[data-kind=caution]{--tone-text: var(--danger-text);--tone-bg: var(--danger-bg);--tone-border: var(--danger-border)}.callout__title{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-ui);font-size:var(--step--1);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--tone-text)}.spoiler:not([data-open]){padding-inline:.3em;border:var(--border-width) dashed var(--border-strong);border-radius:var(--radius-1);background:repeating-linear-gradient(135deg,var(--border-subtle) 0 2px,transparent 2px 6px);color:var(--text-muted);font-family:var(--font-code);font-size:.86em;letter-spacing:.04em;cursor:pointer;transition:color var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out);-webkit-box-decoration-break:clone;box-decoration-break:clone}.spoiler:not([data-ready]){color:transparent}.spoiler:not([data-ready]):not(:focus-visible) *{visibility:hidden}.spoiler:not([data-ready]):focus-visible{color:var(--text)}.spoiler:not([data-open]):is(:hover,:focus-visible,[data-decoding]){border-color:var(--accent-border);background-color:var(--accent-bg);color:var(--accent-text)}.spoiler[data-open]{text-decoration:underline dotted var(--accent-border);text-decoration-thickness:2px;text-underline-offset:.25em}.prose .footnotes{margin-block-start:var(--space-8);padding-block-start:var(--space-5);border-block-start:var(--border-width) solid var(--border);font-size:var(--step--1);color:var(--text-muted)}.prose sup a{font-family:var(--font-ui);text-decoration:none}.prose .katex-display{overflow-x:auto;overflow-y:hidden;padding-block:var(--space-2)}.prose .katex{font-size:1.05em}.table-wrap .table-sort{display:none;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-block-end:var(--border-width) solid var(--border);background:var(--surface-2);font-family:var(--font-ui);font-size:var(--step--1);color:var(--text-muted)}.table-wrap .table-sort select{flex:1;min-width:0;min-height:var(--tap);padding-inline:var(--space-2);border:var(--border-width) solid var(--border);border-radius:var(--radius-1);background:var(--surface-1);color:var(--text);font:inherit}@container (width < 36rem){.table-wrap .table-sort{display:flex}}.table-wrap{container-type:inline-size;max-width:100%;overflow-x:auto;border:var(--border-width) solid var(--border);border-radius:var(--radius-2);background:linear-gradient(to right,var(--surface-1) 30%,transparent) left / 2rem 100% no-repeat local,linear-gradient(to left,var(--surface-1) 30%,transparent) right / 2rem 100% no-repeat local,radial-gradient(farthest-side at 0 50%,var(--shadow-color),transparent) left / .75rem 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,var(--shadow-color),transparent) right / .75rem 100% no-repeat scroll,var(--surface-1)}.table-wrap table{width:100%;border-collapse:collapse;font-size:var(--step--1);line-height:var(--leading-snug)}.table-wrap :where(th,td){padding:var(--space-2) var(--space-3);text-align:start;vertical-align:top;border-block-end:var(--border-width) solid var(--border-subtle)}.table-wrap th{font-weight:var(--weight-semibold);color:var(--text);background:var(--surface-2);white-space:nowrap}.table-wrap tr:last-child td{border-block-end:0}.table-wrap :where(th,td)[data-numeric]{font-variant-numeric:tabular-nums;text-align:end}.table-wrap .th-sort{display:inline-flex;align-items:center;gap:.35em;width:100%;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:inherit;cursor:pointer}.table-wrap th[data-numeric] .th-sort{flex-direction:row-reverse;justify-content:flex-start}.table-wrap .th-sort__icon{flex:none;width:.75em;color:var(--accent);font-size:.8em;line-height:1}.table-wrap .th-sort__icon:after{content:"↕";color:var(--text-muted);opacity:0;transition:opacity var(--dur-1) var(--ease-out)}.table-wrap .th-sort:is(:hover,:focus-visible) .th-sort__icon:after{opacity:1}.table-wrap th[aria-sort=ascending] .th-sort__icon:after{content:"▲";color:var(--accent);opacity:1}.table-wrap th[aria-sort=descending] .th-sort__icon:after{content:"▼";color:var(--accent);opacity:1}.table-wrap th[aria-sort=ascending],.table-wrap th[aria-sort=descending]{color:var(--accent-text)}@container (width < 36rem){.table-wrap table[data-cards] thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.table-wrap table[data-cards],.table-wrap table[data-cards] :where(tbody,tr,td){display:block}.table-wrap table[data-cards] tr{padding:var(--space-2) var(--space-3);border-block-end:var(--border-width) solid var(--border)}.table-wrap table[data-cards] tr:last-child{border-block-end:0}.table-wrap table[data-cards] td{display:grid;grid-template-columns:minmax(6rem,38%) 1fr;gap:var(--space-3);padding:var(--space-1) 0;border:0;text-align:start}.table-wrap table[data-cards] td:before{content:attr(data-label);color:var(--text-muted);font-family:var(--font-ui);font-size:var(--step--2);text-transform:uppercase;letter-spacing:var(--tracking-wide);padding-block-start:.15em}}.icon[data-astro-cid-pp2ugcmd]{flex:none;display:inline-block;vertical-align:middle}.lang[data-astro-cid-hy6dafep]{display:inline-flex;align-items:center;gap:.2em;min-height:2.25rem;padding-inline:var(--space-2);border-radius:var(--radius-2);font-family:var(--font-ui);font-size:var(--step--1);text-decoration:none;color:var(--text-muted);transition:background var(--dur-1) var(--ease-out)}.lang[data-astro-cid-hy6dafep]:hover{background:var(--surface-2);color:var(--text)}@media(pointer:coarse){.lang[data-astro-cid-hy6dafep]{min-height:var(--tap)}}.lang__current[data-astro-cid-hy6dafep]{color:var(--text);font-weight:var(--weight-semibold)}.lang__sep[data-astro-cid-hy6dafep]{color:var(--text-faint)}.toggle[data-astro-cid-ox6qh6ls]{display:inline-grid;place-items:center;width:2.25rem;aspect-ratio:1;border:0;border-radius:var(--radius-2);background:none;color:var(--text-muted);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.toggle[data-astro-cid-ox6qh6ls]:hover{background:var(--surface-2);color:var(--text)}@media(pointer:coarse){.toggle[data-astro-cid-ox6qh6ls]{width:var(--tap)}}.toggle[data-astro-cid-ox6qh6ls] .icon{grid-area:1 / 1;transition:opacity var(--dur-2) var(--ease-out),rotate var(--dur-3) var(--ease-out)}.toggle[data-astro-cid-ox6qh6ls] .toggle__sun{opacity:0;rotate:-90deg}[data-theme=dark] .toggle[data-astro-cid-ox6qh6ls] .toggle__sun{opacity:1;rotate:0deg}[data-theme=dark] .toggle[data-astro-cid-ox6qh6ls] .toggle__moon{opacity:0;rotate:90deg}@media(prefers-color-scheme:dark){:root:not([data-theme]) .toggle[data-astro-cid-ox6qh6ls] .toggle__sun{opacity:1;rotate:0deg}:root:not([data-theme]) .toggle[data-astro-cid-ox6qh6ls] .toggle__moon{opacity:0;rotate:90deg}}html.theme-vt::view-transition-old(root),html.theme-vt::view-transition-new(root){animation:none;mix-blend-mode:normal}.trigger[data-astro-cid-kpqrgabw]{display:inline-flex;align-items:center;gap:var(--space-2);min-height:2.25rem;padding-inline:var(--space-2);border:var(--border-width) solid transparent;border-radius:var(--radius-2);background:none;color:var(--text-muted);font-family:var(--font-ui);font-size:var(--step--1)}.trigger[data-astro-cid-kpqrgabw]:hover{background:var(--surface-2);color:var(--text)}@media(pointer:coarse){.trigger[data-astro-cid-kpqrgabw]{min-height:var(--tap);min-width:var(--tap);justify-content:center}}.trigger__label[data-astro-cid-kpqrgabw],.trigger__kbd[data-astro-cid-kpqrgabw]{display:none}@media(width>=64rem){.trigger[data-astro-cid-kpqrgabw]{border-color:var(--border);background:var(--surface-1);padding-inline:var(--space-3) var(--space-2)}.trigger__label[data-astro-cid-kpqrgabw]{display:inline;min-width:6rem;text-align:start}.trigger__kbd[data-astro-cid-kpqrgabw]{display:inline;padding:.1em .4em;border:var(--border-width) solid var(--border);border-radius:var(--radius-1);font-size:var(--step--2);color:var(--text-faint)}}.dialog[data-astro-cid-kpqrgabw]{width:min(100% - 2 * var(--space-3),40rem);max-height:min(80dvh,40rem);margin:10dvh auto auto;padding:0;border:var(--border-width) solid var(--border);border-radius:var(--radius-3);background:var(--surface-1);color:var(--text);box-shadow:var(--shadow-3);overflow:hidden}.dialog[data-astro-cid-kpqrgabw][open]{display:flex;flex-direction:column;animation:pop var(--dur-2) var(--ease-out)}.dialog[data-astro-cid-kpqrgabw]::backdrop{background:var(--scrim);backdrop-filter:blur(3px)}@keyframes pop{0%{opacity:0;translate:0 -.5rem;scale:.98}}.dialog__bar[data-astro-cid-kpqrgabw]{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-block-end:var(--border-width) solid var(--border)}.dialog__bar[data-astro-cid-kpqrgabw] .dialog__icon{color:var(--text-faint)}.dialog__input[data-astro-cid-kpqrgabw]{flex:1;min-width:0;min-height:var(--tap);border:0;background:none;font-size:var(--step-0);outline:none}.dialog__close[data-astro-cid-kpqrgabw]{display:inline-grid;place-items:center;width:var(--tap);aspect-ratio:1;border:0;border-radius:var(--radius-2);background:none;color:var(--text-muted)}.dialog__close[data-astro-cid-kpqrgabw]:hover{background:var(--surface-2)}.dialog__status[data-astro-cid-kpqrgabw]{padding:var(--space-2) var(--space-4);font-family:var(--font-ui);font-size:var(--step--2);color:var(--text-muted)}.dialog__results[data-astro-cid-kpqrgabw]{list-style:none;padding:0 var(--space-2) var(--space-2);overflow-y:auto;overscroll-behavior:contain}.dialog__results[data-astro-cid-kpqrgabw] .hit{display:grid;gap:var(--space-1);padding:var(--space-3);border-radius:var(--radius-2);text-decoration:none;color:var(--text-2)}.dialog__results[data-astro-cid-kpqrgabw] .hit:is(:hover,:focus-visible){background:var(--surface-2);outline-offset:-2px}.dialog__results[data-astro-cid-kpqrgabw] .hit__title{color:var(--text);font-weight:var(--weight-semibold)}.dialog__results[data-astro-cid-kpqrgabw] .hit__excerpt{font-size:var(--step--1);color:var(--text-muted)}.dialog__results[data-astro-cid-kpqrgabw] mark{background:var(--accent-bg);color:var(--accent-text);border-radius:2px}.dialog__results[data-astro-cid-kpqrgabw] .hit__subs{list-style:none;padding-inline-start:var(--space-4);margin-block-end:var(--space-2)}.dialog__results[data-astro-cid-kpqrgabw] .hit__sub{display:block;padding:var(--space-1) var(--space-3);border-radius:var(--radius-1);font-family:var(--font-ui);font-size:var(--step--2);color:var(--text-muted);text-decoration:none}.dialog__results[data-astro-cid-kpqrgabw] .hit__sub:is(:hover,:focus-visible){background:var(--surface-2);color:var(--text)}.header[data-astro-cid-si6ourfh]{position:sticky;top:0;z-index:var(--z-header);isolation:isolate;padding-top:env(safe-area-inset-top)}.header[data-astro-cid-si6ourfh]:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--backdrop);border-block-end:var(--border-width) solid var(--border-subtle);backdrop-filter:blur(10px) saturate(1.3);opacity:1}@supports (animation-timeline: scroll()){.header[data-astro-cid-si6ourfh]:before{opacity:0;animation-name:header-solid;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:scroll(root);animation-range:0 4rem}}@keyframes header-solid{to{opacity:1}}.header__inner[data-astro-cid-si6ourfh]{display:flex;align-items:center;gap:var(--space-4);min-height:var(--header-h)}.logo[data-astro-cid-si6ourfh]{display:inline-flex;align-items:baseline;margin-inline-end:auto;padding-block:var(--space-2);font-family:var(--font-mono);font-weight:var(--weight-bold);font-size:var(--step-0);letter-spacing:-.01em;color:var(--text);text-decoration:none;view-transition-name:site-logo}.logo__tld[data-astro-cid-si6ourfh]{color:var(--accent-text)}.logo__caret[data-astro-cid-si6ourfh]{display:inline-block;width:.55em;height:1.05em;margin-inline-start:.12em;translate:0 .18em;background:var(--accent);animation:1.1s step-end infinite blink}@media(prefers-reduced-motion:reduce){.logo__caret[data-astro-cid-si6ourfh]{animation:none}}@keyframes blink{50%{opacity:0}}.nav[data-astro-cid-si6ourfh]{display:none}.nav[data-astro-cid-si6ourfh] ul[data-astro-cid-si6ourfh],.menu[data-astro-cid-si6ourfh] ul[data-astro-cid-si6ourfh]{display:flex;list-style:none;padding:0;gap:var(--space-1)}.nav[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh],.menu[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh]{display:inline-flex;align-items:center;min-height:2.25rem;padding-inline:var(--space-3);border-radius:var(--radius-2);font-family:var(--font-ui);font-size:var(--step--1);color:var(--text-muted);text-decoration:none}.nav[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh]:hover,.menu[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh]:hover{background:var(--surface-2);color:var(--text)}.nav[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh][aria-current=page],.menu[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh][aria-current=page]{color:var(--text);background:var(--surface-2)}.nav[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh][aria-current=page]:before,.menu[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh][aria-current=page]:before{content:">";margin-inline-end:.4em;color:var(--accent)}.actions[data-astro-cid-si6ourfh]{display:flex;align-items:center;gap:var(--space-1)}.menu-btn[data-astro-cid-si6ourfh]{display:inline-grid;place-items:center;width:var(--tap);aspect-ratio:1;border:0;border-radius:var(--radius-2);background:none;color:var(--text)}.menu-btn[data-astro-cid-si6ourfh]:hover{background:var(--surface-2)}.menu[data-astro-cid-si6ourfh]{position:fixed;inset:calc(var(--header-h) + env(safe-area-inset-top) + var(--space-1)) var(--space-3) auto auto;width:min(16rem,100% - 2 * var(--space-3));margin:0;padding:var(--space-2);border:var(--border-width) solid var(--border);border-radius:var(--radius-3);background:var(--surface-1);color:var(--text);box-shadow:var(--shadow-3);opacity:0;translate:0 -.5rem;transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-out),display var(--dur-2) allow-discrete,overlay var(--dur-2) allow-discrete}.menu[data-astro-cid-si6ourfh]:popover-open{opacity:1;translate:0}@starting-style{.menu[data-astro-cid-si6ourfh]:popover-open{opacity:0;translate:0 -.5rem}}.menu[data-astro-cid-si6ourfh] ul[data-astro-cid-si6ourfh]{flex-direction:column}.menu[data-astro-cid-si6ourfh] a[data-astro-cid-si6ourfh]{display:flex;min-height:var(--tap);font-size:var(--step-0)}@media(width>=48rem){.nav[data-astro-cid-si6ourfh]{display:block}.menu-btn[data-astro-cid-si6ourfh],.menu[data-astro-cid-si6ourfh]{display:none}.logo[data-astro-cid-si6ourfh]{margin-inline-end:var(--space-4)}.nav[data-astro-cid-si6ourfh]{margin-inline-end:auto}}.footer[data-astro-cid-zcowuo6x]{margin-block-start:var(--space-9);border-block-start:var(--border-width) solid var(--border-subtle);padding-block:var(--space-6) calc(var(--space-6) + env(safe-area-inset-bottom));font-family:var(--font-ui);font-size:var(--step--1);color:var(--text-muted)}.footer__inner[data-astro-cid-zcowuo6x]{display:flex;flex-direction:column;gap:var(--space-4)}.footer__line[data-astro-cid-zcowuo6x]{display:flex;flex-wrap:wrap;gap:var(--space-2)}.footer__links[data-astro-cid-zcowuo6x]{display:flex;gap:var(--space-1);list-style:none;padding:0;margin-inline-start:calc(-1 * var(--space-3))}.footer__links[data-astro-cid-zcowuo6x] a[data-astro-cid-zcowuo6x]{display:inline-grid;place-items:center;width:var(--tap);aspect-ratio:1;border-radius:var(--radius-2);color:var(--text-muted)}.footer__links[data-astro-cid-zcowuo6x] a[data-astro-cid-zcowuo6x]:hover{background:var(--surface-2);color:var(--text)}@media(width>=40rem){.footer__inner[data-astro-cid-zcowuo6x]{flex-direction:row;align-items:center;justify-content:space-between}.footer__links[data-astro-cid-zcowuo6x]{margin-inline-start:0}}main[data-astro-cid-z4jru4n3]:focus{outline:none}
