@layer astro.images{:where([data-astro-image]){height:auto}:where([data-astro-image=full-width]){width:100%}:where([data-astro-image=constrained]){max-width:100%}[data-astro-image-fit=fill]{object-fit:fill}[data-astro-image-fit=contain]{object-fit:contain}[data-astro-image-fit=cover]{object-fit:cover}[data-astro-image-fit=scale-down]{object-fit:scale-down}[data-astro-image-pos=top]{object-position:top}[data-astro-image-pos=bottom]{object-position:bottom}[data-astro-image-pos=left]{object-position:left}[data-astro-image-pos=right]{object-position:right}[data-astro-image-pos=center]{object-position:center}[data-astro-image-pos=top-left]{object-position:top left}[data-astro-image-pos=top-right]{object-position:top right}[data-astro-image-pos=top-center]{object-position:top center}[data-astro-image-pos=bottom-left]{object-position:bottom left}[data-astro-image-pos=bottom-right]{object-position:bottom right}[data-astro-image-pos=bottom-center]{object-position:bottom center}[data-astro-image-pos=left-top]{object-position:left top}[data-astro-image-pos=left-bottom]{object-position:left bottom}[data-astro-image-pos=left-center]{object-position:left center}[data-astro-image-pos=right-top]{object-position:right top}[data-astro-image-pos=right-bottom]{object-position:right bottom}[data-astro-image-pos=right-center]{object-position:right center}[data-astro-image-pos=center-top]{object-position:center top}[data-astro-image-pos=center-bottom]{object-position:center bottom}[data-astro-image-pos=center-left]{object-position:center left}[data-astro-image-pos=center-right]{object-position:center right}}@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}:root{--bg:#fff;--text:#000;--text-body:#454545;--text-muted:#6b6b6b;--surface:#f5f5f5;--border:#ececec;--btn-secondary:#e6e6e6;--btn-secondary-hover:#dcdcdc;--btn-secondary-text:#000;--btn-primary-bg:linear-gradient(#000 0%, #404246 100%);--btn-primary-text:#fff;--text-strong:#171717;--text-soft:#222;--text-faint:#a3a3a3;--dotted:#9a9a9a;--surface-hover:#eee;--card:#eee;--card-media:#fff;--badge-bg:#fff;--badge-text:#000;--elevated:#fff;--header-bg:#ffffffd1;--logo-ring:transparent;color-scheme:light;--font:"Geist Variable", Geist, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--gutter:clamp(20px, 5.5vw, 80px);--page:1280px;--wide:1120px;--media:960px;--prose:800px;--section:clamp(88px, 12vw, 176px);--radius:clamp(12px, 1.6vw, 20px);--header-h:96px;--ease:cubic-bezier(.2, .7, .2, 1)}:root[data-theme=dark]{--bg:#000;--text:#fff;--text-strong:#f2f2f2;--text-soft:#e6e6e6;--text-body:#b8b8b8;--text-muted:#8f8f8f;--text-faint:#5c5c5c;--surface:#141414;--surface-hover:#1c1c1c;--card:#161616;--card-media:#0a0a0a;--border:#262626;--dotted:#6b6b6b;--btn-secondary:#232323;--btn-secondary-hover:#2e2e2e;--btn-secondary-text:#fff;--btn-primary-bg:linear-gradient(#fff 0%, #d9d9d9 100%);--btn-primary-text:#000;--elevated:#141414;--header-bg:#000000b8;--logo-ring:#ffffff29;color-scheme:dark}.theme-switching *,.theme-switching :before,.theme-switching :after{transition:none!important}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:var(--header-h)}body{background:var(--bg);color:var(--text);font-family:var(--font);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.5}h1,h2,h3,p,ul,ol,dl,dd,figure,blockquote{margin:0}h1,h2,h3{text-wrap:balance;font-weight:500}p,li{text-wrap:pretty}img,video{max-width:100%;height:auto;display:block}a{color:inherit}:focus-visible{outline:2px solid var(--text);outline-offset:3px;border-radius:4px}.skip-link{z-index:100;background:var(--text);color:var(--bg);border-radius:10px;padding:10px 16px;text-decoration:none;position:absolute;top:-100px;left:16px}.skip-link:focus{top:16px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@view-transition{navigation:auto}.link-dotted{color:var(--text-soft);text-decoration:underline dotted var(--dotted);text-underline-offset:6px;text-decoration-thickness:2px;transition:color .2s,text-decoration-color .2s}.link-dotted:hover{color:var(--text);text-decoration-color:var(--text)}.btn{letter-spacing:-.01em;white-space:nowrap;height:48px;transition:background-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease);border-radius:10px;justify-content:center;align-items:center;padding:0 16px;font-size:16px;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.98)}.btn--secondary{background:var(--btn-secondary);color:var(--btn-secondary-text)}.btn--secondary:hover{background:var(--btn-secondary-hover)}.btn--primary{background:var(--btn-primary-bg);color:var(--btn-primary-text);padding:0 24px;box-shadow:0 .48px .34px -.63px #0000000d,0 4px 2.8px -1.25px #0000001c}.btn--primary:hover{transform:translateY(-1px);box-shadow:0 1px 1px -.5px #0000001a,0 8px 14px -4px #00000040}.btn__short{display:none}.theme-toggle{width:40px;height:40px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;transition:color .2s,background-color .2s;display:grid}.theme-toggle:hover{background:var(--surface);color:var(--text)}.theme-toggle__sun,:root[data-theme=dark] .theme-toggle__moon{display:none}:root[data-theme=dark] .theme-toggle__sun{display:block}.site-header{z-index:10;background:var(--header-bg);backdrop-filter:saturate(1.6)blur(14px);position:sticky;top:0}.site-header__inner{max-width:calc(var(--page) + var(--gutter) * 2);min-height:var(--header-h);padding:16px var(--gutter);justify-content:space-between;align-items:center;gap:16px;margin-inline:auto;display:flex}.site-header__home{border-radius:100px;align-items:center;gap:14px;text-decoration:none;display:inline-flex}.avatar{object-fit:cover;border-radius:50%;width:40px;height:40px}.site-header__back{letter-spacing:-.02em;align-items:center;gap:6px;font-size:16px;display:inline-flex}.site-header__back svg{transition:transform .2s var(--ease)}.site-header__home:hover .site-header__back svg{transform:translate(-3px)}.site-header__actions{align-items:center;gap:16px;display:flex}@media (width<=599.98px){:root{--header-h:72px}.site-header__actions{gap:8px}.btn{height:44px;font-size:15px}.btn--primary{padding:0 16px}.btn__long{display:none}.btn__short{display:inline}.site-header__back{gap:0;font-size:0}}.site-footer{margin-top:var(--section);border-top:1px solid var(--border)}.site-footer__inner{max-width:calc(var(--page) + var(--gutter) * 2);padding:32px var(--gutter);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;margin-inline:auto;font-size:15px;display:flex}.site-footer ul{flex-wrap:wrap;gap:12px 24px;padding:0;list-style:none;display:flex}.container{width:100%;max-width:calc(var(--wide) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.container--prose{max-width:calc(var(--prose) + var(--gutter) * 2)}.section{margin-top:var(--section)}.section-title{letter-spacing:-.03em;text-align:center;margin-bottom:clamp(40px,6vw,88px);font-size:clamp(24px,1.1rem + 1.4vw,32px);line-height:1.4}.hero{text-align:center;padding-top:clamp(16px,4vw,56px)}.hero+.section{margin-top:clamp(48px,6vw,80px)}.hero__media{aspect-ratio:16/9;width:100%;max-width:clamp(260px,177.778svh - 764.444px,640px);margin-inline:auto}.hero__media video,.hero__media img{object-fit:cover;-webkit-mask-composite:source-in;width:100%;height:100%;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000),linear-gradient(#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000),linear-gradient(#0000,#000 8% 92%,#0000);mask-composite:intersect}.hero__title{letter-spacing:-.03em;max-width:800px;margin:clamp(16px,3vw,32px) auto 0;font-size:clamp(22px,1rem + 1.6vw,32px);line-height:1.65}.companies{margin-top:clamp(28px,4vw,44px)}.companies__label{color:var(--text-muted);font-size:16px;line-height:1.4}.companies__name{color:var(--text)}.companies__list{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px;padding:0;list-style:none;display:flex}.companies__item{cursor:pointer;transition:transform .2s var(--ease);background:0 0;border:0;border-radius:8px;padding:0;display:block}.companies__item img{width:35px;height:35px;box-shadow:0 0 0 1px var(--logo-ring);filter:grayscale();opacity:.45;transition:filter .2s var(--ease), opacity .2s var(--ease);border-radius:8px}.companies__item.is-active{transform:translateY(-2px)}.companies__item.is-active img{filter:none;opacity:1}.scroll-hint{border:1px solid var(--border);background:var(--elevated);color:var(--text-body);pointer-events:none;transition:opacity .35s var(--ease), transform .35s var(--ease);border-radius:100px;align-items:center;gap:8px;margin-top:clamp(24px,3.5vw,40px);padding:10px 16px 10px 14px;font-size:14px;font-weight:500;line-height:1;display:inline-flex;box-shadow:0 6px 20px -8px #0000002e}.scroll-hint.is-hidden{opacity:0;transform:translateY(8px)}.scroll-hint svg{animation:1.6s ease-in-out infinite scroll-hint-bob}@keyframes scroll-hint-bob{0%,to{transform:translateY(-2px)}50%{transform:translateY(3px)}}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(16px,2.2vw,24px);padding:0;list-style:none;display:grid}.work-card{background:var(--card);border-radius:20px;flex-direction:column;gap:10px;height:100%;padding:4px 4px 16px;text-decoration:none;display:flex}.work-card__media{aspect-ratio:374/320;background:var(--card-media);border-radius:20px;position:relative;overflow:hidden}.work-card__media img,.work-card__media video{object-fit:cover;width:100%;height:100%;transition:transform .6s var(--ease)}.work-card__badge{z-index:1;background:var(--badge-bg);color:var(--badge-text);letter-spacing:0;white-space:nowrap;border-radius:8px;padding:4px;font-size:14px;font-weight:400;line-height:normal;position:absolute;top:12px;right:12px}.work-card__arrow{color:#000;opacity:0;width:44px;height:44px;transition:opacity .25s var(--ease), transform .25s var(--ease);background:#ffffffe6;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:12px;right:12px;transform:translateY(8px)scale(.9);box-shadow:0 4px 16px #0000001f}.work-card__title{color:var(--text);letter-spacing:0;padding-inline:12px;font-size:18px;font-weight:500;line-height:normal}@media (hover:hover){.work-card:hover .work-card__media img,.work-card:hover .work-card__media video{transform:scale(1.03)}.work-card:hover .work-card__arrow{opacity:1;transform:none}}.work-card:focus-visible .work-card__arrow{opacity:1;transform:none}@media (width<=809.98px){.work-grid{grid-template-columns:1fr}}.experience{gap:clamp(32px,4vw,40px);padding:0;list-style:none;display:grid}.experience__role{letter-spacing:-.03em;flex-wrap:wrap;align-items:center;gap:2px 8px;font-size:clamp(18px,1rem + .4vw,20px);line-height:1.4;display:flex}.experience__company{align-items:center;gap:6px;display:inline-flex}.experience__company img{width:24px;height:24px;box-shadow:0 0 0 1px var(--logo-ring);border-radius:6px}.experience__desc,.experience__period{color:var(--text-muted);letter-spacing:-.03em;line-height:2}.experience__desc{margin-top:8px}.experience__period{font-variant-numeric:tabular-nums;margin-top:4px}.case{padding-top:clamp(16px,4vw,40px)}.case__inner{width:100%;max-width:calc(var(--media) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.case__cover{box-shadow:0 0 0 1px var(--logo-ring);border-radius:var(--radius);background:var(--surface);aspect-ratio:2.4;overflow:hidden}.case__cover img{object-fit:cover;width:100%;height:100%}.case__head{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px 48px;margin-top:clamp(32px,5vw,64px);display:grid}.case__title{letter-spacing:-.03em;font-size:clamp(26px,1.2rem + 1.5vw,36px);line-height:1.25}.case__meta{color:var(--text-body);text-align:right;align-content:start;justify-items:end;gap:4px;line-height:1.75;display:grid}.case__meta div{gap:6px;display:flex}.case__meta dt:after{content:":"}@media (width<=809.98px){.case__cover{aspect-ratio:2}.case__head{grid-template-columns:1fr}.case__meta{text-align:left;justify-items:start}}.prose{grid-template-columns:minmax(0, 1fr) minmax(0, var(--prose)) minmax(0, 1fr);color:var(--text-body);letter-spacing:-.015em;margin-top:clamp(24px,4vw,48px);font-size:clamp(16px,.95rem + .15vw,17px);line-height:1.9;display:grid}.prose>*{grid-column:2}.prose>:is(p:has(>img:only-child),figure,.media){grid-column:1/-1;margin-block:clamp(20px,3vw,32px)}.prose :is(img,video){border-radius:var(--radius);background:var(--surface);width:100%}.prose h2{color:var(--text);letter-spacing:-.03em;scroll-margin-top:var(--header-h);margin-top:clamp(72px,10vw,136px);margin-bottom:20px;font-size:clamp(22px,1.1rem + .7vw,28px);line-height:1.3}.prose h2.divider{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;grid-column:1/-1;align-items:center;gap:24px;margin-bottom:0;font-size:14px;font-weight:500;display:flex}.prose h2.divider:before,.prose h2.divider:after{content:"";background:var(--border);flex:1;height:1px}.prose h2.divider+h2{margin-top:clamp(48px,6vw,80px)}.prose h3{color:var(--text-strong);font-size:inherit;line-height:inherit;letter-spacing:inherit;margin-top:32px;margin-bottom:4px}.prose h2+h3{margin-top:0}.prose :is(p,ul,ol,blockquote)+:is(p,ul,ol,blockquote){margin-top:16px}.prose :is(ul,ol){padding-left:1.25em}.prose li::marker{color:var(--text-faint)}.prose li+li{margin-top:2px}.prose .btn{margin-top:8px}.prose strong{color:var(--text-strong);font-weight:500}.prose code{background:var(--surface);letter-spacing:0;border-radius:6px;padding:.15em .45em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}.prose blockquote{border-left:2px solid var(--border);color:var(--text);padding-left:20px}.prose blockquote p+p{margin-top:4px}.prose .stats{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:24px;padding:0;list-style:none;display:grid}.prose .stats li{border-radius:var(--radius);background:var(--surface);margin:0;padding:24px;line-height:1.6}.prose .stats strong{color:var(--text);letter-spacing:-.03em;margin-bottom:6px;font-size:clamp(26px,1.2rem + 1.2vw,34px);line-height:1.15;display:block}@media (width<=599.98px){.prose .stats{grid-template-columns:1fr}}.next-case{margin-top:var(--section);border-radius:var(--radius);background:var(--surface);transition:background-color .2s var(--ease);justify-content:space-between;align-items:center;gap:24px;padding:clamp(24px,4vw,40px);text-decoration:none;display:flex}.next-case:hover{background:var(--surface-hover)}.next-case__label{color:var(--text-muted);font-size:15px}.next-case__title{letter-spacing:-.03em;margin-top:4px;font-size:clamp(20px,1rem + .9vw,26px);font-weight:500;line-height:1.3}.next-case svg{transition:transform .25s var(--ease);flex:none}.next-case:hover svg{transform:translate(4px)}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.reveal{animation:linear both reveal view();animation-range:entry entry 35%}@keyframes reveal{0%{opacity:0;transform:translateY(24px)}}}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
