:root{--color-bg:#fffef9;--color-bg-2:#f2ede2;--color-bg-3:#e8e0d0;--color-ink:#1c1a17;--color-ink-2:#423e38;--color-ink-3:#6b665d;--color-border:#d8d3c9;--color-border-2:#c8c2b8;--color-accent:#b56330;--color-accent-mute:#e2c2ac;--color-accent-text:#8a3f1c;--color-seafoam:#7fab9f;--color-seafoam-mute:#c3dad4;--color-seafoam-text:#2c5249;--color-yellow:#b59c4c;--color-yellow-mute:#ddd09e;--color-yellow-text:#5c4a14;--color-periwinkle:#7c87b3;--color-periwinkle-mute:#bfc5db;--color-periwinkle-text:#353c5e;--color-text-primary:var(--color-ink);--color-text-secondary:var(--color-ink-2);--color-text-tertiary:var(--color-ink-3);--color-surface:var(--color-bg);--color-surface-raised:var(--color-bg-2);--color-code-bg:#f9f9f9;--color-code-border:#e0dbd4;--font-display:var(--font-instrument-sans), system-ui, sans-serif;--font-body:var(--font-newsreader), Georgia, serif;--font-ui:var(--font-instrument-sans), system-ui, sans-serif;--font-mono:var(--font-jetbrains-mono), "Fira Code", monospace;--text-hero:clamp(2.8rem, 6vw, 4.2rem);--text-h1:clamp(2rem, 4vw, 2.8rem);--text-h2:clamp(1.4rem, 2.5vw, 1.8rem);--text-h3:1.2rem;--text-body:1.3125rem;--text-sm:1.05rem;--text-xs:.92rem;--text-mono:.82rem;--leading-tight:1.1;--leading-snug:1.3;--leading-normal:1.6;--leading-relaxed:1.8;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.04em;--tracking-wider:.08em;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--layout-max:1100px;--layout-wide:740px;--layout-prose:680px;--layout-narrow:52ch;--layout-gutter:var(--space-6);--height-header:4rem;--duration-fast:.12s;--duration-base:.2s;--duration-slow:.35s;--duration-page:.5s;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-base:ease;--radius-sm:6px;--radius-md:10px;--radius-full:999px;--stroke-width:2px;--stroke-length:1.75rem}[data-theme=dark]{--color-bg:#060308;--color-bg-2:#100e15;--color-bg-3:#100e15;--color-ink:#f2eee5;--color-ink-2:#cac3b6;--color-ink-3:#968f83;--color-border:#2c2932;--color-border-2:#3d3a43;--color-accent:#d9854f;--color-accent-mute:#4a2e1c;--color-accent-text:#e8a26f;--color-seafoam:#6a9f94;--color-seafoam-mute:#283a36;--color-seafoam-text:#a9d3c8;--color-yellow:#c9ab56;--color-yellow-mute:#332c10;--color-yellow-text:#ddc77f;--color-periwinkle:#8c97c4;--color-periwinkle-mute:#232744;--color-periwinkle-text:#b3b9dc;--color-code-bg:#1d1d1d;--color-code-border:#3d3d3d}
.flex{display:flex}.flex-col{flex-direction:column;display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.grid-auto{gap:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.container{max-width:var(--layout-max);padding-inline:var(--layout-gutter);margin-inline:auto}.list-stack{gap:var(--space-2);flex-direction:column;list-style:none;display:flex}.list-item{padding:var(--space-5) var(--space-4);margin-inline:calc(var(--space-4) * -1);border-radius:var(--radius-md);transition:background var(--duration-base) var(--ease-base);display:block;position:relative}.list-item:hover{background:var(--color-surface-raised)}.list-item:before{content:"";left:0;top:var(--space-5);bottom:var(--space-5);width:var(--stroke-width);border-radius:var(--radius-full);background:var(--color-accent);opacity:0;transition:opacity var(--duration-base) var(--ease-out), transform var(--duration-base) var(--ease-out);position:absolute;transform:translate(-2px)}.list-item:hover:before{opacity:1;transform:translate(0)}.prose{--prose-max:var(--layout-prose);--prose-font-size:var(--text-body);--prose-leading:var(--leading-relaxed);--prose-p-margin:var(--space-5);max-width:none;font-family:var(--font-body);font-size:var(--prose-font-size);line-height:var(--prose-leading);color:var(--color-text-secondary);padding-bottom:var(--space-24)}.prose>*{max-width:var(--prose-max);min-width:0}.prose>.code-wide{width:calc(100% + var(--code-wide-extra,0px));z-index:1;max-width:none;position:relative}.prose h2{font-family:var(--font-display);font-size:var(--text-h2);font-weight:600;line-height:var(--leading-snug);color:var(--color-text-primary);margin-top:var(--space-12);margin-bottom:var(--space-4);scroll-margin-top:calc(var(--height-header) + var(--space-12))}.prose h3{font-family:var(--font-display);font-size:var(--text-h3);font-weight:600;line-height:var(--leading-snug);color:var(--color-text-primary);margin-top:var(--space-8);margin-bottom:var(--space-3);scroll-margin-top:calc(var(--height-header) + var(--space-12))}.prose p{font-family:var(--font-body);font-size:var(--prose-font-size);font-weight:400;line-height:var(--prose-leading);color:var(--color-text-secondary);margin-bottom:var(--prose-p-margin)}.prose a{color:var(--color-accent-text);text-underline-offset:2px;transition:opacity var(--duration-base) var(--ease-base);text-decoration:underline}.prose a:hover{opacity:.75}.prose a.external:after{content:"↗";font-family:var(--font-ui);opacity:.8;vertical-align:baseline;margin-left:.2em;font-size:.85em;font-weight:600;text-decoration:none;display:inline-block;position:relative;top:-.05em}.prose :not(pre)>code{font-family:var(--font-mono);font-size:var(--text-mono);background:var(--color-code-bg);border-radius:var(--radius-sm);color:var(--color-accent-text);padding:.15em .4em}.prose pre:not([class*=language-]){background:0 0;border:none;border-radius:0;margin:0;padding:0}.prose pre:not([class*=language-]) code{background:0 0;border-radius:0;padding:0}.prose ul,.prose ol{padding-left:var(--space-6);margin-bottom:var(--space-5)}.prose li{font-family:var(--font-body);font-size:var(--prose-font-size);line-height:var(--prose-leading);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.prose strong{font-weight:600}.prose hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-10) 0}.prose img{border-radius:var(--radius-sm);max-width:100%;height:auto;margin:var(--space-8) 0;display:block}.prose figure img{margin:0}.fadeUp{opacity:0;animation:fadeUp var(--duration-page) var(--ease-out) forwards;transform:translateY(12px)}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}
[data-theme=light] pre[class*=language-]{background:var(--color-code-bg)}[data-theme=light] .hljs{color:#2f3337;background:0 0}[data-theme=light] .hljs-subst{color:#2f3337}[data-theme=light] .hljs-comment{color:#656e77}[data-theme=light] .hljs-doctag,[data-theme=light] .hljs-keyword,[data-theme=light] .hljs-meta .hljs-keyword,[data-theme=light] .hljs-section,[data-theme=light] .hljs-selector-tag,[data-theme=light] .hljs-attr,[data-theme=light] .hljs-meta,[data-theme=light] .hljs-selector-class,[data-theme=light] .hljs-selector-pseudo{color:#015692}[data-theme=light] .hljs-attribute{color:#803378}[data-theme=light] .hljs-name,[data-theme=light] .hljs-type,[data-theme=light] .hljs-number,[data-theme=light] .hljs-selector-id,[data-theme=light] .hljs-quote,[data-theme=light] .hljs-template-tag,[data-theme=light] .hljs-built_in,[data-theme=light] .hljs-title,[data-theme=light] .hljs-title.class_,[data-theme=light] .hljs-title.class_.inherited__,[data-theme=light] .hljs-title.function_,[data-theme=light] .hljs-literal{color:#b75501}[data-theme=light] .hljs-string,[data-theme=light] .hljs-regexp,[data-theme=light] .hljs-symbol,[data-theme=light] .hljs-variable,[data-theme=light] .hljs-template-variable,[data-theme=light] .hljs-link,[data-theme=light] .hljs-selector-attr,[data-theme=light] .hljs-meta .hljs-string{color:#54790d}[data-theme=light] .hljs-bullet,[data-theme=light] .hljs-code{color:#535a60}[data-theme=light] .hljs-deletion{color:#c02d2e}[data-theme=light] .hljs-addition{color:#2f6f44}[data-theme=light] .hljs-emphasis{font-style:italic}[data-theme=light] .hljs-strong{font-weight:700}[data-theme=dark] pre[class*=language-]{background:var(--color-code-bg)}[data-theme=dark] .hljs{color:#fff;background:0 0}[data-theme=dark] .hljs-subst{color:#fff}[data-theme=dark] .hljs-comment{color:#999}[data-theme=dark] .hljs-doctag,[data-theme=dark] .hljs-keyword,[data-theme=dark] .hljs-meta .hljs-keyword,[data-theme=dark] .hljs-section,[data-theme=dark] .hljs-selector-tag,[data-theme=dark] .hljs-attr,[data-theme=dark] .hljs-meta,[data-theme=dark] .hljs-selector-class,[data-theme=dark] .hljs-selector-pseudo{color:#88aece}[data-theme=dark] .hljs-attribute{color:#c59bc1}[data-theme=dark] .hljs-name,[data-theme=dark] .hljs-type,[data-theme=dark] .hljs-number,[data-theme=dark] .hljs-selector-id,[data-theme=dark] .hljs-quote,[data-theme=dark] .hljs-template-tag,[data-theme=dark] .hljs-built_in,[data-theme=dark] .hljs-title,[data-theme=dark] .hljs-title.class_,[data-theme=dark] .hljs-title.class_.inherited__,[data-theme=dark] .hljs-title.function_,[data-theme=dark] .hljs-literal{color:#f08d49}[data-theme=dark] .hljs-string,[data-theme=dark] .hljs-regexp,[data-theme=dark] .hljs-symbol,[data-theme=dark] .hljs-variable,[data-theme=dark] .hljs-template-variable,[data-theme=dark] .hljs-link,[data-theme=dark] .hljs-selector-attr,[data-theme=dark] .hljs-meta .hljs-string{color:#b5bd68}[data-theme=dark] .hljs-bullet,[data-theme=dark] .hljs-code{color:#ccc}[data-theme=dark] .hljs-deletion{color:#de7176}[data-theme=dark] .hljs-addition{color:#76c490}[data-theme=dark] .hljs-emphasis{font-style:italic}[data-theme=dark] .hljs-strong{font-weight:700}
*{box-sizing:border-box;margin:0;padding:0}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;height:100%}html[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html,body{max-width:100vw;overflow-x:clip}body{min-height:100%;color:var(--color-text-primary);background:var(--color-surface);font-family:var(--font-body);font-size:var(--text-body);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background var(--duration-base) var(--ease-base), color var(--duration-base) var(--ease-base);flex-direction:column;display:flex}a{color:inherit;text-decoration:none}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600}
