@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/dm-mono-400-latin-ext.woff2) format("woff2");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:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/dm-mono-400-latin.woff2) format("woff2");unicode-range:u+00??,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:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/dm-mono-500-latin-ext.woff2) format("woff2");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:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/dm-mono-500-latin.woff2) format("woff2");unicode-range:u+00??,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:Kanit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/kanit-600-thai.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Kanit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/kanit-600-vietnamese.woff2) format("woff2");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:Kanit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/kanit-600-latin-ext.woff2) format("woff2");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:Kanit;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/kanit-600-latin.woff2) format("woff2");unicode-range:u+00??,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:Kanit;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/kanit-700-thai.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Kanit;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/kanit-700-vietnamese.woff2) format("woff2");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:Kanit;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/kanit-700-latin-ext.woff2) format("woff2");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:Kanit;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/kanit-700-latin.woff2) format("woff2");unicode-range:u+00??,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:Heebo;src:url(/fonts/heebo-variable.ttf) format("truetype-variations"),url(/fonts/heebo-variable.ttf) format("truetype");font-weight:100 900;font-style:normal;font-display:swap}:root{--brand-green:rgb(154,226,40);--brand-cyan:rgb(102,217,238);--brand-teal:rgb(0,154,184);--brand-teal-aa:rgb(0,122,146);--brand-green-aa:rgb(78,143,11);--light-canvas:rgb(245,252,255);--light-surface:rgb(230,242,247);--light-card-a:rgb(237,246,250);--light-card-b:rgb(227,245,253);--dark-canvas:rgb(5,20,26);--dark-hero-a:rgb(17,40,58);--dark-card-a:rgb(5,45,77);--dark-card-b:rgb(10,32,50);--ink-900:rgb(51,51,51);--ink-800:rgb(64,64,64);--ink-700:rgb(68,68,68);--ink-500:rgb(128,128,128);--ink-600:rgb(102,102,102);--ink-400:rgb(140,140,140);--ink-300:rgb(192,192,192);--ink-200:rgb(204,204,204);--ink-100:rgb(217,217,217);--ink-075:rgb(242,242,242);--ink-050:rgb(245,245,245);--ink-000:rgb(255,255,255);--shadow-color:rgba(102,217,238,0.08);--grad-brand:linear-gradient(90deg,var(--brand-green) 0%,var(--brand-cyan) 100%);--grad-hero-light:radial-gradient(circle,rgb(230,242,247) 0%,rgb(245,252,255) 100%);--grad-hero-dark:radial-gradient(circle,var(--dark-hero-a) 0%,var(--dark-canvas) 100%);--grad-card-light:linear-gradient(135deg,var(--light-card-a) 0%,var(--light-card-b) 100%);--grad-card-dark:linear-gradient(135deg,var(--dark-card-a) 0%,var(--dark-card-b) 100%);--grad-scrim-top:linear-gradient(rgb(0,0,0),rgba(0,0,0,0));--grad-scrim-bottom:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,0.64))}:root,:root[data-theme=light]{--bg:var(--light-canvas);--bg-elev:var(--light-surface);--hero-bg:var(--grad-hero-light);--card-bg:var(--grad-card-light);--fg:var(--ink-900);--fg-strong:var(--ink-700);--fg-muted:var(--ink-600);--fg-on-image:var(--ink-000);--link:var(--brand-teal-aa);--highlight:var(--brand-cyan);--ui-accent:var(--brand-teal-aa);--ui-accent-current:var(--brand-green-aa);--grad-accent:linear-gradient(90deg,var(--brand-green-aa) 0%,var(--brand-teal-aa) 100%);--chip-bg:var(--light-surface);--chip-fg:var(--ink-600);--icon-stroke:var(--ink-900);--icon-mute:var(--ink-500)}:root[data-theme=dark]{--bg:var(--dark-canvas);--bg-elev:var(--dark-card-b);--hero-bg:var(--grad-hero-dark);--card-bg:var(--grad-card-dark);--fg:var(--ink-000);--fg-strong:var(--ink-050);--fg-muted:var(--ink-300);--fg-on-image:var(--ink-000);--link:var(--brand-green);--highlight:var(--brand-green);--ui-accent:var(--brand-cyan);--ui-accent-current:var(--brand-green);--grad-accent:var(--grad-brand);--chip-bg:rgba(255,255,255,0.04);--chip-fg:var(--ink-300);--icon-stroke:var(--ink-000);--icon-mute:var(--ink-300)}:root{--font-display:"Kanit","Inter Tight",system-ui,sans-serif;--font-body:"Heebo","DM Sans",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"DM Mono","JetBrains Mono",ui-monospace,monospace;--t-display:700 40px/100% var(--font-display);letter-spacing:-.25px;--t-h1:700 96px/100% var(--font-display);--t-h2:700 36px/100% var(--font-display);--t-h3:700 32px/100% var(--font-display);--t-h4:700 24px/100% var(--font-display);--t-body:400 15px/22px var(--font-body);--t-body-md:500 14px/100% var(--font-body);--t-body-em:500 14px/100% var(--font-body);--t-mono:500 14px/100% var(--font-mono);--t-mono-rg:400 14px/100% var(--font-mono)}html{color-scheme:light dark}body{margin:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1{font:var(--t-h1)}h1,h2{color:var(--fg-strong);margin:0}h2{font:var(--t-h2)}h3{font:var(--t-h3)}h3,h4{color:var(--fg-strong);margin:0}h4{font:var(--t-h4)}p{font:var(--t-body);color:var(--fg);margin:0}a{color:var(--link);text-decoration:underline}a,code,kbd,samp{font:var(--t-mono)}code,kbd,samp{color:var(--fg-muted)}.eyebrow{font:var(--t-body-md);letter-spacing:.5px;color:var(--fg);text-transform:lowercase}.highlight-bar{background:var(--grad-brand);padding:0 6px;color:var(--ink-700)}:root{--s-1:4px;--s-2:8px;--s-3:16px;--s-4:20px;--s-5:24px;--s-6:32px;--s-7:36px;--s-8:40px;--s-9:64px;--s-10:72px;--r-pill:999px;--r-md:16px;--r-lg:32px;--r-xl:48px;--elev-1:16px 16px 64px -16px var(--shadow-color)}*{box-sizing:border-box}html{scroll-behavior:smooth}body,html{margin:0}body{background:var(--bg);color:var(--fg);font:var(--t-body);transition:background .32s ease,color .32s ease}::selection{background:var(--brand-cyan);color:var(--ink-700)}.page{width:100%;min-height:100vh;overflow-x:hidden}.nav{position:fixed;top:0;left:0;right:0;height:96px;padding:24px 44px;display:flex;align-items:center;z-index:50;background:var(--bg);transition:background .24s ease,height .24s ease,padding .24s ease}.nav.scrolled{height:72px;padding:16px 44px;border-bottom:1px solid color-mix(in oklch,var(--fg) 5%,transparent)}.nav .lockup{display:flex;align-items:center;gap:14px;text-decoration:none}.nav .lockup .word{font:700 18px/1 var(--font-display);color:var(--fg-strong);letter-spacing:-.4px}.nav .lockup svg{transition:transform .32s cubic-bezier(.3,.7,.3,1)}.nav .lockup:hover svg{transform:rotate(-8deg)}.nav .menu{display:flex;gap:72px;margin:0 auto}.nav .menu a{font:500 14px/1 var(--font-body);color:var(--fg);text-decoration:none;cursor:pointer;transition:color .2s ease}.nav .menu a.active,.nav .menu a:hover{color:var(--link)}.nav .opts{gap:14px}.nav .opts,.nav .opts button{display:flex;align-items:center}.nav .opts button{width:24px;height:24px;border:0;background:transparent;padding:0;cursor:pointer;color:var(--icon-mute);justify-content:center;transition:color .2s ease,transform .32s cubic-bezier(.3,.7,.3,1),opacity .2s ease;opacity:.85}.nav .opts button:hover{opacity:1;color:var(--fg-strong);transform:scale(1.08)}.nav .opts img.flag{width:24px;height:24px;border-radius:50%;object-fit:cover}.nav .opts .hamburger{display:none;width:32px;height:32px;flex-direction:column;justify-content:center;align-items:center;gap:5px;background:transparent;border:0;padding:0;cursor:pointer}.nav .opts .hamburger span{display:block;width:20px;height:2px;background:var(--fg-strong);border-radius:2px;transition:transform .24s cubic-bezier(.3,.7,.3,1),opacity .18s ease,width .24s ease}.nav .opts .hamburger.open span:first-child{transform:translateY(7px) rotate(45deg)}.nav .opts .hamburger.open span:nth-child(2){opacity:0;width:0}.nav .opts .hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.drawer-scrim{position:fixed;inset:0;background:color-mix(in oklch,var(--bg) 60%,transparent);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .24s ease;z-index:40}.drawer-scrim.in{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(82vw,360px);background:var(--bg);border-left:1px solid color-mix(in oklch,var(--fg) 6%,transparent);z-index:45;padding:96px 28px 32px;transform:translateX(100%);transition:transform .32s cubic-bezier(.3,.7,.3,1);display:flex;flex-direction:column;gap:32px;visibility:hidden}.drawer.in{transform:translateX(0);visibility:visible}.drawer-menu{display:flex;flex-direction:column;gap:20px}.drawer-menu a{font:700 28px/1 var(--font-display);color:var(--fg-strong);text-decoration:none;letter-spacing:-.5px;padding:8px 0;border-bottom:1px solid color-mix(in oklch,var(--fg) 8%,transparent);opacity:0;transform:translateX(16px);transition:opacity .32s ease,transform .32s cubic-bezier(.3,.7,.3,1),color .2s ease}.drawer.in .drawer-menu a{opacity:1;transform:translateX(0)}.drawer-menu a.active,.drawer-menu a:hover{color:var(--link)}.drawer-foot{margin-top:auto;font:500 13px/1 var(--font-mono);color:var(--fg-muted)}.hero{position:relative;min-height:100vh;background:var(--hero-bg);overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:200px 24px 160px}.hero .photo{position:absolute;inset:0;background:url(/images/hero.webp) 50%/cover;mix-blend-mode:color-burn;opacity:.7;z-index:0;animation:hero-drift 60s ease-in-out infinite alternate}:root[data-theme=dark] .hero .photo{mix-blend-mode:overlay;opacity:.85}@keyframes hero-drift{0%{transform:scale(1) translate(0)}to{transform:scale(1.05) translate(-1%,-1%)}}.hero .scrim{position:absolute;inset:0;background:linear-gradient(rgb(0,0,0),rgba(0,0,0,0));opacity:.45;pointer-events:none;z-index:1}.hero .inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;width:100%;max-width:900px}.iv-mark .iv-pill{transform-origin:16px 24px;transform-box:view-box}.iv-mark--animate .iv-pill--green{animation:pill-in .72s cubic-bezier(.2,.7,.2,1) both;animation-delay:80ms}.iv-mark--animate .iv-pill--cyan{animation:pill-in .72s cubic-bezier(.2,.7,.2,1) both;animation-delay:.26s}@keyframes pill-in{0%{transform:scale(.1);opacity:0}60%{opacity:1}to{transform:scale(1);opacity:1}}.hero .lockup{display:inline-flex;align-items:center;gap:14px}.hero .lockup .word{font:700 44px/1 var(--font-display);color:var(--fg-strong);letter-spacing:-1px;animation:rise .7s cubic-bezier(.2,.7,.2,1) .38s both}.hero h1{font:700 40px/1.1 var(--font-display);letter-spacing:-.25px;color:var(--fg-strong);margin:96px 0 0;text-align:center;max-width:760px}.hero h1 .word-anim{display:inline-block;opacity:0;transform:translateY(20px);animation:word-rise .72s cubic-bezier(.2,.7,.2,1) both}.hero h1 .word-anim.hl{background:var(--grad-brand);padding:0 6px;color:var(--ink-700);background-size:200% 100%}.hero h1 .word-anim.hl>span{display:inline-block;animation:gradient-shift 9s ease-in-out 2.2s infinite;background:inherit;background-size:200% 100%;background-clip:text;-webkit-background-clip:text}@keyframes word-rise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes gradient-shift{0%,to{background-position:0 50%}50%{background-position:100% 50%}}.hero h1 .word-anim.hl{animation:word-rise .72s cubic-bezier(.2,.7,.2,1) both,gradient-shift 9s ease-in-out 2.2s infinite}.hero .pitch{font:400 15px/22px var(--font-body);color:var(--fg);text-align:center;max-width:720px;margin:24px 0 0;animation:rise .7s cubic-bezier(.2,.7,.2,1) 1.2s both}.hero .chips{display:flex;gap:24px;margin-top:64px;flex-wrap:wrap;justify-content:center}.hero .chip-wrap{opacity:0;transform:translateY(20px);animation:rise .6s cubic-bezier(.2,.7,.2,1) both}.hero .arrow{position:absolute;left:50%;bottom:64px;transform:translateX(-50%);width:32px;height:32px;color:var(--icon-stroke);opacity:.8;animation:arrow-in .6s cubic-bezier(.2,.7,.2,1) 1.9s both,bob 2.4s ease-in-out 2.5s infinite}@keyframes arrow-in{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:.6;transform:translate(-50%)}}@keyframes bob{0%,to{transform:translate(-50%);opacity:.5}50%{transform:translate(-50%,10px);opacity:.9}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.chip{height:48px;padding:12px 24px;border-radius:999px;background:var(--chip-bg);display:inline-flex;align-items:center;gap:10px;font:500 14px/1 var(--font-mono);color:var(--chip-fg);cursor:default;transition:transform .24s cubic-bezier(.3,.7,.3,1),box-shadow .24s ease,color .2s ease}.chip:hover{transform:translateY(-2px);box-shadow:var(--elev-1);color:var(--fg-strong)}.chip .icon{width:24px;height:24px;display:flex;align-items:center;flex:0 0 24px}.chip .icon img{width:100%;height:100%;object-fit:contain;display:block}.section{padding:96px 24px;display:flex;flex-direction:column;align-items:center;position:relative}.section .eyebrow{font:500 14px/1 var(--font-body);color:var(--fg);letter-spacing:.5px;text-transform:lowercase}.section .title{font:700 36px/1 var(--font-display);color:var(--fg-strong);margin:26px 0 64px;text-align:center}.projects{display:flex;flex-direction:column;gap:144px;width:100%;max-width:804px}.project{position:relative;width:100%;height:448px;border-radius:48px;background:var(--card-bg);box-shadow:var(--elev-1);display:grid;grid-template-columns:357px 1fr;transition:transform .32s cubic-bezier(.3,.7,.3,1),box-shadow .32s ease}.project:hover{transform:translateY(-4px);box-shadow:16px 24px 80px -16px rgba(102,217,238,.18)}.project .photo{background-size:cover;background-position:50%;border-radius:48px 0 0 48px;overflow:hidden;transition:transform .8s cubic-bezier(.3,.7,.3,1)}.project:hover .photo{transform:scale(1.04)}.project .body{padding:72px 64px 0;display:flex;flex-direction:column;gap:36px;width:319px}.project .logo img{height:64px;width:auto;display:block;max-width:96px;object-fit:contain}.project h3{font:700 32px/1 var(--font-display);color:var(--fg-strong);margin:0}.project p{font:400 15px/22px var(--font-body);color:var(--fg);margin:16px 0 0}.project a.cta{font:500 14px/1 var(--font-mono);color:var(--link);text-decoration:underline;align-self:flex-start;margin-top:36px;transition:opacity .2s ease}.project a.cta:hover{opacity:.7}.project .numeral{position:absolute;left:-107px;top:152px;width:213px;height:144px;color:var(--link);opacity:.48;pointer-events:none}.project .numeral text{stroke-dasharray:600;stroke-dashoffset:600;transition:stroke-dashoffset 1.6s cubic-bezier(.2,.7,.2,1) .2s}.project.reveal.in .numeral text{stroke-dashoffset:0}.tech-carousel{position:relative;width:100%;max-width:1440px;gap:16px;padding:0 60px}.tech-carousel,.tech-nav{display:flex;align-items:center}.tech-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:999px;border:1px solid color-mix(in oklch,var(--fg) 12%,transparent);background:var(--bg);color:var(--fg-strong);justify-content:center;cursor:pointer;z-index:3;transition:transform .2s ease,opacity .2s ease,border-color .2s ease,box-shadow .24s ease,background .2s ease}.tech-nav.prev{left:0}.tech-nav.next{right:0}.tech-nav:not(:disabled):hover{transform:translateY(-50%) scale(1.08);border-color:var(--brand-cyan);box-shadow:var(--elev-1);color:var(--link)}.tech-nav:disabled{opacity:.35;cursor:default}.tech-rail{display:flex;gap:24px;overflow-x:auto;overflow-y:visible;scroll-snap-type:x proximity;overscroll-behavior-x:contain;padding:8px 4px 24px;cursor:-webkit-grab;cursor:grab;scrollbar-width:none;-ms-overflow-style:none;width:100%;-webkit-overflow-scrolling:touch}.tech-rail::-webkit-scrollbar{display:none}.tech-rail.dragging{cursor:-webkit-grabbing;cursor:grabbing;scroll-behavior:auto;scroll-snap-type:none}.tech-rail.dragging .tech-card{pointer-events:none}.tech-slide{flex:0 0 auto;scroll-snap-align:start}.tech-card{width:344px;height:248px;padding:40px 32px;border-radius:32px;background:var(--chip-bg);display:flex;flex-direction:column;gap:20px;transition:transform .28s cubic-bezier(.3,.7,.3,1),box-shadow .28s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tech-card:hover{transform:translateY(-4px);box-shadow:var(--elev-1)}.tech-card .icon{width:74px;height:64px;display:flex;align-items:center}.tech-card .icon img{width:auto;height:64px;display:block;transition:transform .4s cubic-bezier(.3,.7,.3,1);pointer-events:none;-webkit-user-drag:none;user-drag:none}.tech-card:hover .icon img{transform:scale(1.1) rotate(-4deg)}.tech-card h4{font:700 24px/1 var(--font-display);color:var(--fg-strong);margin:0}.tech-card p{font:400 15px/22px var(--font-body);color:var(--fg);margin:4px 0 0}.about-section{padding:96px 24px;display:flex;flex-direction:column;align-items:center}.about{display:grid;grid-template-columns:270px 1fr;grid-gap:63px;gap:63px;max-width:768px;align-items:start;width:100%}.about .portrait{width:270px;height:270px;border-radius:32px;background:url(/images/portrait.webp) 50%/cover;box-shadow:var(--elev-1)}.about .copy{display:flex;flex-direction:column;gap:24px;max-width:435px}.about p{font:400 15px/22px var(--font-body);color:var(--fg);margin:0}.about a{font:500 14px/1 var(--font-mono);color:var(--link);text-decoration:underline;align-self:flex-start;transition:opacity .2s ease}.about a:hover{opacity:.7}.contact{position:relative;width:100%;min-height:964px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden;padding:120px 24px;margin-top:96px}.contact .photo{position:absolute;inset:0;background:url(/images/contact.webp) 50%/cover;z-index:0;animation:contact-drift 40s ease-in-out infinite alternate}@keyframes contact-drift{0%{transform:scale(1) translate(0)}to{transform:scale(1.08) translate(2%,-2%)}}.contact .scrim{position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.64));z-index:1}.contact .inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:36px;max-width:412px}.contact .eyebrow{font:500 14px/1 var(--font-body);color:var(--fg);letter-spacing:.5px;text-transform:lowercase}.contact .title{font:700 36px/1 var(--font-display);color:var(--fg-strong);margin:0}.contact p{font:400 15px/22px var(--font-body);color:var(--fg);margin:0}.contact a.email{font:500 14px/1 var(--font-mono);color:var(--link);text-decoration:underline;transition:opacity .2s ease}.contact a.email:hover{opacity:.7}.contact .socials{display:flex;gap:20px;margin-top:0}.contact .socials a{color:var(--fg-muted);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;transition:color .2s ease,transform .24s ease}.contact .socials a:hover{color:var(--fg-strong);transform:translateY(-2px)}.reveal{opacity:0;transform:translateY(20px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}.reveal.in{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.contact .photo,.hero .photo{animation:none!important}}@media (max-width:1080px){.nav{padding:20px 32px}.nav .menu{gap:48px}.section{padding:88px 24px}.projects{gap:112px}.project .numeral{left:-88px}}@media (max-width:720px){.nav{padding:14px 20px;height:64px}.nav.scrolled{height:56px;padding:10px 20px}.nav .menu{display:none}.nav .opts{margin-left:auto}.nav .opts img.flag,.nav .opts>button[aria-label="Toggle theme"]{display:none}.nav .opts .hamburger{display:inline-flex}.nav .lockup .word{font-size:16px}.hero{padding:120px 20px 100px;min-height:auto}.hero .lockup{gap:10px}.hero .lockup .word{font-size:30px;letter-spacing:-.5px}.hero .lockup svg{width:30px;height:44px}.hero h1{font-size:30px;line-height:1.2;margin-top:56px;max-width:100%;text-wrap:balance}.hero h1 .word-anim.hl{padding:0 4px}.hero .pitch{font-size:14px;line-height:21px}.hero .chips{gap:12px;margin-top:40px}.hero .chip{height:40px;padding:10px 16px;font-size:13px}.hero .chip .icon{width:20px;height:20px;flex-basis:20px}.hero .arrow{bottom:32px;opacity:.6}.section{padding:64px 20px}.section .eyebrow{font-size:13px}.section .title{font-size:28px;margin:18px 0 40px}.projects{gap:56px}.project{grid-template-columns:1fr;height:auto;border-radius:32px}.project .photo{border-radius:32px 32px 0 0;height:200px;transform:none!important}.project .body{padding:36px 28px;width:100%;gap:28px}.project .logo img{height:48px}.project h3{font-size:26px}.project p{font-size:14px;line-height:21px}.project a.cta{margin-top:24px}.project .numeral{display:none}.project:hover{transform:none;box-shadow:var(--elev-1)}.tech-carousel{padding:0 8px}.tech-nav{width:36px;height:36px;top:-52px;transform:none}.tech-nav.prev{left:auto;right:52px}.tech-nav.next{right:8px}.tech-nav:not(:disabled):hover{transform:scale(1.08)}.tech-rail{padding:4px 12px 24px;gap:16px}.tech-card{width:264px;height:232px;padding:28px 24px;border-radius:24px}.tech-card .icon img{height:52px}.tech-card h4{font-size:22px}.tech-card p{font-size:14px;line-height:21px}.about-section{padding:64px 20px}.about{grid-template-columns:1fr;gap:32px;justify-items:center}.about .portrait{width:240px;height:240px;border-radius:24px}.about .copy{max-width:100%;gap:20px;text-align:left;align-items:flex-start}.contact{min-height:640px;padding:80px 24px;margin-top:56px}.contact .inner{gap:24px;max-width:100%}.contact .title{font-size:28px}.contact p{font-size:14px;line-height:21px}.contact .socials{gap:16px;margin-top:8px}}@media (max-width:400px){.hero{padding:100px 16px 80px}.hero .lockup .word,.hero h1{font-size:26px}.hero h1{margin-top:40px}.hero .chips{gap:8px;margin-top:28px}.hero .chip{height:36px;padding:8px 14px;font-size:12px}.section{padding:56px 16px}.section .title{font-size:26px;margin-bottom:36px}.project .body{padding:28px 22px}.project h3{font-size:24px}.tech-card{width:240px;height:220px;padding:24px 20px}.tech-card h4{font-size:20px}.contact{padding:64px 16px}.contact .title{font-size:26px}}.xp{list-style:none;margin:0;padding:0;width:100%;max-width:804px;display:flex;flex-direction:column}.xp-item{display:grid;grid-template-columns:128px 24px 1fr;grid-gap:var(--s-5);gap:var(--s-5);align-items:start;position:relative;padding:var(--s-6) 0}.xp-item:before{content:"";position:absolute;left:calc(128px + var(--s-5) + 11px);top:0;bottom:0;width:2px;background:var(--grad-brand);opacity:.35}.xp-item:first-child:before{top:calc(var(--s-6) + 10px)}.xp-item:last-child:before{bottom:calc(100% - var(--s-6) - 10px)}.xp-years{font:var(--t-mono);color:var(--fg-muted);padding-top:6px;text-align:right;white-space:nowrap}.xp-dot{width:14px;height:14px;margin:6px auto 0;border-radius:50%;background:var(--bg);border:3px solid var(--ui-accent);position:relative;z-index:1;transition:transform .24s ease,border-color .24s ease}.xp-item--current .xp-dot{border-color:var(--ui-accent-current);box-shadow:0 0 0 6px rgba(154,226,40,.16)}.xp-item:hover .xp-dot{transform:scale(1.25)}.xp-body h3{font:var(--t-h4)}.xp-company{display:inline-block;font:var(--t-mono);color:var(--link);margin:var(--s-2) 0 var(--s-3)}.xp-body p{max-width:560px;color:var(--fg);line-height:22px}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--s-5);gap:var(--s-5);width:100%;max-width:804px;margin-bottom:var(--s-9)}.stat{display:flex;flex-direction:column;gap:var(--s-2)}.stat-num{font:var(--t-h2);font-size:44px;background:var(--grad-accent);-webkit-background-clip:text;background-clip:text;color:transparent}.stat-label{font:var(--t-mono-rg);color:var(--fg-muted);line-height:18px}.edge{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:var(--s-5);gap:var(--s-5);width:100%;max-width:1024px}.edge-card{background:var(--card-bg);border-radius:var(--r-lg);padding:var(--s-6);display:flex;flex-direction:column;gap:var(--s-3);box-shadow:var(--elev-1);transition:transform .24s ease,box-shadow .24s ease}.edge-card:hover{transform:translateY(-6px);box-shadow:24px 24px 72px -16px var(--shadow-color)}.edge-tag{font:var(--t-mono);color:var(--link)}.edge-card h4{font:var(--t-h4)}.edge-card p{color:var(--fg);line-height:22px}@media (max-width:900px){.edge{grid-template-columns:1fr;max-width:560px}.stats{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.xp-item{grid-template-columns:24px 1fr;grid-template-areas:"dot years" "dot body";gap:var(--s-2) var(--s-4);padding:var(--s-5) 0}.xp-item:before{left:11px}.xp-item:first-child:before{top:calc(var(--s-5) + 10px)}.xp-item:last-child:before{bottom:calc(100% - var(--s-5) - 10px)}.xp-years{grid-area:years;text-align:left;padding-top:8px}.xp-dot{grid-area:dot;margin:8px auto 0}.xp-body{grid-area:body}.stat-num{font-size:36px}}.drawer-controls{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-4) 0;margin-top:auto;border-top:1px solid rgba(128,128,128,.2)}.drawer-controls button{display:flex;align-items:center;gap:var(--s-3);background:none;border:none;cursor:pointer;color:var(--fg);font:var(--t-mono);padding:8px 0}.drawer-controls button:hover{color:var(--fg-strong)}.drawer-controls img.flag{border-radius:50%}.tech-card .tag{display:block;font:var(--t-mono-rg);font-size:12px;color:var(--link);margin-bottom:var(--s-2)}.project .impact{display:inline-block;font:var(--t-mono);color:var(--link);margin-top:var(--s-3)}.footer{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-6) 40px;border-top:1px solid color-mix(in oklch,var(--fg) 8%,transparent)}.footer-mark{display:flex;line-height:0}.footer-copy{font:var(--t-mono-rg);color:var(--fg-muted)}.footer-top{font:var(--t-mono);color:var(--fg-muted);text-decoration:none;transition:color .2s ease}.footer-top:hover{color:var(--link)}@media (max-width:640px){.footer{padding:var(--s-5) 20px;flex-wrap:wrap;justify-content:center;text-align:center}}.skip-link{position:fixed;top:-48px;left:16px;z-index:100;background:var(--bg-elev);color:var(--fg-strong);font:var(--t-mono);padding:12px 16px;border-radius:var(--r-md);transition:top .16s ease}.skip-link:focus-visible{top:12px}:focus-visible{outline:2px solid var(--ui-accent);outline-offset:3px;border-radius:4px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.hero .chip-wrap,.hero h1 .word-anim,.reveal{opacity:1!important;transform:none!important}}.tech-card .icon svg{display:block;transition:transform .4s cubic-bezier(.3,.7,.3,1),filter .4s ease;pointer-events:none}.tech-card:hover .icon svg{transform:translateY(-3px) scale(1.07);filter:drop-shadow(0 10px 22px var(--shadow-color))}.tech-rail{-webkit-mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,transparent,#000 28px,#000 calc(100% - 28px),transparent)}.tech-progress{-moz-user-select:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;width:min(220px,40%);height:3px;margin:20px auto 0;border-radius:var(--r-pill);background:color-mix(in oklch,var(--fg) 10%,transparent);overflow:hidden}.tech-progress span{display:block;height:100%;border-radius:var(--r-pill);background:var(--grad-brand);transform-origin:left center;transition:transform .16s ease-out}.contact,.hero{--fg:var(--ink-000);--fg-strong:var(--ink-000);--fg-muted:rgba(255,255,255,0.82);--link:var(--brand-cyan);--ui-accent:var(--brand-cyan);--icon-stroke:var(--ink-000)}.contact .scrim{background:linear-gradient(rgba(0,0,0,.4),rgba(0,0,0,.4)),linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.64))}