:root{--bg:#0e1210;--surface:#0b0f0d;--line:#212824;--line-soft:#1a201c;--ink-hi:#eef2ef;--ink-body:#cfd6d1;--ink-mid:#96a29a;--ink-soft:#79857e;--ink-low:#5c6862;--accent:#43c583;--accent-dim:#2b4a3a;--accent-contrast:#0c110e;--accent-wash:rgba(67, 197, 131, 0.05);--btn-border:#2b332e;--dot:#1c2420;--hatch:#101512;--glow-text:0 0 10px rgba(67, 197, 131, 0.55);--glow-box:0 0 8px rgba(67, 197, 131, 0.6);--glow-btn:0 0 16px rgba(67, 197, 131, 0.35);--glow-line:0 0 8px rgba(67, 197, 131, 0.7);--font-heading:'Space Grotesk', system-ui, sans-serif;--font-mono:'IBM Plex Mono', ui-monospace, Menlo, monospace}[data-theme=light]{--bg:#f7f8f6;--surface:#fdfdfc;--line:#e2e6e2;--line-soft:#eceeeb;--ink-hi:#141915;--ink-body:#38403b;--ink-mid:#5e6a63;--ink-soft:#7a847d;--ink-low:#96a099;--accent:#1f8a5b;--accent-dim:#cfe4d8;--accent-contrast:#f7f8f6;--accent-wash:rgba(31, 138, 91, 0.05);--btn-border:#d5dad5;--dot:#e6e9e4;--hatch:#f1f3f0;--glow-text:none;--glow-box:none;--glow-btn:none;--glow-line:none}@font-face{font-family:space grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../fonts/space-grotesk-var.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/plex-mono-400.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/plex-mono-400-italic.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/plex-mono-500.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/plex-mono-600.woff2)format('woff2')}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink-body);font-family:var(--font-mono);font-size:13.5px;line-height:1.8}a{color:var(--accent);text-decoration:none}.container{max-width:1060px;margin-inline:auto;padding-inline:28px}.narrow{max-width:720px}.site-nav{border-bottom:1px solid var(--line)}.site-nav .container{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:20px}.brand{font-family:var(--font-heading);font-weight:700;font-size:16px;color:var(--ink-hi)}.brand .tld{color:var(--accent);text-shadow:var(--glow-text)}.cursor{display:inline-block;width:8px;height:15px;margin-left:5px;vertical-align:-2px;background:var(--accent);box-shadow:var(--glow-box);animation:blink 1.2s steps(1)infinite}@keyframes blink{50%{opacity:.25}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}html{scroll-behavior:auto}}.site-nav nav{display:flex;align-items:center;gap:24px;font-size:12px}.site-nav nav a{color:var(--ink-soft)}.site-nav nav a:hover{color:var(--ink-hi)}.site-nav nav a.active{color:var(--ink-hi);border-bottom:2px solid var(--accent);padding-bottom:2px}.theme-toggle{width:26px;height:16px;padding:0;border:1px solid var(--btn-border);border-radius:9px;background:0 0;position:relative;cursor:pointer}.theme-toggle::after{content:'';position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--accent);transition:left .15s ease}[data-theme=light] .theme-toggle::after{left:12px}.site-footer{border-top:1px solid var(--line);margin-top:64px}.site-footer .container{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px;padding-block:18px;font-size:11px;color:var(--ink-low)}.site-footer nav{display:flex;flex-wrap:wrap;gap:16px}.site-footer a{color:var(--ink-low)}.site-footer a:hover{color:var(--ink-soft)}.site-footer a.rss{color:var(--accent)}.kicker{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);opacity:.7}.label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.meta{font-size:11px;color:var(--ink-low)}.meta .num{color:var(--accent)}h1,.h1{margin:0;font-family:var(--font-heading);font-weight:700;font-size:28px;line-height:1.2;letter-spacing:-.015em;color:var(--ink-hi)}.btn{display:inline-block;padding:9px 16px;font-family:var(--font-mono);font-size:12px;line-height:1.5;border:1px solid transparent;cursor:pointer}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600;box-shadow:var(--glow-btn)}.btn-secondary{border-color:var(--btn-border);color:var(--ink-body);background:0 0}.btn-secondary:hover{border-color:var(--ink-low)}.status-chip{display:inline-flex;align-items:center;gap:9px;padding:7px 12px;border:1px solid var(--line);font-size:11px;color:var(--ink-soft)}.status-chip::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:var(--glow-box)}.brackets{position:relative}.brackets::before,.brackets::after{content:'';position:absolute;width:14px;height:14px}.brackets::before{top:-1px;left:-1px;border-top:1px solid var(--accent);border-left:1px solid var(--accent)}.brackets::after{bottom:-1px;right:-1px;border-bottom:1px solid var(--accent);border-right:1px solid var(--accent)}.note{margin:28px 0;max-width:64ch;border:1px solid var(--accent-dim);background:var(--accent-wash);padding:14px 18px;font-size:12.5px;line-height:1.75;color:var(--ink-mid)}.note::before{content:'▸ NOTE — ';color:var(--accent)}.divider{margin:32px 0;display:flex;align-items:center;gap:14px;font-size:11px;color:var(--accent)}.divider::before,.divider::after{content:'';flex:1;height:1px;background:repeating-linear-gradient(90deg,var(--btn-border) 0 6px,transparent 6px 12px)}.divider span{opacity:.8;text-shadow:var(--glow-text)}.divider:empty{gap:0}.fig{margin:32px 0;max-width:64ch}.fig-frame{border:1px solid var(--line);background:var(--surface);padding:18px 18px 12px}.fig-head{display:flex;justify-content:space-between;gap:12px;font-size:10.5px;color:var(--ink-low);margin-bottom:10px}.fig-head .fig-num{color:var(--accent)}.fig-frame img{max-width:100%;display:block}.fig-caption{margin-top:8px;font-size:11px;color:var(--ink-low)}.post-card{padding:20px 0;border-bottom:1px solid var(--line-soft);display:flex;flex-direction:column;gap:8px}.post-card:last-child{border-bottom:0}.post-card h2{margin:0;font-family:var(--font-heading);font-weight:500;font-size:18px;line-height:1.35}.post-card h2 a{color:var(--ink-hi)}.post-card h2 a:hover{color:var(--accent)}.post-card p{margin:0;font-size:12.5px;line-height:1.7;color:var(--ink-soft);max-width:64ch}.hero-wrap{background-image:radial-gradient(var(--dot) 1px,transparent 1px);background-size:26px 26px;position:relative;overflow:hidden}.glyph-strip{position:absolute;top:0;right:22px;font-size:11px;line-height:1.9;letter-spacing:.3em;color:var(--accent);opacity:.12;writing-mode:vertical-rl;pointer-events:none}.hero{padding:46px 0 18px}.hero h1{font-size:31px;line-height:1.15}.hero .lede{margin:16px 0 0;font-size:13px;line-height:1.8;color:var(--ink-mid);max-width:58ch}.hero-actions{margin-top:20px;display:flex;gap:12px;flex-wrap:wrap}.banner{margin:30px 0 0;padding:13px 18px;border:1px solid var(--line);background:var(--surface);display:flex;align-items:center;justify-content:space-between;gap:18px;font-size:11.5px;color:var(--ink-mid)}.banner:hover{border-color:var(--accent-dim)}.banner:hover .banner-cta{text-shadow:var(--glow-text)}.banner .tag{color:var(--accent)}.banner .banner-cta{color:var(--accent);white-space:nowrap}.banner-thumbs{display:flex;gap:8px;flex:none}.banner-thumbs img{width:76px;height:48px;object-fit:cover;display:block;border:1px solid var(--line);filter:saturate(.85)}.banner:hover .banner-thumbs img{filter:saturate(1)}@media(max-width:640px){.banner-thumbs{display:none}}.section-head{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:10px;margin-top:36px}.section-head .all{font-size:11.5px}.home-posts{padding-bottom:44px}.page-head{padding-top:44px}.page-head .meta{margin-top:8px}.year-label{margin-top:36px;font-size:11px;letter-spacing:.16em;color:var(--accent);opacity:.8}.post-row{padding:18px 0;border-bottom:1px solid var(--line-soft);display:grid;grid-template-columns:80px 1fr auto;gap:16px;align-items:baseline}.post-row .date,.post-row .mins{font-size:11px;color:var(--ink-low)}.post-row .title{font-family:var(--font-heading);font-weight:500;font-size:16px;line-height:1.4;color:var(--ink-hi)}.post-row .title:hover{color:var(--accent)}@media(max-width:640px){.post-row{grid-template-columns:1fr auto}.post-row .date{order:2}.post-row .title{grid-column:1/-1}}.progress{position:fixed;top:0;left:0;right:0;height:3px;background:var(--line-soft);z-index:10}.progress span{display:block;height:100%;width:0;background:var(--accent);box-shadow:var(--glow-line)}.post-layout{max-width:872px;margin-inline:auto;display:grid;grid-template-columns:minmax(0,1fr)224px;gap:48px;padding-block:48px 56px}.post-layout.no-toc{max-width:660px;grid-template-columns:minmax(0,1fr)}.post-layout .prose{font-size:15px}.post-header h1{margin-top:14px;font-size:33px;line-height:1.18}.post-header .lede{margin:20px 0 0;font-size:14px;line-height:1.85;color:var(--ink-mid);max-width:64ch}.toc-rail{min-width:0}.toc{position:sticky;top:24px;border-left:1px solid var(--line);padding-left:20px}.toc .label{font-size:10px;letter-spacing:.18em;color:var(--ink-low)}.toc nav{margin-top:14px}.toc nav ul{list-style:none;margin:0;padding:0}.toc nav ul ul{margin-top:9px;padding-left:12px;border-left:1px solid var(--line-soft)}.toc nav li{margin:11px 0}.toc nav ul ul li{margin:8px 0}.toc nav a{font-size:11.5px;line-height:1.5;color:var(--ink-soft)}.toc nav ul ul a{font-size:11px;color:var(--ink-low)}.toc nav a:hover{color:var(--ink-hi)}.toc nav a.active{color:var(--accent);text-shadow:var(--glow-text)}.toc nav a.active::before{content:'▸ '}@media(max-width:1000px){.post-layout{grid-template-columns:minmax(0,1fr)}.toc-rail{display:none}}.prose{font-size:13.5px;line-height:1.85}.prose>*{max-width:64ch}.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-heading);color:var(--ink-hi);letter-spacing:normal;line-height:1.3;margin:40px 0 0}.prose h1{font-size:24px;font-weight:700}.prose h2{font-size:18px;font-weight:500}.prose h3{font-size:15.5px;font-weight:600}.prose h4{font-size:14px;font-weight:600;color:var(--ink-mid)}.prose p{margin:16px 0 0}.prose a{color:var(--accent);border-bottom:1px dashed var(--accent-dim)}.prose ul,.prose ol{margin:16px 0 0;padding-left:24px}.prose li{margin:6px 0}.prose strong{color:var(--ink-hi);font-weight:600}.prose blockquote{margin:24px 0 0;padding:2px 18px;border-left:2px solid var(--accent-dim);color:var(--ink-mid)}.prose hr{max-width:none;margin:32px 0;border:0;height:1px;background:repeating-linear-gradient(90deg,var(--btn-border) 0 6px,transparent 6px 12px)}.prose img{max-width:100%;height:auto;display:block;margin:28px 0 0;border:1px solid var(--line)}.prose code{font-family:var(--font-mono);font-size:12px;background:var(--surface);border:1px solid var(--line-soft);padding:1px 5px}.prose pre{margin:24px 0 0;padding:14px 16px;overflow-x:auto;background:var(--surface);border:1px solid var(--line);font-size:12px;line-height:1.7}.prose pre code{background:0 0;border:0;padding:0}.prose table{margin:24px 0 0;border-collapse:collapse;font-size:12px}.prose th,.prose td{border:1px solid var(--line);padding:7px 12px;text-align:left}.prose th{color:var(--ink-hi);font-weight:600}.prose .mermaid{margin:24px 0 0}.post-bio{margin:48px 0 0;padding:14px 18px;border:1px solid var(--line);border-left:2px solid var(--accent);font-size:12.5px;line-height:1.75;color:var(--ink-mid);max-width:64ch}.post-bio p{margin:0}.post-bio strong{color:var(--ink-hi);font-weight:600}.subscribe-box{margin:24px 0 0;padding:22px 24px;border:1px solid var(--line);max-width:64ch}.subscribe-box h2{margin:0;font-family:var(--font-heading);font-weight:500;font-size:16px;color:var(--ink-hi)}.subscribe-box p{margin:8px 0 0;font-size:12px;line-height:1.7;color:var(--ink-soft)}.subscribe-form{margin-top:14px;display:flex;max-width:380px}.subscribe-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.subscribe-form input[type=email]{flex:1;min-width:0;padding:9px 14px;font-family:var(--font-mono);font-size:12px;color:var(--ink-body);background:var(--surface);border:1px solid var(--btn-border);border-right:0}.subscribe-form input[type=email]:focus{outline:none;border-color:var(--accent-dim)}.page{padding-block:44px 48px}.page .prose{margin-top:24px}