@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/91bd2e40df15814e-s.19s5evoqhirey.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/a63431c4ac64ea8b-s.386o_ri1vb0yv.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8b4ed0a90d903ab5-s.44dak0sams9f0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/c47649aa31f9e140-s.p.3lxpqujs87tck.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk Fallback;src:local(Arial);ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.0%;size-adjust:100.94%}.hanken_grotesk_1137073e-module__Fj601a__className{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.hanken_grotesk_1137073e-module__Fj601a__variable{--font:"Hanken Grotesk", "Hanken Grotesk Fallback"}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:var(--lightningcss-light,#faf7f2)var(--lightningcss-dark,#191c1a);--text:var(--lightningcss-light,#211e1a)var(--lightningcss-dark,#e4e6df);--muted:var(--lightningcss-light,#6b645a)var(--lightningcss-dark,#8e968f);--line:var(--lightningcss-light,#e5dfd4)var(--lightningcss-dark,#2f3530);--accent:var(--lightningcss-light,#3f6b4f)var(--lightningcss-dark,#a9c7b0)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font), system-ui, sans-serif;-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65}main{max-width:36rem;margin:0 auto;padding:5rem 1.5rem 4rem}h1{letter-spacing:-.01em;margin:0;font-size:1.125rem;font-weight:600}.role{color:var(--muted);margin:0}section{margin-top:3rem}h2{color:var(--muted);margin:0 0 .75rem;font-size:1rem;font-weight:500}a{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .15s}a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.list{margin:0;padding:0;list-style:none}.item{padding:.4rem 0}.item p{color:var(--muted);margin:0}.row{justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem 0;display:flex}.meta{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.contact{flex-wrap:wrap;gap:1.25rem;margin:1rem 0 0;display:flex}.pages{flex-wrap:wrap;gap:1.25rem;margin-top:.5rem;display:flex}.steps{counter-reset:step}.steps li{counter-increment:step}.steps span:before{content:counter(step) ". ";color:var(--muted);font-variant-numeric:tabular-nums}.top{justify-content:space-between;align-items:center;gap:1rem;display:flex}.controls{align-items:center;gap:.5rem;margin-right:-.3rem;display:flex}.langs{display:flex}.langs a{letter-spacing:.04em;color:var(--muted);padding:.3rem;font-size:.8125rem;text-decoration:none;transition:color .15s}.langs a:hover{color:var(--text)}.langs a[aria-current=page]{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.theme{width:2rem;height:2rem;color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:999px;place-items:center;padding:0;transition:color .15s,border-color .15s;display:grid}.theme:hover{color:var(--text);border-color:var(--muted)}.theme .sun{display:none}.journey{gap:2.5rem;margin:0;padding:0;list-style:none;display:grid}.journey li{gap:.9rem;display:grid}.photo{aspect-ratio:4/3;background:var(--line);border-radius:6px;position:relative;overflow:hidden}.photo img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.photo .night{opacity:0;transition:opacity 1.2s}.stop h3{letter-spacing:-.01em;margin:0 0 .3rem;font-size:1.125rem;font-weight:600}.stop p{color:var(--muted);margin:0}.stop .meta{font-size:.875rem;display:block}@media (min-width:44rem){.journey{gap:3rem}.journey li{grid-template-columns:1.2fr 1fr;align-items:center;gap:2rem}.journey li:nth-child(2n){grid-template-columns:1fr 1.2fr}.journey li:nth-child(2n) .photo{order:1}}@media (min-width:60rem){.journey{gap:3.5rem;margin-inline:-10.5rem}.journey li,.journey li:nth-child(2n){gap:3rem}}:root[data-theme=dark] .night{opacity:1}:root[data-theme=dark] .theme .sun{display:block}:root[data-theme=dark] .theme .moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .night{opacity:1}:root:not([data-theme=light]) .theme .sun{display:block}:root:not([data-theme=light]) .theme .moon{display:none}}::view-transition-old(root){animation-duration:.35s}::view-transition-new(root){animation-duration:.35s}.toggle{border:1px solid var(--line);border-radius:999px;gap:.25rem;margin:1.75rem 0 1rem;padding:.2rem;display:inline-flex}.toggle button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.15rem .8rem;font-size:.875rem;transition:background .15s,color .15s}.toggle button[aria-pressed=true]{background:var(--line);color:var(--text)}.bio p{margin:0 0 1rem}.bio[data-shown=false]{display:none}.bio{animation:.25s fade}@keyframes fade{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.bio{animation:none}.photo .night,.arrow,.run{transition:none}}footer{color:var(--muted);flex-wrap:wrap;gap:1.25rem;margin-top:4rem;font-size:.875rem;display:flex}.project{border-radius:8px;margin:0 -.75rem;padding:.6rem .75rem;transition:background .15s;position:relative}.project:hover{background:color-mix(in srgb, var(--line) 60%, transparent)}.project .row{padding:0}.project a{font-weight:600;text-decoration:none}.project a:after{content:"";border-radius:inherit;position:absolute;inset:0}.project a:focus-visible{outline:none}.project:has(a:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.project p{color:var(--muted);margin:.1rem 0 0}.arrow{color:var(--muted);margin-left:.35em;transition:transform .15s,color .15s;display:inline-block}.project:hover .arrow{color:var(--accent);transform:translate(3px)}.back{gap:1.25rem;display:flex}.back,.back a{color:var(--muted)}.top+article{margin-top:2.5rem}article h1{margin-bottom:.25rem;font-size:1.5rem}article h1+p{color:var(--muted);margin-top:0}article li{margin-bottom:.4rem}article h2{color:var(--text);margin-top:2.5rem;font-weight:600}article img{border-radius:6px;max-width:100%;height:auto;display:block}article p:has(>img)+p>em:only-child{color:var(--muted);margin-top:-.5rem;font-size:.875rem;display:block}article blockquote{border-left:2px solid var(--accent);color:var(--muted);margin:1.5rem 0;padding-left:1rem}article table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9375rem}article th,article td{text-align:left;border-bottom:1px solid var(--line);padding:.4rem .75rem .4rem 0}article th{font-weight:600}.cover{background:var(--line);margin:1.5rem 0 .5rem}.demo{margin:2rem 0}.screen{aspect-ratio:3/4;border:1px solid var(--line);background:color-mix(in srgb, var(--line) 35%, var(--bg));background-image:radial-gradient(var(--line) 1px, transparent 1px);background-size:18px 18px;border-radius:8px;position:relative;overflow:hidden}@media (min-width:30rem){.screen{aspect-ratio:4/3}}@media (min-width:60rem){.demo{margin-inline:-8rem}}.screen:fullscreen{aspect-ratio:auto;border:0;border-radius:0}.screen iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.run{width:max-content;height:max-content;font:inherit;color:var(--bg);background:var(--text);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:.5rem;margin:auto;padding:.6rem 1.4rem;font-weight:600;transition:transform .15s,background .15s;display:inline-flex;position:absolute;inset:0}.run:hover{background:var(--accent);transform:scale(1.04)}.demo figcaption{color:var(--muted);justify-content:space-between;gap:1rem;margin-top:.5rem;font-size:.875rem;display:flex}.demo .actions{white-space:nowrap;gap:1rem;display:flex}.demo .actions button{font:inherit;color:var(--muted);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px;background:0 0;border:0;padding:0}.demo .actions button:hover{color:var(--text);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.pager{border-top:1px solid var(--line);justify-content:space-between;gap:1.5rem;margin-top:3.5rem;padding-top:1.5rem;display:flex}.pager a{flex-direction:column;font-weight:600;text-decoration:none;display:flex}.pager .meta{font-size:.875rem;font-weight:400}.pager .next{text-align:right}.top+div>.blog{margin-top:2.5rem}.blog h1{letter-spacing:-.02em;margin-bottom:.75rem;font-size:1.5rem}.blog p{margin:0 0 .75rem}.blog p+p{color:var(--muted)}.timeline{margin:3rem 0 0;padding:0 0 0 1.75rem;list-style:none;position:relative}.timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:.75rem;bottom:0;left:.3rem}.timeline>li{position:relative}.timeline>li:before{content:"";background:var(--bg);border:1.5px solid var(--muted);border-radius:50%;width:.65rem;height:.65rem;position:absolute;top:.5rem;left:-1.75rem}.timeline .year{margin:2.5rem 0 1rem}.timeline .year:first-child{margin-top:0}.timeline .year:before{background:var(--muted);top:.6rem}.timeline .year h2{color:var(--text);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:0;font-size:1.5rem;font-weight:600;line-height:1.2}.entry{border-radius:8px;gap:.75rem;margin:0 -.75rem .75rem;padding:.75rem;transition:background .15s;display:grid}.timeline>.entry:before{top:1.3rem;left:-1rem}.entry:hover{background:color-mix(in srgb, var(--line) 60%, transparent)}.entry img{aspect-ratio:16/9;background:var(--line);border-radius:6px;width:100%;height:auto}.entry .meta{font-size:.875rem}.entry h3{letter-spacing:-.01em;margin:.1rem 0 .2rem;font-size:1.0625rem;font-weight:600}.entry h3 a{text-decoration:none}.entry h3 a:after{content:"";border-radius:8px;position:absolute;inset:0}.entry h3 a:focus-visible{outline:none}.entry:has(a:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.entry p{color:var(--muted);margin:0}.tags{flex-wrap:wrap;gap:.35rem;margin:.6rem 0 0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.3rem .5rem;font-size:.75rem;line-height:1}.tags .runs{color:var(--accent);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.chatgpt{border-block:1px dashed var(--accent);margin:2.5rem -.75rem;padding:1rem .75rem}.timeline>.chatgpt:before{background:var(--accent);border-color:var(--accent);top:1.5rem;left:-1rem}.chatgpt .meta{color:var(--accent);font-size:.875rem;display:block}.chatgpt h2{color:var(--text);margin:.1rem 0 .25rem;font-size:1.0625rem;font-weight:600}.chatgpt p{color:var(--muted);margin:0}@media (min-width:44rem){.entry{grid-template-columns:12rem 1fr;align-items:start;gap:1.25rem}}@media (min-width:60rem){.timeline{margin-inline:-4rem}}.beliefs h2{margin:2rem 0 .25rem}.beliefs ul{margin:0}.beliefs hr{border:0;border-top:1px solid var(--line);margin:3.5rem 0 0}code{font-size:.9em}pre{border:1px solid var(--line);border-radius:6px;padding:1rem;font-size:.875rem;overflow-x:auto}
