@font-face{font-family:Recursive Variable;font-style:oblique 0deg 15deg;font-display:swap;font-weight:300 1000;src:url(data:font/woff2;base64,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) 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:Recursive Variable;font-style:oblique 0deg 15deg;font-display:swap;font-weight:300 1000;src:url(/_astro/recursive-vietnamese-slnt-normal.WO5-e74C.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:Recursive Variable;font-style:oblique 0deg 15deg;font-display:swap;font-weight:300 1000;src:url(/_astro/recursive-latin-ext-slnt-normal.7BtOOG8F.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:Recursive Variable;font-style:oblique 0deg 15deg;font-display:swap;font-weight:300 1000;src:url(/_astro/recursive-latin-slnt-normal.BO3BbHs3.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{--ink: #111;--muted: #777;--line: #e4e4e4;--bg: #fff;--max: 1200px;--measure: 52rem;--measure-wide: 72rem;--radius: 5px;--wt-normal: 450;--wt-medium: 560;--wt-bold: 700;--dur: .28s;--ease: ease}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);transition:background-color .6s ease;color:var(--ink);font-family:Recursive Variable,-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;font-variation-settings:"slnt" 0;font-weight:var(--wt-normal);line-height:1.55;font-size:1rem}body.tinted{background:color-mix(in oklab,var(--tint, var(--bg)) 18%,var(--bg))}a{color:inherit;text-decoration:none;border-bottom:1px solid var(--line);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}a:hover{border-bottom-color:var(--ink)}header nav{display:flex;justify-content:space-between;align-items:baseline;padding:1.5rem 1.25rem 1rem}.wordmark{font-weight:var(--wt-medium);letter-spacing:.01em;border-bottom:none}.nav-links a{margin-left:1.25rem;border-bottom:1px solid transparent;color:var(--muted);font-variation-settings:"slnt" 0;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease),font-variation-settings var(--dur) var(--ease)}.nav-links a:hover{color:var(--ink);border-bottom-color:var(--ink);font-variation-settings:"slnt" -9}.nav-links a[aria-current=page]{color:var(--ink);border-bottom:2px solid var(--ink)}main{max-width:var(--max);margin:0 auto;padding:0 1.25rem 4rem}main.wide{max-width:none}main.wide .project-grid{--u: clamp(150px, 21vw, 340px)}footer{max-width:var(--max);margin:0 auto;padding:2rem 1.25rem;color:var(--muted);font-size:.85rem}.project-grid{--u: clamp(150px, 24vw, 300px);display:flex;flex-wrap:wrap;gap:2.5rem 1.5rem;align-items:flex-end;list-style:none;margin:0;padding:0}.project-card{flex:var(--s, 1.22) 0 calc(var(--u) * var(--s, 1.22));max-width:calc(var(--u) * var(--s, 1.22) * 1.33)}.project-card a{border-bottom:none;display:block}.project-card figure{margin:0}.project-card img{width:100%;aspect-ratio:var(--ar, 1.5);object-fit:cover;display:block;background:var(--line);border-radius:var(--radius)}.project-card figcaption{margin-top:.6rem;min-height:4rem;text-align:center}.project-card h3{margin:0;font-size:1rem;font-weight:var(--wt-normal);line-height:1.3;transition:font-weight var(--dur) var(--ease);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-card a:hover h3{font-weight:var(--wt-bold)}.project-card .meta{color:var(--muted);font-size:.82rem;margin-top:.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity var(--dur) var(--ease)}.project-card a:hover .meta{opacity:1}.project h1{font-size:clamp(1.7rem,4vw,2.5rem);line-height:1.12;letter-spacing:-.015em;font-weight:var(--wt-bold);margin:1.5rem 0 .35rem;max-width:var(--measure)}.project .meta{color:var(--muted);font-size:.85rem;margin-bottom:3rem}.project .meta a{border-bottom:none;font-variation-settings:"slnt" 0;transition:color var(--dur) var(--ease),font-variation-settings var(--dur) var(--ease)}.project .meta a:hover{color:var(--ink);font-variation-settings:"slnt" -9}.project .brief{font-size:1.2rem;line-height:1.5;max-width:var(--measure)}.project .extended{max-width:var(--measure);color:#333;margin-top:3rem}.project .extended h2{font-size:1.05rem;font-weight:var(--wt-medium);letter-spacing:-.005em;margin:3rem 0 .6rem}.project .gallery{display:grid;gap:1.5rem;margin:4rem 0;max-width:var(--measure-wide)}.project .gallery img{width:100%;height:auto;display:block;background:var(--line);border-radius:var(--radius)}.project video{width:100%;max-width:var(--measure-wide);display:block;margin:4rem 0;background:#000;border-radius:var(--radius)}.back-link{color:var(--muted);font-size:.85rem;border-bottom:none}.bio h1{font-size:1.6rem;margin-bottom:.2rem}.bio .intro{color:var(--muted);margin:0 0 1.5rem}.bio .short-bio{max-width:46rem;margin-bottom:3rem}.bio .short-bio p{margin:0 0 1rem}.bio section{margin-bottom:2.5rem;max-width:52rem}.bio h2{font-size:1rem;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);padding-bottom:.4rem}.bio-entry{margin-bottom:1rem}.bio-entry .title{font-weight:var(--wt-medium)}.bio-entry .detail,.bio-entry .dates{color:var(--muted);font-size:.9rem}.bio-entry .detail p{margin:.1rem 0}.contact form{max-width:32rem;display:grid;gap:1rem}.contact label{display:grid;gap:.3rem;font-size:.9rem;color:var(--muted)}.contact input,.contact select,.contact textarea{font:inherit;padding:.55rem .6rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--ink);transition:border-color var(--dur) var(--ease)}.contact input:focus,.contact select:focus,.contact textarea:focus{outline:none;border-color:var(--ink)}.contact button{font:inherit;font-weight:var(--wt-medium);padding:.6rem 1.4rem;border:1px solid var(--ink);border-radius:var(--radius);background:var(--ink);color:var(--bg);cursor:pointer;justify-self:start;font-variation-settings:"slnt" 0;transition:font-variation-settings var(--dur) var(--ease),opacity var(--dur) var(--ease)}.contact button:hover{font-variation-settings:"slnt" -9;opacity:.9}.about-contact{margin-top:2.5rem;font-size:1.05rem}.about-contact a{border-bottom:none;font-variation-settings:"slnt" 0;transition:font-variation-settings var(--dur) var(--ease)}.about-contact a:hover{font-variation-settings:"slnt" -9}
