@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.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}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.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{--bg:#fff;--fg:#0a0a0a;--muted:#737373;--muted-strong:#525252;--faint:#d4d4d4;--line:#ececec;--card:#f5f5f5;--card-hover:#efefef;--gutter:80px;--ease:cubic-bezier(.16, 1, .3, 1);--radius:20px;--sans:"Geist Variable", system-ui, sans-serif;--mono:"Geist Mono Variable", ui-monospace, monospace;color-scheme:light dark;font-family:var(--sans);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}@media (prefers-color-scheme:dark){:root{--bg:#0b0b0c;--fg:#f4f4f5;--muted:#8b8b92;--muted-strong:#a1a1aa;--faint:#3a3a3f;--line:#1f1f22;--card:#141416;--card-hover:#1a1a1d}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}ul{list-style:none}::selection{background:var(--fg);color:var(--bg)}:focus-visible{outline:2px solid var(--fg);outline-offset:4px;border-radius:4px}.wrap{max-width:calc(1120px + 2 * var(--gutter));padding-inline:var(--gutter);margin:0 auto}.muted{color:var(--muted)}.mono{font-family:var(--mono);letter-spacing:0;font-variant-numeric:tabular-nums;font-size:13px}section{padding-block:72px}h2{letter-spacing:-.04em;font-size:clamp(32px,3.4vw,44px);font-weight:600;line-height:1.05}h3{letter-spacing:-.02em;font-size:20px;font-weight:600;line-height:1.25}.section-head{justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:40px;display:flex}.ul{transition:background-size .5s var(--ease);background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat}.ul:hover{background-size:100% 1px}.arrow{transition:transform .5s var(--ease);display:inline-block}a:hover .arrow{transform:translate(3px,-3px)}.menu{color:var(--muted-strong);gap:28px;font-size:15px;display:flex}.menu a{transition:color .3s}.menu a:hover{color:var(--fg)}.hero{grid-template-columns:auto 1fr;align-items:start;gap:40px;padding-block:96px 112px;display:grid}.avatar{width:140px;margin-top:-4px}.hero h1{letter-spacing:-.045em;text-wrap:balance;font-size:clamp(38px,4.3vw,56px);font-weight:600;line-height:1.05}.hero h1 .muted{color:var(--muted)}.hero p{color:var(--muted-strong);max-width:44ch;margin-top:28px;font-size:19px;line-height:1.5}.actions{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.button{background:var(--fg);height:48px;color:var(--bg);white-space:nowrap;transition:transform .4s var(--ease), background-color .3s;border-radius:999px;align-items:center;gap:8px;padding-inline:22px;font-size:15px;font-weight:500;display:inline-flex}.button:hover{transform:translateY(-2px)}.button:active{transform:scale(.97)}.button.ghost{background:var(--card);color:var(--fg)}.button.ghost:hover{background:var(--card-hover)}.work{grid-template-columns:1fr 1fr;gap:24px;display:grid}.project{flex-direction:column;gap:18px;display:flex}.project .cover{border-radius:var(--radius);background:var(--card);aspect-ratio:4/3;border:1px solid var(--line);overflow:hidden}.project .cover img{object-fit:cover;width:100%;height:100%;transition:transform 1.2s var(--ease);transform:scale(1.001)}.project:hover .cover img{transform:scale(1.045)}.project .caption{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.project .caption p{color:var(--muted);margin-top:2px;font-size:17px}.project:last-child:nth-child(odd){grid-column:1/-1;grid-template-columns:1.6fr 1fr;align-items:end;gap:32px;display:grid}.project:last-child:nth-child(odd) .caption h3{letter-spacing:-.03em;font-size:28px}.packages{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.pkg{border-radius:var(--radius);background:var(--card);min-height:176px;transition:background-color .4s, transform .5s var(--ease);flex-direction:column;gap:10px;padding:28px;display:flex}.pkg:hover{background:var(--card-hover);transform:translateY(-3px)}.pkg .top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.pkg h3{overflow-wrap:anywhere;font-size:18px}.pkg p{color:var(--muted);font-size:15px;line-height:1.5}.pkg .foot{color:var(--muted);margin-top:auto}.split{grid-template-columns:1fr 1.4fr;gap:64px;display:grid}.split .sticky{align-self:start;position:sticky;top:48px}.split .sticky p{color:var(--muted);max-width:28ch;margin-top:14px;font-size:17px}.list>li{border-top:1px solid var(--line);padding-block:28px}.list>li:first-child{border-top:0;padding-top:0}.list .top{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.list .role{color:var(--muted-strong);margin-top:4px;font-weight:500}.list p{color:var(--muted);max-width:58ch;margin-top:10px;font-size:16px;line-height:1.55}.about .lead{letter-spacing:-.03em;view-timeline-name:--about;max-width:26ch;font-size:clamp(26px,3vw,40px);font-weight:500;line-height:1.25}.about .cols{color:var(--muted-strong);grid-template-columns:1fr 1fr;gap:40px;margin-top:56px;font-size:17px;line-height:1.6;display:grid}.timeline li{border-top:1px solid var(--line);grid-template-columns:140px 1fr auto;align-items:baseline;gap:24px;padding-block:22px;display:grid}.timeline li:last-child{border-bottom:1px solid var(--line)}.timeline h3{transition:transform .5s var(--ease)}.timeline li:hover h3{transform:translate(6px)}.timeline .role{color:var(--muted)}.services{grid-template-columns:repeat(3,1fr);gap:0 24px;display:grid}.services li{border-top:1px solid var(--line);letter-spacing:-.015em;padding-block:22px;font-size:18px;font-weight:500}.cta{text-align:center;flex-direction:column;align-items:center;gap:28px;padding-block:140px;display:flex}.cta h2{letter-spacing:-.05em;max-width:14ch;font-size:clamp(40px,6vw,80px)}.cta .email{letter-spacing:-.03em;font-size:clamp(22px,2.6vw,32px);font-weight:500}footer{border-top:1px solid var(--line);padding-block:32px 48px}footer .wrap{color:var(--muted);justify-content:space-between;align-items:center;gap:24px;font-size:15px;display:flex}footer .menu a:hover{color:var(--fg)}@media (prefers-reduced-motion:no-preference){@keyframes rise{0%{opacity:0;filter:blur(10px);transform:translateY(.35em)}}.hero .word{animation:rise 1s var(--ease) both;animation-delay:calc(80ms + var(--i) * 35ms);display:inline-block}.hero .fade{animation:rise 1s var(--ease) both;animation-delay:var(--d)}html.js [data-reveal]{opacity:0;filter:blur(6px);transition:opacity 1s var(--ease), transform 1.1s var(--ease), filter 1s var(--ease);transition-delay:var(--d,0s);transform:translateY(28px)}html.js [data-reveal].in{opacity:1;filter:none;transform:none}@supports (animation-timeline:view()){@keyframes ink{0%{color:var(--faint)}to{color:var(--fg)}}.about .lead .w{animation:linear both ink}.about .lead>.w{animation-timeline:--about}}}@media (width<=860px){:root{--gutter:24px}section{padding-block:56px}.menu{gap:18px;font-size:14px}.hero{grid-template-columns:minmax(0,1fr);gap:28px;padding-block:56px 72px}.avatar{width:96px;margin-top:0}.work,.packages,.split,.about .cols,.services{grid-template-columns:minmax(0,1fr)}.split{gap:32px}.split .sticky{position:static}.timeline li{grid-template-columns:1fr;gap:4px}.project:last-child:nth-child(odd){grid-template-columns:minmax(0,1fr);gap:18px}.project:last-child:nth-child(odd) .caption h3{font-size:20px}.cta{padding-block:96px}footer .wrap{flex-direction:column;align-items:flex-start}}
