@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:#faf9f6;--surface:#f3f1ec;--text:#1c1c1e;--muted:#5f5f66;--border:#e7e4de;--accent:#2f5d8a;--accent-ink:#264d74;--radius:10px;--s1:8px;--s2:16px;--s3:24px;--s4:32px;--s6:48px;--s8:64px;--s12:96px;--s16:128px;--wrap:1120px;--gutter:clamp(20px, 5vw, 40px);--sans:"Geist Variable", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}.tone-blue{--tone:#2f5d8a;--tint:#e6eef6}.tone-green{--tone:#24704a;--tint:#e3f0e8}.tone-violet{--tone:#5b4bb0;--tint:#ebe8f7}.tone-amber{--tone:#9a5b0b;--tint:#f6ecdc}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:24px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}body{background:var(--bg);color:var(--text);font:400 1.0625rem/1.65 var(--sans);font-feature-settings:"ss01", "cv11";-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}img,video,picture{max-width:100%;height:auto;display:block}h1,h2,h3{letter-spacing:-.03em;text-wrap:balance;margin:0;font-weight:600;line-height:1.1}h1{letter-spacing:-.035em;font-size:clamp(2rem,4.6vw,3.25rem);line-height:1.08}h2{font-size:clamp(1.75rem,3.4vw,2.375rem)}h3{letter-spacing:-.02em;font-size:1.375rem;line-height:1.2}p{text-wrap:pretty;max-width:68ch;margin:0}a{color:var(--accent-ink);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.wrap{width:min(100% - 2 * var(--gutter), var(--wrap));margin-inline:auto}.section{padding-block:var(--s8)}.muted{color:var(--muted)}.vh{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{left:var(--s2);z-index:20;background:var(--text);color:var(--bg);border-radius:var(--radius);padding:8px 16px;position:absolute;top:-64px}.skip:focus{top:var(--s1)}.btn{border-radius:var(--radius);border:1px solid var(--border);min-height:44px;color:var(--text);background:0 0;align-items:center;padding:0 20px;font-size:.9375rem;font-weight:500;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:hover{background:var(--surface);border-color:#d6d2c9;text-decoration:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}@media (width>=900px){.section{padding-block:var(--s16)}}.bar[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:center;gap:var(--s2);min-height:64px;display:flex}.name[data-astro-cid-nen7h5rs]{white-space:nowrap;letter-spacing:-.02em;color:var(--text);font-weight:600;text-decoration:none}nav[data-astro-cid-nen7h5rs]{gap:clamp(16px,4vw,32px);font-size:.9375rem;display:flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--muted);padding-block:10px;text-decoration:none}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--text)}.hero[data-astro-cid-ge2uvauf]{padding-block:var(--s6) var(--s8)}.byline[data-astro-cid-ge2uvauf]{align-items:center;gap:var(--s2);display:flex}.byline[data-astro-cid-ge2uvauf] .avatar{object-fit:cover;border-radius:50%;width:64px;height:64px}.byline[data-astro-cid-ge2uvauf] p[data-astro-cid-ge2uvauf]{font-size:.9375rem;line-height:1.4;display:grid}.byline[data-astro-cid-ge2uvauf] strong[data-astro-cid-ge2uvauf]{font-weight:600}.byline[data-astro-cid-ge2uvauf] span[data-astro-cid-ge2uvauf]{color:var(--muted)}h1[data-astro-cid-ge2uvauf]{max-width:20ch;margin-top:var(--s6)}.lead[data-astro-cid-ge2uvauf]{margin-top:var(--s3);color:var(--muted);max-width:58ch;font-size:1.1875rem}.stats[data-astro-cid-ge2uvauf]{margin:var(--s4) 0 0;gap:var(--s2);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));max-width:760px;display:grid}.stats[data-astro-cid-ge2uvauf] div[data-astro-cid-ge2uvauf]{padding-left:var(--s2);border-left:3px solid var(--accent)}.stats[data-astro-cid-ge2uvauf] dt[data-astro-cid-ge2uvauf]{letter-spacing:-.04em;color:var(--accent-ink);font-variant-numeric:tabular-nums;font-size:clamp(1.75rem,3.4vw,2.25rem);font-weight:650;line-height:1.05}.stats[data-astro-cid-ge2uvauf] dd[data-astro-cid-ge2uvauf]{color:var(--muted);margin:4px 0 0;font-size:.875rem;line-height:1.4}.cta[data-astro-cid-ge2uvauf]{align-items:center;gap:var(--s1) var(--s3);margin-top:var(--s4);flex-wrap:wrap;display:flex}.cta[data-astro-cid-ge2uvauf] a[data-astro-cid-ge2uvauf]:not(.btn){font-weight:500}@media (width>=900px){.hero[data-astro-cid-ge2uvauf]{padding-block:var(--s12)}}.media[data-astro-cid-j6u6ogab]{margin:0}.frame[data-astro-cid-j6u6ogab]{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.frame[data-astro-cid-j6u6ogab] img,video[data-astro-cid-j6u6ogab]{width:100%;height:auto}video[data-astro-cid-j6u6ogab]{background:var(--surface)}figcaption[data-astro-cid-j6u6ogab]{margin-top:var(--s1);color:var(--muted);font-size:.875rem;line-height:1.5}.project[data-astro-cid-zwix3as3]+.project[data-astro-cid-zwix3as3]{margin-top:var(--s12)}h3[data-astro-cid-zwix3as3]{letter-spacing:-.035em;font-size:clamp(1.75rem,3.2vw,2.25rem)}.meta[data-astro-cid-zwix3as3]{margin-top:var(--s1);color:var(--muted);font-size:.9375rem}.intro[data-astro-cid-zwix3as3]{margin-top:var(--s3)}.links[data-astro-cid-zwix3as3]{margin-top:var(--s2);gap:var(--s3);font-weight:500;display:flex}.features[data-astro-cid-zwix3as3]{margin-top:var(--s8);gap:var(--s8);display:grid}.feature[data-astro-cid-zwix3as3]{gap:var(--s3);align-items:start;display:grid}.stack[data-astro-cid-zwix3as3]{margin:var(--s3) 0 0;flex-wrap:wrap;gap:6px;padding:0;list-style:none;display:flex}.stack[data-astro-cid-zwix3as3] li[data-astro-cid-zwix3as3]{border:1px solid var(--border);background:#fff;border-radius:999px;padding:4px 12px;font-size:.8125rem;font-weight:500}.eyebrow[data-astro-cid-zwix3as3]{margin-bottom:var(--s1);letter-spacing:.06em;text-transform:uppercase;color:var(--tone);align-items:center;gap:10px;font-size:.8125rem;font-weight:600;display:flex}.num[data-astro-cid-zwix3as3]{background:var(--tint);font-variant-numeric:tabular-nums;letter-spacing:0;border-radius:6px;place-items:center;min-width:28px;height:22px;padding:0 6px;display:inline-grid}.feature[data-astro-cid-zwix3as3] h4[data-astro-cid-zwix3as3]{letter-spacing:-.03em;margin:0;font-size:clamp(1.5rem,2.6vw,1.875rem);font-weight:600;line-height:1.15}.role[data-astro-cid-zwix3as3]{margin-top:var(--s1);background:var(--tint);color:var(--tone);border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:600;display:inline-block}.lede[data-astro-cid-zwix3as3]{margin-top:var(--s2);color:var(--text);font-size:1.0625rem}.fmetric[data-astro-cid-zwix3as3]{margin-top:var(--s2);align-items:baseline;gap:10px;display:flex}.fmetric[data-astro-cid-zwix3as3] strong[data-astro-cid-zwix3as3]{letter-spacing:-.04em;color:var(--tone);font-variant-numeric:tabular-nums;font-size:2.25rem;font-weight:650;line-height:1}.fmetric[data-astro-cid-zwix3as3] span[data-astro-cid-zwix3as3]{color:var(--muted);font-size:.875rem}.points[data-astro-cid-zwix3as3]{margin:var(--s2) 0 0;color:var(--muted);gap:8px;padding:0;font-size:.9375rem;line-height:1.5;list-style:none;display:grid}.points[data-astro-cid-zwix3as3] li[data-astro-cid-zwix3as3]{padding-left:22px;position:relative}.points[data-astro-cid-zwix3as3] li[data-astro-cid-zwix3as3]:before{content:"";background:var(--tone);opacity:.85;border-radius:3px;width:10px;height:10px;position:absolute;top:.45em;left:2px}.feature[data-astro-cid-zwix3as3] .media[data-astro-cid-zwix3as3] .frame{box-shadow:0 1px 2px #0000000a,0 12px 32px -12px #0000002e}.more[data-astro-cid-zwix3as3]{gap:var(--s3);margin-top:var(--s3);display:grid}.also[data-astro-cid-zwix3as3]{margin-top:var(--s12)}.also[data-astro-cid-zwix3as3]>h4[data-astro-cid-zwix3as3]{letter-spacing:-.03em;margin:0;font-size:clamp(1.5rem,3vw,2rem)}.also-intro[data-astro-cid-zwix3as3]{margin-top:var(--s1);color:var(--muted)}.group[data-astro-cid-zwix3as3]{margin-top:var(--s6)}.glabel[data-astro-cid-zwix3as3]{letter-spacing:.06em;text-transform:uppercase;color:var(--tone);align-items:center;gap:10px;margin:0;font-size:.8125rem;font-weight:600;display:flex}.glabel[data-astro-cid-zwix3as3]:after{content:"";background:var(--border);flex:1;height:1px}.group[data-astro-cid-zwix3as3] ul[data-astro-cid-zwix3as3]{margin:var(--s2) 0 0;gap:var(--s2);padding:0;list-style:none;display:grid}.card[data-astro-cid-zwix3as3]{min-width:0;padding:var(--s3);border:1px solid var(--border);border-top:3px solid var(--tone);border-radius:var(--radius);background:#fff;position:relative}.badge[data-astro-cid-zwix3as3]{top:var(--s3);right:var(--s3);background:var(--tint);color:var(--tone);border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:600;position:absolute}.metric[data-astro-cid-zwix3as3]{margin-bottom:var(--s2);gap:2px;display:grid}.metric[data-astro-cid-zwix3as3] strong[data-astro-cid-zwix3as3]{letter-spacing:-.04em;color:var(--tone);font-variant-numeric:tabular-nums;font-size:clamp(2rem,3.6vw,2.5rem);font-weight:650;line-height:1}.metric[data-astro-cid-zwix3as3] span[data-astro-cid-zwix3as3]{color:var(--muted);font-size:.8125rem}.card[data-astro-cid-zwix3as3] h6[data-astro-cid-zwix3as3]{letter-spacing:-.01em;margin:0;font-size:1.0625rem;font-weight:600}.card[data-astro-cid-zwix3as3] .body[data-astro-cid-zwix3as3]{color:var(--muted);margin-top:6px;font-size:.9375rem;line-height:1.55}.viz[data-astro-cid-zwix3as3]{margin:var(--s2) 0 0}.viz[data-astro-cid-zwix3as3] figcaption[data-astro-cid-zwix3as3]{margin-top:var(--s1);color:var(--muted);font-size:.8125rem}.bars[data-astro-cid-zwix3as3]{gap:8px;margin:0;font-size:.8125rem;display:grid}.bars[data-astro-cid-zwix3as3] div[data-astro-cid-zwix3as3]{align-items:center;gap:var(--s1);grid-template-columns:6rem 1fr;display:grid}.bars[data-astro-cid-zwix3as3] dt[data-astro-cid-zwix3as3]{color:var(--muted)}.bars[data-astro-cid-zwix3as3] dd[data-astro-cid-zwix3as3]{align-items:center;gap:var(--s1);font-variant-numeric:tabular-nums;margin:0;display:flex}.bars[data-astro-cid-zwix3as3] dd[data-astro-cid-zwix3as3] span[data-astro-cid-zwix3as3]{height:6px;width:var(--w);background:var(--tone);border-radius:3px;display:block}@media (width>=640px){.group[data-astro-cid-zwix3as3] ul[data-astro-cid-zwix3as3]{grid-template-columns:1fr 1fr}}@media (width>=900px){.group[data-astro-cid-zwix3as3].tone-green ul[data-astro-cid-zwix3as3]{grid-template-columns:repeat(3,1fr)}.card[data-astro-cid-zwix3as3]:has(.viz){column-gap:var(--s6);grid-column:1/-1;grid-template-columns:1fr 1fr;align-content:start;display:grid}.card[data-astro-cid-zwix3as3]:has(.viz) .viz[data-astro-cid-zwix3as3]{grid-area:1/2/span 3;align-self:center;margin:0}}@media (width>=600px){.more[data-astro-cid-zwix3as3]{grid-template-columns:1fr 1fr}.more[data-astro-cid-zwix3as3]>:only-child{grid-column:1/-1}}@media (width>=900px){.project[data-astro-cid-zwix3as3]+.project[data-astro-cid-zwix3as3]{margin-top:var(--s16)}.feature[data-astro-cid-zwix3as3]{gap:var(--s6);grid-template-columns:4fr 8fr;align-items:center}.feature[data-astro-cid-zwix3as3]:nth-child(2n){grid-template-columns:8fr 4fr}.feature[data-astro-cid-zwix3as3]:nth-child(2n) .text[data-astro-cid-zwix3as3]{order:2}.features[data-astro-cid-zwix3as3]{gap:var(--s12)}}.gallery-wrap[data-astro-cid-ll2x6ujy]{margin-top:var(--s12)}.text[data-astro-cid-ll2x6ujy]{max-width:40rem;margin-bottom:var(--s4)}.eyebrow[data-astro-cid-ll2x6ujy]{margin-bottom:var(--s1);letter-spacing:.06em;text-transform:uppercase;color:var(--tone);align-items:center;gap:10px;font-size:.8125rem;font-weight:600;display:flex}.num[data-astro-cid-ll2x6ujy]{background:var(--tint);font-variant-numeric:tabular-nums;letter-spacing:0;border-radius:6px;place-items:center;min-width:28px;height:22px;padding:0 6px;display:inline-grid}h4[data-astro-cid-ll2x6ujy]{letter-spacing:-.03em;margin:0;font-size:clamp(1.5rem,2.6vw,1.875rem);font-weight:600;line-height:1.15}.role[data-astro-cid-ll2x6ujy]{margin-top:var(--s1);background:var(--tint);color:var(--tone);border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:600;display:inline-block}.lede[data-astro-cid-ll2x6ujy]{margin-top:var(--s2);font-size:1.0625rem}.fmetric[data-astro-cid-ll2x6ujy]{margin-top:var(--s2);align-items:baseline;gap:10px;display:flex}.fmetric[data-astro-cid-ll2x6ujy] strong[data-astro-cid-ll2x6ujy]{letter-spacing:-.04em;color:var(--tone);font-variant-numeric:tabular-nums;font-size:2.25rem;font-weight:650;line-height:1}.fmetric[data-astro-cid-ll2x6ujy] span[data-astro-cid-ll2x6ujy]{color:var(--muted);font-size:.875rem}.gallery[data-astro-cid-ll2x6ujy]{padding:0 0 var(--s2);gap:var(--s2);scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:var(--border) transparent;margin:0;margin-inline:calc(-1 * var(--gutter));padding-inline:var(--gutter);scroll-padding-inline:var(--gutter);list-style:none;display:flex;overflow-x:auto}li[data-astro-cid-ll2x6ujy]{scroll-snap-align:start;flex:0 0 62%;max-width:260px}figure[data-astro-cid-ll2x6ujy]{margin:0}figure[data-astro-cid-ll2x6ujy] img{border:1px solid var(--border);background:var(--surface);border-radius:12px;width:100%;height:auto}figcaption[data-astro-cid-ll2x6ujy]{margin-top:var(--s1);color:var(--muted);font-size:.8125rem;line-height:1.45}.note[data-astro-cid-ll2x6ujy]{margin-top:var(--s2);color:var(--muted);font-size:.875rem}@media (width>=900px){.gallery[data-astro-cid-ll2x6ujy]{gap:var(--s2);grid-template-columns:repeat(6,1fr);margin-inline:0;padding-inline:0;display:grid;overflow:visible}li[data-astro-cid-ll2x6ujy]{max-width:none}.swipe[data-astro-cid-ll2x6ujy]{display:none}}.grid[data-astro-cid-oxgmilyn]{gap:var(--s3);display:grid}.body[data-astro-cid-oxgmilyn]{gap:var(--s2);display:grid}@media (width>=900px){.grid[data-astro-cid-oxgmilyn]{gap:var(--s6);grid-template-columns:4fr 8fr}}.contact[data-astro-cid-he3spzz3]{padding-block:var(--s8) var(--s12)}.lead[data-astro-cid-he3spzz3]{margin-top:var(--s3);color:var(--muted)}.mail[data-astro-cid-he3spzz3]{margin-top:var(--s4);letter-spacing:-.02em;overflow-wrap:anywhere;font-size:clamp(1.25rem,4.6vw,1.75rem);font-weight:500;display:inline-block}.links[data-astro-cid-he3spzz3]{gap:var(--s1) var(--s3);margin-top:var(--s3);flex-wrap:wrap;font-weight:500;display:flex}.links[data-astro-cid-he3spzz3] a[data-astro-cid-he3spzz3]{padding-block:10px}.foot[data-astro-cid-lcdefpme]{padding-block:var(--s3) var(--s4);color:var(--muted);font-size:.8125rem}.work[data-astro-cid-lcdefpme]{padding-top:var(--s8);padding-bottom:0}.projects[data-astro-cid-lcdefpme]{margin-top:var(--s6)}
