@font-face{font-family:Martian Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,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)format("woff2"),url(data:font/woff;base64,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)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/martian-mono-cyrillic-500-normal-DejhKr-t.woff2)format("woff2"),url(/assets/martian-mono-cyrillic-500-normal-CQ32KwDP.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/martian-mono-latin-ext-500-normal-CPN1Info.woff2)format("woff2"),url(/assets/martian-mono-latin-ext-500-normal-CYMi9jUC.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Martian Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/martian-mono-latin-500-normal-BWC8e-kx.woff2)format("woff2"),url(/assets/martian-mono-latin-500-normal-BsOs1ffX.woff)format("woff");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:Work Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/work-sans-vietnamese-400-normal-BxGuknnG.woff2)format("woff2"),url(/assets/work-sans-vietnamese-400-normal-DFZk_KN_.woff)format("woff");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:Work Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/work-sans-latin-ext-400-normal-zfQnhXzv.woff2)format("woff2"),url(/assets/work-sans-latin-ext-400-normal-j7TZlk-s.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Work Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/work-sans-latin-400-normal-jUejSri3.woff2)format("woff2"),url(/assets/work-sans-latin-400-normal-DE1_0GuN.woff)format("woff");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:Work Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/work-sans-vietnamese-500-normal-Czn2Xkog.woff2)format("woff2"),url(/assets/work-sans-vietnamese-500-normal-90nhZfxs.woff)format("woff");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:Work Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/work-sans-latin-ext-500-normal-CAKEIVkc.woff2)format("woff2"),url(/assets/work-sans-latin-ext-500-normal-CW9ss9Cz.woff)format("woff");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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Work Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/work-sans-latin-500-normal-BKGnScDy.woff2)format("woff2"),url(/assets/work-sans-latin-500-normal-BmdXWF6_.woff)format("woff");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}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--paper:#f3ecdf;--card:#fffdf8;--line:#e2d7c3;--ink:#1f1b16;--muted:#5f574b;--link:#17766f;--glaze:#17766f;--brick:#e3d2b0;--tile:#f1e8d6;--mono:"Martian Mono", ui-monospace, monospace;--sans:"Work Sans", system-ui, sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--paper:#1a1712;--card:#24201a;--line:#3a342b;--ink:#f3ecdf;--muted:#b5aa97;--link:#5fbdb2}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.6}a{color:var(--link);text-underline-offset:.2em}a:hover{color:var(--ink)}:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:4px}.wrap{width:100%;max-width:72rem;margin-inline:auto;padding-inline:1.25rem}@media (width>=48rem){.wrap{padding-inline:2rem}}.skip{background:var(--ink);color:var(--paper);z-index:10;border-radius:.5rem;padding:.75rem 1rem;position:absolute;top:-4rem;left:1rem}.skip:focus{top:1rem}h1,h2,h3{font-family:var(--mono);letter-spacing:-.03em;margin:0;font-weight:500;line-height:1.15}.wordmark{font-family:var(--mono);letter-spacing:-.02em;font-weight:500}.top-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1.5rem;padding-block:.75rem;display:flex}.brand{min-height:44px;color:var(--ink);align-items:center;gap:.625rem;text-decoration:none;display:inline-flex}.brand-mark{flex-shrink:0;width:2rem;height:2rem}.top ul{flex-wrap:wrap;gap:0 1.25rem;margin:0;padding:0;list-style:none;display:flex}.top nav a{min-height:44px;color:var(--ink);align-items:center;text-decoration:none;display:inline-flex}.top nav a:hover{color:var(--link);text-decoration:underline}.hero{align-items:center;gap:2rem;padding-block:2.5rem 4rem;display:grid}.hero-mark{order:-1;width:min(14rem,56vw);height:auto}h1{font-size:clamp(2rem,1.2rem + 4vw,4rem)}.lead{max-width:36rem;margin:1.5rem 0 0;font-size:clamp(1.125rem,1rem + .5vw,1.375rem)}@media (width>=56rem){.hero{grid-template-columns:minmax(0,1fr) 18rem;gap:4rem;padding-block:5rem 6rem}.hero-mark{order:0;justify-self:end;width:18rem}}.hero-mark .ground{fill:var(--tile)}.hero-mark .b{fill:var(--brick)}.hero-mark .g{fill:var(--glaze)}.hero-mark .b,.hero-mark .g{transform-box:fill-box;transform-origin:50%;animation:.42s cubic-bezier(.2,.7,.2,1) both lay;animation-delay:calc(var(--d) * 28ms)}.hero-mark .g{animation-delay:calc(.52s + var(--d) * 28ms)}@keyframes lay{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-mark .b,.hero-mark .g{animation:none}}.section{border-top:1px solid var(--line);padding-block:3.5rem}h2{margin-bottom:1.5rem;font-size:1.5rem}.prose p{max-width:42rem;margin:0 0 .875rem}.prose .big{margin-bottom:1.25rem;font-size:clamp(1.25rem,1rem + 1vw,1.75rem);line-height:1.4}.projects{grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.project{background:var(--card);border:1px solid var(--line);border-radius:1.25rem;align-items:flex-start;gap:1.25rem;padding:1.5rem;display:flex}.project-icon{border-radius:22%;flex-shrink:0;width:4rem;height:4rem}.project-body{min-width:0}.project-head{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}h3{font-size:1.25rem}.project-link{color:var(--ink);text-decoration:none}.project-link:hover{color:var(--link);text-decoration:underline}.status{background:var(--glaze);color:#fff;border-radius:999px;padding:.15rem .65rem;font-size:.8125rem;font-weight:500}.status-quiet{color:var(--muted);border:1px solid var(--line);background:0 0}.project p{margin:.75rem 0 0}@media (width<=30rem){.project{flex-direction:column;gap:1rem}.project-icon{width:3.5rem;height:3.5rem}}.project .note{color:var(--muted);font-size:.9375rem}.also{max-width:42rem;margin-top:2.5rem}.also h3{color:var(--muted);font-size:1rem}.also p{margin:.5rem 0 0}.foot{border-top:1px solid var(--line);padding-block:1.5rem 2.5rem}.foot-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 2rem;display:flex}.foot p{margin:0}.foot-brand{align-items:center;gap:.5rem;display:inline-flex}.foot-brand svg{width:1.5rem;height:1.5rem}.foot-line{color:var(--muted)}.foot a{align-items:center;min-height:44px;display:inline-flex}
