@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-vietnamese-wdth-normal.rJmnGBSt.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;font-stretch:62% 125%;src:url(/_astro/archivo-latin-ext-wdth-normal.7khWdh9v.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;font-stretch:62% 125%;src:url(/_astro/archivo-latin-wdth-normal.DY7AcnAa.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{--ground:oklch(17.5% .012 55);--raise:oklch(22.5% .014 55);--raise2:oklch(27% .015 55);--ink:oklch(95% .012 80);--muted:oklch(76% .015 70);--line:oklch(33% .014 60);--signal:oklch(74% .18 45);--signal-ink:oklch(20% .04 45);--glow:oklch(74% .18 45/.45);--ease:cubic-bezier(.16, 1, .3, 1);--pad:clamp(16px, 3.6vw, 56px);color-scheme:dark}@view-transition{navigation:auto}*{box-sizing:border-box;margin:0}html{background:var(--ground);color:var(--ink);-webkit-font-smoothing:antialiased;scroll-behavior:smooth;scroll-padding-top:72px;font-family:Archivo Variable,system-ui,sans-serif}body{line-height:1.5;overflow-x:hidden}a{color:inherit}img,video{max-width:100%;height:auto;display:block}:focus-visible{outline:2px solid var(--signal);outline-offset:3px}::selection{background:var(--signal);color:var(--signal-ink)}#field{z-index:-1;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.skip{z-index:40;background:var(--ink);color:var(--ground);border-radius:4px;padding:8px 14px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.top{z-index:20;height:56px;padding:0 var(--pad);border-bottom:1px solid var(--line);view-transition-name:topbar;background:oklch(17.5% .012 55/.94);justify-content:space-between;align-items:center;gap:20px;display:flex;position:sticky;top:0}.top b{font-size:15px;font-weight:600;font-stretch:112%}.top b a{text-decoration:none}.top nav{align-items:center;gap:clamp(12px,2vw,26px);font-size:15px;display:flex}.top nav a{color:var(--muted);text-decoration:none;transition:color .2s}.top nav a:hover{color:var(--ink)}.btn{border:1px solid var(--line);height:44px;transition:transform .2s var(--ease), box-shadow .25s, border-color .2s;background:oklch(17.5% .012 55/.6);border-radius:4px;align-items:center;padding:0 20px;font-size:15.5px;font-weight:550;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--muted);transform:translateY(-2px)}.btn:active{transform:translateY(0)}.btn.main{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.btn.main:hover{box-shadow:0 8px 30px -8px var(--glow)}.hero{padding:clamp(14px, 2.4vh, 26px) var(--pad) 18px}.who{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;gap:clamp(20px,4vw,64px);display:grid}.id{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(16px,2vw,28px);display:grid}.id img{aspect-ratio:1;object-fit:cover;clip-path:circle(47.6%);width:clamp(104px,10.5vw,150px)}h1{letter-spacing:-.03em;font-size:clamp(2.6rem,5.4vw,5.2rem);font-weight:570;font-stretch:118%;line-height:1}.role{color:var(--muted);margin-top:8px;font-size:clamp(1.05rem,1.45vw,1.3rem)}.acts{flex-wrap:wrap;gap:10px;margin-top:clamp(10px,1.8vh,16px);display:flex}.spec{grid-template-columns:auto minmax(0,1fr);gap:5px 18px;font-size:15px;line-height:1.35;display:grid}.spec dt{color:var(--muted)}.spec dd{margin:0}.map{--g:64px;--ax:26px;--rh:clamp(29px, 4.1vh, 36px);margin-top:clamp(14px,2.4vh,24px);padding-bottom:6px;position:relative}.plot{height:calc(var(--ax) + var(--rh) * 5 + 8px);isolation:isolate;position:relative}.plot:before,.plot:after{content:"";inset:0 0 0 var(--g);z-index:-1;background-image:radial-gradient(oklch(50% .02 60) 1px,#0000 1.4px);background-size:14px 14px;position:absolute}.plot:before{opacity:.16}.plot:after{opacity:.8;background-image:radial-gradient(var(--signal) 1px, transparent 1.5px);-webkit-mask-image:radial-gradient(170px at var(--mx,-300px) var(--my,-300px), #000, transparent);mask-image:radial-gradient(170px at var(--mx,-300px) var(--my,-300px), #000, transparent)}.yr{color:var(--muted);font-variant-numeric:tabular-nums;border-left:1px solid oklch(27% .012 60);padding-left:6px;font-size:13px;line-height:20px;position:absolute;top:0;bottom:0}.lane{color:var(--muted);font-size:14px;line-height:var(--rh);position:absolute;left:0}.bar{all:unset;box-sizing:border-box;left:calc(var(--g) + (100% - var(--g)) * var(--a));width:calc((100% - var(--g)) * var(--w));top:calc(var(--ax) + var(--rh) * var(--r) + 3px);height:calc(var(--rh) - 6px);background:var(--raise2);cursor:pointer;white-space:nowrap;border-radius:3px;align-items:center;padding:0 10px;font-size:14px;font-weight:520;transition:background .25s,color .25s,box-shadow .25s;display:flex;position:absolute}.bar .long{display:none}.bar[data-id=mh]{justify-content:center;padding:0 4px;font-size:12.5px}.bar.out{padding:0}.bar.out span{position:absolute;right:calc(100% + 8px)}.bar.on{background:var(--signal);color:var(--signal-ink);box-shadow:0 0 22px var(--glow)}.bar.on.out{color:var(--ink)}.bar:focus-visible{outline:2px solid var(--ink)}.now{top:0;bottom:0;left:calc(var(--g) + (100% - var(--g)) * .985);border-left:1px dashed var(--signal);z-index:1;pointer-events:none;width:0;position:absolute}.now i{color:var(--signal);font-size:13px;font-style:normal;line-height:20px;position:absolute;top:0;right:6px}.scan{top:0;bottom:0;left:var(--g);background:var(--signal);z-index:3;opacity:0;pointer-events:none;width:2px;position:absolute;box-shadow:0 0 18px 3px oklch(74% .18 45/.7)}.read{z-index:2;left:var(--g);top:calc(var(--ax) + var(--rh) * 2 + 4px);width:calc((100% - var(--g)) * .76);height:calc(var(--rh) * 3 - 4px);background:oklch(17.5% .012 55/.93);padding:6px 16px 0 2px;position:absolute;overflow:hidden}.read h2{font-size:clamp(1rem,1.3vw,1.16rem);font-weight:600;font-stretch:108%;line-height:1.25}.read h2 small{color:var(--signal);margin-left:10px;font-size:14px;font-weight:400;font-stretch:100%}.read p{color:var(--muted);max-width:90ch;margin-top:3px;font-size:15px;line-height:1.38}.read a{color:var(--ink);text-underline-offset:3px;margin-left:6px}.read.flip{animation:flip .4s var(--ease)}@keyframes flip{0%{opacity:0;transform:translateY(5px)}}.stack{z-index:2;padding-left:var(--g);flex-wrap:wrap;gap:6px;margin-top:34px;display:flex;position:relative}.chip{all:unset;box-sizing:border-box;cursor:pointer;border:1px solid var(--line);background:var(--ground);height:28px;color:var(--muted);border-radius:3px;align-items:center;padding:0 10px;font-size:14px;transition:color .25s,border-color .25s,background .25s;display:flex}.chip.on{color:var(--ink);border-color:var(--signal);background:oklch(27% .05 45)}.chip:focus-visible{outline:2px solid var(--signal)}svg.wires{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.wires path{fill:none;stroke:var(--signal);stroke-width:1.5px;filter:drop-shadow(0 0 4px oklch(74% .18 45/.8))}.wires circle{fill:var(--ink);filter:drop-shadow(0 0 6px var(--signal))}.mapfoot{padding-left:var(--g);color:var(--muted);justify-content:space-between;gap:16px;margin-top:8px;font-size:13.5px;display:flex}.mapfoot button{all:unset;cursor:pointer;border-bottom:1px solid var(--line)}.mapfoot button:hover{color:var(--ink)}.mapfoot button:focus-visible{outline:2px solid var(--signal);outline-offset:2px}section{padding:clamp(56px, 9vh, 104px) var(--pad);border-top:1px solid var(--line)}.h{letter-spacing:-.022em;font-size:clamp(1.9rem,3.4vw,3.1rem);font-weight:570;font-stretch:116%;line-height:1.05}.split{grid-template-columns:minmax(0,.62fr) minmax(0,1.38fr);gap:clamp(24px,5vw,80px);display:grid}.job+.job{border-top:1px solid var(--line);margin-top:clamp(40px,6vh,64px);padding-top:clamp(28px,4vh,44px)}.job h3{font-size:clamp(1.25rem,1.9vw,1.6rem);font-weight:600;font-stretch:108%;line-height:1.2}.when{color:var(--signal);margin-top:4px;font-size:15px}.job p,.job li{max-width:72ch;color:var(--muted);font-size:17px}.job p{margin-top:12px}.job ul{margin-top:10px;padding-left:18px}.job li{margin-top:6px}.meters{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px 36px;margin-top:22px;display:grid}.m b{font-size:16px;font-weight:520;display:block}.m .row{color:var(--muted);font-variant-numeric:tabular-nums;grid-template-columns:64px 1fr;align-items:center;gap:10px;margin-top:7px;font-size:14px;display:grid}.m .t,.big .t{background:var(--raise);border-radius:2px;overflow:hidden}.m .t{height:10px}.f{height:100%;width:var(--v);transform-origin:0;transition:transform 1.3s var(--ease);background:oklch(56% .015 70);transform:scaleX(0)}.m .after .f,.f.hi{background:var(--signal);box-shadow:0 0 14px var(--glow)}.m .after{color:var(--ink)}.vis .f{transform:scaleX(1)}.proj{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:center;gap:clamp(24px,5vw,72px);padding:clamp(36px,6vh,64px) 0;display:grid}.proj:first-of-type{margin-top:clamp(24px,4vh,40px)}.proj.rev>:first-child{order:2}.proj h3{letter-spacing:-.02em;align-items:center;gap:12px;font-size:clamp(1.7rem,2.8vw,2.5rem);font-weight:570;font-stretch:114%;line-height:1.08;display:flex}.proj h3 img{border-radius:6px;width:1.05em;height:1.05em}.proj p{color:var(--muted);max-width:60ch;margin-top:12px;font-size:17px}.proj ul{color:var(--muted);max-width:60ch;margin-top:12px;padding-left:18px;font-size:16.5px}.proj li{margin-top:5px}.tech{color:var(--muted);margin-top:14px;font-size:14.5px}.links{flex-wrap:wrap;gap:8px 20px;margin-top:14px;font-size:15.5px;display:flex}.links a{text-underline-offset:4px}.shot{box-shadow:0 0 0 1px var(--line), 0 30px 90px -50px var(--signal);border-radius:8px;position:relative;overflow:hidden}.shot img,.shot video{width:100%;transition:transform .6s var(--ease)}a.shot:hover img,a.shot:hover video{transform:scale(1.025)}.frame{box-shadow:0 0 0 1px var(--line), 0 30px 90px -50px var(--signal);background:oklch(20.5% .013 55/.92);border-radius:8px;padding:clamp(18px,2.4vw,30px)}.big{grid-template-columns:auto 1fr;align-items:center;gap:6px 18px;display:grid}.big .n{font-variant-numeric:tabular-nums;font-size:clamp(2.2rem,4vw,3.6rem);font-weight:570;font-stretch:112%;line-height:1}.big .t{height:18px}.big small{color:var(--muted);grid-column:2;margin-bottom:14px;font-size:14.5px}.groups{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:26px 40px;display:grid}.groups h3,.cols h3{font-weight:600;font-stretch:108%}.groups h3{font-size:16px}.groups p{color:var(--muted);margin-top:5px;font-size:16px}.cols{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:30px 48px;margin-top:6px;display:grid}.cols h3{font-size:18px}.cols p{color:var(--muted);max-width:58ch;margin-top:6px;font-size:16.5px}.end{padding-bottom:36px}.mail{letter-spacing:-.02em;background:linear-gradient(var(--signal), var(--signal)) 0 100% / 0 3px no-repeat;transition:background-size .5s var(--ease);word-break:break-word;margin-top:18px;font-size:clamp(1.5rem,4.6vw,4rem);font-weight:570;font-stretch:112%;text-decoration:none;display:inline-block}.mail:hover{background-size:100% 3px}.foot{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:40px;font-size:15px;display:flex}.foot nav{gap:20px;display:flex}.case-top{padding:clamp(36px, 7vh, 72px) var(--pad) clamp(24px, 4vh, 40px)}.back{color:var(--muted);font-size:15px;text-decoration:none}.back:hover{color:var(--ink)}.case-top h1{align-items:center;gap:.28em;margin-top:14px;display:flex}.case-top h1 img{border-radius:10px;width:.92em;height:.92em}.lede{max-width:58ch;margin-top:14px;font-size:clamp(1.15rem,1.7vw,1.45rem);line-height:1.4}.facts{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px 32px;margin-top:26px;font-size:15px;display:grid}.facts dt{color:var(--muted)}.facts dd{margin:2px 0 0}.case-shot{padding:0 var(--pad) clamp(40px, 7vh, 72px)}.case-shot canvas{width:100%;height:clamp(320px,52vh,520px);display:block}.case-shot .video{max-width:860px}.prose{max-width:70ch}.prose p,.prose li{color:var(--muted);font-size:17.5px;line-height:1.55}.prose p+p{margin-top:12px}.prose ul{padding-left:18px}.prose li+li{margin-top:9px}.prose li b,.prose p b{color:var(--ink);font-weight:560}.pair{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-top:22px;display:grid}.nextcase{justify-content:space-between;align-items:center;gap:16px;display:flex}.nextcase a{letter-spacing:-.02em;font-size:clamp(1.4rem,3vw,2.6rem);font-weight:570;font-stretch:114%;text-decoration:none}.nextcase a:hover{color:var(--signal)}@media (width<=980px){.top nav a:not(.keep){display:none}.who{grid-template-columns:1fr}.map{--g:0px}.plot{gap:6px;height:auto;display:grid}.plot:before,.plot:after,.yr,.lane,.now,.scan,svg.wires{display:none}.bar,.bar.out{white-space:normal;width:auto;height:auto;min-height:44px;padding:8px 12px;position:static}.bar.out span{position:static}.bar[data-id=mh]{justify-content:flex-start;padding:8px 12px;font-size:14px}.bar .short{display:none}.bar .long{display:inline}.bar.on.out{color:var(--signal-ink)}.read{background:0 0;order:-1;width:auto;height:auto;padding:10px 0 8px;position:static}.stack{margin-top:10px;padding-left:0}.mapfoot{padding-left:0}.split,.proj{grid-template-columns:1fr}.proj.rev>:first-child{order:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.f{transform:none!important}@view-transition{navigation:none}}
