@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-opsz-normal.Czevyj-6.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-opsz-normal.CJcjJNj7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-opsz-normal.DihXLNYH.woff2)format("woff2-variations");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+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+460-52F,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+301,U+400-45F,U+490-491,U+4B0-4B1,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+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@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+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,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+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-vietnamese-wght-normal.D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-ext-wght-normal.D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/_astro/space-grotesk-latin-wght-normal.BhU9QXUp.woff2)format("woff2-variations");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+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root,html[data-theme=dark]{color-scheme:dark;--bg:#070706;--bg-elevated:#10100e;--surface:#10100e;--surface-2:#161513;--code-bg:#121110;--fg-strong:#cdc4ba;--fg:#b0a9a0;--fg-muted:#958f87;--fg-subtle:#86817a;--fg-faint:#6f6a63;--border:color-mix(in srgb, var(--fg-strong) 13%, transparent);--border-strong:color-mix(in srgb, var(--fg-strong) 26%, transparent);--border-bold:color-mix(in srgb, var(--fg-strong) 42%, transparent);--blue:#8a9fb5;--cyan:#84a9a6;--violet:#a493b4;--green:#9aab7c;--orange:#d08a52;--red:#d0695a;--yellow:#c9a85f;--teal:#7fa595;--accent:#ce5e32;--accent-2:var(--fg-strong);--accent-fg:var(--bg);--info:var(--blue);--success:var(--green);--warning:var(--yellow);--danger:var(--red);--selection:color-mix(in srgb, var(--accent) 32%, transparent);--code-highlight:color-mix(in srgb, var(--fg-strong) 7%, transparent);--code-ins:color-mix(in srgb, var(--green) 10%, transparent);--code-del:color-mix(in srgb, var(--red) 10%, transparent);--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 3 0 0 0 -1.2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");--grain-opacity:.045}html[data-theme=light]{color-scheme:light;--bg:#e6e0d6;--bg-elevated:#ebe6dd;--surface:#ebe6dd;--surface-2:#f0ece4;--code-bg:#ede8df;--fg-strong:#171512;--fg:#2a2723;--fg-muted:#5f5a52;--fg-subtle:#625c54;--fg-faint:#8d877d;--border:color-mix(in srgb, var(--fg-strong) 13%, transparent);--border-strong:color-mix(in srgb, var(--fg-strong) 26%, transparent);--border-bold:color-mix(in srgb, var(--fg-strong) 42%, transparent);--blue:#3f5a78;--cyan:#2f6663;--violet:#6a4e80;--green:#4f6330;--orange:#8f4f1a;--red:#9c3527;--yellow:#775b17;--teal:#2f6553;--accent:#a2431d;--accent-2:var(--fg-strong);--accent-fg:var(--bg);--info:var(--blue);--success:var(--green);--warning:var(--yellow);--danger:var(--red);--selection:color-mix(in srgb, var(--accent) 22%, transparent);--code-highlight:color-mix(in srgb, var(--fg-strong) 6%, transparent);--code-ins:color-mix(in srgb, var(--green) 12%, transparent);--code-del:color-mix(in srgb, var(--red) 10%, transparent);--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 -1.2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");--grain-opacity:.04}:root{--font-display:"Fraunces Variable", ui-serif, Georgia, serif;--font-sans:"Space Grotesk Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, "SFMono-Regular", Menlo, monospace;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--label-tracking:.22em;--radius-sm:2px;--radius:2px;--radius-lg:2px;--content-width:41rem;--page-width:1240px;--ease:cubic-bezier(.2, .7, .2, 1)}.astro-code,.astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight)}html[data-theme=light] .astro-code,html[data-theme=light] .astro-code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight)}.code-block{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--code-bg);margin:1.75rem 0;overflow:hidden}.code-block__header{border-bottom:1px solid var(--border);min-height:2.5rem;font-family:var(--font-mono);font-size:var(--text-xs);align-items:center;gap:.75rem;padding:.35rem .5rem .35rem 1rem;line-height:1.4;display:flex}.code-block__title{min-width:0;color:var(--fg);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.code-block__title--lang{color:var(--fg-muted);font-family:var(--font-sans);font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;font-weight:500}.code-block__lang{color:var(--fg-subtle);font-family:var(--font-sans);font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;flex:none;font-weight:500}.code-block__copy{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--fg-muted);font-family:var(--font-sans);font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;cursor:pointer;transition:color .15s var(--ease), border-color .15s var(--ease);background:0 0;flex:none;padding:.3rem .6rem;font-weight:500}.code-block__copy:hover{border-color:var(--border-bold);color:var(--fg-strong)}.code-block__copy[data-state=copied]{border-color:var(--accent);color:var(--fg-strong)}.code-block pre{font-family:var(--font-mono);font-size:var(--text-sm);tab-size:2;background:0 0;margin:0;padding:.85rem 0;line-height:1.7;overflow-x:auto}.code-block pre>code{width:max-content;min-width:100%;font:inherit;display:block}.code-block .line{vertical-align:top;width:100%;min-height:1lh;padding:0 1rem;display:inline-block}.code-block .line.highlighted{background:var(--code-highlight);box-shadow:inset 1px 0 0 var(--accent)}.code-block .line.diff.add{background:var(--code-ins);box-shadow:inset 2px 0 0 var(--success)}.code-block .line.diff.remove{background:var(--code-del);box-shadow:inset 2px 0 0 var(--danger)}.code-block:not([data-line-numbers]) .line.diff:before{user-select:none;width:1.25ch;margin-left:-1.25ch;display:inline-block}.code-block:not([data-line-numbers]) .line.diff.add:before{content:"+";color:var(--success)}.code-block:not([data-line-numbers]) .line.diff.remove:before{content:"-";color:var(--danger)}.code-block .line.diff.remove>span{opacity:.7}.code-block pre.has-focused .line:not(.focused){opacity:.4;filter:blur(.5px);transition:opacity .2s var(--ease), filter .2s var(--ease)}.code-block pre.has-focused:hover .line:not(.focused),.code-block pre.has-focused:focus-visible .line:not(.focused){opacity:1;filter:none}.code-block[data-line-numbers] .line{counter-increment:line;padding-left:.75rem}.code-block[data-line-numbers] .line:before{content:counter(line);width:3ch;color:var(--fg-faint);text-align:right;user-select:none;margin-right:1.25rem;display:inline-block}.code-block[data-line-numbers] .line.highlighted:before{color:var(--accent)}.code-block[data-line-numbers] .line.diff.add:before{color:var(--success)}.code-block[data-line-numbers] .line.diff.remove:before{color:var(--danger)}.prose :not(pre)>code{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--code-bg);color:var(--fg-strong);overflow-wrap:anywhere;padding:.1em .35em;font-size:.85em}.diagram{--dg-bg:var(--bg);--dg-fg:var(--fg-strong);--dg-muted:var(--fg-muted);--dg-rule:var(--border);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--dg-bg);margin:1.75rem 0;overflow:hidden;container-type:inline-size}.diagram__header{border-bottom:1px solid var(--dg-rule);justify-content:space-between;align-items:baseline;gap:.75rem;margin:0 1.25rem;padding:1.1rem 0 .85rem;line-height:1.4;display:flex}.diagram__heading{flex-direction:column;gap:.15rem;min-width:0;display:flex}.diagram__title{color:var(--dg-fg);font-family:var(--font-display);letter-spacing:-.015em;text-overflow:ellipsis;white-space:nowrap;font-size:1.3rem;font-weight:350;overflow:hidden}.diagram__subtitle{color:var(--dg-muted);font-size:var(--text-sm)}.diagram__type{color:var(--dg-muted);font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;flex:none;margin-left:auto;font-weight:500}.diagram__expand{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--dg-muted);font-family:var(--font-sans);font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;cursor:pointer;transition:color .15s var(--ease), border-color .15s var(--ease);background:0 0;flex:none;padding:.3rem .6rem;font-weight:500}.diagram__expand:hover{border-color:var(--border-bold);color:var(--dg-fg)}.diagram__canvas{justify-content:center;padding:1.5rem 1.25rem;display:flex}.diagram__canvas--narrow,.diagram__canvas--natural{display:none}@container (width<=560px){.diagram__canvas--wide{display:none}.diagram__canvas--narrow{display:flex}}.diagram__canvas>svg{max-width:100%;height:auto;display:block}.diagram__caption{color:var(--dg-muted);font-size:var(--text-xs);padding:0 1.25rem 1.1rem}.diagram[data-expanded]{z-index:100;border:0;border-radius:0;flex-direction:column;margin:0;display:flex;position:fixed;inset:0}.diagram[data-expanded] .diagram__canvas{display:none}.diagram[data-expanded] .diagram__canvas[data-active]{flex:1;align-items:center;min-height:0;display:flex}html:has(.diagram[data-expanded]){overflow:hidden}.diagram .pele{--pele-bg:var(--dg-bg);--pele-fg:var(--dg-fg);--pele-muted:var(--dg-muted);--pele-line:var(--fg-subtle);--pele-surface:var(--surface);--pele-surface-alt:var(--surface-2);--pele-border:var(--border-bold);--pele-accent:var(--accent);--pele-critical:var(--danger);--pele-error:var(--danger);--pele-series-1:#7aa2f7;--pele-series-2:#bb9af7;--pele-series-3:#7dcfff;--pele-series-4:#9ece6a;--pele-series-5:#ff9e64;--pele-series-6:#f7768e;--pele-series-7:#e0af68;--pele-series-8:#9aa5ce;--dg-cyan:#7dcfff;--dg-red:#f7768e;--dg-blue:#7aa2f7;--dg-violet:#bb9af7;--dg-orange:#ff9e64;--dg-green:#9ece6a;--dg-gray:#9aa5ce;--pele-font:var(--font-mono);--pele-font-mono:var(--font-mono);--pele-radius:var(--radius)}html[data-theme=light] .diagram .pele{--pele-series-1:#1f47b8;--pele-series-2:#5f33a3;--pele-series-3:#0b6a9c;--pele-series-4:#3f7d1e;--pele-series-5:#a3410f;--pele-series-6:#a8283f;--pele-series-7:#b48a2f;--pele-series-8:#565c78;--dg-cyan:#0b6a9c;--dg-red:#a8283f;--dg-blue:#1f47b8;--dg-violet:#5f33a3;--dg-orange:#a3410f;--dg-green:#3f7d1e;--dg-gray:#565c78}.diagram .pele .pele-node>:is(rect,path,polygon,circle,ellipse),.diagram .pele .pele-cluster>rect{stroke-width:1px;vector-effect:non-scaling-stroke}.diagram .pele :is(.pele-node,.pele-cluster)>rect{shape-rendering:crispedges}.diagram .pele .pele-edge>path:not(.pele-marker){stroke-width:1.2px}.diagram .pele .pele-cluster-label{font-weight:700}.diagram .pele .pele-actor-actor>:is(path,circle){stroke:var(--pele-line)}.diagram .pele{--dg-saturation:55%}.diagram .pele [class*=dg-role-]{--dg-fill:color-mix(in oklab, var(--dg-stroke) 8%, var(--dg-bg))}.diagram .pele .dg-role-cyan{--dg-stroke:color-mix(in oklab, var(--dg-cyan) var(--dg-saturation), var(--dg-muted))}.diagram .pele .dg-role-red{--dg-stroke:color-mix(in oklab, var(--dg-red) var(--dg-saturation), var(--dg-muted))}.diagram .pele .dg-role-blue{--dg-stroke:color-mix(in oklab, var(--dg-blue) var(--dg-saturation), var(--dg-muted))}.diagram .pele .dg-role-violet{--dg-stroke:color-mix(in oklab, var(--dg-violet) var(--dg-saturation), var(--dg-muted))}.diagram .pele .dg-role-orange{--dg-stroke:color-mix(in oklab, var(--dg-orange) var(--dg-saturation), var(--dg-muted))}.diagram .pele .dg-role-green{--dg-stroke:color-mix(in oklab, var(--dg-green) var(--dg-saturation), var(--dg-muted))}.diagram .pele .dg-role-gray{--dg-stroke:color-mix(in oklab, var(--dg-gray) var(--dg-saturation), var(--dg-muted))}.diagram .pele .pele-node[class*=dg-role-]>:is(rect,path,polygon,circle,ellipse){stroke:var(--dg-stroke)}.diagram .pele .pele-node[class*=dg-role-]>:is(rect,path,polygon,circle,ellipse):not([fill=none]){fill:var(--dg-fill)}.diagram .pele .pele-node.dg-dashed>:is(rect,path,polygon,circle,ellipse){stroke-dasharray:5 4}.diagram .pele .pele-node[class*=dg-role-] .pele-icon{color:var(--dg-stroke)}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;scroll-padding-top:5rem;font-size:100%}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{min-height:100dvh;font-size:var(--text-base);flex-direction:column;margin:0;line-height:1.7;display:flex}body:after{content:"";z-index:90;pointer-events:none;opacity:var(--grain-opacity);background-image:var(--grain);position:fixed;inset:0}pre,code,kbd,samp{font-family:var(--font-mono)}pre,code,kbd{font-variant-ligatures:none;font-feature-settings:"calt" 0, "zero" 1}::selection{background:var(--selection)}:focus-visible{outline:1px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}a{color:inherit;text-decoration:none}img,svg{max-width:100%}h1,h2,h3,h4{font-family:var(--font-display);color:var(--fg-strong);letter-spacing:-.02em;text-wrap:balance;font-weight:350;line-height:1.1}main{flex:1}.container{width:100%;max-width:var(--page-width);margin-inline:auto;padding-inline:clamp(1.25rem,4vw,3rem)}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.eyebrow{font-family:var(--font-sans);font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--fg-muted);font-weight:500;line-height:1.4}.mark{background:var(--accent);flex:none;width:6px;height:6px;display:inline-block}.button{border:1px solid var(--border-strong);border-radius:var(--radius);min-height:3rem;color:var(--fg-strong);font-family:var(--font-sans);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap;transition:border-color .15s var(--ease), background-color .15s var(--ease), color .15s var(--ease);background:0 0;justify-content:center;align-items:center;gap:.6rem;padding:0 1.5rem;font-weight:500;display:inline-flex}.button:hover{border-color:var(--border-bold)}.button--primary{border-color:var(--fg-strong);background:var(--fg-strong);color:var(--bg)}.button--primary:hover{border-color:var(--fg);background:var(--fg)}.chip{border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-family:var(--font-sans);font-size:var(--text-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);transition:color .15s var(--ease), border-color .15s var(--ease);white-space:nowrap;align-items:center;gap:.3em;padding:.25rem .55rem;font-weight:500;line-height:1.4;display:inline-flex}.chip:before{content:"#";color:var(--fg-faint)}.chip[data-kind=category]:before{content:none}a.chip:hover{color:var(--fg-strong);border-color:var(--border-bold)}.prose{color:var(--fg);overflow-wrap:break-word;font-size:1.0625rem;line-height:1.75}.prose>*+*{margin-top:1.25em}.prose p,.prose ul,.prose ol,.prose blockquote,.prose table{margin-block:0}.prose>:is(p,ul,ol,blockquote,table,figure,div,aside,details,pre)+*{margin-top:1.25em}.prose h2,.prose h3,.prose h4{margin-top:2.6em;margin-bottom:0;position:relative}.prose h2{border-top:1px solid var(--border);margin-top:2.25em;padding-top:1.5rem;font-size:clamp(1.6rem,3.2vw,2rem)}.prose h3{margin-top:2em;font-size:1.35rem}.prose h4{font-family:var(--font-sans);font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--fg-muted);font-weight:500}.prose :is(h2,h3,h4)+*{margin-top:.9em}.prose a{color:var(--fg-strong);text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--accent) 70%, transparent);text-underline-offset:3px;transition:color .15s var(--ease), text-decoration-color .15s var(--ease);text-decoration-thickness:1px}.prose a:hover{color:var(--accent);text-decoration-color:var(--accent)}.prose strong{color:var(--fg-strong);font-weight:600}.prose em{color:var(--fg-strong)}.prose :is(ul,ol):not([class]){padding-left:1.5em}.prose li+li,.prose li>ul,.prose li>ol{margin-top:.4em}.prose ul:not([class])>li::marker{content:"–  ";color:var(--fg-faint)}.prose ol:not([class])>li::marker{color:var(--fg-subtle);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.prose blockquote{border-left:1px solid var(--accent);font-family:var(--font-display);letter-spacing:-.01em;color:var(--fg-strong);padding:.1em 0 .1em 1.5rem;font-size:1.3rem;font-weight:350;line-height:1.45}.prose hr{background:var(--border);border:0;height:1px;margin-block:3em}.prose table{border-collapse:collapse;width:100%;font-size:var(--text-sm);display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.6em 1em .6em 0}.prose th{font-size:var(--text-2xs);letter-spacing:var(--label-tracking);text-transform:uppercase;color:var(--fg-muted);border-bottom-color:var(--border-strong);white-space:nowrap;font-weight:500}.prose img{border-radius:var(--radius);border:1px solid var(--border)}.prose kbd{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);border-bottom-width:2px;padding:.1em .4em;font-size:.85em}.logo[data-astro-cid-qmbhzs4e]{font-family:var(--font-mono);letter-spacing:-.01em;color:var(--fg-strong);align-items:center;font-size:.95rem;font-weight:600;display:inline-flex}.path[data-astro-cid-qmbhzs4e]{color:var(--accent);font-weight:500}.cursor[data-astro-cid-qmbhzs4e]{background:var(--accent);opacity:.85;width:.55em;height:1.05em;box-shadow:0 0 10px color-mix(in srgb, var(--accent) 45%, transparent);margin-left:.2em;display:inline-block}@media (width<=420px){.logo[data-astro-cid-qmbhzs4e]{font-size:.85rem}}@media (prefers-reduced-motion:no-preference){.cursor[data-astro-cid-qmbhzs4e]{animation:1.1s step-end infinite blink}}@keyframes blink{50%{opacity:0}}.theme-toggle[data-astro-cid-iomzzyrn]{border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:2.25rem;height:2.25rem;color:var(--fg-muted);cursor:pointer;transition:color .15s var(--ease), border-color .15s var(--ease);background:0 0;place-items:center;padding:0;display:inline-grid}.theme-toggle[data-astro-cid-iomzzyrn]:hover{border-color:var(--border-bold);color:var(--fg-strong)}html[data-theme=dark] .moon[data-astro-cid-iomzzyrn],html[data-theme=light] .sun[data-astro-cid-iomzzyrn]{display:none}.site-header[data-astro-cid-cazewum5]{z-index:50;border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(12px)saturate(140%);position:sticky;top:0}.bar[data-astro-cid-cazewum5]{grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;height:3.5rem;display:grid}.toggle[data-astro-cid-cazewum5]{justify-self:end}.site-footer[data-astro-cid-uq6og73e]{border-top:1px solid var(--border);margin-top:8rem}.top[data-astro-cid-uq6og73e]{flex-wrap:wrap;justify-content:space-between;gap:2.5rem 4rem;padding-top:4.5rem;display:flex}.tagline[data-astro-cid-uq6og73e]{max-width:16ch;font-family:var(--font-display);letter-spacing:-.02em;color:var(--fg-strong);margin:0;font-size:1.6rem;font-weight:350;line-height:1.1}.note[data-astro-cid-uq6og73e]{align-items:center;gap:.6rem;margin:1.25rem 0 0;display:flex}.columns[data-astro-cid-uq6og73e]{gap:4.5rem;display:flex}.columns[data-astro-cid-uq6og73e] .eyebrow[data-astro-cid-uq6og73e]{margin:0 0 1rem}ul[data-astro-cid-uq6og73e]{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}ul[data-astro-cid-uq6og73e] a[data-astro-cid-uq6og73e]{color:var(--fg);transition:color .15s var(--ease);font-size:.9375rem}ul[data-astro-cid-uq6og73e] a[data-astro-cid-uq6og73e]:hover{color:var(--fg-strong)}.wordmark[data-astro-cid-uq6og73e]{width:100%;height:auto;margin-top:4rem;display:block;overflow:visible}.wordmark[data-astro-cid-uq6og73e] text[data-astro-cid-uq6og73e]{font-family:var(--font-mono);fill:url(#wordmark-dots);font-size:151px;font-weight:800}.dot[data-astro-cid-uq6og73e]{fill:var(--fg-faint)}.period[data-astro-cid-uq6og73e]{fill:url(#wordmark-dots-accent)}.dot--accent[data-astro-cid-uq6og73e]{fill:var(--accent)}.fine-print[data-astro-cid-uq6og73e]{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--fg-subtle);flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;padding-block:1.25rem 2rem;display:flex}@media (width<=600px){.columns[data-astro-cid-uq6og73e]{gap:3rem}.fine-print[data-astro-cid-uq6og73e]{flex-direction:column}}.skip-link[data-astro-cid-z4jru4n3]{z-index:100;background:var(--fg-strong);color:var(--bg);border-radius:var(--radius-sm);font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;padding:.5rem .75rem;font-weight:500;position:absolute;top:-3rem;left:1rem}.skip-link[data-astro-cid-z4jru4n3]:focus{top:.75rem}
