:root{color-scheme:light;--canvas:#f4f4f2;--surface:#fbfbfa;--surface-2:#e8e8e4;--text:#17171a;--text-2:#2f3036;--muted:#6c6d72;--border:#dcdcd8;--border-strong:#b9b9b4;--accent:#087a55;--accent-soft:#ddf5e9;--tint:#e8e8e4;--green:var(--accent);--green-hover:#056642;--green-soft:var(--accent-soft);--violet:#5b4bb7;--violet-soft:#e9e6f6;--font-body:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display:var(--font-body);--font-code:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--measure:45rem;--shell:45rem}:root[data-theme=dark]{color-scheme:dark;--canvas:#0f1012;--surface:#15161a;--surface-2:#1c1d21;--text:#e8e8e6;--text-2:#c9c9c6;--muted:#8a8b90;--border:#232427;--border-strong:#3a3b40;--accent:#56d6a3;--accent-soft:#203229;--tint:#18191c;--green-hover:#78e3b7;--violet:#b4a8f2;--violet-soft:#221f33}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--canvas);min-width:320px;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6}a{color:inherit;text-decoration:none}.ul,.prose-link,.article-prose a,.about-copy a{text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:.2em}.ul:hover,.article-prose a:hover,.about-copy a:hover{text-decoration-color:var(--text)}img,svg{max-width:100%}button,input{font:inherit}::selection{background:var(--accent-soft);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.smoke-bg{z-index:-1;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}@media print{.smoke-bg{display:none}}.skip-link{z-index:100;background:var(--text);color:var(--canvas);padding:.6rem .85rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.shell{width:min(calc(100% - 2.5rem), var(--shell));margin-inline:auto}.mono,.meta,time{font-family:var(--font-code)}.meta{color:var(--muted);letter-spacing:.01em;font-size:.75rem}.kind{color:var(--accent);font-family:var(--font-code);letter-spacing:.07em;text-transform:uppercase;font-size:.68rem}.site-header{padding:3rem 0 2.25rem}.header-inner{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;display:flex}.wordmark{font-size:1rem;font-weight:600}.primary-nav{flex-wrap:wrap;align-items:center;gap:.25rem 1rem;font-size:.92rem;display:flex}.primary-nav>a{color:var(--muted)}.primary-nav>a:hover,.primary-nav>a.active{color:var(--text)}.theme-toggle{width:2rem;height:2rem;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;margin-left:-.25rem;display:grid}.theme-toggle:hover{color:var(--text)}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:1rem}.theme-toggle .moon-body{fill:currentColor;stroke:none}.theme-toggle .moon-star{fill:none;stroke:currentColor;stroke-width:1.55px}.sun-icon{display:none}[data-theme=dark] .sun-icon{display:block}[data-theme=dark] .moon-icon{display:none}.section-head{justify-content:space-between;align-items:baseline;gap:1rem;margin:3rem 0 .75rem;display:flex}.section-head h2{color:var(--accent);font-family:var(--font-code);letter-spacing:.02em;margin:0;font-size:.75rem;font-weight:500}.section-head h2:before{content:"// "}.section-head a{color:var(--muted);font-size:.85rem}.page-title{letter-spacing:-.01em;margin:0 0 .4rem;font-size:1.6rem;font-weight:600}.page-lede{color:var(--muted);margin:0 0 1.5rem}.bio{font-size:1rem;line-height:1.7}.bio p{margin:0 0 .9rem}.now-line{border-left:2px solid var(--accent);margin:1.25rem 0 0;padding:.1rem 0 .1rem .8rem;font-size:.95rem}.post-list{flex-direction:column;display:flex}.post-row{border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.85rem 0;display:flex}.post-row:first-child{border-top:1px solid var(--border)}.post-row .thumb{aspect-ratio:16/10;flex:none;width:8.25rem}.post-row-copy{flex:1;min-width:0}.post-row-title{font-weight:500;line-height:1.35;display:block}.post-row-dek{color:var(--muted);margin:.15rem 0 .2rem;font-size:.9rem;line-height:1.45;display:block}.post-row:hover .post-row-title{text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:.2em}.post-row:hover .thumb{opacity:.78}.empty-note{border-top:1px solid var(--border);border-bottom:1px solid var(--border);color:var(--muted);padding:1rem 0}.thumb{background:var(--tint);border-radius:.5rem;transition:opacity .2s;position:relative;overflow:hidden}.thumb img,.thumb svg{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.thumb .img-dark,[data-theme=dark] .thumb .img-light{display:none}[data-theme=dark] .thumb .img-dark{display:block}.project-row{border-bottom:1px solid var(--border);grid-template-columns:3.5rem minmax(0,1fr) auto;align-items:baseline;gap:.1rem .9rem;padding:.7rem 0;display:grid}.project-row:first-child{border-top:1px solid var(--border)}.project-year{color:var(--muted);font-family:var(--font-code);font-size:.78rem}.project-title{font-weight:500}a.project-row:hover .project-title{text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:.2em}.project-status{color:var(--muted);font-family:var(--font-code);letter-spacing:.05em;text-transform:uppercase;font-size:.68rem}.project-dek{color:var(--muted);grid-column:2/4;font-size:.9rem}.subscribe-line{border-top:1px solid var(--border);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;margin-top:3rem;padding:1rem 0;display:flex}.subscribe-line p{color:var(--muted);margin:0;font-size:.95rem}.subscribe-line strong{color:var(--text);font-weight:500}.button{border:1px solid var(--border-strong);border-radius:.45rem;align-items:center;gap:.4rem;padding:.5rem .9rem;font-size:.9rem;font-weight:500;display:inline-flex}.button-primary{border-color:var(--accent);background:var(--accent);color:var(--canvas)}.button-primary:hover{background:var(--green-hover)}.subscribe-page ul{color:var(--text-2);padding-left:1.1rem}.subscribe-page li{margin:.35rem 0}.about-lead{letter-spacing:-.01em;margin:0 0 1rem;font-size:1.3rem;font-weight:500;line-height:1.4}.about-copy p{margin:0 0 1rem;line-height:1.75}.about-copy .links{flex-wrap:wrap;gap:.5rem 1rem;display:flex}.article-page{padding-bottom:2rem}.back-link{color:var(--muted);font-size:.9rem}.article-hero h1{letter-spacing:-.02em;text-wrap:balance;margin:1.25rem 0 .5rem;font-size:clamp(1.9rem,5vw,2.5rem);font-weight:600;line-height:1.15}.article-dek{color:var(--muted);margin:0 0 .6rem;font-size:1.12rem;line-height:1.5}.article-byline{color:var(--muted);font-family:var(--font-code);flex-wrap:wrap;gap:.3rem .9rem;font-size:.75rem;display:flex}.article-cover{margin:1.75rem 0 .5rem}.article-cover .thumb{aspect-ratio:21/9;border-radius:.6rem;width:100%}.article-toc{color:var(--muted);margin:1.5rem 0 0;font-size:.88rem}.article-toc summary{cursor:pointer;color:var(--text)}.article-toc ol{margin:.5rem 0 0;padding-left:1rem}.article-toc li.nested{margin-left:.9rem}.article-prose{margin-top:2rem;font-size:1.06rem;line-height:1.75}.article-prose>:first-child{margin-top:0}.article-prose p{margin:0 0 1.25em}.article-prose h2,.article-prose h3{letter-spacing:-.01em;scroll-margin-top:2rem;line-height:1.25}.article-prose h2{margin:2.2em 0 .6em;font-size:1.45rem;font-weight:600}.article-prose h3{margin:1.8em 0 .5em;font-size:1.15rem;font-weight:600}.article-prose blockquote{border-left:2px solid var(--accent);color:var(--text-2);margin:1.8rem 0;padding:.1rem 0 .1rem 1.1rem}.article-prose ul,.article-prose ol{padding-left:1.3rem}.article-prose li{margin-bottom:.45rem}.article-prose pre{font-family:var(--font-code);tab-size:2;margin:0;padding:1.1rem 1.2rem;font-size:.84rem;line-height:1.7;overflow-x:auto}.article-prose code:not(pre code){border:1px solid var(--border);background:var(--surface-2);font-family:var(--font-code);border-radius:.3rem;padding:.1em .35em;font-size:.82em}.code-frame{border:1px solid var(--border);background:var(--surface);border-radius:.6rem;margin:2rem 0;overflow:hidden}.code-toolbar{border-bottom:1px solid var(--border);color:var(--muted);font-family:var(--font-code);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;align-items:center;gap:1rem;padding:.45rem .6rem .45rem .9rem;font-size:.68rem;display:flex}.code-toolbar button{border:1px solid var(--border);color:var(--text-2);cursor:pointer;font-family:var(--font-body);text-transform:none;background:0 0;border-radius:.35rem;padding:.25rem .55rem;font-size:.72rem}.code-toolbar button:hover{border-color:var(--accent);color:var(--accent)}.theme-figure{margin:2rem 0}.theme-image{border:1px solid var(--border);border-radius:.6rem;width:100%;height:auto}.theme-image-dark,[data-theme=dark] .theme-image-light{display:none}[data-theme=dark] .theme-image-dark{display:block}.theme-figure figcaption{color:var(--muted);font-family:var(--font-code);margin-top:.5rem;font-size:.75rem}.article-tags{font-family:var(--font-code);flex-wrap:wrap;gap:.4rem;margin-top:2.5rem;font-size:.72rem;display:flex}.article-tags span{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.2rem .5rem}.astro-code{background:var(--surface)!important}.astro-code span{color:var(--shiki-light);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight);text-decoration:var(--shiki-light-text-decoration)}[data-theme=dark] .astro-code span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight);text-decoration:var(--shiki-dark-text-decoration)}.eyebrow,.diagram-kicker{color:var(--accent);font-family:var(--font-code);letter-spacing:.07em;text-transform:uppercase;margin:0 0 .6rem;font-size:.68rem}.animated-diagram,.interactive-demo{border:1px solid var(--border);background:var(--surface);border-radius:.6rem;margin:2rem 0;padding:1.25rem;font-size:.95rem}.diagram-heading{justify-content:space-between;align-items:start;gap:1rem;display:flex}.diagram-heading h3,.interactive-demo h3{margin:0;font-size:1.15rem}.diagram-motion-note{color:var(--muted);font-family:var(--font-code);font-size:.68rem}.diagram-description,.demo-copy>p:last-child{color:var(--muted);font-size:.9rem}.diagram-flow{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.7rem;margin:1.25rem 0 0;padding:0;list-style:none;display:grid}.diagram-flow li{border:1px solid var(--border);background:var(--canvas);border-radius:.5rem;padding:.8rem;position:relative}.diagram-flow li:not(:last-child):after{content:"→";color:var(--accent);position:absolute;top:50%;right:-.66rem;transform:translateY(-50%)}.diagram-index{color:var(--accent);font-family:var(--font-code);margin-bottom:.8rem;font-size:.68rem;display:block}.diagram-flow strong,.diagram-flow li>span:last-child{display:block}.diagram-flow li>span:last-child{color:var(--muted);margin-top:.25rem;font-size:.78rem}.demo-stage{border:1px solid var(--accent);background:var(--accent-soft);border-radius:.5rem;margin-top:1rem;padding:1.1rem}.demo-stage[data-signal=violet]{border-color:var(--violet);background:var(--violet-soft)}.demo-stage-count{color:var(--muted);font-family:var(--font-code);margin-bottom:.8rem;font-size:.68rem;display:block}.demo-stage strong{font-size:1.3rem;display:block}.demo-stage p{color:var(--text-2);margin:.4rem 0 0}.demo-controls{flex-wrap:wrap;gap:.45rem;margin-top:.9rem;display:flex}.demo-controls button{border:1px solid var(--border-strong);color:var(--text);cursor:pointer;background:0 0;border-radius:.45rem;padding:.45rem .7rem}.demo-controls button:hover,.demo-controls button.active{border-color:var(--accent);background:var(--accent-soft)}.demo-controls button span{color:var(--accent);font-family:var(--font-code);margin-right:.3rem;font-size:.68rem}.demo-controls .demo-reset{margin-left:auto}.site-footer{padding:3.5rem 0 3rem}.footer-inner{border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.75rem 1rem;padding-top:1rem;font-size:.88rem;display:flex}.footer-links{flex-wrap:wrap;gap:.4rem 1rem;display:flex}.footer-links a:hover{color:var(--text)}@media (width<=34rem){.site-header{padding-top:2rem}.post-row{gap:.8rem}.post-row .thumb{width:6rem}.post-row-dek{display:none}.project-row{grid-template-columns:3rem minmax(0,1fr)}.project-status{grid-column:2}.diagram-flow{grid-template-columns:1fr}.diagram-flow li:not(:last-child):after{content:"↓";top:auto;bottom:-.9rem;right:50%;transform:translate(50%)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
