@font-face{font-family:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-ext-400-normal-C2je3j2s.woff2) format("woff2"),url(/assets/instrument-serif-latin-ext-400-normal-CFCUzsTy.woff) format("woff");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:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2) format("woff2"),url(/assets/instrument-serif-latin-400-normal-BVbkICAY.woff) format("woff");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:"Instrument Serif";font-style:italic;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-ext-400-italic-C9HzH3YL.woff2) format("woff2"),url(/assets/instrument-serif-latin-ext-400-italic-D7-lnxEk.woff) format("woff");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:"Instrument Serif";font-style:italic;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-italic-DKMiL14s.woff2) format("woff2"),url(/assets/instrument-serif-latin-400-italic-u__WvvIK.woff) format("woff");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:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-vietnamese-400-normal-BNOj0Qhp.woff2) format("woff2"),url(/assets/space-mono-vietnamese-400-normal-B0PMp_xB.woff) format("woff");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:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-ext-400-normal-DTLbW2xa.woff2) format("woff2"),url(/assets/space-mono-latin-ext-400-normal-D4cJI_B-.woff) format("woff");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:Space Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-mono-latin-400-normal-Rg4St2Dn.woff2) format("woff2"),url(/assets/space-mono-latin-400-normal-_3DlpgIW.woff) format("woff");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:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-vietnamese-700-normal-DWQgDHuA.woff2) format("woff2"),url(/assets/space-mono-vietnamese-700-normal-D-KrLuLr.woff) format("woff");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:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-ext-700-normal-B2s3bDs2.woff2) format("woff2"),url(/assets/space-mono-latin-ext-700-normal-B_E7P90g.woff) format("woff");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:Space Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-mono-latin-700-normal-mWgeinG7.woff2) format("woff2"),url(/assets/space-mono-latin-700-normal-D7A851RN.woff) format("woff");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{--bg: #f3f1ea;--bg-dark: #0b0b0c;--fg: #0d0d0e;--fg-inv: #f3f1ea;--muted: rgba(13, 13, 14, .58);--dim: rgba(13, 13, 14, .38);--faint: rgba(13, 13, 14, .14);--line: rgba(13, 13, 14, .16);--serif: "Instrument Serif", Georgia, "Times New Roman", serif;--mono: "Space Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--pad: clamp(1.1rem, 3.5vw, 3.5rem)}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--mono);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}::selection{background:var(--fg);color:var(--bg)}a{color:inherit;text-decoration:none}canvas{display:block}.grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9997;pointer-events:none;opacity:.04;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}@keyframes glitchy{0%{transform:translate(0)}25%{transform:translate(-1px,1px)}50%{transform:translate(1px,-1px)}75%{transform:translate(-1px)}to{transform:translate(0)}}.site-header nav a:hover,.contact .links a:hover{animation:glitchy .26s steps(2) 1}.work-row:hover .title{animation:glitchy .26s steps(2) 1;text-shadow:1.5px 0 rgba(255,0,80,.25),-1.5px 0 rgba(0,200,255,.22)}.wrap{width:100%;max-width:1400px;margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}.label{font-family:var(--mono);font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--dim)}.serif{font-family:var(--serif);font-weight:400;line-height:.9;letter-spacing:-.01em}.type{position:relative;display:block}.type-sizer{display:block;visibility:hidden}.type-live{position:absolute;top:0;left:0;right:0}.type-caret{display:inline-block;margin-left:.02em;animation:caret .9s steps(2) infinite}@keyframes caret{50%{opacity:0!important}}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:1.5rem var(--pad) 2.4rem;background:linear-gradient(180deg,var(--bg) 34%,rgba(243,241,234,0));pointer-events:none}.site-header a{pointer-events:auto}.site-header .brand{font-family:var(--mono);font-weight:700;letter-spacing:.34em;text-transform:lowercase;font-size:14px}.site-header nav{display:flex;gap:1.6rem}.site-header nav a{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--fg);opacity:.78;transition:opacity .2s ease}.site-header nav a:hover{opacity:1}@media (max-width: 640px){.site-header nav{gap:1rem}}.hero{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:4.5rem 0 3.5rem}.hero-stack{display:flex;flex-direction:column;align-items:center;width:100%;will-change:transform,opacity}.hero-logo{position:relative;width:min(74vw,600px);height:min(56vh,560px);margin:0 auto}.hero-logo>div{width:100%;height:100%}.hero-logo canvas{position:relative;z-index:1}.hero-text{text-align:center;margin-top:.2rem}.hero-word{font-family:var(--serif);line-height:.9;letter-spacing:-.02em;font-size:clamp(2.3rem,5.6vw,5rem)}.hero-sub{margin:1.3rem auto 0;color:var(--muted);font-size:14px;max-width:42ch}.hero-label{display:block;margin-top:.9rem}.section{position:relative;z-index:2;padding:clamp(4.5rem,12vh,10rem) 0;border-top:1px solid var(--line);background:var(--bg)}.section-title{font-size:clamp(2.6rem,7vw,6rem);line-height:.9;margin-bottom:clamp(2rem,6vh,4rem)}.about-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(2.5rem,7vw,6rem);align-items:start}@media (max-width: 900px){.about-grid{grid-template-columns:1fr;gap:3rem}}.about-photo{position:relative;aspect-ratio:3 / 4;width:100%}.about-copy .type{margin-bottom:1rem;color:var(--muted);max-width:52ch;font-size:14px}.tilt{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.tilt-inner{position:relative;width:100%;height:100%;border:1.5px solid var(--fg);box-shadow:13px 15px 0 var(--fg);animation:floaty 9s ease-in-out infinite;will-change:transform}.tilt-inner img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.08);display:block}.tilt-grain{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;mix-blend-mode:multiply;opacity:.1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}@keyframes floaty{0%,to{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(-2deg) translateY(-16px)}}.specialties{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.8rem}.specialties li{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line);padding:.4em .7em;color:var(--muted)}.work-list{border-top:1px solid var(--fg)}.work-row{width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--line);cursor:pointer;font:inherit;position:relative;display:grid;grid-template-columns:3.2rem minmax(0,1fr) 13rem 5rem 2rem;gap:1.2rem;align-items:center;padding:clamp(.9rem,2vw,1.5rem) clamp(.4rem,1.5vw,1.4rem);color:var(--fg);transition:background .35s cubic-bezier(.2,.7,.2,1),color .25s ease,padding-left .35s ease}.work-row:hover{background:var(--fg);color:var(--bg);padding-left:clamp(1rem,2.5vw,2rem)}.work-row .idx{font-family:var(--mono);font-size:12px;opacity:.6;align-self:center}.work-row .title{font-family:var(--serif);font-size:clamp(1.8rem,4.6vw,3.6rem);line-height:1.12;padding-bottom:.12em;overflow:visible;white-space:nowrap}.work-row .title .flag{font-family:var(--mono);font-size:9px;letter-spacing:.14em;border:1px solid currentColor;padding:.15em .45em;margin-left:.6rem;vertical-align:middle;opacity:.7}.work-row .tech{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;text-align:right;opacity:.75}.work-row .year{font-family:var(--mono);font-size:12px;text-align:right;opacity:.55}.work-row .arrow{text-align:right;opacity:0;transform:translate(-6px);transition:all .3s ease}.work-row:hover .arrow{opacity:1;transform:translate(0)}@media (max-width: 820px){.work-row{grid-template-columns:2.2rem 1fr auto}.work-row .tech,.work-row .arrow{display:none}}.contact{position:relative;z-index:2;background:#fff;color:var(--fg);border-top:1px solid var(--line);padding:clamp(4rem,10vh,8rem) 0 2.5rem}.contact-row{display:flex;align-items:baseline;justify-content:space-between;gap:1.5rem 2rem;flex-wrap:wrap}.contact-mail{font-family:var(--serif);font-size:clamp(2.4rem,6vw,5rem);line-height:.95}.contact-mail:hover{opacity:.6}.contact .links{display:flex;gap:1.6rem;flex-wrap:wrap}.contact .links a{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--faint);padding-bottom:2px;transition:color .2s ease,border-color .2s ease}.contact .links a:hover{color:var(--fg);border-color:var(--fg)}.contact .base{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:clamp(3rem,8vh,6rem);color:var(--dim);font-size:11px;letter-spacing:.16em;text-transform:uppercase}.rt-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9990;background:#0b0b0cdb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:clamp(1rem,4vw,3rem);animation:rt-in .25s ease}@keyframes rt-in{0%{opacity:0}to{opacity:1}}.rt-modal{width:min(1100px,100%);background:var(--bg);border:1px solid var(--fg);display:flex;flex-direction:column;max-height:92vh;animation:rt-up .35s cubic-bezier(.16,1,.3,1)}@keyframes rt-up{0%{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}.rt-bar{display:flex;align-items:center;gap:1rem;padding:.7rem 1rem;border-bottom:1px solid var(--line)}.rt-dots{display:flex;gap:.45rem}.rt-dots i{width:10px;height:10px;border:1px solid var(--fg);border-radius:50%;display:block}.rt-url{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--muted);flex:1;text-align:center}.rt-close{font-family:var(--mono);font-size:14px;background:none;border:none;cursor:pointer;color:var(--fg)}.rt-window{position:relative;width:100%;height:60vh;overflow:hidden;background:var(--bg)}.rt-window.rt-dark{background:var(--bg-dark)}.rt-frame{position:absolute;top:0;left:0;width:100%;height:300%;border:0;animation:rt-pan 20s ease-in-out infinite alternate}.rt-window:hover .rt-frame{animation-play-state:paused}@keyframes rt-pan{0%{transform:translateY(0)}to{transform:translateY(-66.6%)}}.rt-scanline{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.03) 0 1px,transparent 1px 3px);mix-blend-mode:multiply}.rt-fallback{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;gap:1rem;padding:.6rem 1rem;font-family:var(--mono);font-size:11px;color:var(--muted);background:linear-gradient(0deg,var(--bg) 40%,transparent);pointer-events:none}.rt-fallback a{pointer-events:auto;color:var(--fg);border-bottom:1px solid var(--fg)}.rt-logo{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:2rem}.rt-logo img{max-width:60%;max-height:60%;object-fit:contain}.rt-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.rt-empty .serif{font-size:clamp(2rem,5vw,3.5rem)}.rt-info{padding:1rem;border-top:1px solid var(--line)}.rt-blurb{font-size:13px;color:var(--muted);max-width:70ch;margin-bottom:.8rem;line-height:1.55}.rt-meta{display:flex;align-items:center;gap:1.4rem}.rt-meta .rt-live{margin-left:auto;color:var(--fg);border-bottom:1px solid var(--fg)}@media (prefers-reduced-motion: no-preference){@supports (animation-timeline: view()){.section,.contact{animation:comeForward linear both;animation-timeline:view();animation-range:entry 0% entry 92%;backface-visibility:hidden}@keyframes comeForward{0%{opacity:0;transform:perspective(1200px) translate3d(0,44px,-600px)}55%{opacity:1}to{opacity:1;transform:perspective(1200px) translateZ(0)}}}}.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none;transition:none}.tilt-inner,.rt-frame{animation:none}}
