@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-normal.BjhtXyW2.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-normal.BQn1nviT.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-normal.s-izfB6B.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-italic.DTr-ymY4.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-italic.CSPGnFdO.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-italic.kJKFiXvB.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.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}:root{--paper: #f6f1e7;--paper-2: #efe8da;--ink: #1e2427;--ink-2: #4f575b;--rule: #d9d0bf;--accent: #2c6a63;--accent-soft: #dbe7e2;--ochre: #a8681a;--focus: #b45309;--serif: "Newsreader Variable", "Iowan Old Style", Georgia, serif;--sans: "Inter Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--step--1: clamp(.875rem, .85rem + .1vw, .9375rem);--step-0: clamp(1.0625rem, 1.02rem + .2vw, 1.125rem);--step-1: clamp(1.25rem, 1.15rem + .4vw, 1.4rem);--step-2: clamp(1.5rem, 1.3rem + .9vw, 2rem);--step-3: clamp(2rem, 1.6rem + 1.8vw, 3rem);--step-4: clamp(2.4rem, 1.7rem + 3.2vw, 4.25rem);--s1: .5rem;--s2: 1rem;--s3: 1.5rem;--s4: 2rem;--s5: 3rem;--s6: 4rem;--s7: 6rem;--measure: 66ch;--wide: 72rem;--gutter: clamp(1rem, 4vw, 2.5rem);--radius: 4px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--paper: #171a1b;--paper-2: #202425;--ink: #ebe6dc;--ink-2: #b2aea6;--rule: #34393b;--accent: #8cc4ba;--accent-soft: #233532;--ochre: #e0a656;--focus: #f0b35c;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:var(--step-0);line-height:1.65;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;height:auto;display:block}h1,h2,h3{font-family:var(--serif);font-weight:450;line-height:1.15;letter-spacing:-.01em;margin:0 0 var(--s2);text-wrap:balance}h1{font-size:var(--step-4);font-weight:400;letter-spacing:-.02em}h2{font-size:var(--step-3)}h3{font-size:var(--step-1);font-weight:500}p{margin:0 0 var(--s2);text-wrap:pretty}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.18em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:2px}.skip-link{position:absolute;left:var(--s2);top:-100px;background:var(--ink);color:var(--paper);padding:var(--s1) var(--s2);z-index:10;border-radius:var(--radius)}.skip-link:focus{top:var(--s2)}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.wrap{width:100%;max-width:calc(var(--wide) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}.measure{max-width:var(--measure)}main{display:block}.section{padding-block:var(--s6);border-top:1px solid var(--rule)}.section:first-child{border-top:0}.section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s1) var(--s3);margin-bottom:var(--s4)}.section-head h2{margin:0}.eyebrow{font-family:var(--sans);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);margin:0 0 var(--s2);font-weight:500}.lede{font-size:var(--step-1);line-height:1.55;color:var(--ink)}.muted{color:var(--ink-2)}.site-header{border-bottom:1px solid var(--rule)}.site-header .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s1) var(--s3);padding-block:var(--s3)}.brand{font-family:var(--serif);font-size:1.375rem;color:var(--ink);text-decoration:none;letter-spacing:-.01em}.brand:hover{color:var(--accent)}.nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;padding:0}.nav a{color:var(--ink);text-decoration:none;font-size:.975rem;padding-block:.5rem;display:inline-block;border-bottom:1px solid transparent}.nav a:hover{border-bottom-color:var(--ink)}.nav a[aria-current=page]{border-bottom-color:var(--accent);color:var(--accent)}@media(max-width:30rem){.nav ul{gap:.25rem .75rem}.nav a{font-size:.9375rem}}.site-footer{border-top:1px solid var(--rule);margin-top:var(--s6);padding-block:var(--s5);font-size:var(--step--1);color:var(--ink-2)}.footer-grid{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}.site-footer h2{font-family:var(--sans);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);font-weight:500;margin-bottom:var(--s1)}.site-footer ul{list-style:none;padding:0;margin:0}.site-footer li{margin-bottom:.35rem}.site-footer a{color:var(--ink)}.footer-note{margin-top:var(--s4)}.actions{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s4)}.btn{display:inline-flex;align-items:center;gap:.5em;min-height:44px;padding:.65rem 1.25rem;border-radius:var(--radius);font:500 1rem/1.2 var(--sans);text-decoration:none;border:1px solid var(--ink);color:var(--ink);background:transparent;transition:background-color .15s ease,color .15s ease;cursor:pointer}.btn:hover,.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}@media(prefers-color-scheme:dark){.btn-primary:hover{color:#10201d}}.more{font-weight:500;text-decoration:none;white-space:nowrap}.more:hover{text-decoration:underline}.ext:after{content:"↗";display:inline-block;margin-left:.2em;font-size:.85em}.hero{padding-block:clamp(3.5rem,9vw,7.5rem) var(--s5);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1rem,2.5vw,2rem)}.hero>*{grid-column:1 / -1}.hero-greeting{display:flex;align-items:center;gap:.75rem;font-size:var(--step-0);font-weight:450;color:var(--ink-2);margin:0 0 clamp(1.25rem,3vw,2rem)}.hero-greeting:before{content:"";width:2rem;height:1px;background:var(--ochre);flex:none}.hero-title{font-size:clamp(2.5rem,1.35rem + 4.9vw,4.5rem);font-weight:380;line-height:1.03;letter-spacing:-.028em;max-width:15.5ch;margin:0;font-variation-settings:"opsz" 72}.hero-line{display:block;text-wrap:balance}@media(min-width:48rem){.hero-title{max-width:none}}.hero-title em{font-style:italic;font-weight:360;color:var(--accent);letter-spacing:-.02em}.hero-standfirst{margin-top:clamp(2rem,5vw,3.5rem);max-width:34rem}.hero-standfirst p{font-size:var(--step-1);line-height:1.55;margin:0;color:var(--ink)}.hero-standfirst .actions{margin-top:var(--s4)}@media(max-width:30rem){.hero-standfirst .actions{gap:.75rem}.hero-standfirst .btn{padding-inline:1rem}}@media(min-width:64rem){.hero-standfirst{grid-column:6 / span 7;max-width:none;padding-left:var(--s3);border-left:1px solid var(--rule)}}.hero-index{margin-top:clamp(3.5rem,8vw,6rem)}.hero-index ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;border-top:1px solid var(--ink)}.hero-index li{border-bottom:1px solid var(--rule)}.hero-index a{display:grid;grid-template-columns:2.5rem 1fr;grid-template-areas:"num label" "num text" "num cta";column-gap:var(--s2);padding:var(--s3) 0;color:var(--ink);text-decoration:none;height:100%}.hero-index-num{grid-area:num;padding-top:.55rem;font-size:.8125rem;font-variant-numeric:tabular-nums;letter-spacing:.06em;color:var(--ink-2)}.hero-index-label{grid-area:label;font-family:var(--serif);font-style:italic;font-size:var(--step-2);line-height:1.2;color:var(--ochre)}.hero-index-text{grid-area:text;color:var(--ink-2);font-size:var(--step--1);line-height:1.55;margin:.35rem 0 .75rem;max-width:30ch}.hero-index-cta{grid-area:cta;font-size:var(--step--1);font-weight:500;color:var(--accent)}.hero-index-cta span{display:inline-block;transition:transform .2s ease}.hero-index a:hover .hero-index-label,.hero-index a:focus-visible .hero-index-label{color:var(--accent)}.hero-index a:hover .hero-index-cta span{transform:translate(3px)}.hero-index a:hover .hero-index-cta{text-decoration:underline;text-underline-offset:.2em}@media(min-width:48rem){.hero-index ol{grid-template-columns:repeat(3,1fr)}.hero-index li{border-bottom:0}.hero-index li+li{border-left:1px solid var(--rule)}.hero-index li+li a{padding-left:var(--s3)}.hero-index a{padding-right:var(--s3);padding-bottom:0}}.essays{list-style:none;margin:0;padding:0;display:grid;gap:0}.essay{border-top:1px solid var(--rule);padding-block:var(--s3);position:relative}.essay:last-child{border-bottom:1px solid var(--rule)}.essay-meta{font-size:var(--step--1);color:var(--ink-2);margin-bottom:.35rem;display:flex;flex-wrap:wrap;gap:0 .75rem}.essay h3{font-size:var(--step-2);margin-bottom:.4rem;font-weight:450}.essay h3 a{color:var(--ink);text-decoration:none}.essay h3 a:after{content:"";position:absolute;inset:0}.essay:hover h3 a,.essay h3 a:focus-visible{color:var(--accent)}.essay p{margin:0;color:var(--ink-2);max-width:62ch}.essay .source{font-size:var(--step--1);color:var(--accent);margin-top:.5rem;font-weight:500}@media(min-width:60rem){.essays.grid-3{grid-template-columns:repeat(3,1fr);gap:var(--s4)}.essays.grid-3 .essay{border-bottom:0}.essays.grid-3 .essay h3{font-size:var(--step-1)}}.feature-essay{background:var(--paper-2);border-radius:var(--radius);padding:clamp(1.5rem,4vw,3rem);position:relative}.feature-essay h2{font-size:var(--step-3);max-width:22ch}.feature-essay h2 a{color:var(--ink);text-decoration:none}.feature-essay h2 a:after{content:"";position:absolute;inset:0}.feature-essay:hover h2 a{color:var(--accent)}.projects{list-style:none;margin:0;padding:0;display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr))}.project-card{position:relative;display:flex;flex-direction:column}.project-visual{aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;margin-bottom:var(--s2);background:var(--accent-soft);display:grid;place-items:center}.project-visual img{width:100%;height:100%;object-fit:cover}.project-visual .glyph{font-family:var(--serif);font-style:italic;font-size:clamp(3rem,8vw,4.5rem);color:var(--accent);letter-spacing:-.02em}.project-card h3{font-size:var(--step-2);margin-bottom:.3rem}.project-card h3 a{color:var(--ink);text-decoration:none}.project-card h3 a:after{content:"";position:absolute;inset:0}.project-card:hover h3 a{color:var(--accent)}.project-card p{color:var(--ink-2);margin-bottom:var(--s1)}.project-card .row{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap;margin-top:auto}.status{display:inline-flex;align-items:center;gap:.4em;font-size:.8125rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2)}.status:before{content:"";width:.5em;height:.5em;border-radius:50%;background:currentColor}.status-released{color:var(--accent)}.status-beta,.status-prototype{color:var(--ochre)}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem .75rem;padding:0;margin:0;font-size:var(--step--1);color:var(--ink-2)}.prose{max-width:var(--measure)}.prose h2{font-size:var(--step-2);margin-top:var(--s5)}.prose h3{margin-top:var(--s4)}.prose ul,.prose ol{padding-left:1.25em;margin:0 0 var(--s2)}.prose li{margin-bottom:.4rem}.prose li::marker{color:var(--ochre)}.portrait{width:7.5rem;height:7.5rem;border-radius:50%;object-fit:cover}.about-preview{display:grid;gap:var(--s4);align-items:start}@media(min-width:48rem){.about-preview{grid-template-columns:9rem 1fr}}.bio-box{border-left:3px solid var(--ochre);padding:var(--s2) var(--s3);background:var(--paper-2);border-radius:0 var(--radius) var(--radius) 0}.two-col{display:grid;gap:var(--s5)}@media(min-width:60rem){.two-col{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}.offer-list{list-style:none;margin:var(--s4) 0 0;padding:0;display:grid;gap:0 var(--s5);grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));border-top:1px solid var(--ink)}.offer-list li{display:grid;grid-template-columns:2.5rem 1fr;grid-template-rows:auto 1fr;align-content:start;column-gap:var(--s2);padding:var(--s3) 0;border-bottom:1px solid var(--rule)}.offer-num{grid-row:1 / span 2;padding-top:.45rem;font-size:.8125rem;letter-spacing:.06em;font-variant-numeric:tabular-nums;color:var(--ink-2)}.offer-list h3{font-size:var(--step-1);margin:0 0 .35rem}.offer-list p{margin:0;color:var(--ink-2);max-width:46ch}.split{display:grid;gap:var(--s3) var(--s5);align-items:start}@media(min-width:60rem){.split{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}.split h2{margin:0}}.audience-list{list-style:none;margin:0;padding:0}.audience-list li{font-family:var(--serif);font-size:var(--step-1);line-height:1.35;padding:var(--s2) 0 var(--s2) 1.5rem;border-bottom:1px solid var(--rule);position:relative}.audience-list li:first-child{padding-top:0}.audience-list li:before{content:"—";position:absolute;left:0;color:var(--ochre)}.steps{list-style:none;margin:var(--s4) 0 0;padding:0;display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}.steps li{border-top:1px solid var(--ink);padding-top:var(--s3)}.steps-num{font-family:var(--serif);font-style:italic;font-size:var(--step-3);line-height:1;color:var(--ochre);display:block;margin-bottom:var(--s2)}.steps h3{margin-bottom:.35rem}.steps p{color:var(--ink-2);margin:0}.dev-banner{background:#fff4d6;color:#5c3d00;border:1px dashed #c58a00;padding:.5rem .75rem;font-size:.875rem;border-radius:var(--radius);margin-bottom:var(--s3)}.page-head{padding-block:var(--s6) var(--s4)}.page-head h1{font-size:var(--step-4);max-width:20ch}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
