::view-transition-old(*),::view-transition-new(*){animation-duration:.22s;animation-timing-function:cubic-bezier(.32,.72,0,1)}::view-transition-group(*){animation-duration:.32s;animation-timing-function:cubic-bezier(.32,.72,0,1)}@media(prefers-reduced-motion:reduce){::view-transition-old(*),::view-transition-new(*),::view-transition-group(*){animation:none!important}}@font-face{font-family:Departure Mono;src:url(https://cdn.jsdelivr.net/npm/departure-mono@1.500.0/fonts/webfonts/DepartureMono-Regular.woff2) format("woff2");font-weight:400;font-display:swap}:root{color-scheme:dark;--paper: oklch(.158 .003 60);--paper-deep: oklch(.205 .004 60);--paper-code: oklch(.175 .004 60);--rule: oklch(.42 .005 60 / .5);--rule-soft: oklch(.3 .005 60 / .4);--ink: oklch(.94 .004 60);--ink-soft: oklch(.78 .004 60);--ink-dim: oklch(.6 .004 60);--ink-faint: oklch(.46 .004 60);--copper: oklch(.66 .2 5);--copper-deep: oklch(.55 .22 8);--moss: oklch(.72 .17 145);--indigo: oklch(.66 .13 245);--brick: oklch(.62 .18 25);--amber: oklch(.78 .16 75);--selection: oklch(.55 .2 5 / .4);--font-sans: "Geist", ui-sans-serif, system-ui, sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-pixel: "Departure Mono", ui-monospace, monospace}:root[data-theme=light]{color-scheme:light;--paper: oklch(.972 .011 80);--paper-deep: oklch(.945 .014 78);--paper-code: oklch(.935 .017 76);--rule: oklch(.62 .008 75 / .3);--rule-soft: oklch(.72 .008 75 / .28);--ink: oklch(.22 .014 60);--ink-soft: oklch(.38 .014 62);--ink-dim: oklch(.53 .012 65);--ink-faint: oklch(.7 .01 70);--copper: oklch(.55 .22 8);--copper-deep: oklch(.46 .23 10);--moss: oklch(.5 .13 145);--indigo: oklch(.45 .13 250);--brick: oklch(.52 .135 25);--amber: oklch(.66 .13 75);--selection: oklch(.66 .2 5 / .22)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{min-height:100vh}::selection{background:var(--selection);color:var(--ink)}.shell{max-width:720px;margin:0 auto;padding:1.75rem 1.5rem 4rem}.topbar{display:flex;justify-content:space-between;align-items:center;font-family:var(--font-mono);font-size:.86rem;color:var(--ink-dim);margin-bottom:3rem}.topbar .tilde{color:var(--copper);margin-right:.4ch}.topbar a{color:var(--ink-soft);text-decoration:none;transition:color 80ms linear}.topbar a:hover{color:var(--ink)}.topbar .topbar-right{display:inline-flex;align-items:center;gap:.9rem}.topbar .back{display:inline-flex;align-items:center;gap:.4ch}.topbar .back .arrow{color:var(--copper)}.theme-toggle{appearance:none;background:transparent;border:1px solid var(--rule);color:var(--ink-soft);font:inherit;font-size:.92rem;line-height:1;width:1.6rem;height:1.6rem;display:inline-flex;align-items:center;justify-content:center;border-radius:2px;cursor:pointer;padding:0;transition:color 80ms linear,border-color 80ms linear,background 80ms linear}.theme-toggle:hover{color:var(--copper);border-color:var(--copper)}.theme-toggle:focus-visible{outline:2px solid var(--copper);outline-offset:2px}:root[data-theme=light] .theme-toggle>span{transform:scaleX(-1);display:block}.post-header{margin-bottom:2.5rem}.post-header .meta{display:flex;align-items:baseline;gap:1rem;font-family:var(--font-mono);font-size:.84rem;color:var(--ink-dim);margin-bottom:1rem;letter-spacing:.02em}.post-header .meta .date{color:var(--moss)}.post-header .meta .read{display:inline-flex;align-items:center;gap:.4ch}.post-header h1{font-family:var(--font-sans);font-weight:700;font-size:clamp(1.85rem,1.4rem + 1.8vw,2.5rem);letter-spacing:-.018em;line-height:1.1;margin:0 0 .5rem;color:var(--ink);max-width:22ch}article{color:var(--ink);font-size:1.02rem;line-height:1.72}article :where(p,ul,ol,h1,h2,h3,h4,h5,h6,blockquote,pre,table,figure,hr,div){margin:0}article>*+*{margin-top:1.6em}article>p+ul,article>p+ol{margin-top:.9em}article h2,article h3,article h4,article h5,article h6{font-family:var(--font-sans);font-weight:600;letter-spacing:-.01em;line-height:1.25;color:var(--ink)}article>h2{font-size:1.45rem;margin-top:2.8em;padding-top:.8em;border-top:1px solid var(--rule-soft)}article>h3{font-size:1.2rem;margin-top:2.4em}article>h4{font-size:1.05rem;margin-top:2em}article>:where(h2,h3,h4,h5,h6)+*{margin-top:.7em}article p{color:var(--ink)}article p,article li{text-wrap:pretty;hyphens:auto}article a{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--copper);transition:color 80ms linear,text-decoration-color 80ms linear}article a:hover{color:var(--copper-deep);text-decoration-color:var(--copper-deep)}article a:focus-visible{outline:2px solid var(--copper);outline-offset:2px;border-radius:1px}article strong{font-weight:700;color:var(--ink)}article em{font-style:italic}article ul,article ol{padding-left:1.4rem;margin:0}article li+li{margin-top:.4em}article li::marker{color:var(--ink-faint)}article blockquote{margin:1.5rem 0;padding:.5rem 0 .5rem 1.25rem;border-left:1px solid var(--copper);color:var(--ink-soft);font-style:italic}article blockquote p{color:var(--ink-soft)}article hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}article img,article video{display:block;max-width:100%;height:auto;margin:1.75rem auto;border-radius:2px}.post-cover{display:block;width:100%;max-width:100%;height:auto;margin:0 auto 2rem;border-radius:2px}article figure{margin:1.75rem 0}article figcaption{font-family:var(--font-mono);font-size:.82rem;color:var(--ink-dim);text-align:center;margin-top:.5rem}article table{width:100%;border-collapse:collapse;font-size:.94rem;margin:1.5rem 0}article th,article td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--rule-soft)}article th{font-weight:600;border-bottom:1px solid var(--rule);color:var(--ink)}article kbd{font-family:var(--font-mono);font-size:.84em;padding:1px 6px;border:1px solid var(--rule);border-radius:2px;background:var(--paper);color:var(--ink);vertical-align:1px}article :not(pre)>code{font-family:var(--font-mono);font-size:.88em;padding:.12em .4em;background:var(--paper-code);color:var(--copper-deep);border-radius:2px;word-break:break-word}article a>code{color:inherit;background:transparent;padding:0}article pre.astro-code{font-family:var(--font-mono);font-size:.88rem;line-height:1.6;padding:1rem 1.1rem;border-radius:4px;overflow-x:auto;margin:1.5rem 0;border:1px solid var(--rule-soft)}article pre.astro-code>code{all:unset;font-family:inherit;font-size:inherit;display:block;white-space:pre}:root[data-theme=dark] article pre.astro-code,:root[data-theme=dark] article pre.astro-code span{background-color:var(--shiki-dark-bg)!important;color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.time-indicator{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--moss);margin-right:.4rem;vertical-align:.05em;box-shadow:0 0 0 2px color-mix(in oklab,var(--moss) 25%,transparent)}footer.post-footer{margin-top:4rem;padding-top:1.25rem;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem 1.5rem;font-family:var(--font-mono);font-size:.84rem;color:var(--ink-dim)}footer.post-footer .links{display:flex;gap:1.25rem}footer.post-footer .links a{color:var(--ink-soft);text-decoration:none;transition:color 80ms linear}footer.post-footer .links a:hover{color:var(--copper)}footer.post-footer .meta{color:var(--ink-faint)}footer.post-footer .meta .glyph{color:var(--copper);margin-right:.4ch}@media(max-width:520px){.shell{padding:1.25rem 1.1rem 3rem}article pre{font-size:.82rem;padding:.85rem .95rem}article h2{font-size:1.3rem}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
