@font-face{font-family:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-ext-wght-normal.BDFhNWBr.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:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/assets/figtree-latin-wght-normal.B3oYxpP2.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{--font-sans: "Figtree Variable", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-size: 15px;--font-size2: .825rem;--font-variant-numeric: normal;--line-height: 1.6;--content-width: 540px;--background: #fff;--grey1: #111;--grey2: #555;--grey3: #999;--wash1: #e5e5e5;--wash2: #f2f2f2;--wash3: #f8f8f8;--transparentBorder: rgba(0, 0, 0, .05)}@media (prefers-color-scheme: dark){:root{--background: #222;--grey1: #eee;--grey2: #bbb;--grey3: #888;--wash1: #4E4E4E;--wash2: #383838;--wash3: #262626;--transparentBorder: rgb(255 255 255 / .1)}}*{box-sizing:border-box;padding:0;margin:0}html,body{max-width:100vw;overflow-x:hidden}body{background-color:var(--background);font-family:var(--font-sans),sans-serif;font-size:var(--font-size);--font-weight: var(--font-weight);letter-spacing:var(--letter-spacing);line-height:var(--line-height);color:var(--grey1);padding:0 24px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}header{color:var(--grey2);width:100%;max-width:var(--content-width);margin:36px auto 0}header nav ul{display:flex;flex-direction:row;align-items:flex-start;padding-inline:0;padding-bottom:0;list-style:none}header a{display:flex;padding:.25rem .5rem;margin:.25rem}header a:hover{color:var(--grey1)}header:first-of-type a{margin-left:0;padding-left:0}main{width:100%;max-width:var(--content-width);margin:0 auto;padding:clamp(24px,calc((100vw - var(--content-width)) / 2),56px) 0}footer{color:var(--grey2);width:100%;max-width:var(--content-width);margin:0 auto 36px}footer a:hover{color:var(--grey1)}h1{font-size:20px;font-weight:350}h2,h3,h4,h5,h6{font-size:16px;font-weight:400;margin:32px 0 16px}a{color:inherit;text-decoration:none}.about{display:flex;margin:36px 0;row-gap:calc((var(--font-size) * var(--line-height)) / 2);flex-direction:column}.about p a{border-bottom:1px solid var(--wash1)}.no-border{border:none!important}.posts{display:flex;flex-direction:column;row-gap:36px;margin-top:36px}.posts .post{display:flex;flex-direction:row;column-gap:36px}.posts .description{color:var(--grey2);display:flex;row-gap:calc((var(--font-size) * var(--line-height)) / 2);flex-direction:column}.posts .date{color:var(--grey3);font-variant-numeric:var(--font-variant-numeric);position:relative;flex-shrink:0}.posts .date:before{content:"0000 — 0000";visibility:hidden}.posts .date span{position:absolute;left:0;white-space:nowrap}.posts .title a:hover{border-bottom:1px solid}.prose * a{color:var(--grey1);border-bottom:1px solid var(--grey3);text-decoration:none}.prose p{margin:16px 0}.prose b,.prose strong{font-weight:500}.prose b code,.prose strong code{font-weight:700}.prose ol,.prose ul,.resources ol,.resources ul{-webkit-padding-start:2em;padding-inline-start:2em;margin:16px 0}.prose ol li{list-style-type:decimal}.prose ul li,.resources ul li{list-style-type:disc}.prose ol li,.prose ul li,.resources ol li,.resources ul li{margin:4px 0}.prose blockquote{margin:24px 0;-webkit-padding-start:1em;padding-inline-start:1em;border-left:2px solid var(--grey1)}.prose hr{border:0;margin:3rem 0}.prose hr:after{content:"* * *";color:var(--wash1);display:block;font-family:var(--font-mono);width:100%;text-align:center}.prose table{text-align:left;line-height:1.5em;border-collapse:collapse;margin:1.5rem 0;width:100%;border:1px solid var(--wash2)}.prose table caption{color:var(--grey2);font-size:var(--font-size2);margin-bottom:.75em;text-align:center}.prose th,.prose td{padding:.4em;letter-spacing:.5px;border-bottom:1px solid var(--wash2);border-left:1px solid var(--wash2)}.prose th{font-weight:500}.prose figure{margin:36px auto}.prose img,.prose picture,.prose video{width:100%;height:auto;max-width:var(--content-width);margin:0 auto;border:1px solid var(--wash1)}.prose figcaption{color:var(--grey2);font-size:var(--font-size2);margin-bottom:12px}.prose figcaption+img{margin-top:2px}.prose figcaption:has(+img){margin-top:12px;text-align:center}.prose pre{border-radius:8px;margin:16px auto;padding:16px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.prose pre::-webkit-scrollbar{display:none}.code pre,.prose * code{font-family:var(--font-mono);font-size:var(--font-size2);background-color:var(--wash3)}.prose p code{font-variant-ligatures:none;margin:0 2px;box-shadow:0 0 0 2px var(--wash3);border-radius:2px;padding:0 2px}.prose .astro-code,.prose .astro-code span{background-color:var(--wash3)!important}.prose .code-output{color:var(--grey2);font-family:var(--font-mono);font-size:var(--font-size2);letter-spacing:0;margin:20px auto 36px}.prose .code-output p{margin:16px 0;max-width:68ch}.prose pre:has(+.code-output){margin:36px auto 20px}.prose .anchor{position:absolute;visibility:hidden;text-decoration:none;cursor:pointer;margin-left:-1em;padding-right:.5em;width:80%;max-width:var(--content-width)}.prose .anchor:after{color:var(--grey3);content:"#"}.prose *:hover>.anchor{border:none;visibility:visible}.prose .subtitle{color:var(--grey2);font-size:var(--font-size2);font-variant-numeric:var(--font-variant-numeric);margin:4px 0 32px}.resources a:hover{border-bottom:1px solid var(--grey3)}.table-wrapper{overflow-x:auto}.wrapper{border:1px solid var(--wash1);position:relative;height:0;padding-bottom:55.5%}.wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}@media (max-width: 480px){.posts .post{flex-direction:column}.prose figcaption:has(+img){text-align:left}.prose table caption{text-align:left}}@media (prefers-color-scheme: dark){html{color-scheme:dark}img,.dark-mode-dim{filter:brightness(.8) contrast(1.2)}img.dark-mode-invert{-webkit-filter:invert(1);filter:invert(1)}.astro-code,.astro-code span{color:var(--shiki-dark)!important}}
