@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-vietnamese-wght-normal.XAtsl5Q_.woff2)format("woff2-variations");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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-latin-ext-wght-normal.C4zznr8T.woff2)format("woff2-variations");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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-latin-wght-normal.E0tuGl4L.woff2)format("woff2-variations");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{--paper:#f4f2eb;--ink:#232820;--muted:#62675c;--blue:#244fd8;--line:#d3d5c9;--sc-canvas:var(--paper);--sc-surface:#eaece2;--sc-ink:var(--ink);--sc-ink-soft:var(--muted);--sc-accent:var(--blue);--sc-accent-ink:#fff;--sc-font-display:"Archivo Variable",sans-serif;--sc-font-text:"Archivo Variable",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none;font-family:Archivo Variable,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0}a{color:inherit;text-underline-offset:5px}a:hover{color:var(--blue)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit}a:focus-visible,button:focus-visible{outline:3px solid var(--blue);outline-offset:5px}.wrap,.masthead{max-width:1440px;margin:auto;padding-inline:6vw}.masthead{justify-content:space-between;align-items:center;padding-block:30px;display:flex}.wordmark{letter-spacing:-3px;font-size:36px;font-weight:850;text-decoration:none}.wordmark span{color:var(--blue);margin-left:3px;font-size:24px}.edition{margin-left:auto;margin-right:8vw;font-size:12px;line-height:1.5}.contact-top{font-size:14px;text-decoration:none}.contact-top span{margin-left:18px}.hero{padding-top:75px}.eyebrow,.tiny,.chapter-label,.hero-rule,.caption,.project-footer,.status,.stamp{font-size:12px;line-height:1.6}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-weight:600}.hero h1{letter-spacing:-.075em;margin:35px 0 45px;font-size:clamp(80px,12.6vw,180px);font-weight:750;line-height:.88}.interact{position:relative}.asterisk{color:var(--blue);font-size:.55em;position:absolute;top:-.04em;right:-.92em;transform:rotate(-14deg)}.period{color:var(--blue)}.hero-bottom{justify-content:space-between;align-items:end;gap:30px;margin-bottom:55px;display:flex}.hero-bottom p{margin:0;font-size:18px;line-height:1.6}.text-link{font-size:15px;font-weight:600;display:inline-block}.hero-rule{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;padding:20px 0 32px;display:flex}.story-layout{grid-template-columns:190px minmax(0,1fr);gap:7vw;max-width:1440px;margin:auto;padding:45px 6vw 0;display:grid}.folio{align-self:start;padding-top:12px;position:sticky;top:35px}.tiny{text-transform:uppercase;letter-spacing:1.4px;color:var(--muted)}.folio nav{gap:18px;margin:30px 0;display:grid}.folio nav a{color:var(--muted);gap:12px;font-size:12px;text-decoration:none;display:flex}.folio nav a[aria-current]{color:var(--blue);font-weight:700}.folio nav a span{font-size:10px}.grid-paper{background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);border:1px solid var(--line);background-size:18px 18px;margin:40px 0 18px;padding:15px 8px}.grid-paper svg{width:100%;color:var(--blue)}.grid-paper p{background:var(--paper);margin:0;padding:8px;font-size:11px;line-height:1.5}.folio>.tiny{font-size:9px}.grid-route{stroke-dasharray:350;stroke-dashoffset:350px;transition:stroke-dashoffset 1s}.grid-dots circle{transition:transform .8s,r .8s}.grid-lines{opacity:1;transition:opacity .8s}.folio[data-state=tools] .grid-lines,.folio[data-state=create] .grid-lines{opacity:.2}.folio[data-state=tools] .grid-route,.folio[data-state=create] .grid-route{stroke-dashoffset:0}.folio[data-state=win] .grid-dots circle{r:10}.folio[data-state=about] .grid-route{stroke-dashoffset:0}.chapter{border-top:1px solid var(--line);padding:35px 0 85px;scroll-margin-top:10px}.chapter-label{text-transform:uppercase;letter-spacing:1px;color:var(--muted);justify-content:space-between;gap:12px;margin-bottom:40px;display:flex}.chapter h2{letter-spacing:-.045em;text-wrap:balance;margin:0 0 28px;font-size:clamp(35px,4.2vw,61px);font-weight:650;line-height:1.04}.chapter>p,.project>p{max-width:62ch;color:var(--muted);text-wrap:pretty;font-size:16px;line-height:1.75}.chapter>p.lead{color:var(--ink);font-size:21px;line-height:1.5}h3{letter-spacing:-.035em}.experiment{background:#e9ecdf;grid-template-columns:1fr 1fr;align-items:center;gap:30px;margin-top:38px;padding:30px;display:grid}.experiment h3{margin:14px 0;font-size:24px}.experiment p{color:var(--muted);font-size:13px;line-height:1.7}#clear-grid{border:0;border-bottom:1px solid var(--ink);cursor:pointer;background:0 0;padding:8px 0;font-size:12px}#paint-grid{aspect-ratio:1;touch-action:pan-y;grid-template-columns:repeat(8,1fr);gap:3px;display:grid}#paint-grid button{background:var(--paper);cursor:crosshair;border:1px solid #c4c8b7;min-width:0;padding:0}#paint-grid button[aria-pressed=true]{background:var(--blue);border-color:var(--blue)}.caption{color:var(--muted);font-size:11px!important;line-height:1.6!important}.small-links{flex-wrap:wrap;gap:18px;margin-top:24px;font-size:12px;display:flex}.project{border-bottom:1px solid var(--line);margin-top:45px;padding-bottom:28px}.project-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.project h3{margin:0;font-size:28px}.status,.stamp{border:1px solid var(--line);white-space:nowrap;padding:4px 10px;font-size:10px}.stamp{color:var(--blue);border-color:var(--blue);transform:rotate(-3deg)}.artwork{margin:26px 0 18px;overflow:hidden}.artwork img{width:100%;height:auto;display:block}.artwork figcaption{color:var(--muted);margin-top:8px;font-size:10px}.project-footer{color:var(--muted);justify-content:space-between;gap:20px;font-size:11px;display:flex}.project-footer a{color:var(--ink)}.flow-diagram{background:#e9ecdf;justify-content:space-between;align-items:center;gap:12px;margin-top:22px;padding:40px 20px;display:flex}.flow-diagram span{background:var(--paper);border:1px solid var(--line);padding:18px 15px;font-size:13px}.flow-diagram b{color:var(--blue)}.award{background:#e7ecf8;border:0;margin-bottom:45px;padding:32px}.award .chapter-label{font-size:10px}.award-number{letter-spacing:-12px;color:var(--blue);margin-bottom:25px;font-size:150px;font-weight:750;line-height:1.1;display:inline-block;position:relative}.award-number>span{letter-spacing:-3px;vertical-align:top;padding-top:18px;font-size:55px;display:inline-block}.award-number svg{width:110px;position:absolute;top:25px;right:-140px;transform:rotate(10deg)}.mechanics{flex-wrap:wrap;gap:10px;margin:30px 0;display:flex}.mechanics span{border:1px solid #b9c4df;padding:9px;font-size:11px}.extension-map{text-align:center;background:#e9ecdf;margin-top:24px;padding:30px}.extension-core{gap:8px;display:grid}.extension-core strong{font-size:22px}.extension-core span{color:var(--muted);font-size:12px}.connector{color:var(--blue);padding:10px;font-size:24px}.extension-bridge{border:1px solid var(--blue);max-width:300px;margin:auto;padding:12px;font-size:13px}.extension-sources{justify-content:center;gap:12px;display:flex}.extension-sources span{border:1px solid var(--line);background:var(--paper);padding:12px;font-size:12px}.resolution{padding:65px 0 30px}.resolution p{letter-spacing:-.04em;font-size:clamp(30px,4vw,54px);line-height:1.25}.resolution strong{color:var(--blue);font-weight:650}.resolution a{font-size:13px}.experience{margin-top:40px}.experience>div{border-top:1px solid var(--line);grid-template-columns:150px 1fr;gap:5px 20px;padding:22px 0;display:grid}.experience time{color:var(--muted);grid-row:span 2;padding-top:5px;font-size:11px}.experience h3{margin:0;font-size:19px}.experience p{color:var(--muted);margin:0;font-size:12px;line-height:1.6}.closing{padding-top:90px}.closing h2{margin-top:22px}.email{letter-spacing:-.02em;font-size:clamp(16px,2.2vw,28px)}.blue{color:var(--blue)}.footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;padding-block:25px;font-size:11px;display:flex}.skip{background:var(--paper);z-index:10;padding:15px;position:absolute;top:-100px;left:20px}.skip:focus{top:20px}.index-header{padding-top:60px;padding-bottom:50px}.index-header h1{letter-spacing:-.055em;font-size:clamp(45px,7vw,90px)}.project-index{padding-bottom:90px}.index-row{border-top:1px solid var(--line);grid-template-columns:1fr 2fr auto;align-items:start;gap:25px;padding:22px 0;display:grid}.index-row h3{letter-spacing:-.03em;margin:0;font-size:20px}.index-row p{color:var(--muted);margin:0;font-size:14px;line-height:1.6}.index-row a{font-size:12px}@media (width<=900px){.story-layout{grid-template-columns:140px minmax(0,1fr);gap:5vw}.folio nav a{font-size:11px}.experiment{gap:20px;padding:20px}.project-heading{flex-direction:column;align-items:start;gap:10px}.hero h1{font-size:13vw}.experience>div{grid-template-columns:110px 1fr}.flow-diagram{gap:6px;padding:25px 12px}.flow-diagram span{padding:12px 8px;font-size:11px}}@media (width<=640px){.masthead{padding-block:22px}.edition{display:none}.hero{padding-top:50px}.hero h1{letter-spacing:-.07em;margin-top:30px;font-size:17vw}.asterisk{font-size:.4em;top:-.05em;right:-.8em}.hero-bottom{margin-bottom:35px;display:block}.hero-bottom p{font-size:15px}.hero-bottom .text-link{margin-top:26px}.hero-rule{align-items:start;gap:15px;font-size:10px}.hero-rule span{max-width:180px}.hero-rule a{white-space:nowrap}.story-layout{padding-top:0;display:block}.folio{padding:15px 0 25px;position:static}.folio>p,.folio>.tiny,.grid-paper{display:none}.folio nav{gap:20px;margin:0;padding:8px 0 12px;display:flex;overflow-x:auto}.folio nav a{white-space:nowrap;gap:5px}.chapter{padding-top:25px;padding-bottom:55px}.chapter-label{letter-spacing:.6px;margin-bottom:30px;font-size:9px}.chapter h2{font-size:37px}.chapter>p,.project>p{font-size:15px}.chapter>p.lead{font-size:19px}.experiment{grid-template-columns:1fr 1fr;gap:20px;padding:18px}.experiment h3{font-size:21px}.experiment p{font-size:11px}.experiment .tiny{font-size:9px}.small-links{gap:13px;font-size:11px}.project h3{font-size:25px}.project-footer{flex-direction:column;gap:12px}.award{margin-inline:-2px;padding:25px 20px}.award-number{font-size:120px}.award-number svg{width:90px;right:-110px}.mechanics{gap:7px}.mechanics span{font-size:10px}.experience>div{grid-template-columns:1fr;gap:7px}.experience time{grid-row:auto}.extension-map{padding:25px 12px}.extension-sources{gap:6px}.extension-sources span{padding:10px;font-size:10px}.closing{padding-top:55px}.footer{gap:25px;font-size:10px}.index-row{grid-template-columns:1fr;gap:10px}.index-header{padding-top:25px}}.grid-lines{fill:none}.work-map{color:var(--blue);align-items:center;gap:14px;margin:30px 0;display:flex}.work-map span{border:1px solid;padding:14px;font-size:12px}.work-map i{font-style:normal}.chapter .reveal-ready{opacity:.15;transition:opacity .65s,transform .65s;transform:translateY(12px)}.chapter .reveal-ready.is-visible{opacity:1;transform:none}@media (width<=640px){.work-map{gap:8px}.work-map span{padding:10px;font-size:11px}}.header-nav{align-items:center;gap:24px;display:flex}.header-nav>a{padding-block:12px;font-size:14px;text-decoration:none}.header-nav>a:hover{text-decoration:underline}@media (width<=640px){.header-nav{gap:18px}.header-nav>a{font-size:13px}.header-nav .contact-top span{margin-left:6px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.chapter .reveal-ready{opacity:1;transform:none}}.project-summary{color:var(--ink);font-weight:650}.project>p.build-method,.index-row p.build-method{color:var(--ink);border-left:2px solid var(--blue);margin:16px 0;padding-left:12px;font-size:12px;line-height:1.6}.build-method span{color:var(--muted);font-size:11px;display:block}.build-method strong{font-weight:650}.experience p strong{color:var(--ink);font-size:14px;font-weight:650}.header-nav .resume-top{color:var(--blue);font-weight:650}@media (width<=640px){.header-nav{gap:12px}.header-nav>a{font-size:12px}.header-nav .contact-top span{display:none}}.star-count{border:1px solid var(--blue);color:var(--blue);background:#e7ecf8;flex-shrink:0;align-items:center;gap:10px;padding:12px 16px;display:inline-flex}.star-count>span:first-child{font-size:22px}.star-count strong{letter-spacing:-.04em;font-size:36px;font-weight:750;line-height:1}.star-count>span:last-child{font-size:12px;font-weight:650}.star-count small{color:var(--muted);margin-top:4px;font-size:10px;font-weight:400;display:block}.index-links{flex-wrap:wrap;justify-content:flex-end;gap:10px 18px;display:flex}@media (width<=640px){.index-links{justify-content:flex-start}}@media (width>=951px){.index-row{grid-template-columns:minmax(0,1fr) minmax(0,2fr) 220px}}@media (width>=641px) and (width<=950px){.index-row{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}.index-links{grid-column:2;justify-content:flex-start}}.index-group{margin-bottom:48px}.index-group>h2{letter-spacing:-.035em;margin:0 0 12px;font-size:28px}.index-group>p{color:var(--muted);max-width:70ch;margin:0 0 24px;font-size:14px;line-height:1.6}.index-row p.caption{margin-top:10px}
