@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-normal-BbzFLZTg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Sans Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-ext-wght-italic-CTF9u33F.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Sans Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/instrument-sans-latin-wght-italic-BlcgWI5J.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:TA Human;src:url(/fonts/ta-human-v1.301.woff2) format("woff2");font-weight:200 800;font-stretch:100% 125%;font-style:oblique -11deg 0deg;font-display:swap}@font-face{font-family:TA Mechanical;src:url(/fonts/ta-mechanical-v1.301.woff2) format("woff2");font-weight:200 800;font-stretch:100% 125%;font-style:oblique -11deg 0deg;font-display:swap}@font-face{font-family:TA Neo;src:url(/fonts/ta-neo-v1.301.woff2) format("woff2");font-weight:200 800;font-stretch:100% 125%;font-style:oblique -11deg 0deg;font-display:swap}@font-face{font-family:TA Hand;src:url(/fonts/ta-hand-v1.301.woff2) format("woff2");font-weight:200 800;font-stretch:100% 125%;font-style:oblique -11deg 0deg;font-display:swap}@font-face{font-family:TA Slab;src:url(/fonts/ta-slab-v1.301.woff2) format("woff2");font-weight:200 800;font-stretch:100% 125%;font-style:oblique -11deg 0deg;font-display:swap}:root{--canvas: oklch(.966 .009 99.984);--ink: oklch(.191 .002 106.586);--dark-warm: oklch(.359 .005 106.652);--olive: oklch(.424 .009 88.712);--stone: oklch(.523 .009 99.011);--border: oklch(.914 .015 98.299);--brand: oklch(.333 .077 257.706);--material-nav: oklch(.966 .009 99.984 / .82);--surface-hover: oklch(.191 .002 106.586 / .04);--surface-active: oklch(.191 .002 106.586 / .07);--soft-shadow: oklch(.191 .002 106.586 / .14);--text-caption: .8125rem;--text-code: .875rem;--text-label: .9375rem;--text-body: 1rem;--text-body-lg: 1.125rem;--text-heading-sm: 1.25rem;--text-title: 1.5rem;--text-section: clamp(1.625rem, 2.5vw, 2rem);--text-display: clamp(1.5rem, 3vw, 1.875rem);--text-article-display: clamp(min(2.75rem, 12vw), 3.5vw, 4rem);--leading-body: 1.55;--leading-heading: 1.1;--font-sans: "Instrument Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ease-out: cubic-bezier(.23, 1, .32, 1);color:var(--ink);background:var(--canvas);font-family:var(--font-sans);font-size:100%;font-optical-sizing:auto;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{min-height:100%;overscroll-behavior-y:none}@media(prefers-color-scheme:dark){:root{--canvas: oklch(.203 .006 106.906);--ink: oklch(.937 .017 91.556);--dark-warm: oklch(.855 .016 90.251);--olive: oklch(.761 .016 86.44);--stone: oklch(.644 .014 86.858);--border: oklch(.331 .01 106.949);--brand: oklch(.736 .075 252.564);--material-nav: oklch(.203 .006 106.906 / .82);--surface-hover: oklch(.937 .017 91.556 / .06);--surface-active: oklch(.937 .017 91.556 / .1);--soft-shadow: oklch(0 0 0 / .36)}}*{box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;border:0;padding:0;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;z-index:100;inset-block-start:12px;inset-inline-start:12px;min-height:44px;align-items:center;border-radius:999px;padding-inline:16px;color:var(--canvas);background:var(--ink);box-shadow:0 8px 24px -16px var(--soft-shadow);font-size:var(--text-label);font-weight:650;translate:0 calc(-100% - 24px)}.skip-link:focus-visible{display:inline-flex;outline:2px solid;outline-offset:2px;text-decoration:none;translate:0}body{margin:0;color:var(--ink);background:var(--canvas);font-size:var(--text-body);line-height:var(--leading-body)}.ocean-banner{position:relative;width:100%;height:clamp(160px,16vw,220px);overflow:hidden;background:var(--canvas);background-image:url(/media/waves-fallback.png);background-position:center bottom;background-size:cover;-webkit-mask-image:linear-gradient(to bottom,oklch(0 0 0) 0%,oklch(0 0 0) 72%,transparent 100%);mask-image:linear-gradient(to bottom,oklch(0 0 0) 0%,oklch(0 0 0) 72%,transparent 100%)}.ocean-banner canvas{display:block;width:100%;height:100%;opacity:0;image-rendering:pixelated;transition:opacity .2s var(--ease-out)}.ocean-banner canvas[data-render-state=ready]{opacity:1}.ocean-banner-motion-control{position:absolute;z-index:1;inset-block-start:12px;inset-inline-end:12px;display:none;justify-items:end;gap:8px}.ocean-banner-motion-toggle{width:44px;height:44px;display:grid;place-items:center;border:1px solid color-mix(in oklch,var(--ink) 18%,transparent);border-radius:50%;padding:0;color:var(--ink);background:color-mix(in oklch,var(--canvas) 82%,transparent);box-shadow:0 8px 24px -16px var(--soft-shadow);cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.ocean-banner-motion-toggle:hover{background:color-mix(in oklch,var(--canvas) 92%,transparent)}.ocean-banner-motion-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.ocean-banner-motion-toggle svg{width:20px;height:20px;fill:currentColor}.ocean-banner-motion-tooltip{max-width:calc(100vw - 32px);border-radius:8px;padding:6px 10px;color:var(--canvas);background:var(--ink);box-shadow:0 8px 24px -16px var(--soft-shadow);font-size:var(--text-caption);line-height:1.35;overflow-wrap:break-word;text-align:start;opacity:0;pointer-events:none}.ocean-banner-motion-control:not([data-tooltip-dismissed]):hover .ocean-banner-motion-tooltip,.ocean-banner-motion-control:not([data-tooltip-dismissed]):focus-within .ocean-banner-motion-tooltip{opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.ocean-banner canvas{opacity:.85;transition:none}.ocean-banner-motion-control{display:grid}}main{width:720px;margin:0 auto;padding-top:64px}.site-header{margin-bottom:52px}.not-found{width:min(720px,calc(100% - 48px));min-height:50vh}.not-found-label{margin:0 0 12px;color:var(--brand);font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-caption);font-variant-numeric:tabular-nums;font-weight:650}.not-found h1{margin:0;color:var(--ink);font-size:var(--text-section);line-height:var(--leading-heading);letter-spacing:-.03em;text-wrap:balance}.not-found>p:last-of-type{max-width:42ch;margin:20px 0 0;color:var(--olive);text-wrap:pretty}.not-found a{display:inline-flex;min-height:44px;align-items:center;margin-top:24px;margin-inline-start:-10px;border-radius:999px;padding-inline:10px;font-weight:550}.wordmark{color:var(--ink);font-size:var(--text-body);font-weight:600;letter-spacing:-.015em}.hero-intro{margin-bottom:0}.hero-intro p{max-width:34ch;margin:0;color:var(--ink);font-size:var(--text-display);line-height:1.3;letter-spacing:-.025em;text-wrap:balance}::selection{color:var(--canvas);background:var(--brand)}.bio{margin-top:72px;color:var(--dark-warm);font-size:var(--text-body);font-weight:400;line-height:var(--leading-body)}h1,h2,.bio-heading time,.bio-copy p,.writing h2,.writing h3,.writing p,.work h2,.work h3,.work p,.work ul,footer p{margin:0}.page{position:relative;width:min(920px,calc(100% - 48px));margin-top:8px;margin-bottom:28px;padding:38px 44px 0}.page .bio{display:grid;grid-template-columns:minmax(160px,.8fr) minmax(0,1.2fr);align-items:start;gap:48px;margin-top:88px}.page .bio-copy p:first-child{padding-top:0}.page .contact-links{margin-top:44px}.page footer{margin-top:44px;padding-bottom:44px}.bio h2{margin:0;font-size:var(--text-title);font-weight:600;line-height:var(--leading-heading);letter-spacing:-.02em;text-wrap:balance}.bio-heading time{display:block;margin-top:16px;color:var(--stone);font-size:var(--text-caption);font-family:SFMono-Regular,Consolas,monospace;font-variant-numeric:tabular-nums;white-space:normal}.bio-copy p{padding-top:20px;overflow-wrap:break-word;text-wrap:pretty}a{color:var(--brand);text-decoration:none;text-decoration-skip-ink:auto;text-decoration-thickness:from-font;text-underline-position:from-font;text-underline-offset:3px;transition:color .16s var(--ease-out),opacity .1s ease-out}a:hover{text-decoration:underline;text-underline-offset:2px}a:focus-visible{outline:2px solid;outline-offset:2px;text-decoration:underline}a:active{opacity:.68}.back-link{display:inline-flex;min-height:44px;align-items:center;gap:6px;margin-inline-start:-10px;border-radius:999px;padding-block:0;padding-inline:8px 12px;color:var(--ink);font-size:var(--text-label);font-weight:550;transition:background-color .16s var(--ease-out),opacity .1s ease-out,transform .1s ease-out}.back-link:active{background:var(--surface-active);opacity:1;transform:scale(.96)}.back-link-icon{width:1.125rem;height:1.125rem;flex:0 0 auto;transition:translate .18s var(--ease-out)}.contact-links{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:28px;padding-top:12px}.contact-links a{display:inline-flex;min-height:44px;align-items:center;border-radius:999px;padding-inline:10px;font-size:var(--text-label);font-weight:500;transition:background-color .16s var(--ease-out),opacity .1s ease-out,transform .1s ease-out}.contact-links a:hover{background:var(--surface-hover);text-decoration:none}.contact-links a:active{background:var(--surface-active);opacity:1;transform:scale(.96)}.writing,.work{margin-top:88px}.writing-header,.work-header{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.writing-header h2,.work-header h2{margin:0}.writing-header h2,.work-header h2{padding:0;color:var(--ink);font-size:var(--text-title);font-weight:600;line-height:var(--leading-heading);letter-spacing:-.02em;text-wrap:balance}.writing-header>a{color:var(--stone);font-size:var(--text-caption);font-weight:500}.writing-list{display:grid;gap:12px;margin-top:20px}.writing-row{display:grid;grid-template-columns:minmax(0,1fr) auto;min-height:104px;align-items:center;gap:32px;margin-inline:-16px;border-radius:16px;padding:20px 16px;color:var(--ink);transition:background-color .18s var(--ease-out),transform .1s ease-out,opacity .1s ease-out}.writing-row:hover{background:var(--surface-hover);text-decoration:none}.writing-row:active{background:var(--surface-active);opacity:1;transform:scale(.96)}.writing-row h3,.writing-row p{line-height:1.4}.writing-row h3{color:var(--ink);font-size:var(--text-body-lg);font-weight:600;letter-spacing:-.018em;view-transition-name:article-title}.writing-row p{max-width:52ch;margin-top:6px;color:var(--olive);font-size:var(--text-label);text-wrap:pretty;view-transition-name:article-deck}.writing-row-meta{display:flex;align-items:center;gap:20px}.writing-row time{color:var(--stone);font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-caption);font-variant-numeric:tabular-nums;white-space:nowrap;view-transition-name:article-date}.writing-row-icon{width:1.125rem;height:1.125rem;flex:0 0 auto;color:var(--stone);transition:color .18s var(--ease-out),transform .18s var(--ease-out)}.writing-row:hover .writing-row-icon{color:var(--ink);transform:translate(2px,-2px)}.work ul{display:grid;gap:4px;margin-top:20px;padding:0;list-style:none}.work-row{display:grid;grid-template-columns:minmax(0,1fr) auto;min-height:68px;align-items:baseline;gap:32px;padding:14px 0;color:var(--ink)}.work-row h3,.work-row p,.work-row time{font-size:var(--text-label);font-weight:400;line-height:1.45}.work-row h3{color:var(--ink);font-weight:500}.work-row p{margin-top:2px;color:var(--olive);text-wrap:pretty}.work-row time{color:var(--stone);font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-caption);font-variant-numeric:tabular-nums;text-align:start;white-space:nowrap}footer{margin-top:88px;border-top:1px solid var(--border);padding:24px 0 32px}footer p{color:var(--stone);font-size:var(--text-caption)}.page>footer{position:relative;border-top:0}.page>footer:before{position:absolute;top:0;left:0;width:100%;height:1px;content:"";background:var(--border);transform-origin:left center;animation:footer-rule-enter 1ms linear both;animation-range:entry 0% entry 55%;animation-timeline:view(block)}@keyframes footer-rule-enter{0%{opacity:.25;transform:scaleX(.18)}to{opacity:1;transform:scaleX(1)}}.endless-footer{position:relative;z-index:0;width:100%;height:200svh;background:var(--canvas)}.endless-footer-canvas{position:fixed;z-index:0;top:0;left:50%;display:block;width:100%;max-width:1728px;height:100vh;height:100dvh;opacity:0;pointer-events:none;transform:translate(-50%)}.endless-footer-canvas[data-active]{opacity:1}.site-nav{display:flex;flex-wrap:wrap;gap:8px 24px;margin-bottom:72px}.site-nav a{display:inline-flex;min-height:44px;align-items:center;font-size:var(--text-label);font-weight:500}.blog-index,.blog-post{width:min(920px,calc(100% - 48px));margin:0 auto;padding:64px 44px 0}.blog-post{width:min(1440px,calc(100% - 48px));padding-top:0}.editorial-nav{--editorial-nav-gutter: max(68px, calc((100vw - 1440px)/2 + 44px) );position:sticky;z-index:20;top:0;display:flex;min-height:72px;align-items:center;justify-content:space-between;margin-inline:calc(50% - 50vw);padding-inline:var(--editorial-nav-gutter);background:var(--material-nav);box-shadow:0 18px 32px -32px var(--soft-shadow);backdrop-filter:blur(20px) saturate(140%);font-size:1rem;-webkit-backdrop-filter:blur(20px) saturate(140%)}.editorial-nav-back,.editorial-nav-end{display:flex;align-items:center}.editorial-nav a{display:inline-flex;min-height:44px;align-items:center}.editorial-nav-brand{color:var(--ink);font-size:var(--text-label);font-weight:650;letter-spacing:-.02em;-webkit-user-select:none;user-select:none}.blog-header{max-width:620px}.blog-header h1{margin:0;color:var(--ink);font-size:clamp(2.5rem,5vw,4.25rem);font-weight:650;line-height:1;letter-spacing:-.05em;text-wrap:balance}.blog-header p{max-width:48ch;margin:24px 0 0;color:var(--olive);font-size:var(--text-body-lg);line-height:var(--leading-body);text-wrap:pretty}.post-list{margin-top:72px}.post-list ol{margin:0;padding:0;border-top:1px solid var(--border);list-style:none}.post-list li{border-bottom:1px solid var(--border)}.post-list a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 32px;margin-inline:-16px;border-radius:14px;padding:24px 16px 28px;color:var(--ink);transition:background-color .18s var(--ease-out),opacity .1s ease-out,transform .1s ease-out}.post-list-heading{display:grid;grid-template-columns:minmax(0,1fr) 1.125rem;align-items:center;gap:12px}.post-list a:active{background:var(--surface-active);opacity:1;transform:scale(.96)}.post-list-title{font-size:var(--text-heading-sm);font-weight:600;line-height:1.3;letter-spacing:-.02em;text-wrap:balance;view-transition-name:article-title}.post-list-icon{width:1.125rem;height:1.125rem;flex:0 0 auto;color:var(--brand);transition:translate .16s var(--ease-out)}@media(hover:hover)and (pointer:fine){.back-link:hover{background:var(--surface-hover);text-decoration:none}.back-link:hover .back-link-icon{translate:-2px 0}.post-list a:hover{background:var(--surface-hover);text-decoration:none}.post-list a:hover .post-list-title{text-decoration:underline;text-decoration-thickness:from-font;text-underline-offset:3px}.post-list a:hover .post-list-icon{translate:3px 0}}:dir(rtl) .back-link-icon,:dir(rtl) .post-list-icon{scale:-1 1}@media(hover:hover)and (pointer:fine){:dir(rtl) .back-link:hover .back-link-icon{translate:2px 0}:dir(rtl) .post-list a:hover .post-list-icon{translate:-3px 0}}.post-list-meta{display:flex;gap:12px;color:var(--stone);font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-caption);white-space:nowrap}.post-list-meta time{view-transition-name:article-date}.post-list p{max-width:62ch;margin:0;color:var(--olive);line-height:1.55;grid-column:1}.article-header{display:grid;grid-template-columns:minmax(0,1fr) min(65ch,100%) minmax(0,1fr);padding:clamp(64px,7vw,112px) 0 clamp(64px,6vw,96px);border-bottom:1px solid var(--border)}.article-header-content{grid-column:2;width:100%}.article-header h1{max-width:14ch;margin:0;color:var(--ink);font-size:var(--text-article-display);font-weight:500;line-height:.98;letter-spacing:-.04em;text-wrap:balance;view-transition-name:article-title}.article-deck{max-width:44ch;margin:18px 0 0;color:var(--dark-warm);font-size:var(--text-body-lg);line-height:var(--leading-body);text-wrap:pretty;view-transition-name:article-deck}.article-byline{display:flex;flex-wrap:wrap;gap:8px 64px;margin:40px 0 0;color:var(--stone);font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-caption);font-variant-numeric:tabular-nums}.article-byline time{view-transition-name:article-date}::view-transition-old(root),::view-transition-new(root){animation-duration:.24s;animation-timing-function:var(--ease-out)}::view-transition-group(article-title){animation-duration:.24s;animation-timing-function:var(--ease-out)}::view-transition-group(article-deck),::view-transition-group(article-date){animation-duration:.22s;animation-timing-function:var(--ease-out)}@keyframes route-enter-forward{0%{opacity:0;transform:translateY(10px)}}@keyframes route-enter-backward{0%{opacity:0;transform:translateY(-10px)}}html[data-route-transition=forward] .blog-post{animation:route-enter-forward .24s var(--ease-out) both}html[data-route-transition=backward] .page,html[data-route-transition=backward] .blog-index{animation:route-enter-backward .24s var(--ease-out) both}.article-shell{max-width:65ch;margin:clamp(64px,8vw,112px) auto 0}.article-body{max-width:65ch;margin:0;color:var(--dark-warm);font-size:clamp(1.0625rem,1.1vw,1.125rem);line-height:var(--leading-body);overflow-wrap:break-word}.article-body>p{margin:0 0 1.4em}.article-body>.article-break{width:3.5rem;height:1px;margin:3.2em 0;border:0;background:var(--border)}.article-summary{margin:0 0 48px;border-block:1px solid var(--ink);padding:24px 0;color:var(--ink);font-size:var(--text-body);line-height:var(--leading-body)}.article-summary-label{margin:0 0 12px;color:var(--brand);font-size:var(--text-caption);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.article-summary-question{max-width:34ch;margin:0 0 18px;color:var(--ink);font-size:var(--text-heading-sm);font-weight:650;line-height:1.3;letter-spacing:-.025em;text-wrap:balance}.article-summary ol{margin:0;padding-inline-start:1.4em}.article-summary li+li{margin-block-start:8px}.article-body h2{scroll-margin-top:24px;margin:2.8em 0 .8em;color:var(--ink);font-family:var(--font-sans);font-size:var(--text-section);font-weight:650;line-height:var(--leading-heading);letter-spacing:-.035em;text-wrap:balance}.article-body>h3{margin:2.2em 0 .6em;color:var(--ink);font-size:var(--text-heading-sm);font-weight:650;line-height:1.25;letter-spacing:-.02em;text-wrap:balance}.article-decisions{display:grid;gap:12px;margin:0 0 1.5em;font-family:var(--font-sans)}.article-decisions section{border-radius:14px;padding:18px 20px;background:color-mix(in srgb,var(--border) 22%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 72%,transparent)}.article-decisions h3{margin:0 0 8px;color:var(--ink);font-size:var(--text-body-lg);line-height:var(--leading-heading)}.article-decisions p{margin:0;font-size:var(--text-body);line-height:var(--leading-body)}.article-body code{font-family:SFMono-Regular,Consolas,monospace;font-size:.84em}.article-body p code{padding:.1em .3em;border:1px solid var(--border);border-radius:4px;background:color-mix(in srgb,var(--border) 35%,transparent)}.article-body pre{max-width:100%;margin:2em 0;overflow-x:auto;border:0;border-radius:14px;padding:20px;color:var(--ink);background:color-mix(in srgb,var(--border) 25%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 72%,transparent),0 16px 36px -30px var(--soft-shadow);font-size:var(--text-code);line-height:var(--leading-body)}.article-body pre code{font-size:inherit}.article-body blockquote{margin:2.2em 0;border-block:1px solid var(--border);padding:1.5em 0;color:var(--ink);font-size:1.35em;line-height:1.35;letter-spacing:-.02em}.article-body blockquote p{margin:0}.soundcloud-embed{margin:2.4em 0}.soundcloud-embed iframe{display:block;border:0;border-radius:14px;background:color-mix(in srgb,var(--border) 25%,transparent)}.soundcloud-embed figcaption{margin-top:10px;color:var(--stone);font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-caption);line-height:1.5;overflow-wrap:anywhere}.soundcloud-embed figcaption a{color:inherit}.runtime-explorer{width:min(1040px,calc(100vw - 48px));margin:3em 50%;border-block:1px solid var(--border);padding:28px 0;color:var(--ink);transform:translate(-50%)}.runtime-explorer-header{margin-bottom:24px}.runtime-explorer-header p{margin:0 0 8px;color:var(--brand);font-size:var(--text-caption);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.runtime-explorer-header h2{margin:0;font-size:var(--text-section);line-height:var(--leading-heading);letter-spacing:-.035em;text-wrap:balance}.runtime-explorer-options{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0;border:0;padding:0}.runtime-explorer-options label{position:relative;cursor:pointer}.runtime-explorer-options input{position:absolute;width:1px;height:1px;opacity:0}.runtime-explorer-options span{display:flex;min-height:48px;align-items:center;justify-content:center;border-radius:8px;padding:8px 12px;color:var(--olive);background:color-mix(in srgb,var(--border) 30%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 54%,transparent);font-size:var(--text-label);font-weight:600;text-align:center}.runtime-explorer-options input:checked+span{color:var(--canvas);background:var(--ink);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 88%,transparent),0 8px 20px -16px var(--soft-shadow)}@media(hover:hover)and (pointer:fine){.runtime-explorer-options input:not(:checked)+span:hover{color:var(--ink);background:color-mix(in srgb,var(--border) 62%,transparent)}}.runtime-explorer-options label:active span{transform:scale(.96)}.runtime-explorer-options input:focus-visible+span{outline:2px solid;outline-offset:2px}.runtime-explorer-line{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;margin-top:24px}.runtime-explorer-line[data-single=true]{grid-template-columns:minmax(0,1fr)}.runtime-explorer-line>div{display:flex;min-height:84px;flex-direction:column;justify-content:center;border-radius:12px;padding:16px 20px;background:color-mix(in srgb,var(--border) 48%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 78%,transparent),0 12px 28px -24px var(--soft-shadow)}.runtime-explorer-line>.runtime-explorer-connector{min-height:auto;align-items:center;gap:2px;padding:0;background:transparent;box-shadow:none}.runtime-explorer-line span{color:var(--stone);font-size:var(--text-caption)}.runtime-explorer-line strong{margin-top:4px;font-size:clamp(1.25rem,3vw,1.75rem);font-weight:550;letter-spacing:-.04em}.runtime-explorer-connector b{color:var(--brand);font-size:1.5rem;font-weight:400}.runtime-explorer-result{display:grid;grid-template-columns:minmax(120px,.28fr) minmax(0,1fr);gap:24px;margin-top:24px;border-top:1px solid var(--border);padding-top:20px}.runtime-explorer-result strong{font-size:var(--text-body-lg)}.runtime-explorer-result span{color:var(--olive);font-size:var(--text-label);line-height:1.5}.article-table-wrap{width:min(920px,calc(100vw - 48px));margin:2em 50%;overflow-x:auto;transform:translate(-50%)}.article-table-wrap:focus-visible{outline:2px solid;outline-offset:4px}:dir(rtl) .runtime-explorer,:dir(rtl) .article-table-wrap{transform:translate(50%)}.article-table-hint{display:none}.article-body table{width:100%;min-width:680px;border-collapse:collapse;color:var(--dark-warm);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:var(--text-label);line-height:1.45}.article-body th,.article-body td{padding:14px 16px;border-bottom:1px solid var(--border);text-align:start;vertical-align:top}.article-body thead th{border-top:1px solid var(--border);color:var(--ink);font-weight:650}.article-body tbody th{width:22%;color:var(--ink);font-weight:600}.article-footer{display:flex;width:min(65ch,100%);align-items:baseline;justify-content:space-between;gap:24px;margin:88px auto 0}.article-footer p{margin:0}.article-footer-link{display:inline-flex;min-height:44px;align-items:center;margin-inline-start:-10px;border-radius:999px;padding-inline:10px;transition:background-color .16s var(--ease-out),opacity .1s ease-out,transform .1s ease-out}@media(hover:hover)and (pointer:fine){.article-footer-link:hover{background:var(--surface-hover);text-decoration:none}}.article-footer-link:active{background:var(--surface-active);opacity:1;transform:scale(.96)}@media(max-width:720px){.page .bio{grid-template-columns:1fr;gap:32px;margin-top:72px}.page .bio-copy p:first-child{padding-top:0}.runtime-explorer-options{grid-template-columns:1fr}.runtime-explorer-options span{min-height:44px;padding-inline:8px}.runtime-explorer-result{grid-template-columns:1fr;gap:8px}.article-table-hint{position:sticky;inset-inline-start:0;display:block;width:max-content;margin:0 0 8px;color:var(--brand);font-size:var(--text-caption);font-weight:650;letter-spacing:.01em}.post-list a{grid-template-columns:1fr;gap:8px}.post-list-meta,.post-list p{grid-column:1}}@media(min-width:481px)and (max-width:900px){main{width:calc(100% - 128px);padding-top:64px}}@media(max-width:480px){.ocean-banner{height:132px}main{width:calc(100% - 48px);padding-top:32px}.site-header{margin-bottom:36px}.hero-intro p{font-size:var(--text-title)}.bio{margin-top:64px}.page{width:calc(100% - 20px);padding:28px 24px 0}.blog-index,.blog-post{width:calc(100% - 20px);padding:32px 24px 0}.blog-post{padding-top:0}.editorial-nav{--editorial-nav-gutter: 34px;min-height:64px}.site-nav{margin-bottom:48px}.article-header{padding:64px 0 56px}.article-header h1{font-size:clamp(min(2.75rem,12vw),12vw,3.75rem);line-height:1}.article-shell{margin-top:48px}.article-summary{padding:20px 0}.article-footer{align-items:flex-start;flex-direction:column}.page .bio{display:block}.page .bio-copy p:first-child{padding-top:20px}.runtime-explorer-line{gap:8px}.runtime-explorer-line>div{padding-inline:14px}.runtime-explorer-line strong{font-size:1.125rem;letter-spacing:-.03em}.writing,.work{margin-top:64px}.writing-row,.work-row{align-items:flex-start;grid-template-columns:1fr;gap:12px}.writing-row{min-height:0;margin-inline:-8px;border-radius:12px;padding:16px 8px}.writing-row-meta{width:100%;justify-content:space-between;gap:16px}.work-row{gap:4px;padding-block:10px}footer{margin-top:64px}}@media(prefers-reduced-transparency:reduce){.editorial-nav{background:var(--canvas);box-shadow:0 1px 0 var(--border);backdrop-filter:none;-webkit-backdrop-filter:none}}@media(prefers-contrast:more){.editorial-nav{background:var(--canvas);box-shadow:0 1px 0 var(--ink)}.article-decisions section,.article-body pre,.runtime-explorer-options span,.runtime-explorer-line>div{box-shadow:inset 0 0 0 1px var(--ink)}}@media(prefers-reduced-motion:reduce){html[data-route-transition] .blog-post,html[data-route-transition] .page,html[data-route-transition] .blog-index{animation:none}.page>footer:before{opacity:1;transform:none;animation:none}.endless-footer{height:100vh;height:100dvh}.writing-row{transition:opacity .1s ease-out}.back-link,.contact-links a,.article-footer-link,.post-list a,.runtime-explorer-options span,.runtime-explorer-line>div{transition-duration:.1s;transition-property:color,background-color,box-shadow,opacity}.back-link:active,.contact-links a:active,.article-footer-link:active,.writing-row:active,.post-list a:active,.runtime-explorer-options label:active span,.runtime-explorer-line>div{transform:none}.back-link:hover .back-link-icon,.post-list a:hover .post-list-icon{translate:none}.runtime-explorer-result{animation:none}.writing-row h3,.writing-row p,.writing-row time,.article-header h1,.article-deck,.article-byline time,.post-list-title,.post-list-meta time{view-transition-name:none}::view-transition-old(root),::view-transition-new(root),::view-transition-group(article-title),::view-transition-group(article-deck),::view-transition-group(article-date){animation:none}.post-list-icon{transition:none}}.portfolio-page{width:min(1120px,calc(100% - 48px));padding-inline:44px}.portfolio-header{display:flex;align-items:center;justify-content:space-between;gap:32px}.portfolio-header .wordmark{margin:0;font-size:var(--text-body);line-height:1}.portfolio-header .wordmark a{min-height:44px;display:inline-flex;align-items:center;color:var(--ink)}.portfolio-header .wordmark a:hover{text-decoration:none}.portfolio-nav{display:flex;flex-wrap:wrap;gap:8px 24px}.portfolio-nav a{display:inline-flex;min-height:44px;align-items:center;color:var(--stone);font-size:var(--text-label);font-weight:500}.portfolio-nav a:hover{color:var(--ink)}.portfolio-hero{display:grid;gap:clamp(18px,2vw,24px);padding-block:clamp(32px,5vw,72px) clamp(88px,12vw,152px)}.portfolio-hero>p{max-width:38ch;margin:0;color:var(--ink);font-size:clamp(1.35rem,2.8vw,1.875rem);line-height:1.32;letter-spacing:-.025em;text-wrap:balance}.projects,.open-directory{scroll-margin-top:24px}.section-heading{display:grid;grid-template-columns:minmax(180px,.72fr) minmax(0,1.28fr);align-items:start;gap:48px}.section-heading h2,.section-heading p{margin:0}.section-heading h2{color:var(--ink);font-size:var(--text-title);font-weight:600;line-height:var(--leading-heading);letter-spacing:-.02em}.section-heading p{max-width:48ch;color:var(--olive);text-wrap:pretty}.project-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:20px;margin-top:44px}.project-card{--project-surface: color-mix(in oklch, var(--border) 54%, var(--canvas));--project-accent: var(--brand);min-width:0;overflow:hidden;border-radius:16px;background:var(--project-surface);grid-column:span 6}.project-card:first-child,.project-card:nth-child(4){grid-column:span 7}.project-card:nth-child(2),.project-card:nth-child(3){grid-column:span 5}.project-card[data-project=pai-bot]{--project-surface: oklch(.91 .045 93);--project-accent: oklch(.42 .11 76)}.project-card[data-project=garden]{--project-surface: oklch(.9 .045 139);--project-accent: oklch(.38 .1 143)}.project-card[data-project=skills]{--project-surface: oklch(.91 .043 318);--project-accent: oklch(.42 .12 315)}.project-card[data-project=ship-llm]{--project-surface: oklch(.91 .04 202);--project-accent: oklch(.4 .1 214)}.project-artwork{position:relative;min-height:clamp(210px,28vw,310px);overflow:hidden;background:color-mix(in oklch,var(--project-surface) 88%,white)}.project-artwork canvas,.project-artwork img{position:absolute;inset:0;width:100%;height:100%}.project-artwork canvas{z-index:1;display:block;opacity:0;image-rendering:pixelated;transition:opacity .18s var(--ease-out)}.project-artwork canvas[data-render-state=ready]{opacity:1}.project-artwork img{object-fit:cover;filter:grayscale(1) contrast(1.1)}.project-copy{padding:26px 28px 30px}.project-copy h3,.project-copy p{margin:0}.project-copy h3{color:#1c1b13;font-size:var(--text-heading-sm);font-weight:650;line-height:1.25;letter-spacing:-.025em;text-wrap:pretty}.project-copy h3 span{color:color-mix(in oklch,var(--project-accent) 72%,oklch(.22 .015 100));font-size:var(--text-caption);font-weight:580;letter-spacing:0}.project-copy>p{max-width:48ch;margin-top:12px;color:#434031;line-height:1.52;text-wrap:pretty}.project-copy>a{min-height:44px;display:inline-flex;align-items:center;gap:8px;margin-top:18px;color:var(--project-accent);font-size:var(--text-label);font-weight:650}.project-copy>a:hover{text-decoration:none}.project-copy>a .writing-row-icon{width:16px;height:16px;color:currentColor}.project-copy>a:hover .writing-row-icon{transform:translate(2px,-2px)}.open-directory{margin-top:clamp(88px,11vw,132px)}.directory-heading{align-items:baseline}.directory-heading>a{justify-self:end;color:var(--stone);font-size:var(--text-caption);font-weight:500}.directory-list{display:grid;grid-template-columns:minmax(130px,.55fr) minmax(0,1.45fr) 11ch 18px;column-gap:24px;margin:32px 0 0;padding:0;border-top:1px solid var(--border);list-style:none}.directory-list li{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;border-bottom:1px solid var(--border)}.directory-list a{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;min-height:76px;align-items:center;gap:24px;margin-inline:-12px;border-radius:12px;padding:14px 12px;color:var(--ink)}.directory-list a:hover{background:var(--surface-hover);text-decoration:none}.directory-name{font-weight:620;letter-spacing:-.015em}.directory-detail{color:var(--olive);font-size:var(--text-label);text-wrap:pretty}.directory-language{justify-self:end;color:var(--stone);font-family:SFMono-Regular,Consolas,monospace;font-size:var(--text-caption);white-space:nowrap}.directory-list .writing-row-icon{width:18px;height:18px;color:var(--stone)}.directory-list a:hover .writing-row-icon{color:var(--ink);transform:translate(2px,-2px)}.portfolio-page .writing,.portfolio-page .work{margin-top:clamp(88px,11vw,132px)}.portfolio-page .bio{scroll-margin-top:24px;margin-top:clamp(88px,11vw,132px)}@media(prefers-color-scheme:dark){.project-card[data-project]{--project-surface: color-mix(in oklch, var(--border) 72%, var(--canvas));--project-accent: var(--brand)}.project-artwork{background:color-mix(in oklch,var(--project-surface) 80%,black)}.project-copy h3,.project-copy>p{color:var(--ink)}.project-copy h3 span{color:color-mix(in oklch,var(--brand) 72%,var(--ink))}}@media(max-width:760px){.portfolio-header{align-items:flex-start;flex-direction:column;gap:8px}.portfolio-nav{gap:4px 20px}.portfolio-hero{padding-top:28px}.section-heading{grid-template-columns:1fr;gap:16px}.project-card,.project-card:first-child,.project-card:nth-child(2),.project-card:nth-child(3),.project-card:nth-child(4),.project-card:nth-child(5),.project-card:nth-child(6),.project-card:nth-child(7),.project-card:nth-child(8){grid-column:1 / -1}.project-artwork{min-height:220px}.directory-heading>a{justify-self:start}.directory-list a{grid-template-columns:minmax(0,1fr) auto 18px;gap:4px 16px}.directory-detail{grid-column:1 / -1;grid-row:2}.directory-language{grid-column:2;grid-row:1}.directory-list .writing-row-icon{grid-column:3;grid-row:1}}@media(max-width:480px){.portfolio-page{width:calc(100% - 20px);padding-inline:24px}.project-grid{gap:16px;margin-top:32px}.project-artwork{min-height:180px}.project-copy{padding:22px 22px 24px}.directory-list a{margin-inline:-8px;padding-inline:8px}.directory-language{display:none}.directory-list a{grid-template-columns:minmax(0,1fr) 18px}.directory-list .writing-row-icon{grid-column:2}}@media(prefers-reduced-motion:reduce){.project-artwork canvas,.project-copy>a .writing-row-icon,.directory-list .writing-row-icon{transition:none}.project-copy>a:hover .writing-row-icon,.directory-list a:hover .writing-row-icon{transform:none;translate:none}}
