@font-face{font-family:averia;font-stretch:normal;font-style:normal;font-weight:400;src:url(/static/fonts/Averia-Regular.woff2) format("woff2")}@font-face{font-family:averia;font-stretch:normal;font-style:italic;font-weight:400;src:url(/static/fonts/Averia-Italic.woff2) format("woff2")}@font-face{font-family:averia;font-stretch:normal;font-style:normal;font-weight:700;src:url(/static/fonts/Averia-Bold.woff2) format("woff2")}@font-face{font-family:averia;font-stretch:normal;font-style:italic;font-weight:700;src:url(/static/fonts/Averia-BoldItalic.woff2) format("woff2")}@font-face{font-family:averia light;font-stretch:normal;font-style:normal;font-weight:400;src:url(/static/fonts/Averia-Light.woff2) format("woff2")}@font-face{font-family:averia light;font-stretch:normal;font-style:italic;font-weight:400;src:url(/static/fonts/Averia-LightItalic.woff2) format("woff2")}@font-face{font-family:averia gruesa;font-stretch:normal;font-style:italic;font-weight:400;src:url(/static/fonts/Averia-Gruesa.woff2) format("woff2")}@font-face{font-family:averia sans;font-stretch:normal;font-style:normal;font-weight:400;src:url(/static/fonts/AveriaSansLibre-Regular.woff2) format("woff2")}@font-face{font-family:averia sans;font-stretch:normal;font-style:italic;font-weight:400;src:url(/static/fonts/AveriaSansLibre-Italic.woff2) format("woff2")}@font-face{font-family:averia sans;font-stretch:normal;font-style:normal;font-weight:700;src:url(/static/fonts/AveriaSansLibre-Bold.woff2) format("woff2")}@font-face{font-family:averia sans;font-stretch:normal;font-style:italic;font-weight:700;src:url(/static/fonts/AveriaSansLibre-BoldItalic.woff2) format("woff2")}@font-face{font-family:averia sans light;font-stretch:normal;font-style:normal;font-weight:400;src:url(/static/fonts/AveriaSansLibre-Light.woff2) format("woff2")}@font-face{font-family:averia sans light;font-stretch:normal;font-style:italic;font-weight:400;src:url(/static/fonts/AveriaSansLibre-LightItalic.woff2) format("woff2")}@font-face{font-family:"averia serif";font-stretch:normal;font-style:normal;font-weight:400;src:url(/static/fonts/AveriaSerifLibre-Regular.woff2) format("woff2")}@font-face{font-family:"averia serif";font-stretch:normal;font-style:italic;font-weight:400;src:url(/static/fonts/AveriaSerifLibre-Italic.woff2) format("woff2")}@font-face{font-family:"averia serif";font-stretch:normal;font-style:normal;font-weight:700;src:url(/static/fonts/AveriaSerifLibre-Bold.woff2) format("woff2")}@font-face{font-family:"averia serif";font-stretch:normal;font-style:italic;font-weight:700;src:url(/static/fonts/AveriaSerifLibre-BoldItalic.woff2) format("woff2")}@font-face{font-family:"averia serif light";font-stretch:normal;font-style:normal;font-weight:400;src:url(/static/fonts/AveriaSerifLibre-Light.woff2) format("woff2")}@font-face{font-family:"averia serif light";font-stretch:normal;font-style:italic;font-weight:400;src:url(/static/fonts/AveriaSerifLibre-LightItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:"Recursive code casual";font-style:normal;font-weight:400;src:url(/static/fonts/recursive-latin-ext-code-casual.woff2) format("woff2");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,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-display:swap;font-family:"Recursive code casual";font-style:normal;font-weight:400;src:url(/static/fonts/recursive-latin-code-casual.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-display:swap;font-family:"Recursive Casual";font-style:normal;font-weight:400;src:url(/static/fonts/recursive-latin-ext-casual.woff2) format("woff2");unicode-range:u+0100-02af,u+0304,u+0308,u+0329,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-display:swap;font-family:"Recursive Casual";font-style:normal;font-weight:400;src:url(/static/fonts/recursive-latin-casual.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--body-background-color:#fff;--body-text-color:#444;--body-text-dimmer-color:#6d6d6d;--body-text-brighter-color:#1b1b1b;--body-heading-color:#7c4695;--inline-code-color:#720a0a;--link-color:#626ef7;--link-visited-color:#8e96f0;--link-hover-color:var(--body-text-color);--link-hover-bg-color:#ff090973;--link-marker-color:#ea7a2a;--link-marker-visited-color:#f0b78e;--link-marker-hover-color:#771515;--body-font:"Recursive Casual";--body-light-font:"averia sans";--info-font:"averia serif";--header-font:"averia serif";--header-font-weight:500;--title-font:"averia gruesa";--title-font-weight:600;--nav-font:"averia gruesa";--nav-font-weight:500;--code-font:"Recursive code casual"}@media (prefers-color-scheme:dark){:root{--body-background-color:#111;--inline-code-color:#9b8ef0;--body-text-color:#ebebeb;--body-text-dimmer-color:#a9b0b8;--body-text-brighter-color:#fafafa;--body-heading-color:#8eb2f0;--link-color:#f08ee3;--link-visited-color:#e7a1e3;--link-hover-color:var(--body-text-color);--link-hover-bg-color:#ff090973;--link-marker-visited-color:#e7c8a1;--link-marker-color:#f0cc8e;--link-marker-hover-color:#ff1d1d;--body-font:"Recursive Casual";--body-light-font:"averia sans light";--info-font:"averia serif light";--header-font:"averia serif";--header-font-weight:600;--title-font:"averia sans";--title-font-weight:600;--nav-font:"averia gruesa";--nav-font-weight:500;--code-font:"Recursive code casual"}a{text-underline-offset:.15rem}}body{background:var(--body-background-color);color:var(--body-text-color)}a:link{color:var(--link-color)}a:visited{color:var(--link-visited-color)}.body aside{color:var(--body-text-dimmer-color)}:is(h1,h2,h3,h4){color:var(--body-heading-color)}:root{--gradient-nb:linear-gradient(270deg,#fddb00,#eed48f,#fff 30%,#fff,#fff 36%,#d4b5de,#9c5cd4,#583260,#000);--gradient-nbflag:linear-gradient(270deg,#fff430 25%,#fff 0,50%,#9c59d1 50%,75%,#181818 75%);--gradient-trans:linear-gradient(270deg,#55cdfc,#b39de9,#f7a8b8,#f6d8dd,#fff 45%,#fff,#fff 55%,#f6d8dd,#f7a8b8,#b39de9,#55cdfc);--gradient-transflag:linear-gradient(270deg,#5bcefa 20%,#f5a9b8 0,40%,#fff 40%,60%,#f5a9b8 60%,80%,#5bcefa 80%);--gradient-rainbow-notqueer:linear-gradient(270deg,#1e5799,#2ce0bf,#76dd2c,#dba62b,#e02cbf,#1e5799);--gradient-queerbipoc:linear-gradient(270deg,#181818 12.5%,#784f17 0,25%,#fe0000 25%,37.5%,#fd8c00 37.5%,50%,#ffe500 50%,62.5%,#119f0b 62.5%,75%,#0644b3 75%,87.5%,#c22edc 87.5%);--current-gradient:var(--gradient-queerbipoc)}.rainbow-text{animation:bg 155s linear infinite;background:var(--current-gradient);background-clip:text;-webkit-background-clip:text;background-size:600px 100%;color:transparent}@keyframes bg{0%{background-position-x:0}to{background-position-x:10000px}}.landing{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100svh}.landing img{max-height:100%;max-width:100%;-o-object-fit:scale-down;object-fit:scale-down}.landing .dark-only{display:none}@media (prefers-color-scheme:dark){.landing .dark-only{display:inline}.landing .light-only{display:none}}.landing .center{display:flex;flex-direction:column;height:300px;justify-content:center;max-width:300px;width:100%}.landing .box-root{display:flex;flex-direction:column;flex-grow:100;justify-content:space-between}.landing .box-row{display:flex;justify-content:center;text-align:justify}.landing .box-row h1{font-family:var(--title-font);font-size:3rem;font-style:italic;font-weight:var(--title-font-weight);width:100%}.landing .box-row h1,.landing .links{display:flex;justify-content:space-between}.landing .links{flex:1 1 0}.landing .links .item{color:var(--body-text-brighter-color);display:flex;font-family:var(--nav-font);font-weight:var(--nav-font-weight)}.landing .links .item a{color:inherit;text-decoration:none}:root{--body-text-width:600px;--body-text-indent:1rem;--aside-offset:3rem;--aside-width:10rem;--mobile-body-padding:0.8rem}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:subpixel-antialiased;font-family:caecilia;font-feature-settings:"kern";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html{font-size:110%}*{margin:0;padding:0}div{min-width:0}:is(ol,ul){list-style-position:inside}.root{display:block;margin-left:auto;margin-right:auto;max-width:calc(var(--aside-width)*2 + var(--body-text-width) + var(--aside-offset));min-height:100%;position:relative;width:100%}.body-root{display:flex;flex-wrap:wrap;padding-bottom:10rem}:is(.body-left,.body-right){display:flex;flex:1 1 0;min-width:0}.body-main{display:flex;flex:0 1 var(--body-text-width);min-width:0}.body{font-family:var(--body-font);font-feature-settings:"liga","clig";font-size:.92rem;line-height:1.5;padding:2rem 0 0}@media (min-width:600px){.body{margin-left:1rem}}.body :is(h1,h2,h3,h4){font-family:var(--header-font);font-weight:var(--header-font-weight)}.body h1{font-size:1.8rem}.body :is(h2,h3){font-size:1.3rem}.body h4{font-size:1rem}.body h1:not(.no-margin){margin-bottom:1.2rem;margin-top:4rem}.body h2:not(.no-margin){margin-bottom:1rem;margin-top:1.5rem}.body h3:not(.no-margin),.body h4:not(.no-margin){margin-bottom:.3rem}.body aside{font-family:var(--body-light-font);text-align:right}.body p{margin-bottom:1rem;text-indent:var(--body-text-indent)}.body pre{font-size:.9rem;line-height:1.6;max-width:95vw;overflow-x:auto}.body pre:not(:has(+codapi-snippet)){margin-bottom:.9rem}.body code{font-family:var(--code-font)}.body p code{color:var(--inline-code-color)}.body p>a:not(.no-decoration):visited:after{border-color:var(--body-background-color);outline-color:var(--link-marker-visited-color)}.body p>a:not(.no-decoration):after{border:1px solid;border-color:var(--link-marker-color);border-radius:50%;color:transparent;content:"  ";font-family:monospace;font-size:.2rem;line-height:0;margin-left:.1rem;margin-right:.15rem;outline-color:var(--body-background-color);outline-style:dashed;outline-width:1px;position:relative;text-decoration:none;top:-3em;vertical-align:baseline}.body a{text-decoration:none}.body a:hover{background:var(--link-hover-bg-color);border-radius:5px;color:var(--link-hover-color)}.body a:hover:after{border-color:var(--link-marker-hover-color)!important;outline:none!important;outline-color:var(--link-hover-bg-color)}.body picture{display:flex;justify-content:center}.body img{max-height:100%;max-width:100%;-o-object-fit:scale-down;object-fit:scale-down}.body figcaption,.body img{margin-left:calc(var(--body-text-indent)*-1)}.body figcaption{color:var(--body-text-dimmer-color);font-family:var(--info-font);font-size:.95rem;font-style:italic;margin-bottom:1rem;text-align:center}.body hr{border:none;font-family:var(--code-font)}.body hr:before{color:var(--body-text-dimmer-color);content:"***";display:block;margin-bottom:1rem;text-align:center}.body ul>li{margin-left:1rem}.post-description-li:not(#a):not(#b){color:var(--body-text-dimmer-color);list-style-type:none;margin-left:2rem}.body-header{padding:5rem 0 0}.body-header h1{font-family:var(--header-font);font-size:1.9rem;font-weight:var(--header-font-weight)}.body-header .header-pharagraph{border-radius:1rem;color:var(--body-text-brighter-color);font-family:var(--body-light-font);font-feature-settings:"liga","clig";font-size:1.15rem;font-style:italic;line-height:1.5;outline-color:rgba(238,255,237,.192);outline-offset:.2rem;outline-style:dashed;outline-width:.2rem;padding:.3rem .5rem}.body-header-metadata{color:var(--body-text-dimmer-color);font-family:var(--info-font);font-size:.9rem;line-height:1.3}@media (min-width:1200px){.body aside{left:0;position:absolute;text-align:right;width:var(--aside-width)}.body :is(h1,h2,h3,h4):not(.no-decoration):before{content:"¶";left:var(--aside-width);padding-left:1rem;position:absolute}}@media (max-width:1199px){.body aside:before{content:">";left:calc(var(--mobile-body-padding));position:absolute}.header-root{padding-top:.5rem!important}.nav-root{padding-right:1rem;padding-top:.5rem}}@media (max-width:800px){.body-main-inner{padding-left:var(--mobile-body-padding);padding-right:var(--mobile-body-padding)}}@media (max-width:600px){.header-root{flex-direction:column}.nav-item{color:var(--body-text-dimmer-color)!important}html{font-size:120%}}@media (max-width:300px){.nav-root{flex-direction:column}}.header-root{align-items:center;display:flex;padding-left:.5rem;padding-right:.5rem;padding-top:1rem}.header-title{display:flex;flex:1 1 0}.header-title h1{font-family:var(--title-font);font-size:1.6rem;font-style:italic;font-weight:var(--title-font-weight)}.header-title a{text-decoration:none}.nav-root{display:flex;flex:1 1 0;justify-content:flex-end}.nav-item{color:var(--body-text-brighter-color);display:flex;font-family:var(--nav-font);font-weight:var(--nav-font-weight);padding-left:1rem}.nav-item a{color:inherit;text-decoration:none}.nav-item .current-page{color:red}@media (prefers-color-scheme:dark){.shiki,.shiki span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}}.shiki{background-color:transparent!important}codapi-snippet button{background:none;border:none;cursor:pointer;padding-left:.7rem}codapi-snippet a:link,codapi-snippet button{color:var(--body-text-dimmer-color);font-family:var(--body-light-font);font-size:.8rem}codapi-snippet pre{color:var(--inline-code-color);padding-left:1.4rem}pre:has(+codapi-snippet):not(.asdfasdf111){color:var(--inline-code-color)!important}codapi-snippet:has(>codapi-output[hidden]) button{margin-bottom:.8rem}