@font-face{font-family:Fraunces;src:url(/assets/fonts/fraunces-full.woff2) format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/plex-mono-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/plex-mono-500.woff2) format("woff2");font-weight:500;font-display:swap}:root{color-scheme:light dark;--bg: #f5eee2;--bg-2: #ebe1d0;--ink: #2a1830;--ink-2: #5e4a60;--accent: #e0582c;--accent-ink: #a8391a;--teal: #1f6b5c;--rule: color-mix(in srgb, var(--ink) 20%, transparent);--serif: "Fraunces", Georgia, serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--wrap: 76rem;--pad: clamp(1.25rem, 5vw, 3rem);--finger-w: clamp(1.75rem, 4vw, 3rem);--finger-h: clamp(.75rem, 1.6vw, 1.25rem)}@media(prefers-color-scheme:dark){:root{--bg: #1e1321;--bg-2: #2a1b2e;--ink: #f3eadc;--ink-2: #c4b3c0;--accent: #ff7a45;--accent-ink: #ff8a5c;--teal: #6fc4b0}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:4rem;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:400 clamp(1rem,.95rem + .25vw,1.125rem) / 1.6 var(--sans);text-rendering:optimizeLegibility}h1,h2,h3{margin:0;font-family:var(--serif);font-weight:560;font-variation-settings:"SOFT" 100,"WONK" 0;line-height:.95;letter-spacing:-.015em;text-wrap:balance}p{margin:0 0 1em;max-width:65ch;text-wrap:pretty}a{color:inherit;text-decoration:underline .1em var(--accent);text-underline-offset:.22em;transition:color .15s}a:hover{color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}img,video{display:block;max-width:100%;height:auto}.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}.mono{font:400 .8125rem / 1.5 var(--mono);letter-spacing:.01em}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.skip[data-astro-cid-5hce7sga]{position:absolute;left:-100vw}.skip[data-astro-cid-5hce7sga]:focus{left:1rem;top:1rem;z-index:2;background:var(--bg);padding:.5rem .75rem}.bar[data-astro-cid-5hce7sga]{position:sticky;top:0;z-index:1;background:var(--bg);border-bottom:1px solid var(--rule)}nav[data-astro-cid-5hce7sga]{display:flex;align-items:center;gap:1.5rem;height:3rem}nav[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]{text-decoration:none;color:var(--ink-2);white-space:nowrap}nav[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]:hover{color:var(--accent-ink)}.home[data-astro-cid-5hce7sga]{font-weight:500;color:var(--ink)}ul[data-astro-cid-5hce7sga]{display:flex;gap:1.25rem;margin:0 -1rem 0 auto;padding:0 1rem 0 0;list-style:none;overflow-x:auto;scrollbar-width:none}.foot[data-astro-cid-5hce7sga]{position:relative;background:var(--ink);color:var(--bg);padding-block:3.5rem}.foot[data-astro-cid-5hce7sga]:before{content:"";position:absolute;inset-inline:0;bottom:100%;height:var(--finger-h);background:linear-gradient(90deg,var(--ink) 50%,transparent 0) center / calc(2 * var(--finger-w)) 100%}.foot[data-astro-cid-5hce7sga] .wrap[data-astro-cid-5hce7sga]{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem}.foot[data-astro-cid-5hce7sga] p[data-astro-cid-5hce7sga]{margin:0}.foot[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]{margin-right:1.25rem}.foot[data-astro-cid-5hce7sga] a[data-astro-cid-5hce7sga]:hover{color:var(--accent)}.section[data-astro-cid-sh445jdo]{--tone: var(--bg);position:relative;background:var(--tone);padding-block:clamp(3.5rem,8vw,7rem)}.b[data-astro-cid-sh445jdo]{--tone: var(--bg-2)}.section[data-astro-cid-sh445jdo]:before{content:"";position:absolute;inset-inline:0;bottom:100%;height:var(--finger-h);background:linear-gradient(90deg,var(--tone) 50%,transparent 0) center / calc(2 * var(--finger-w)) 100%}.grid[data-astro-cid-sh445jdo]{display:grid;row-gap:2.5rem}.label[data-astro-cid-sh445jdo]{margin:0;color:var(--ink-2)}.label[data-astro-cid-sh445jdo] span[data-astro-cid-sh445jdo]{color:var(--accent-ink);font-weight:500}h2[data-astro-cid-sh445jdo]{font-size:clamp(2.5rem,7vw,5rem)}.intro[data-astro-cid-sh445jdo] p{margin:1.25rem 0 0;font-size:1.125em;color:var(--ink-2)}@media(min-width:60rem){.grid[data-astro-cid-sh445jdo]{grid-template-columns:11rem minmax(0,1fr);column-gap:3rem}.grid[data-astro-cid-sh445jdo]>*{grid-column:2}.grid[data-astro-cid-sh445jdo]>.label[data-astro-cid-sh445jdo]{grid-column:1;grid-row:1;padding-top:.75rem}}dl[data-astro-cid-5py5z6uj]{margin:0;border-top:1px solid var(--rule)}div[data-astro-cid-5py5z6uj]{display:flex;flex-wrap:wrap;justify-content:space-between;column-gap:1rem;padding-block:.4rem;border-bottom:1px solid var(--rule)}dt[data-astro-cid-5py5z6uj]{color:var(--ink-2)}dd[data-astro-cid-5py5z6uj]{margin:0;text-align:right;font-weight:500}.media[data-astro-cid-vh5pro65]{display:grid;gap:clamp(.75rem,2vw,1.5rem)}figure[data-astro-cid-vh5pro65]{margin:0}img[data-astro-cid-vh5pro65],video[data-astro-cid-vh5pro65]{width:100%;border:1px solid var(--rule);background:var(--bg)}figcaption[data-astro-cid-vh5pro65]{margin-top:.5rem;color:var(--ink-2)}@media(min-width:48rem){.n2[data-astro-cid-vh5pro65],.n3[data-astro-cid-vh5pro65]{grid-template-columns:1fr 1fr;align-items:start}.n3[data-astro-cid-vh5pro65] figure[data-astro-cid-vh5pro65]:first-child{grid-column:1 / -1}}.project[data-astro-cid-tkm2rszc]{display:grid;gap:1.25rem;align-content:start;padding-top:1.5rem;border-top:1px solid var(--rule)}.meta[data-astro-cid-tkm2rszc]{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem 1.25rem}.meta[data-astro-cid-tkm2rszc] p[data-astro-cid-tkm2rszc]{margin:0;color:var(--teal);font-weight:500}h3[data-astro-cid-tkm2rszc]{font-size:1.625rem;margin-bottom:.6rem}.prose[data-astro-cid-tkm2rszc] p:last-child{margin-bottom:1.25rem}.featured[data-astro-cid-tkm2rszc]{padding-top:2.5rem}.featured[data-astro-cid-tkm2rszc] h3[data-astro-cid-tkm2rszc]{font-size:clamp(2rem,4.5vw,3.25rem);margin-bottom:1rem}@media(min-width:60rem){.project[data-astro-cid-tkm2rszc].featured{grid-column:1 / -1;grid-template-columns:subgrid;gap:2.5rem 3rem}.featured[data-astro-cid-tkm2rszc] .meta[data-astro-cid-tkm2rszc]{flex-direction:column;gap:.5rem;padding-top:.6rem}.featured[data-astro-cid-tkm2rszc] .body[data-astro-cid-tkm2rszc]{display:grid;grid-template-columns:minmax(0,38rem) minmax(14rem,1fr);column-gap:3rem;align-items:start}.featured[data-astro-cid-tkm2rszc] h3[data-astro-cid-tkm2rszc]{grid-column:1 / -1}.featured[data-astro-cid-tkm2rszc] .body[data-astro-cid-tkm2rszc]>dl{margin-top:.4rem}.featured[data-astro-cid-tkm2rszc]>.media{grid-column:1 / -1}.featured[data-astro-cid-tkm2rszc]>.media.n1{grid-column:2;max-width:44rem}}ul[data-astro-cid-o5kcd7fd]{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}li[data-astro-cid-o5kcd7fd]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.15rem 1.5rem;padding-block:.75rem;border-bottom:1px solid var(--rule)}.repo[data-astro-cid-o5kcd7fd]{color:var(--ink-2);grid-column:1 / -1;overflow-wrap:anywhere}a[data-astro-cid-o5kcd7fd]{font-family:var(--sans);font-size:1rem}.state[data-astro-cid-o5kcd7fd]{align-self:center;padding:.05rem .5rem;border:1px solid currentColor}.merged[data-astro-cid-o5kcd7fd]{color:var(--teal)}.open[data-astro-cid-o5kcd7fd]{color:var(--accent-ink)}@media(min-width:48rem){li[data-astro-cid-o5kcd7fd]{grid-template-columns:16rem minmax(0,1fr) auto;align-items:baseline}.repo[data-astro-cid-o5kcd7fd]{grid-column:auto}}.hero[data-astro-cid-j7pv25f6]{padding-block:clamp(3rem,9vw,7rem) clamp(4rem,10vw,8rem)}.hero[data-astro-cid-j7pv25f6] .wrap[data-astro-cid-j7pv25f6]{display:grid;gap:2rem}h1[data-astro-cid-j7pv25f6]{font-size:clamp(3.4rem,13vw,10rem);line-height:.86;font-weight:600;letter-spacing:-.03em}h1[data-astro-cid-j7pv25f6]:after{content:".";color:var(--accent)}.big[data-astro-cid-j7pv25f6]{font-family:var(--serif);font-size:clamp(1.5rem,3.2vw,2.25rem);line-height:1.2;margin-bottom:.75em}.lede[data-astro-cid-j7pv25f6] p[data-astro-cid-j7pv25f6]:not(.big,.links){font-size:1.125em;color:var(--ink-2)}.links[data-astro-cid-j7pv25f6]{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin:1.75rem 0 0;font-size:.9375rem}.me[data-astro-cid-j7pv25f6]{width:9rem;filter:grayscale(1) contrast(1.05);border:1px solid var(--rule);mix-blend-mode:multiply}.now[data-astro-cid-j7pv25f6] p[data-astro-cid-j7pv25f6]{font-size:clamp(1.125rem,1rem + .6vw,1.375rem);line-height:1.55}.timeline[data-astro-cid-j7pv25f6]{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.timeline[data-astro-cid-j7pv25f6] li[data-astro-cid-j7pv25f6]{display:grid;gap:.25rem 2rem;padding-block:1.25rem;border-bottom:1px solid var(--rule)}.when[data-astro-cid-j7pv25f6]{margin:.2rem 0 0;color:var(--ink-2)}.timeline[data-astro-cid-j7pv25f6] h3[data-astro-cid-j7pv25f6]{font-size:1.375rem;line-height:1.2;margin-bottom:.4rem}.timeline[data-astro-cid-j7pv25f6] h3[data-astro-cid-j7pv25f6] span[data-astro-cid-j7pv25f6]{font-weight:400}.timeline[data-astro-cid-j7pv25f6] p[data-astro-cid-j7pv25f6]:last-child{margin:0}.extra[data-astro-cid-j7pv25f6]{display:grid;gap:2.5rem}.extra[data-astro-cid-j7pv25f6] h3[data-astro-cid-j7pv25f6]{font-weight:500;font-size:.8125rem;color:var(--accent-ink);margin-bottom:.75rem}.earlier[data-astro-cid-j7pv25f6]{list-style:none;margin:0;padding:0;font-size:.9375rem}.earlier[data-astro-cid-j7pv25f6] li[data-astro-cid-j7pv25f6]{padding-block:.5rem;border-bottom:1px solid var(--rule)}.earlier[data-astro-cid-j7pv25f6] span[data-astro-cid-j7pv25f6]{display:block;color:var(--ink-2)}.langs[data-astro-cid-j7pv25f6]{margin-top:1rem;font-size:.9375rem}.compact[data-astro-cid-j7pv25f6]{display:grid;gap:2.5rem 3rem}@media(min-width:48rem){.timeline[data-astro-cid-j7pv25f6] li[data-astro-cid-j7pv25f6]{grid-template-columns:11rem minmax(0,1fr)}.compact[data-astro-cid-j7pv25f6],.extra[data-astro-cid-j7pv25f6]{grid-template-columns:1fr 1fr}}@media(min-width:60rem){.hero[data-astro-cid-j7pv25f6] .wrap[data-astro-cid-j7pv25f6]{grid-template-columns:minmax(0,1fr) 15rem;column-gap:4rem}h1[data-astro-cid-j7pv25f6]{grid-column:1 / -1}.me[data-astro-cid-j7pv25f6]{width:100%;align-self:end}}@media(prefers-color-scheme:dark){.me[data-astro-cid-j7pv25f6]{mix-blend-mode:normal;opacity:.9}}
