.theme-toggle[data-astro-cid-l6lhmie6]{border:1px solid var(--rule);width:2.75rem;height:2.75rem;color:var(--ink-soft);cursor:pointer;transition:color var(--dur-fast) var(--ease-out-quart), border-color var(--dur-fast) var(--ease-out-quart);background:0 0;place-items:center;display:inline-grid}.theme-toggle[data-astro-cid-l6lhmie6]:hover{color:var(--color-spark);border-color:var(--color-spark)}.icon[data-astro-cid-l6lhmie6]{display:block}.icon-moon[data-astro-cid-l6lhmie6]{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .icon-sun[data-astro-cid-l6lhmie6]{display:none}:root:not([data-theme=light]) .icon-moon[data-astro-cid-l6lhmie6]{display:block}}:root[data-theme=dark] .icon-sun[data-astro-cid-l6lhmie6]{display:none}:root[data-theme=dark] .icon-moon[data-astro-cid-l6lhmie6],:root[data-theme=light] .icon-sun[data-astro-cid-l6lhmie6]{display:block}:root[data-theme=light] .icon-moon[data-astro-cid-l6lhmie6]{display:none}.masthead[data-astro-cid-nen7h5rs]{padding-inline:var(--space-xs)}.masthead__inner[data-astro-cid-nen7h5rs]{max-width:var(--max-width);justify-content:space-between;align-items:center;gap:var(--space-s) var(--space-m);padding-block:var(--space-m) var(--space-s);flex-wrap:wrap;margin:0 auto;display:flex}.masthead__rule[data-astro-cid-nen7h5rs]{max-width:var(--max-width);margin:0 auto}.wordmark[data-astro-cid-nen7h5rs]{font-family:var(--font-display);font-weight:800;font-size:var(--step-2);letter-spacing:-.03em;color:var(--color-text);font-variation-settings:"opsz" 24;line-height:1;text-decoration:none}.wordmark__dot[data-astro-cid-nen7h5rs]{color:var(--blue)}.wordmark[data-astro-cid-nen7h5rs]:hover .wordmark__dot[data-astro-cid-nen7h5rs]{color:var(--ink-soft)}.mainnav[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-s);display:flex}.mainnav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{gap:var(--space-xs);display:flex}.mainnav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{font-family:var(--font-body);font-weight:600;font-size:var(--step--1);letter-spacing:.02em;color:var(--ink-soft);padding:var(--space-3xs) var(--space-2xs);text-decoration:none}.mainnav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-spark);text-underline-offset:.25em;text-decoration-thickness:2px}.colophon[data-astro-cid-jo6i4kqk]{margin-top:var(--space-3xl);padding-inline:var(--space-xs)}.colophon__inner[data-astro-cid-jo6i4kqk]{max-width:var(--max-width);margin:0 auto}.colophon__grid[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:start;gap:var(--space-m);padding-block:var(--space-m) var(--space-2xl);flex-wrap:wrap;display:flex}.colophon__word[data-astro-cid-jo6i4kqk]{font-family:var(--font-display);font-weight:800;font-size:var(--step-1);letter-spacing:-.03em;color:var(--color-text);text-decoration:none;display:inline-block}.colophon__dot[data-astro-cid-jo6i4kqk]{color:var(--blue)}.colophon__nav[data-astro-cid-jo6i4kqk] ul[data-astro-cid-jo6i4kqk]{gap:var(--space-2xs) 0;flex-wrap:wrap;display:flex}.colophon__nav[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{font-family:var(--font-body);font-weight:600;font-size:var(--step--1);color:var(--ink-soft);padding-inline:var(--space-xs);text-decoration:none}.colophon__nav[data-astro-cid-jo6i4kqk] li[data-astro-cid-jo6i4kqk]:first-child a[data-astro-cid-jo6i4kqk]{padding-inline-start:0}.colophon__nav[data-astro-cid-jo6i4kqk] li[data-astro-cid-jo6i4kqk]:not(:last-child) a[data-astro-cid-jo6i4kqk]{border-right:1px solid var(--rule)}.colophon__nav[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--color-accent);text-decoration:underline;text-decoration-color:var(--color-spark);text-underline-offset:.25em}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/hanken-grotesk-vietnamese-wght-normal.CHiFlh_0.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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/hanken-grotesk-latin-ext-wght-normal.Dg-wlmqe.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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/hanken-grotesk-latin-wght-normal.CaVRRdDk.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:Fragment Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAWUAA4AAAAABvAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABRAAAABYAAAAWABEABEdQT1MAAAFcAAAAHgAAAB5EdEx1R1NVQgAAAXwAAAAnAAAAKLj8uOpPUy8yAAABpAAAAFUAAABgYo+sRGNtYXAAAAH8AAAAQgAAAFxB0OJbZ2FzcAAAAkAAAAAIAAAACAAAABBnbHlmAAACSAAAAT0AAAFaNhXKIGhlYWQAAAOIAAAANgAAADYqgLJdaGhlYQAAA8AAAAAfAAAAJBAY8MdobXR4AAAD4AAAABkAAAAiEYUB02xvY2EAAAP8AAAAFAAAABQBUAHKbWF4cAAABBAAAAAcAAAAIAAjAQBuYW1lAAAELAAAARoAAAJuNApRAXBvc3QAAAVIAAAASwAAAF2B645zAAEAAAAMAAAAAAAAAAIAAQABAAMAAQAAAAEAAAAKABwAHAABREZMVAAIAAQAAAAA//8AAAAAAAB42mNgZGBg4GJQA0ImFzefEAahnMSSPAY+BhBgARH//4NIAFpJBVUAeNotxbENQEAYhuH3/87hwhA3g1KvEANQGcAoKolJJKLR2AwJT/OQaLIFD5o1AN23jVRWgwofnF4JkAHi1zctXMS4u+NOwW0WIrYCqNQJRPIH7S0K2QAAAHjaY2BgYAJiZiAWAZKMYJqFwQNI8zFwAOXYGBQYHBkWMBxkZFLY8v8/UByF///J/wP/U/87/me8HwTUjQIAZb8SQgAAAAEAAf//AA942mJgAvQ4zXARx1H8vd8x2zx8riX/lW3btt2SzS3M7VN7t4Qte7q2ptx++sVnvy9UABBHogURyAAUCgcFUiWOxjTcMzbhnHGKaA2NZJ5O+tLJHDopA0s6GaCSqZwYJ2RE+Bz3GdfwMKozLh81XV3R+VT0wwyT6WdDtEk0gAB0T2Yywu5/ff2/Lqe1XfrB2/RG8sgJuEAQgJOC51iNSimVqXieCXd1cZYxLoovlro4uzLhvMDYEpVSw7G8oPLGVceU6KR8cYF4vK12yLbUcE7CjS2WxRlpRViAsR3J/RNiaRoeeAcJybFcWXN7pUadlJHkqYpJT4yMLA/rrXbwswNAlJACvCePIKKJwMhQ0jC4TQq2tmgKO6QUT4gOrCg6hkIQGKmUItiJlhcXy6PFhYkJhUSXlJSWmAhmxutO9wAAAAABAAAAAQLRsUtkZV8PPPUADwPoAAAAAN9+te8AAAAA3362EvlE/vcTHAOxAAAABgACAAAAAAAAeNpjYGRgYN72n42BgSnrp8t7P2EZoAgq4AAAe9wE3gB42mPKYogAYjkkzADFMgwMjKwM8wFSaARoAAAAAAAAFQAuADoARgBGAEYAiACWAK142mNgZGBg4GTIZ2Bn6GfgAvMQgIOBEQAZTQEkeNqNkQVOREEQRB/uxIPEfgR3d3d3iKHr7rvhWpyCQ3AYKpN1T6emvbvSA7TjpImG5g7gt2E3bTcw2DCcthvpbehP201s8pe2mxnnJ2238Mhb2m5llOW03SsL3MQlYWKsMyOJYSOKR5G47GnBg186RBSX8jcccylE+ZQfwEFQlVfKB4Up7hVxkVDPJ1Ge5UXNDOWxmGOaWeYkG1hms5NPEtIh3HjMLItRkqZyVVgUVphiCbvwxVjJbiu73Sranr/thSPOpOtkXuRV3nkghPk2N3PhNrl5ZoV5WY+41WGV9E/lcb4lKu1Vxma698w93ObiMXON4j9y4TEVCb6YVleIgKIpTfCkX+X4JIgrz5rBWcIikGYx9g9ueGIvAAB42mNgYgCD/3MYjIAUIwM64ARiFYaTjEwMzIzMjCyMrIxsbI5JRallqeyleZkGBo4GINrIwMmEMzG5tCQ1OT83CSxjbGAGANg9D2UA)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fragment Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/fragment-mono-latin-ext-400-normal.BbKYyvR9.woff2)format("woff2"),url(/_astro/fragment-mono-latin-ext-400-normal.CT4YFKeK.woff)format("woff");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:Fragment Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/fragment-mono-latin-400-normal.yxdJ5AmL.woff2)format("woff2"),url(/_astro/fragment-mono-latin-400-normal.BYwT3kSJ.woff)format("woff");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}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{font-size:100%;font:inherit;vertical-align:baseline;border:0;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:"";content:none}table{border-collapse:collapse;border-spacing:0}:root{--font-display:"Bricolage Grotesque Variable", system-ui, -apple-system, sans-serif;--font-body:"Hanken Grotesk Variable", system-ui, -apple-system, sans-serif;--font-mono:"Fragment Mono", ui-monospace, "SFMono-Regular", "Courier New", monospace;--paper:oklch(98.8% .004 258);--paper-sunk:oklch(96.6% .006 258);--ink:oklch(22.5% .021 260);--ink-soft:oklch(44.2% .02 260);--ink-faint:oklch(55.2% .017 260);--rule:oklch(90.6% .006 260);--rule-strong:oklch(79% .01 260);--blue:oklch(52.5% .165 256);--blue-ink:oklch(47.5% .15 258);--blue-soft:oklch(95.8% .026 250);--on-blue:oklch(99.2% .004 258);--color-bg:var(--paper);--color-surface:var(--paper-sunk);--color-text:var(--ink);--color-accent:var(--blue-ink);--color-spark:var(--blue);--color-mid:var(--rule-strong);--color-grey:var(--ink-soft);--border:1px solid var(--rule);--body-weight:400;--body-leading:1.62;--max-width:75rem;--max-width-content:45rem;--ease-out-quart:cubic-bezier(.25, 1, .5, 1);--ease-out-quint:cubic-bezier(.22, 1, .36, 1);--dur-fast:.14s;--dur-mid:.24s;--dur-slow:.6s;--step--2:clamp(.78rem, calc(.77rem + .03vw), .8rem);--step--1:clamp(.94rem, calc(.92rem + .11vw), 1rem);--step-0:clamp(1.13rem, calc(1.08rem + .22vw), 1.25rem);--step-1:clamp(1.35rem, calc(1.28rem + .37vw), 1.56rem);--step-2:clamp(1.62rem, calc(1.5rem + .58vw), 1.95rem);--step-3:clamp(1.94rem, calc(1.77rem + .87vw), 2.44rem);--step-4:clamp(2.33rem, calc(2.08rem + 1.25vw), 3.05rem);--step-5:clamp(2.8rem, calc(2.45rem + 1.77vw), 3.82rem);--step-6:clamp(3.36rem, calc(2.75rem + 3.05vw), 5.2rem);--space-3xs:clamp(.31rem, calc(.31rem + 0vw), .31rem);--space-2xs:clamp(.56rem, calc(.54rem + .11vw), .63rem);--space-xs:clamp(.88rem, calc(.85rem + .11vw), .94rem);--space-s:clamp(1.13rem, calc(1.08rem + .22vw), 1.25rem);--space-m:clamp(1.69rem, calc(1.62rem + .33vw), 1.88rem);--space-l:clamp(2.25rem, calc(2.16rem + .43vw), 2.5rem);--space-xl:clamp(3.38rem, calc(3.24rem + .65vw), 3.75rem);--space-2xl:clamp(4.5rem, calc(4.33rem + .87vw), 5rem);--space-3xl:clamp(6.75rem, calc(6.49rem + 1.3vw), 7.5rem);--space-3xs-2xs:clamp(.31rem, calc(.2rem + .54vw), .63rem);--space-2xs-xs:clamp(.56rem, calc(.43rem + .65vw), .94rem);--space-xs-s:clamp(.88rem, calc(.74rem + .65vw), 1.25rem);--space-s-m:clamp(1.13rem, calc(.86rem + 1.3vw), 1.88rem);--space-m-l:clamp(1.69rem, calc(1.4rem + 1.41vw), 2.5rem);--space-l-xl:clamp(2.25rem, calc(1.73rem + 2.61vw), 3.75rem);--space-xl-2xl:clamp(3.38rem, calc(2.81rem + 2.83vw), 5rem);--space-2xl-3xl:clamp(4.5rem, calc(3.46rem + 5.22vw), 7.5rem);--space-s-l:clamp(1.13rem, calc(.65rem + 2.39vw), 2.5rem)}@media (prefers-color-scheme:dark){:root{--paper:oklch(20% .016 262);--paper-sunk:oklch(24.6% .018 262);--ink:oklch(94.8% .008 258);--ink-soft:oklch(74.2% .014 260);--ink-faint:oklch(60.2% .016 262);--rule:oklch(31.8% .014 262);--rule-strong:oklch(45.2% .016 262);--blue:oklch(66% .15 256);--blue-ink:oklch(76.2% .13 258);--blue-soft:oklch(28.8% .045 258);--on-blue:oklch(15% .02 262);--body-weight:360;--body-leading:1.7}}:root[data-theme=light]{--paper:oklch(98.8% .004 258);--paper-sunk:oklch(96.6% .006 258);--ink:oklch(22.5% .021 260);--ink-soft:oklch(44.2% .02 260);--ink-faint:oklch(55.2% .017 260);--rule:oklch(90.6% .006 260);--rule-strong:oklch(79% .01 260);--blue:oklch(52.5% .165 256);--blue-ink:oklch(47.5% .15 258);--blue-soft:oklch(95.8% .026 250);--on-blue:oklch(99.2% .004 258);--body-weight:400;--body-leading:1.62}:root[data-theme=dark]{--paper:oklch(20% .016 262);--paper-sunk:oklch(24.6% .018 262);--ink:oklch(94.8% .008 258);--ink-soft:oklch(74.2% .014 260);--ink-faint:oklch(60.2% .016 262);--rule:oklch(31.8% .014 262);--rule-strong:oklch(45.2% .016 262);--blue:oklch(66% .15 256);--blue-ink:oklch(76.2% .13 258);--blue-soft:oklch(28.8% .045 258);--on-blue:oklch(15% .02 262);--body-weight:360;--body-leading:1.7}body{font-family:var(--font-body);font-weight:var(--body-weight);line-height:var(--body-leading);color:var(--color-text);font-size:var(--step-0);font-kerning:normal;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}h1,h2,h3,.display{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;font-variation-settings:"opsz" 36;font-weight:800;line-height:.98}h1,h2{font-size:var(--step-3);margin-bottom:var(--space-s);margin-top:var(--space-l)}.tabular{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.markdown{& p{margin-bottom:var(--space-m)}& h2{font-size:var(--step-2);letter-spacing:-.02em;margin-bottom:var(--space-3xs);margin-top:var(--space-l);font-weight:600}& ul{list-style:outside}& ol{list-style:decimal}& ol,& ul{margin-top:var(--space-2xs);padding-inline-start:var(--space-s)}& li{margin-bottom:var(--space-2xs)}& blockquote{padding:var(--space-s) var(--space-m);margin-bottom:var(--space-m);background:var(--paper-sunk);color:var(--ink-soft);font-style:italic}& strong{font-weight:700}& img{margin:0 auto;display:block}& code{font-family:var(--font-mono);background:var(--paper-sunk);padding:.1em .35em;font-size:.86em}& em{font-style:italic}& img+em{text-align:center;margin-top:.7em;font-size:smaller;display:block}& p:has(img+img){justify-content:center;display:flex;& img{width:45%}}}html{box-sizing:border-box;color-scheme:light dark}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,:before,:after{box-sizing:inherit}img{block-size:auto;max-inline-size:100%}body{background-color:var(--color-bg)}main{padding:var(--space-xs);max-width:var(--max-width);width:100%;margin:0 auto}.layout-wrapper{grid-template-rows:auto 1fr auto;min-height:100vh;display:grid}.page{max-width:var(--max-width-content);margin:0 auto}a:any-link{color:var(--color-accent);text-underline-offset:.15em;text-decoration-thickness:1px}a:hover{text-decoration-color:var(--color-spark);text-decoration-thickness:2px}::selection{background:var(--blue);color:var(--on-blue)}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}hr{background:var(--rule-strong);border:0;width:100%;height:1px}.visually-hidden{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--space-xs);z-index:10;padding:var(--space-2xs) var(--space-xs);background-color:var(--blue);color:var(--on-blue);font-family:var(--font-mono);font-size:var(--step--1);position:absolute;top:0;transform:translateY(-120%)}.skip-link:focus{transform:translateY(0)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}.headerimg{margin-block:var(--space-s) var(--space-l)}.gist-data{max-height:15rem}.gist-file{max-width:90vw}
