@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:block;src:url(/fonts/jetbrains-mono-glyphs-400.woff2)format("woff2");unicode-range:U+2190-21FF,U+2304,U+2500-259F,U+25BE,U+25D4}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:block;src:url(/fonts/jetbrains-mono-glyphs-400.woff2)format("woff2");unicode-range:U+2190-21FF,U+2304,U+2500-259F,U+25BE,U+25D4}:root{--green:#4de74c;--paper:#f2f4f0;--ink:#0b0c0b;--black:#050605;--plastic:#e4e6df;--plastic-shade:#c3c6bd;--font-sans:"Archivo", "Helvetica Neue", Arial, sans-serif;--font-mono:"Xanh Mono", ui-monospace, monospace;--font-code:"JetBrains Mono", ui-monospace, monospace;--gutter:clamp(16px, 2.2vw, 32px);--header-h:56px;--ease:cubic-bezier(.7, 0, .2, 1);--ease-out:cubic-bezier(.16, 1, .3, 1);color-scheme:light}[data-theme=green]{--bg:var(--green);--fg:var(--ink);--line:#0b0c0be6;--soft:#0b0c0bad;--mark:var(--ink);--mark-fg:var(--green)}[data-theme=paper]{--bg:var(--paper);--fg:var(--ink);--line:#0b0c0bd9;--soft:#0b0c0b9e;--mark:var(--green);--mark-fg:var(--ink)}[data-theme=black]{--bg:var(--black);--fg:var(--paper);--line:#f2f4f047;--soft:#f2f4f099;--mark:var(--green);--mark-fg:var(--ink)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:var(--header-h);-webkit-text-size-adjust:100%}body{background:var(--black);color:var(--ink);font-family:var(--font-sans);font-variation-settings:"wdth" 100;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.45;overflow-x:clip}html.is-launching{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}h1,h2,h3,p,ol,ul,dl,dd{margin:0;padding:0}ol,ul{list-style:none}::selection{background:var(--green);color:var(--ink)}:focus-visible{outline-offset:3px;outline:2px dashed}.mono{font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase;font-size:13px;line-height:1.3}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{left:var(--gutter);z-index:200;background:var(--ink);color:var(--green);padding:8px 12px;position:fixed;top:-60px}.skip:focus{top:8px}[data-theme]{background:var(--bg);color:var(--fg)}[data-scramble-target],[data-scramble-child],[data-scramble]{display:inline-block}.pill{border:1.5px solid var(--green);white-space:nowrap;border-radius:999px;align-items:center;height:1.7em;padding:0 .7em;font-size:12px;display:inline-flex}.pill--ink{border-color:currentColor}.pill--glow{color:var(--green);box-shadow:0 0 10px #4de74c40,inset 0 0 8px #4de74c1f}.dot{vertical-align:1px;background:currentColor;border-radius:50%;width:7px;height:7px;margin-right:6px;animation:1.6s steps(2,end) infinite blink;display:inline-block}@keyframes blink{50%{opacity:.2}}.js [data-reveal]{opacity:0;transition:opacity .9s var(--ease-out), transform .9s var(--ease-out);transform:translateY(24px)}.js [data-reveal].is-in{opacity:1;transform:none}.header{z-index:100;height:var(--header-h);padding:0 var(--gutter);column-gap:var(--gutter);background:var(--bg);color:var(--fg);border-bottom:1px solid var(--line);grid-template-columns:repeat(12,1fr);align-items:center;transition:background-color .35s,color .35s,border-color .35s;display:grid;position:fixed;inset:0 0 auto}.header[data-on=green]{--bg:var(--green);--fg:var(--ink);--line:transparent}.header[data-on=paper]{--bg:var(--paper);--fg:var(--ink);--line:#0b0c0b1f}.header[data-on=black]{--bg:var(--black);--fg:var(--paper);--line:#f2f4f024}.header__mark{grid-column:1/span 3}.header__status{grid-column:4/span 3}.header__nav{grid-column:7/span 4;gap:22px;display:flex}.header__nav a,.header__mark{position:relative}.header__nav a:after,.header__mark:after{content:"";transform-origin:0;height:1px;transition:transform .35s var(--ease);background:currentColor;position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.header__nav a:hover:after,.header__mark:hover:after{transform:scaleX(1)}.header__end{grid-column:11/span 2;justify-self:end;align-items:center;gap:16px;display:flex}.header__lang{position:relative}.header__lang:after{content:"";transform-origin:0;height:1px;transition:transform .35s var(--ease);background:currentColor;position:absolute;bottom:-3px;left:0;right:0;transform:scaleX(0)}.header__lang:hover:after{transform:scaleX(1)}.header__cta{white-space:nowrap;background:var(--fg);color:var(--bg);transition:transform .25s var(--ease);border-radius:6px;padding:7px 12px;font-size:13px;font-weight:600}.header__cta:hover{transform:translateY(-1px)}.hero{--ascii-ink:#0b0c0b5c;--ascii-faint:#0b0c0b33;--ascii-accent:var(--paper);min-height:100svh;padding:calc(var(--header-h) + var(--gutter)) var(--gutter) var(--gutter);isolation:isolate;grid-template-rows:auto 1fr auto auto;display:grid;position:relative;overflow:hidden}.hero__field,.contact__field{z-index:-1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.hero__top{column-gap:var(--gutter);grid-template-columns:repeat(12,1fr);align-items:start;display:grid}.hero__meta{background:var(--bg);grid-column:1/span 3;justify-self:start;padding:0 8px 4px 0}.hero__pitch{background:var(--bg);box-shadow:-8px 0 0 var(--bg);grid-column:4/span 3;justify-self:start;max-width:32ch;padding:4px 8px 6px 0;font-size:15px;font-weight:500;line-height:1.35}.index{border-bottom:1px solid var(--line);background:var(--bg);grid-column:8/span 5}.index li{border-top:1px solid var(--line)}.index a{grid-template-columns:3.2em 1fr 1.4fr auto;align-items:baseline;gap:12px;padding:7px 6px;transition:background-color .2s,color .2s;display:grid}.index a:hover,.index a:focus-visible{background:var(--ink);color:var(--green);outline:none}.index__label{font-size:15px;font-weight:600}.index__note{color:var(--soft);font-size:13px}.index a:hover .index__note{color:inherit;opacity:.75}.hero__name{align-self:end;margin:5vh 0 3vh;font-weight:400;display:grid;container-type:inline-size}.ascii{width:max-content;font-family:var(--font-code);font-size:calc(80cqw / var(--cols) / .6);letter-spacing:0;white-space:pre;color:var(--ink);margin:0;line-height:1}.ascii i{vertical-align:top;-webkit-text-fill-color:transparent;background:currentColor;width:.6em;height:1em;font-style:normal;display:inline-block}.ascii i.is-g{-webkit-text-fill-color:currentColor;background:0 0}.ascii b{opacity:.45;font-weight:400}.ascii__row{display:block}.hero__first{justify-self:start}.hero__last{justify-self:end;margin-top:.4em}.ascii__row:nth-child(2){--r:1}.ascii__row:nth-child(3){--r:2}.ascii__row:nth-child(4){--r:3}.ascii__row:nth-child(5){--r:4}.ascii__row:nth-child(6){--r:5}.js .ascii__row{clip-path:inset(0 100% 0 0);animation:.55s steps(20,end) forwards print;animation-delay:calc(.25s + (var(--delay,0) + var(--r,0)) * .11s)}@keyframes print{to{clip-path:inset(0)}}.hero:focus{outline:none}.hero__top{grid-area:1/1}.hero__name{grid-area:2/1}.hero__here{background:var(--ink);color:var(--green);box-shadow:0 0 0 1px var(--ink), 0 0 18px #0b0c0b40;opacity:0;visibility:hidden;grid-area:2/1;place-self:start;margin-top:clamp(24px,5vh,56px);padding:8px 12px;font-size:14px;transition:opacity .4s,visibility 0s .4s}.hero__here.is-on{opacity:1;visibility:visible;transition:opacity .2s}.hero__foot{border-top:1px solid var(--line);background:var(--bg);margin:0 calc(var(--gutter) * -1) calc(var(--gutter) * -1);padding-top:10px;padding:10px var(--gutter) var(--gutter);grid-area:3/1;justify-content:space-between;gap:16px;display:flex}.hero__scroll{animation:nudge 2.4s var(--ease) infinite}@keyframes nudge{50%{transform:translateY(3px)}}.section{padding:clamp(80px, 12vw, 180px) var(--gutter)}.section__head{border-top:1px solid var(--line);align-items:center;gap:12px;margin-bottom:clamp(40px,7vw,96px);padding-top:12px;display:flex}.section__title{font-size:13px}.section__aside{margin-left:auto}a.section__aside:hover{text-underline-offset:3px;text-decoration:underline}.statement{font-variation-settings:"wdth" 84;letter-spacing:-.04em;margin-bottom:clamp(64px,10vw,160px);font-size:clamp(46px,9.4vw,168px);font-weight:680;line-height:.9;display:grid}.statement__line{margin-left:calc(var(--indent) * (100% / 12));padding-bottom:.04em;display:block}.statement__line:nth-child(2n)>span{background:var(--green);margin-left:-.08em;padding:0 .08em}.about__body{column-gap:var(--gutter);grid-template-columns:repeat(12,1fr);row-gap:40px;display:grid}.about__now{border-bottom:1px solid var(--line);grid-area:1/1/auto/span 4;align-self:start}.about__now div{border-top:1px solid var(--line);grid-template-columns:9em 1fr;gap:12px;padding:10px 0;display:grid}.about__now dt{color:var(--soft);padding-top:2px}.about__text{grid-column:6/span 6;gap:1.1em;max-width:40ch;font-size:clamp(18px,1.6vw,24px);font-weight:450;line-height:1.4;display:grid}.experience{padding-top:0}.jobs{border-bottom:1px solid var(--line)}.job{column-gap:var(--gutter);border-top:1px solid var(--line);transition:opacity .35s, transform .9s var(--ease-out);isolation:isolate;grid-template-columns:repeat(12,1fr);row-gap:10px;padding:26px 0 30px;display:grid;position:relative}.job:before{content:"";inset:0 calc(var(--gutter) * -1);background:var(--green);z-index:-1;transform-origin:bottom;transition:transform .45s var(--ease);position:absolute;transform:scaleY(0)}.job:hover:before,.job:focus-within:before{transform:scaleY(1)}.jobs.is-dimming .job:not(:hover):not(:focus-within){opacity:.35}.job__no{grid-column:1;padding-top:.5em}.job__dates{grid-column:2/span 2;padding-top:.5em}.job__role{font-variation-settings:"wdth" 88;letter-spacing:-.02em;grid-column:4/span 5;font-size:clamp(22px,2.5vw,38px);font-weight:620;line-height:1.05}.job__at{color:var(--soft);font-weight:400}.job__summary{max-width:58ch;color:var(--soft);grid-column:4/span 5;font-size:16px}.job:hover .job__summary,.job:hover .job__at{color:var(--fg)}.tags{flex-wrap:wrap;align-content:start;gap:6px;display:flex}.job .tags{grid-area:1/10/span 2/span 3;justify-content:flex-end}.job:hover .pill,.job:focus-within .pill{border-color:var(--ink)}.work{background:radial-gradient(ellipse 90% 55% at 50% 30%, #141714 0%, var(--black) 72%)}.work__intro{padding-bottom:clamp(40px,6vw,80px)}.tv__body,.tv__glass{pointer-events:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.tv__body{z-index:2}.tv__glass{z-index:3}@keyframes tv-on{0%{opacity:1;filter:brightness(5);transform:scale(0,.006)}35%{opacity:1;filter:brightness(4);transform:scaleY(.006)}70%{opacity:1;filter:brightness(1.8)saturate(1.15)contrast(1.06);transform:scale(1)}to{opacity:1;filter:saturate(1.15)contrast(1.06)brightness(1.03)blur(.25px);transform:none}}@media (pointer:coarse){.tv__fx:after{animation:none}}.tv__fx{z-index:2;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 calc(var(--h,200px) * .12) #000000bf;background:radial-gradient(70% 45% at 30% 16%,#ffffff21,#0000 70%),repeating-linear-gradient(#00000042 0 1px,#0000 1px 3px),repeating-linear-gradient(90deg,#ff00000d 0 1px,#00ff000a 1px 2px,#0000ff0d 2px 3px),radial-gradient(#0000 55%,#0000009e 100%);position:absolute;inset:0;overflow:hidden}.tv__fx:after{content:"";background:linear-gradient(#0000,#ffffff0d,#0000);height:28%;animation:7s linear infinite roll;position:absolute;top:-30%;left:0;right:0}@keyframes roll{to{transform:translateY(460%)}}.work__index{padding-top:clamp(40px,6vw,80px)}.footer span a{text-underline-offset:3px;text-decoration:underline}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:left;border-top:1px solid var(--line);vertical-align:baseline;padding:14px 8px}.table thead th{color:var(--soft);border-top:0;padding-top:0;font-weight:400}.table tbody th{font-variation-settings:"wdth" 88;letter-spacing:-.01em;font-size:clamp(20px,2vw,28px);font-weight:600}.table tbody tr{transition:background .2s,color .2s;position:relative}.table tbody tr:hover{background:var(--green);color:var(--ink)}.table tbody tr:last-child>*{border-bottom:1px solid var(--line)}.table__go{text-align:right}.table tbody th a:after{content:"";position:absolute;inset:0}.launch{z-index:1000;opacity:0;background:#000;transition:opacity .25s;position:fixed;inset:0}.launch.is-on{opacity:1}.is-scrambling{position:relative}.is-scrambling>.scr__real{opacity:0}.scr__fx{white-space:nowrap;pointer-events:none;position:absolute;top:0;left:0}.contact__email .scr__fx{white-space:normal;right:0}.scr__g{font-family:var(--font-code);font-variation-settings:normal;letter-spacing:0;opacity:.8;font-size:.84em;font-weight:400}.contact{--ascii-ink:#0b0c0b66;--ascii-faint:#0b0c0b2e;--ascii-accent:var(--paper);isolation:isolate;min-height:100svh;padding:clamp(80px, 10vw, 140px) var(--gutter) var(--gutter);flex-direction:column;display:flex;position:relative;overflow:hidden}.contact .pill{border-color:var(--ink)}.contact__prompt{margin-bottom:18px;font-size:15px}.contact__email{font-variation-settings:"wdth" 66;letter-spacing:-.035em;overflow-wrap:anywhere;border-bottom:.06em solid;align-self:flex-start;margin-bottom:clamp(48px,8vw,120px);font-size:clamp(40px,8.6vw,164px);font-weight:640;line-height:.9}.contact__email:hover{color:var(--paper)}.contact__links{border-bottom:1px solid var(--line);background:var(--bg);margin-top:auto;margin-bottom:40px}.contact__links li{border-top:1px solid var(--line)}.contact__links a{gap:var(--gutter);grid-template-columns:3fr 8fr auto;align-items:baseline;padding:12px 6px;font-size:clamp(18px,1.8vw,26px);font-weight:560;transition:background .2s,color .2s;display:grid}.contact__links a:hover,.contact__links a:focus-visible{background:var(--ink);color:var(--green);outline:none}.contact__label{font-weight:400}.footer{background:var(--bg);flex-wrap:wrap;justify-content:space-between;gap:8px 28px;font-size:12px;display:flex}.footer i{text-transform:none;font-style:italic}.is-touch .job:hover:before,.is-touch .job:focus-within:before{transform:scaleY(0)}.is-touch .job:hover .job__summary,.is-touch .job:hover .job__at{color:var(--soft)}.is-touch .job.is-current:before{transform:scaleY(1)}.is-touch .jobs.is-surfing .job:not(.is-current){opacity:.4}.is-touch .job.is-current .job__summary,.is-touch .job.is-current .job__at{color:var(--fg)}.is-touch .job.is-current .pill{border-color:var(--ink)}.is-touch .contact__links a:hover{color:inherit;background:0 0}.is-touch .contact__links a.is-pressed{background:var(--ink);color:var(--green)}.is-touch .contact__email:hover{color:inherit}.is-touch .contact__email.is-pressed{color:var(--paper)}@media (width<=1100px){.header__status{display:none}.header__nav{grid-column:4/span 6}.hero__meta{grid-column:1/span 4}.hero__pitch{grid-column:5/span 4}.index{grid-column:1/-1;margin-top:28px}.index a{grid-template-columns:3.2em 10em 1fr auto}}@media (width<=760px){:root{--header-h:52px}.mono{font-size:12px}.header__nav{display:none}.header__mark{grid-column:1/span 6}.header__end{grid-column:7/span 6}.hero__top{flex-direction:column;gap:16px;display:flex}.index{align-self:stretch;margin-top:12px}.index a{grid-template-columns:2.6em 1fr auto}.index__note,.hero__foot>:first-child{display:none}.statement__line{margin-left:calc(var(--indent) * (100% / 24))}.about__body{flex-direction:column;display:flex}.job{flex-direction:column;gap:10px;display:flex}.job__no{display:none}.job .tags{justify-content:flex-start}.ascii{font-size:calc(100cqw / var(--cols) / .6)}.table__stack{display:none}.contact__links a{grid-template-columns:1fr auto}.contact__links a>:nth-child(2){grid-area:2/1;font-size:16px}.contact__links a>:nth-child(3){grid-row:1/span 2}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation:none!important}.js [data-reveal]{opacity:1;transform:none}}
