@font-face{font-family:figtree;font-style:normal;font-weight:300 900;font-display:swap;src:url(/fonts/figtree-var.woff2)format("woff2")}@font-face{font-family:figtree;font-style:italic;font-weight:300 900;font-display:swap;src:url(/fonts/figtree-var-italic.woff2)format("woff2")}@font-face{font-family:bitter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/bitter-var.woff2)format("woff2")}@font-face{font-family:bitter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/bitter-var-italic.woff2)format("woff2")}@font-face{font-family:recursive mono linear;font-style:oblique 0 15deg;font-weight:400 700;font-display:swap;src:url(/fonts/recursive-mono-linear-var.woff2)format("woff2")}:root{color-scheme:light;--font-sans:Figtree, ui-sans-serif, system-ui, sans-serif;--font-serif:Bitter, ui-serif, Georgia, serif;--font-mono:"Recursive Mono Linear", ui-monospace, SFMono-Regular, monospace;--color-bg:oklch(100% 0 0);--color-surface:oklch(98.5% 0 0);--color-border:oklch(92% 0.004 286.32);--color-fg:oklch(37% 0.013 285.805);--color-heading:oklch(21% 0.006 285.885);--color-muted:oklch(55.2% 0.016 285.938);--color-accent:oklch(52% 0.115 183);--color-accent-hover:oklch(60% 0.13 183);--color-accent-soft:oklch(95.3% 0.051 180.801);--container:64rem;--gutter:1rem;--header-height:4rem;--radius:0.5rem;--transition:150ms ease}[data-theme=dark]{color-scheme:dark;--color-bg:oklch(20% 0.006 285.9);--color-surface:oklch(23.5% 0.006 285.9);--color-border:oklch(31% 0.007 286);--color-fg:oklch(87.1% 0.006 286.286);--color-heading:oklch(98.5% 0 0);--color-muted:oklch(70.5% 0.015 285.938);--color-accent:oklch(85.5% 0.138 181.071);--color-accent-hover:oklch(91% 0.096 180.4);--color-accent-soft:oklch(30% 0.05 192.5)}@media(min-width:40rem){:root{--gutter:1.5rem}}*,*::before,*::after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;line-height:1.5}body{display:flex;flex-direction:column;min-height:100vh;background-color:var(--color-bg);color:var(--color-fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition),color var(--transition)}a{color:inherit;text-decoration:none}img,svg{display:block;max-width:100%}img{height:auto}ul{list-style:none;padding:0}button{font:inherit;color:inherit;background:0 0;border:0;cursor:pointer}code,pre{font-family:var(--font-mono)}::selection{background-color:color-mix(in oklab,var(--color-accent) 25%,transparent)}:target{scroll-margin-top:calc(var(--header-height) + 1rem)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}.site-header{position:sticky;top:0;z-index:10;border-bottom:1px solid var(--color-border);background-color:color-mix(in oklab,var(--color-bg) 80%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;height:var(--header-height)}.site-main{flex:1;padding-block:3rem}.site-footer{border-top:1px solid var(--color-border)}.site-footer__inner{display:flex;flex-direction:column;gap:.5rem;padding-block:2rem;font-size:.875rem;color:var(--color-muted)}.site-footer a{transition:color var(--transition)}.site-footer a:hover{color:var(--color-accent-hover)}.site-footer__links{display:flex;gap:1rem}@media(min-width:40rem){.site-main{padding-block:4rem}.site-footer__inner{flex-direction:row;align-items:center;justify-content:space-between}}.brand{display:flex;align-items:center;gap:.75rem;font-size:1.5rem;font-weight:600;letter-spacing:-.025em;color:var(--color-heading);transition:color var(--transition)}.brand:hover{color:var(--color-accent-hover)}.brand__logo{display:inline-block;width:2.125rem;height:2.125rem;background-color:currentColor;mask:var(--logo)center/contain no-repeat;-webkit-mask:var(--logo)center/contain no-repeat}.nav{display:flex;align-items:center;gap:.25rem}.nav__list{display:flex;align-items:center;gap:.5rem;font-size:1.125rem;font-weight:500}.nav__list a{display:block;padding:.25rem .75rem;border-radius:.375rem;color:var(--color-muted);transition:background-color var(--transition),color var(--transition)}.nav__list a:hover{background-color:var(--color-accent-soft);color:var(--color-accent)}.nav__list a[aria-current]{color:var(--color-accent)}.nav__separator{width:1px;height:1.25rem;background-color:var(--color-border)}@media(min-width:40rem){.nav,.nav__list{gap:.5rem}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:var(--radius);color:var(--color-muted);transition:background-color var(--transition),color var(--transition)}.theme-toggle:hover{background-color:var(--color-surface);color:var(--color-heading)}.theme-toggle svg{display:none;width:22px;height:22px}:root:not([data-theme-pref]) .theme-toggle .icon-system,[data-theme-pref=system] .theme-toggle .icon-system,[data-theme-pref=light] .theme-toggle .icon-light,[data-theme-pref=dark] .theme-toggle .icon-dark{display:block}.theme-toggle .icon-system{width:calc(22px * 26/24)}[data-theme=dark] .theme-toggle .system-light,:root:not([data-theme=dark]) .theme-toggle .system-dark{display:none}.page-header{margin-bottom:2.5rem}.page-title{font-family:var(--font-serif);font-size:2.25rem;line-height:1.15;font-weight:600;letter-spacing:-.025em;color:var(--color-heading);text-wrap:balance}.page-title__hash{color:var(--color-muted)}@media(min-width:40rem){.page-title{font-size:3rem;line-height:1.1}}.section-label{font-size:.875rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-muted)}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;font-size:.875rem;color:var(--color-muted)}.tags{display:flex;flex-wrap:wrap;gap:.375rem}.tag{display:inline-block;padding:.125rem .625rem;border-radius:999px;background-color:var(--color-accent-soft);color:var(--color-accent);font-size:.75rem;line-height:1rem;font-weight:500;transition:background-color var(--transition),color var(--transition)}.tag:hover{background-color:var(--color-accent);color:var(--color-bg)}.button{display:inline-block;padding:.5rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-heading);font-size:.875rem;font-weight:500;transition:border-color var(--transition),background-color var(--transition),color var(--transition)}.button:hover{border-color:var(--color-accent);color:var(--color-accent-hover)}.button--primary{border-color:var(--color-accent);background-color:var(--color-accent);color:var(--color-bg)}.button--primary:hover{border-color:var(--color-accent-hover);background-color:var(--color-accent-hover);color:var(--color-bg)}.post-group{margin-bottom:2rem}.post-list>*+*{border-top:1px solid var(--color-border)}.post-item{position:relative;display:flex;flex-direction:column;gap:.5rem;padding-block:1.5rem}.post-item__date{flex-shrink:0;padding-top:.125rem;font-size:.875rem;color:var(--color-muted);font-variant-numeric:tabular-nums}.post-item__body{display:flex;flex-direction:column;gap:.5rem;min-width:0}.post-item__title{font-size:1.125rem;line-height:1.5;font-weight:600;letter-spacing:-.025em;color:var(--color-heading);transition:color var(--transition)}.post-item:hover .post-item__title{color:var(--color-accent-hover);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}.post-item__title a::before{content:"";position:absolute;inset:0}.post-item__summary{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.post-item__meta{position:relative;display:flex;align-items:center;gap:.75rem;font-size:.75rem;color:var(--color-muted)}@media(min-width:40rem){.post-item{flex-direction:row;gap:2rem}.post-item__date{width:7rem}}.intro{max-width:48rem}.intro .prose{margin-top:1.5rem;font-size:1.125rem;line-height:2rem}.intro__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}.recent{margin-top:5rem}.recent__header{display:flex;align-items:baseline;justify-content:space-between}.recent__all{font-size:.875rem;font-weight:500;color:var(--color-accent)}.recent__all:hover{text-decoration:underline}.article{width:100%;max-width:48rem;min-width:0;margin-inline:auto}.article__header{margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--color-border)}.article__header .meta,.article__header .tags{margin-top:1rem}.toc{display:none}@media(min-width:80rem){.article-layout--toc{display:grid;grid-template-columns:minmax(0,1fr)14rem;gap:4rem}.article-layout--toc .article{margin-inline:0}.toc{display:block}}.toc__inner{position:sticky;top:calc(var(--header-height) + 2rem)}.toc__title{margin-bottom:.75rem;font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-heading)}.toc__body{padding-left:1rem;border-left:1px solid var(--color-border);font-size:.875rem}.toc ul ul{padding-left:.75rem}.toc a{display:block;padding-block:.25rem;color:var(--color-muted);transition:color var(--transition)}.toc a:hover{color:var(--color-accent-hover)}.term-cloud{display:flex;flex-wrap:wrap;gap:.5rem}.term{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .75rem;border:1px solid var(--color-border);border-radius:999px;font-size:.875rem;font-weight:500;color:var(--color-heading);transition:border-color var(--transition),color var(--transition)}.term:hover{border-color:var(--color-accent);color:var(--color-accent-hover)}.term__count{font-size:.75rem;color:var(--color-muted);font-variant-numeric:tabular-nums}.prose{line-height:1.75}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose :is(p,ul,ol,blockquote,table,figure,.highlight,pre){margin-block:1.25em}.prose :is(h1,h2,h3,h4,h5,h6){color:var(--color-heading);font-weight:600;letter-spacing:-.025em}.prose h2{margin:2em 0 1em;font-size:1.5em;line-height:1.33;font-weight:700}.prose h3{margin:1.6em 0 .6em;font-size:1.25em;line-height:1.6}.prose :is(h4,h5,h6){margin:1.5em 0 .5em;font-size:1em}.prose :is(h2,h3,h4,h5,h6)+*{margin-top:0}.prose a{color:var(--color-accent);font-weight:500;text-decoration:underline;text-decoration-color:color-mix(in oklab,currentColor 40%,transparent);text-underline-offset:3px;transition:color var(--transition),text-decoration-color var(--transition)}.prose a:hover{color:var(--color-accent-hover);text-decoration-color:initial}.prose strong{color:var(--color-heading);font-weight:600}.prose ul{list-style:disc}.prose ol{list-style:decimal}.prose :is(ul,ol){padding-left:1.625em}.prose li{margin-block:.5em;padding-left:.375em}.prose li>:is(ul,ol){margin-block:.75em}.prose ul>li::marker{color:var(--color-border)}.prose ol>li::marker{color:var(--color-muted)}.prose blockquote{padding-left:1em;border-left:.25rem solid var(--color-accent);color:var(--color-heading);font-style:italic}.prose hr{margin-block:3em;border:0;border-top:1px solid var(--color-border)}.prose :is(img,video,figure){margin-block:2em}.prose figcaption{margin-top:.75em;font-size:.875em;color:var(--color-muted)}.prose table{width:100%;border-collapse:collapse;font-size:.875em;line-height:1.7;text-align:left}.prose :is(th,td){padding:.5em;border-bottom:1px solid var(--color-border)}.prose th{color:var(--color-heading);font-weight:600}.prose :not(pre)>code{padding:.15em .35em;border:1px solid var(--color-border);border-radius:.3rem;background-color:var(--color-surface);color:var(--color-heading);font-size:.85em;font-weight:500}.prose pre{overflow-x:auto;padding:.875em 1.125em;border:1px solid var(--color-border);border-radius:.6rem;background-color:var(--color-surface);font-size:.85em;line-height:1.6}.prose .highlight pre{margin:0}[data-theme=light] .chroma{-webkit-text-size-adjust:none}[data-theme=light] .chroma .err{color:#f6f8fa;background-color:#82071e}[data-theme=light] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=light] .chroma .hl{background-color:#dedede}[data-theme=light] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=light] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=light] .chroma .line{display:flex}[data-theme=light] .chroma .k{color:#cf222e}[data-theme=light] .chroma .kc{color:#cf222e}[data-theme=light] .chroma .kd{color:#cf222e}[data-theme=light] .chroma .kn{color:#cf222e}[data-theme=light] .chroma .kp{color:#cf222e}[data-theme=light] .chroma .kr{color:#cf222e}[data-theme=light] .chroma .kt{color:#cf222e}[data-theme=light] .chroma .na{color:#1f2328}[data-theme=light] .chroma .nc{color:#1f2328}[data-theme=light] .chroma .no{color:#0550ae}[data-theme=light] .chroma .nd{color:#0550ae}[data-theme=light] .chroma .ni{color:#6639ba}[data-theme=light] .chroma .nl{color:#900;font-weight:700}[data-theme=light] .chroma .nn{color:#24292e}[data-theme=light] .chroma .nx{color:#1f2328}[data-theme=light] .chroma .nt{color:#0550ae}[data-theme=light] .chroma .nb{color:#6639ba}[data-theme=light] .chroma .bp{color:#6a737d}[data-theme=light] .chroma .nv{color:#953800}[data-theme=light] .chroma .vc{color:#953800}[data-theme=light] .chroma .vg{color:#953800}[data-theme=light] .chroma .vi{color:#953800}[data-theme=light] .chroma .vm{color:#953800}[data-theme=light] .chroma .nf{color:#6639ba}[data-theme=light] .chroma .fm{color:#6639ba}[data-theme=light] .chroma .s{color:#0a3069}[data-theme=light] .chroma .sa{color:#0a3069}[data-theme=light] .chroma .sb{color:#0a3069}[data-theme=light] .chroma .sc{color:#0a3069}[data-theme=light] .chroma .dl{color:#0a3069}[data-theme=light] .chroma .sd{color:#0a3069}[data-theme=light] .chroma .s2{color:#0a3069}[data-theme=light] .chroma .se{color:#0a3069}[data-theme=light] .chroma .sh{color:#0a3069}[data-theme=light] .chroma .si{color:#0a3069}[data-theme=light] .chroma .sx{color:#0a3069}[data-theme=light] .chroma .sr{color:#0a3069}[data-theme=light] .chroma .s1{color:#0a3069}[data-theme=light] .chroma .ss{color:#032f62}[data-theme=light] .chroma .m{color:#0550ae}[data-theme=light] .chroma .mb{color:#0550ae}[data-theme=light] .chroma .mf{color:#0550ae}[data-theme=light] .chroma .mh{color:#0550ae}[data-theme=light] .chroma .mi{color:#0550ae}[data-theme=light] .chroma .il{color:#0550ae}[data-theme=light] .chroma .mo{color:#0550ae}[data-theme=light] .chroma .o{color:#0550ae}[data-theme=light] .chroma .ow{color:#0550ae}[data-theme=light] .chroma .or{color:#0550ae}[data-theme=light] .chroma .p{color:#1f2328}[data-theme=light] .chroma .c{color:#57606a}[data-theme=light] .chroma .ch{color:#57606a}[data-theme=light] .chroma .cm{color:#57606a}[data-theme=light] .chroma .c1{color:#57606a}[data-theme=light] .chroma .cs{color:#57606a}[data-theme=light] .chroma .cp{color:#57606a}[data-theme=light] .chroma .cpf{color:#57606a}[data-theme=light] .chroma .gd{color:#82071e;background-color:#ffebe9}[data-theme=light] .chroma .ge{color:#1f2328}[data-theme=light] .chroma .gi{color:#116329;background-color:#dafbe1}[data-theme=light] .chroma .go{color:#1f2328}[data-theme=light] .chroma .gl{text-decoration:underline}[data-theme=light] .chroma .w{color:#fff}[data-theme=dark] .chroma{color:#e6edf3;-webkit-text-size-adjust:none}[data-theme=dark] .chroma .err{color:#f85149}[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=dark] .chroma .hl{background-color:#6e7681}[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}[data-theme=dark] .chroma .line{display:flex}[data-theme=dark] .chroma .k{color:#ff7b72}[data-theme=dark] .chroma .kc{color:#79c0ff}[data-theme=dark] .chroma .kd{color:#ff7b72}[data-theme=dark] .chroma .kn{color:#ff7b72}[data-theme=dark] .chroma .kp{color:#79c0ff}[data-theme=dark] .chroma .kr{color:#ff7b72}[data-theme=dark] .chroma .kt{color:#ff7b72}[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .ni{color:#ffa657}[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nn{color:#ff7b72}[data-theme=dark] .chroma .nx{color:#e6edf3}[data-theme=dark] .chroma .py{color:#79c0ff}[data-theme=dark] .chroma .nt{color:#7ee787}[data-theme=dark] .chroma .nv{color:#79c0ff}[data-theme=dark] .chroma .vc{color:#79c0ff}[data-theme=dark] .chroma .vg{color:#79c0ff}[data-theme=dark] .chroma .vi{color:#79c0ff}[data-theme=dark] .chroma .vm{color:#79c0ff}[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .l{color:#a5d6ff}[data-theme=dark] .chroma .ld{color:#79c0ff}[data-theme=dark] .chroma .s{color:#a5d6ff}[data-theme=dark] .chroma .sa{color:#79c0ff}[data-theme=dark] .chroma .sb{color:#a5d6ff}[data-theme=dark] .chroma .sc{color:#a5d6ff}[data-theme=dark] .chroma .dl{color:#79c0ff}[data-theme=dark] .chroma .sd{color:#a5d6ff}[data-theme=dark] .chroma .s2{color:#a5d6ff}[data-theme=dark] .chroma .se{color:#79c0ff}[data-theme=dark] .chroma .sh{color:#79c0ff}[data-theme=dark] .chroma .si{color:#a5d6ff}[data-theme=dark] .chroma .sx{color:#a5d6ff}[data-theme=dark] .chroma .sr{color:#79c0ff}[data-theme=dark] .chroma .s1{color:#a5d6ff}[data-theme=dark] .chroma .ss{color:#a5d6ff}[data-theme=dark] .chroma .m{color:#a5d6ff}[data-theme=dark] .chroma .mb{color:#a5d6ff}[data-theme=dark] .chroma .mf{color:#a5d6ff}[data-theme=dark] .chroma .mh{color:#a5d6ff}[data-theme=dark] .chroma .mi{color:#a5d6ff}[data-theme=dark] .chroma .il{color:#a5d6ff}[data-theme=dark] .chroma .mo{color:#a5d6ff}[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .or{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .gd{color:#ffa198;background-color:#490202}[data-theme=dark] .chroma .ge{font-style:italic}[data-theme=dark] .chroma .gr{color:#ffa198}[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .gi{color:#56d364;background-color:#0f5323}[data-theme=dark] .chroma .go{color:#8b949e}[data-theme=dark] .chroma .gp{color:#8b949e}[data-theme=dark] .chroma .gs{font-weight:700}[data-theme=dark] .chroma .gu{color:#79c0ff}[data-theme=dark] .chroma .gt{color:#ff7b72}[data-theme=dark] .chroma .gl{text-decoration:underline}[data-theme=dark] .chroma .w{color:#6e7681}