.footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--color-border)}.footer-inner[data-astro-cid-jo6i4kqk]{max-width:calc(var(--column) + 3rem);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:1.25rem 1.5rem 2rem;display:flex}.owner[data-astro-cid-jo6i4kqk]{color:var(--color-text-muted);margin:0;font-size:.8125rem}.links[data-astro-cid-jo6i4kqk]{gap:.25rem;margin:0 -.5rem 0 0;padding:0;list-style:none;display:flex}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{width:2.25rem;height:2.25rem;color:var(--color-text-muted);border-radius:4px;place-items:center;transition:color .15s;display:grid}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover,.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:focus-visible{color:var(--color-text)}@media (prefers-reduced-motion:reduce){.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{transition:none}}@media (width<=640px){.footer-inner[data-astro-cid-jo6i4kqk]{padding:1rem 1rem 1.75rem}}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-stretch:85% 100%;font-display:swap;src:url(/fonts/plex-sans-latin.woff2)format("woff2");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:IBM Plex Sans;font-style:italic;font-weight:100 700;font-stretch:85% 100%;font-display:swap;src:url(/fonts/plex-sans-latin-italic.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/plex-mono-latin-400.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/plex-mono-latin-500.woff2)format("woff2");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:Plex Sans Fallback;font-weight:100 450;src:local(Arial),local(ArialMT),local(Helvetica),local(Liberation Sans);size-adjust:101.6%;ascent-override:100.9%;descent-override:27.1%;line-gap-override:0%}@font-face{font-family:Plex Sans Fallback;font-weight:451 550;src:local(Arial),local(ArialMT),local(Helvetica),local(Liberation Sans);size-adjust:103.8%;ascent-override:98.8%;descent-override:26.5%;line-gap-override:0%}@font-face{font-family:Plex Sans Fallback;font-weight:551 900;src:local(Arial Bold),local(Arial-BoldMT),local(Helvetica Bold),local(Helvetica-Bold),local(Liberation Sans Bold);size-adjust:97.1%;ascent-override:105.5%;descent-override:28.3%;line-gap-override:0%}@font-face{font-family:Plex Mono Fallback;src:local(Menlo),local(Menlo-Regular),local(Courier New),local(CourierNewPSMT),local(Liberation Mono);size-adjust:99.7%;ascent-override:102.9%;descent-override:27.6%;line-gap-override:0%}*{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#fff;--color-surface:#f6f6f6;--color-text:#171717;--color-text-body:#262626;--color-text-secondary:#525252;--color-text-muted:#6b6b6b;--color-text-faint:#c2c2c2;--color-border:#e5e5e5;--color-border-light:#efefef;--color-link-underline:#b4b4b4;--color-mark:#ffe45c;--color-mark-wash:#fff0a0;--color-scrollbar:#d4d4d4;--color-scrollbar-hover:#a3a3a3;--color-overlay:#0003;--image-filter:none;--column:43.5rem;--runhead-height:2.75rem;--mark-top:.66em;--mark-height:.44em;--font-sans:"IBM Plex Sans", "Plex Sans Fallback", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", "Plex Mono Fallback", ui-monospace, Menlo, Consolas, monospace}.dark{--color-bg:#111;--color-surface:#1b1b1b;--color-text:#ededed;--color-text-body:#d9d9d9;--color-text-secondary:#a3a3a3;--color-text-muted:#8f8f8f;--color-text-faint:#474747;--color-border:#262626;--color-border-light:#1f1f1f;--color-link-underline:#555;--color-mark:#5a4b10;--color-mark-wash:#332c0f;--color-scrollbar:#333;--color-scrollbar-hover:#4d4d4d;--color-overlay:#0009;--image-filter:brightness(.9)}html{scroll-behavior:smooth;scrollbar-gutter:stable}.post-title-vt{view-transition-name:var(--post-title-vt);view-transition-class:post-title}@media (prefers-reduced-motion:no-preference){::view-transition-old(root),::view-transition-new(root){animation-duration:.15s}::view-transition-group(*.post-title){animation-duration:.28s;animation-timing-function:ease}::view-transition-old(*.post-title):only-child,::view-transition-new(*.post-title):only-child{animation-duration:.15s}}.theme-reveal::view-transition-old(root),.theme-reveal::view-transition-new(root){mix-blend-mode:normal;animation:none}.theme-reveal *,.theme-reveal :before,.theme-reveal :after{transition:none!important}.theme-reveal .post-title-vt{view-transition-name:none}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--color-bg);color:var(--color-text);line-height:1.6;transition:background-color .2s,color .2s}.theme-transition,.theme-transition *,.theme-transition :before,.theme-transition :after{transition:background-color .2s,color .2s,border-color .2s,fill .2s,stroke .2s!important}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto}::selection{background:var(--color-mark);color:var(--color-text)}.container{max-width:calc(var(--column) + 3rem);margin:0 auto;padding-left:1.5rem;padding-right:1.5rem}@media (width<=640px){.container{padding-left:1rem;padding-right:1rem}}.page{padding-top:2.5rem;padding-bottom:4rem}.page-title{letter-spacing:-.015em;color:var(--color-text);margin:0;font-size:2.125rem;font-weight:600;line-height:1.2}.page-lead{color:var(--color-text-secondary);margin:.5rem 0 0;font-size:1rem;line-height:1.6}:is(h1,h2,h3){text-wrap:balance}:is(.article-content,.bio) :is(p,li,blockquote){text-wrap:pretty}.text-link,.article-content a:not(.heading-anchor){color:var(--color-text);text-decoration-line:underline;text-decoration-color:var(--color-link-underline);text-underline-offset:.2em;background-image:linear-gradient(var(--color-mark), var(--color-mark));background-repeat:no-repeat;background-position:0 var(--mark-top);background-size:0 var(--mark-height);-webkit-box-decoration-break:clone;box-decoration-break:clone;text-decoration-thickness:1px}.text-link:is(:hover,:focus-visible),.article-content a:not(.heading-anchor):is(:hover,:focus-visible){background-size:100% var(--mark-height)}@media (prefers-reduced-motion:no-preference){.text-link,.article-content a:not(.heading-anchor){transition:background-size .2s ease-out}}mark{color:var(--color-text);background:linear-gradient(var(--color-mark), var(--color-mark)) 0 .38em / 100% .78em no-repeat;-webkit-box-decoration-break:clone;box-decoration-break:clone;margin:0 -.1em;padding:0 .1em}@media (forced-colors:active){mark{color:marktext;background:mark}}@media (width<=640px){.page{padding-top:2rem;padding-bottom:3rem}.page-title{font-size:1.75rem}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-to-content{z-index:999;color:var(--color-bg);background:var(--color-text);border-radius:0 0 4px 4px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:top .2s;position:fixed;top:-100%;left:1rem}.skip-to-content:focus{outline:none;top:0}:focus-visible{outline-offset:2px;outline:2px solid}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-hover)}@media screen{body{flex-direction:column;min-height:100dvh;display:flex}.site-body{flex:1 0 auto}}@media print{.skip-to-content,.header,.footer,.toc-sidebar,.toc-inline,#search-modal,.heading-anchor,.code-header,.share,.post-nav,.series-strip,.series-steps,.series-all{display:none!important}.container{max-width:none;padding:0}.article-content pre{break-inside:avoid;padding-top:1rem!important}.article-content :is(img,.table-wrap,blockquote){break-inside:avoid}.article-content :is(h2,h3,h4){break-after:avoid}.article-content a[href^=http]:after{content:" (" attr(href) ")";color:var(--color-text-secondary);overflow-wrap:anywhere;font-size:.85em}mark{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.theme-toggle[data-astro-cid-l6lhmie6]{width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:color .15s;display:flex}.theme-toggle[data-astro-cid-l6lhmie6]:hover{color:var(--color-text)}.icon[data-astro-cid-l6lhmie6]{width:18px;height:18px}.sun[data-astro-cid-l6lhmie6]{display:none}.moon[data-astro-cid-l6lhmie6],.dark .sun[data-astro-cid-l6lhmie6]{display:block}.dark .moon[data-astro-cid-l6lhmie6]{display:none}.search-wrapper[data-astro-cid-av774hkb]{position:relative}.search-trigger[data-astro-cid-av774hkb]{width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;transition:color .15s;display:flex}.search-trigger[data-astro-cid-av774hkb]:hover{color:var(--color-text)}.search-modal[data-astro-cid-av774hkb]{z-index:1000;padding:12vh 1rem 1rem;display:none;position:fixed;inset:0}.search-modal[data-astro-cid-av774hkb].open{justify-content:center;align-items:flex-start;display:flex}.search-backdrop[data-astro-cid-av774hkb]{background:var(--color-overlay);position:fixed;inset:0}.search-panel[data-astro-cid-av774hkb]{background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;flex-direction:column;width:100%;max-width:560px;max-height:70vh;display:flex;position:relative;overflow:hidden}.search-header[data-astro-cid-av774hkb]{border-bottom:1px solid var(--color-border);align-items:center;gap:.625rem;padding:.75rem 1rem;display:flex}.header-icon[data-astro-cid-av774hkb]{color:var(--color-text-muted);flex-shrink:0}.search-input[data-astro-cid-av774hkb]{min-width:0;font:inherit;color:var(--color-text);background:0 0;border:none;outline:none;flex:1;font-size:1rem}.search-input[data-astro-cid-av774hkb]::placeholder{color:var(--color-text-muted)}.search-body[data-astro-cid-av774hkb]{flex:1;min-height:120px;overflow-y:auto}.search-count[data-astro-cid-av774hkb]{color:var(--color-text-muted);padding:.5rem 1rem 0;font-size:.8125rem;display:none}.search-count[data-astro-cid-av774hkb].visible{display:block}.search-results[data-astro-cid-av774hkb]{padding:.25rem 0;display:none}.search-results[data-astro-cid-av774hkb].has-results{display:block}.search-results[data-astro-cid-av774hkb] .search-result{padding:.625rem 1rem;text-decoration:none;display:block}.search-results[data-astro-cid-av774hkb] .search-result:hover,.search-results[data-astro-cid-av774hkb] .search-result.selected{background:var(--color-surface)}.search-results[data-astro-cid-av774hkb] .sr-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.search-results[data-astro-cid-av774hkb] .sr-title{color:var(--color-text);font-size:.9375rem;font-weight:500;line-height:1.4}.search-results[data-astro-cid-av774hkb] .sr-meta{flex-shrink:0;gap:.75rem;display:flex}.search-results[data-astro-cid-av774hkb] .sr-date{font-family:var(--font-mono);color:var(--color-text-muted);flex-shrink:0;font-size:.75rem}.search-results[data-astro-cid-av774hkb] .sr-desc{-webkit-line-clamp:2;color:var(--color-text-secondary);-webkit-box-orient:vertical;margin-top:.125rem;font-size:.875rem;line-height:1.5;display:-webkit-box;overflow:hidden}.search-results[data-astro-cid-av774hkb] .sr-tags{flex-wrap:wrap;column-gap:.75rem;margin-top:.25rem;display:flex}.search-results[data-astro-cid-av774hkb] .sr-tag{color:var(--color-text-muted);white-space:nowrap;font-size:.8125rem}.search-results[data-astro-cid-av774hkb] .sr-tag:before{content:"#";content:"#" / "";margin-right:.05em}.search-message[data-astro-cid-av774hkb]{color:var(--color-text-muted);margin:0;padding:1rem;font-size:.9375rem;display:none}.search-body[data-astro-cid-av774hkb]:not(.has-query) .search-empty[data-astro-cid-av774hkb],.search-body[data-astro-cid-av774hkb].no-results .search-no-results[data-astro-cid-av774hkb],.search-body[data-astro-cid-av774hkb].loading .search-loading[data-astro-cid-av774hkb]{display:block}.search-body[data-astro-cid-av774hkb].loading .search-empty[data-astro-cid-av774hkb]{display:none}.search-footer[data-astro-cid-av774hkb]{color:var(--color-text-muted);border-top:1px solid var(--color-border);gap:1.25rem;margin:0;padding:.5rem 1rem;font-size:.8125rem;display:flex}.search-footer[data-astro-cid-av774hkb] kbd[data-astro-cid-av774hkb]{font:inherit}@media (width<=640px){.search-modal[data-astro-cid-av774hkb]{padding:1rem}.search-panel[data-astro-cid-av774hkb]{max-height:80vh}.search-footer[data-astro-cid-av774hkb]{display:none}}.monogram[data-astro-cid-n22k7olv]{min-width:2rem;min-height:2rem;color:var(--color-text);border-radius:4px;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.letters[data-astro-cid-n22k7olv]{font-family:var(--font-mono);letter-spacing:.02em;background:linear-gradient(var(--color-mark), var(--color-mark)) center .62em / calc(100% - .3em) .5em no-repeat;padding:0 .3em;font-size:1.125rem;font-weight:500;line-height:1.3}.monogram[data-astro-cid-n22k7olv]:is(:hover,:focus-visible) .letters[data-astro-cid-n22k7olv]{background-size:100% .5em}@media (prefers-reduced-motion:no-preference){.letters[data-astro-cid-n22k7olv]{transition:background-size .15s ease-out}}@media (forced-colors:active){.letters[data-astro-cid-n22k7olv]{background:0 0}}.header[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--color-border)}.header-inner[data-astro-cid-nen7h5rs]{max-width:calc(var(--column) + 3rem);grid-template-columns:1fr auto auto;grid-template-areas:"name nav actions";align-items:center;column-gap:1.75rem;margin:0 auto;padding:.875rem 1.5rem;display:grid}.site-name[data-astro-cid-nen7h5rs]{grid-area:name;justify-self:start;margin-left:-.375rem;display:flex}.nav[data-astro-cid-nen7h5rs]{grid-area:nav;gap:1.25rem;display:flex}.nav-link[data-astro-cid-nen7h5rs]{color:var(--color-text-secondary);background-image:linear-gradient(var(--color-mark-wash), var(--color-mark-wash));background-position:0 .78em;background-repeat:no-repeat;background-size:0 .52em;margin:0 -.2em;padding:0 .2em;font-size:.9375rem;text-decoration:none}.nav-link[data-astro-cid-nen7h5rs]:is(:hover,:focus-visible){color:var(--color-text);background-size:100% .52em}.nav-link[data-astro-cid-nen7h5rs].active{color:var(--color-text);text-underline-offset:.35em;background-size:0 .52em;text-decoration:underline 1px}@media (prefers-reduced-motion:no-preference){.nav-link[data-astro-cid-nen7h5rs]{transition:color .15s,background-size .2s ease-out}}.actions[data-astro-cid-nen7h5rs]{grid-area:actions;align-items:center;gap:.125rem;margin-right:-.5rem;display:flex}@media (width<=559px){.header-inner[data-astro-cid-nen7h5rs]{grid-template-columns:1fr auto;grid-template-areas:"name actions""nav nav";row-gap:.25rem;padding:.625rem 1rem .75rem}}
