:root{--bg:#faf7f2;--surface:#f1ece3;--text:#1b1913;--muted:#6d675c;--faint:#a9a196;--rule:#e4ded3;--accent:#c2410c;--accent-ink:#fff;--accent2:#4d7c5f;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--measure:62ch;--gutter:clamp(1.25rem, 5vw, 4rem);--page:68rem;--section-y:clamp(3rem, 9vh, 5.5rem)}@media (prefers-color-scheme:dark){:root{--bg:#12110f;--surface:#1b1a17;--text:#ede8df;--muted:#948d81;--faint:#5f594f;--rule:#282621;--accent:#f97316;--accent-ink:#16150f;--accent2:#7bb28d}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-synthesis:none;margin:0;font-size:16px;line-height:1.6}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.wrap{max-width:var(--page);padding:0 var(--gutter);margin:0 auto}section{padding:var(--section-y) 0}.skip{font-family:var(--mono);background:var(--text);color:var(--bg);z-index:10;padding:.6rem 1rem;font-size:.8125rem;position:absolute;top:0;left:-9999px}.skip:focus{left:var(--gutter);top:.5rem}.header{justify-content:space-between;align-items:baseline;gap:2rem;padding:2rem 0 0;display:flex}.brand{font-family:var(--mono);letter-spacing:.02em;font-size:.8125rem;font-weight:500;text-decoration:none}.brand span{color:var(--faint);font-weight:400}.nav{gap:1.5rem;display:flex}.nav a{font-family:var(--mono);color:var(--muted);border-bottom:1px solid #0000;padding-bottom:2px;font-size:.8125rem;text-decoration:none;transition:color .15s,border-color .15s}.nav a:hover{color:var(--text);border-bottom-color:var(--accent)}.hero{padding:clamp(4rem,14vh,9rem) 0 clamp(3rem,8vh,5rem)}.hero h1{letter-spacing:-.022em;text-wrap:balance;max-width:20ch;margin:0 0 1.5rem;font-size:clamp(1.9rem,5.2vw,3.25rem);font-weight:500;line-height:1.12}.hero h1 .accent{color:var(--accent)}.lede{max-width:var(--measure);color:var(--muted);margin:0 0 2.25rem;font-size:1.0625rem}.actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.btn{font-family:var(--mono);border:1px solid var(--rule);border-radius:3px;padding:.6rem 1rem;font-size:.8125rem;text-decoration:none;transition:border-color .15s,background .15s,color .15s}.btn--primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn--primary:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--ghost:hover{border-color:var(--text)}.sec-head{align-items:center;gap:1rem;margin-bottom:2.5rem;display:flex}.sec-head h2{font-family:var(--mono);color:var(--muted);white-space:nowrap;margin:0;font-size:.8125rem;font-weight:500}.sec-head h2 .marker{color:var(--accent)}.sec-head:after{content:"";background:var(--rule);flex:1;height:1px}.rows{border-top:1px solid var(--rule)}.row{border-bottom:1px solid var(--rule);border-radius:4px;grid-template-columns:2.75rem 1fr auto;align-items:start;gap:0 1.5rem;margin-inline:-1rem;padding:1.6rem 1rem;text-decoration:none;transition:background .15s;display:grid}a.row:hover{background:var(--surface)}.row__num{font-family:var(--mono);color:var(--faint);font-variant-numeric:tabular-nums;padding-top:.35rem;font-size:.75rem;transition:color .15s}a.row:hover .row__num{color:var(--accent)}.row__title{letter-spacing:-.01em;overflow-wrap:anywhere;margin:0 0 .3rem;font-size:1.125rem;font-weight:500}.row__desc{color:var(--muted);max-width:56ch;margin:0 0 .55rem;font-size:.9375rem}.row__outcome{border-left:2px solid var(--accent);max-width:56ch;margin:0 0 .6rem;padding-left:.7rem;font-size:.9375rem}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.tag{font-family:var(--mono);color:var(--muted);border:1px solid var(--rule);white-space:nowrap;border-radius:2px;padding:.1rem .4rem;font-size:.6875rem}.row__meta{font-family:var(--mono);color:var(--faint);font-variant-numeric:tabular-nums;align-items:center;gap:.9rem;padding-top:.35rem;font-size:.75rem;display:flex}.row__arrow{transition:transform .18s,color .15s;display:inline-block}a.row:hover .row__arrow{color:var(--accent);transform:translate(3px)}.about-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:clamp(2rem,6vw,5rem);display:grid}.about-grid p{max-width:var(--measure);margin:0 0 1.1rem}.about-grid p:last-child{margin-bottom:0}.facts{font-family:var(--mono);margin:0;font-size:.8125rem}.facts>div{border-bottom:1px solid var(--rule);justify-content:space-between;gap:1rem;padding:.5rem 0;display:flex}.facts dt{color:var(--faint)}.facts dd{text-align:right;margin:0}.facts dd.is-accent{color:var(--accent)}.contact{border-top:1px solid var(--rule)}.contact h2{letter-spacing:-.02em;text-wrap:balance;max-width:26ch;margin:0 0 .9rem;font-size:clamp(1.4rem,3.5vw,2rem);font-weight:500;line-height:1.18}.contact p{color:var(--muted);max-width:var(--measure);margin:0 0 1.75rem}.back{font-family:var(--mono);color:var(--muted);margin:2.5rem 0 2rem;font-size:.75rem;text-decoration:none;display:inline-block}.back:hover{color:var(--accent)}.proj-head{border-bottom:1px solid var(--rule);padding-bottom:2.5rem}.proj-kicker{font-family:var(--mono);color:var(--faint);gap:.75rem;margin:0 0 1rem;font-size:.75rem;display:flex}.proj-kicker .is-status{color:var(--accent2)}.proj-head h1{letter-spacing:-.022em;text-wrap:balance;max-width:20ch;margin:0 0 1rem;font-size:clamp(1.8rem,4.6vw,2.9rem);font-weight:500;line-height:1.12}.proj-lede{color:var(--muted);max-width:var(--measure);margin:0;font-size:1.0625rem}.glance{font-family:var(--mono);border-bottom:1px solid var(--rule);grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:0 2rem;margin:0;padding:1.5rem 0;font-size:.8125rem;display:grid}.glance>div{padding:.45rem 0}.glance dt{color:var(--faint);margin-bottom:.2rem}.glance dd{overflow-wrap:anywhere;margin:0}.glance a{color:var(--accent)}.callout{border-left:3px solid var(--accent);background:var(--surface);max-width:var(--measure);border-radius:0 4px 4px 0;padding:1.5rem 1.6rem}.callout h3{letter-spacing:-.01em;margin:0 0 .9rem;font-size:1.0625rem;font-weight:500;line-height:1.4}.callout p:last-child{margin-bottom:0}.sample{max-width:var(--measure);background:var(--surface);border:1px solid var(--rule);border-radius:4px;margin:0;padding:1.5rem 1.6rem 1.1rem}.sample blockquote{margin:0}.sample p{margin:0 0 .9rem;font-size:1.0625rem;line-height:1.55}.sample figcaption{font-family:var(--mono);color:var(--faint);font-size:.75rem}ul.plain{max-width:var(--measure);margin:0;padding:0;list-style:none}ul.plain li{color:var(--muted);margin-bottom:.85rem;padding-left:1.4rem;position:relative}ul.plain li:last-child{margin-bottom:0}ul.plain li:before{content:"—";color:var(--faint);font-family:var(--mono);position:absolute;left:0}ul.plain li b{color:var(--text);font-weight:500}.proj-cta{border-top:1px solid var(--rule);padding:2.5rem 0 1rem}.proj-cta h2{letter-spacing:-.015em;margin:0 0 .6rem;font-size:1.35rem;font-weight:500}.proj-cta p{color:var(--muted);max-width:var(--measure);margin:0 0 1.4rem}article section p{max-width:var(--measure);margin:0 0 1.1rem}article section p:last-child{margin-bottom:0}article section{padding:clamp(2.5rem,7vh,4rem) 0 0}article{padding-bottom:clamp(2.5rem,7vh,4rem)}.section-note{color:var(--muted);max-width:56ch;margin:-.5rem 0 1.5rem;font-size:.9375rem}.buildstats{border-top:1px solid var(--rule);font-family:var(--mono);color:var(--faint);flex-wrap:wrap;gap:.6rem;margin:3rem 0 0;padding-top:1.25rem;font-size:.75rem;display:flex}.buildstats b{color:var(--accent2);font-weight:500}.footer{border-top:1px solid var(--rule);font-family:var(--mono);color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-top:1.25rem;padding:1.25rem 0 2.5rem;font-size:.75rem;display:flex}.footer a{color:var(--muted);text-decoration:none}.footer a:hover{color:var(--accent)}.footer__links{gap:1.25rem;display:flex}@media (width<=640px){.nav{gap:1rem}.brand span{display:none}.row{grid-template-columns:1.9rem 1fr}.row__meta{grid-column:2;padding-top:.6rem}.about-grid{grid-template-columns:1fr}}
