@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/newsreader-vietnamese-400-normal-DdKr49mV.woff2)format("woff2"),url(/assets/newsreader-vietnamese-400-normal-BekUZro8.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/newsreader-latin-ext-400-normal-svq1FPys.woff2)format("woff2"),url(/assets/newsreader-latin-ext-400-normal-DYA1XoQK.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/newsreader-latin-400-normal-BFBkh4jY.woff2)format("woff2"),url(/assets/newsreader-latin-400-normal-gRTjlS2D.woff)format("woff");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:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/newsreader-vietnamese-400-italic-bZegYFuM.woff2)format("woff2"),url(/assets/newsreader-vietnamese-400-italic-QbB8kb5s.woff)format("woff");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:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/newsreader-latin-ext-400-italic-BMTE_bNQ.woff2)format("woff2"),url(/assets/newsreader-latin-ext-400-italic-qdgKLcPG.woff)format("woff");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:Newsreader;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/newsreader-latin-400-italic-CEihAR-f.woff2)format("woff2"),url(/assets/newsreader-latin-400-italic-CNZoH1hn.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/newsreader-vietnamese-500-normal-CL6a8tp2.woff2)format("woff2"),url(/assets/newsreader-vietnamese-500-normal-BEAbKU8A.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/newsreader-latin-ext-500-normal-BNHmvKvI.woff2)format("woff2"),url(/assets/newsreader-latin-ext-500-normal-CZruMFou.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/newsreader-latin-500-normal-B66TYsaK.woff2)format("woff2"),url(/assets/newsreader-latin-500-normal-DFwuUcdu.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/newsreader-vietnamese-600-normal-CaH84vfx.woff2)format("woff2"),url(/assets/newsreader-vietnamese-600-normal-CVAR0otO.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/newsreader-latin-ext-600-normal-BXv5iMHi.woff2)format("woff2"),url(/assets/newsreader-latin-ext-600-normal-BrbfzHZ5.woff)format("woff");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:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/newsreader-latin-600-normal-30OJ_TG_.woff2)format("woff2"),url(/assets/newsreader-latin-600-normal-DUnT2r2g.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff)format("woff");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:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff");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: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+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: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+??,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: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+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: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+??,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{--accent:#007aff;--accent-soft:#eaf3ff;--bg:#fff;--bg-warm:#f5f4f0;--text:#16181d;--text-muted:#6b6f76;--text-faint:#9a9da3;--border:#e7e6e2;--placeholder:#d9d9d9;--radius-lg:14px;--radius-md:10px;--radius-sm:6px;--font-serif:"Newsreader", Georgia, "Times New Roman", serif;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"SFMono-Regular", ui-monospace, Consolas, "Liberation Mono", Menlo, monospace;--font-editorial:"Editorial Today", "Newsreader", Georgia, serif;--font-editorial-italic:"Instrument Serif", "Newsreader", Georgia, serif;--content-width:1160px;--page-padding:72px;--page-padding-mobile:32px}@font-face{font-family:Editorial Today;src:url(/fonts/editorial-new/EditorialToday-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{flex-direction:column;min-height:100vh;display:flex}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font-family:inherit}p{margin:0}.page{flex:1;width:100%}.logo{color:var(--accent);align-items:center;line-height:0;transition:opacity .15s;display:inline-flex}.logo:hover{opacity:.75}.logo__mark{object-fit:contain;width:96px;height:96px}.nav{width:100%}.nav__inner{justify-content:space-between;align-items:center;padding:32px 0;display:flex}.nav__stack{display:contents}.nav__links{align-items:center;gap:44px;display:flex}.nav__link{color:var(--text);padding-bottom:10px;font-size:17px;position:relative}.nav__link--active{color:var(--text)}.nav__squiggle{color:var(--accent);opacity:0;transition:opacity .2s;position:absolute;bottom:-4px;left:50%;overflow:visible;transform:translate(-50%)}.nav__squiggle path{stroke-dasharray:1;stroke-dashoffset:1px;transition:stroke-dashoffset .45s}.nav__link:hover .nav__squiggle,.nav__link--active .nav__squiggle{opacity:1}.nav__link:hover .nav__squiggle path,.nav__link--active .nav__squiggle path{stroke-dashoffset:0}@media (width<=900px){.nav__inner{padding:24px 0}.nav__links{gap:24px}.nav__link{font-size:15px}}@media (width>=901px){.nav{flex:none;align-self:flex-start;width:auto;position:sticky;top:48px}.nav__inner{flex-direction:column;align-items:flex-start;gap:64px;padding:48px 0}.nav__links{flex-direction:column;align-items:flex-start;gap:4px}.nav__stack{flex-direction:column;align-items:flex-start;gap:24px;display:flex}}.site-footer{width:100%;margin-top:80px}.site-footer__inner{max-width:var(--content-width);padding:28px var(--page-padding);color:var(--text-faint);justify-content:space-between;align-items:center;margin:0 auto;font-size:13px;display:flex}@media (width<=900px){.site-footer__inner{padding:20px var(--page-padding-mobile);text-align:center;flex-direction:column;gap:6px}}.img-slot{object-fit:cover;width:100%;height:100%}.img-slot--rounded{border-radius:var(--radius-lg)}.img-slot--placeholder{background:var(--placeholder)}.tag{letter-spacing:.02em;color:var(--text-muted);background:var(--bg-warm);border:1px solid var(--border);border-radius:5px;padding:3px 8px;font-size:11px;display:inline-block}.work-page{padding-top:160px;padding-bottom:60px}.work-page__heading{font-family:var(--font-editorial);max-width:720px;margin:0 0 24px;font-size:44px;font-weight:400;line-height:1.25}.work-page__heading em{font-family:var(--font-editorial-italic);font-style:italic;font-weight:400}.work-page__highlight{color:#007aff;background:#007aff1f;border-radius:6px;padding:0 6px}.work-page__icon{vertical-align:middle;display:inline-block}.work-page__icon--wrench{transform-origin:50%;width:34px;height:34px;margin-top:-6px;animation:8s ease-in-out infinite work-page-wrench-turn}@keyframes work-page-wrench-turn{0%{transform:rotate(0)}12.5%{transform:rotate(30deg)}50%{transform:rotate(30deg)}62.5%{transform:rotate(0)}to{transform:rotate(0)}}.work-page__icon--star{width:28px;height:28px;margin-top:-4px}.work-page__subtext{max-width:440px;color:var(--text-muted);margin-bottom:40px;font-size:15px;line-height:1.6}.work-page__divider{border:none;border-top:1px solid var(--border);margin:0 0 48px}.work-page__grid{grid-template-columns:1fr 1fr;gap:40px;display:grid}.work-page__column{flex-direction:column;gap:48px;display:flex}.work-page__column--offset{margin-top:96px}.project-card{display:block}.project-card__image{aspect-ratio:4/3;border-radius:var(--radius-lg);margin-bottom:16px;overflow:hidden}.project-card__image>*{transition:transform .45s}.project-card:hover .project-card__image>*{transform:scale(1.08)}.project-card__title{font-family:var(--font-serif);color:var(--text-faint);margin:0 0 6px;font-size:17px;font-weight:500}.project-card__tagline{font-family:var(--font-serif);color:var(--text);margin-bottom:10px;font-size:17px;line-height:1.4}.project-card__tags{flex-wrap:wrap;gap:6px;display:flex}@media (width<=720px){.work-page{padding-top:64px}.work-page__heading{font-size:32px}.work-page__icon--wrench{width:26px;height:26px;margin-top:-4px}.work-page__icon--star{width:22px;height:22px;margin-top:-3px}.work-page__grid{grid-template-columns:1fr;gap:48px}.work-page__column--offset{margin-top:0}}.flip-card{flex-direction:column;align-items:center;gap:10px;width:170px;display:flex}.flip-card__label{font-family:var(--font-serif);color:var(--text);font-size:15px;font-weight:600}.flip-card__frame{cursor:pointer;perspective:1000px;width:170px;height:190px;transform:rotate(var(--rotate));background:0 0;border:none;padding:0;transition:transform .2s}.flip-card__frame:hover{transform:rotate(0)scale(1.03)}.flip-card__inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s;position:relative;box-shadow:0 6px 18px #0000001f}.flip-card__inner--flipped{transform:rotateY(180deg)}.flip-card__face{backface-visibility:hidden;background:#fff;border:6px solid #fff;position:absolute;inset:0;overflow:hidden}.flip-card__face--back{background:var(--bg-warm);justify-content:center;align-items:center;padding:16px;display:flex;transform:rotateY(180deg)}.flip-card__face--back p{color:var(--text-muted);text-align:center;font-size:13px}.typewriter{display:inline-block}.typewriter__cursor{vertical-align:text-bottom;background:currentColor;width:2px;height:.9em;margin-left:2px;animation:1s step-end infinite typewriter-blink;display:inline-block}@keyframes typewriter-blink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.typewriter__cursor{animation:none}}.about-page{padding-top:160px;padding-bottom:60px}.about-hero{padding-bottom:32px}.about-hero__heading{font-family:var(--font-editorial);max-width:720px;margin:0;font-size:44px;font-weight:400;line-height:1.25}.about-hero__heading em{font-family:var(--font-editorial-italic);font-style:italic;font-weight:400}.about-hero__glyphs{color:var(--text-faint);font-size:20px;font-family:var(--font-sans)}.about-hero__facts{margin-top:-10px;font-size:30px;display:inline-block}.about-divider{border:none;border-top:1px solid var(--border);margin:0 0 56px}.about-intro{grid-template-columns:300px 1fr;align-items:start;gap:56px;margin-bottom:80px;display:grid}.about-intro__photo{border-radius:50%;width:300px;height:300px;overflow:hidden}.about-intro__photo .img-slot{border-radius:50%}.about-intro__bio{color:var(--text);max-width:460px;margin-bottom:24px;font-size:16px;line-height:1.7}.about-contact{background:var(--bg-warm);border-radius:var(--radius-md);max-width:460px;overflow:hidden}.about-contact__row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;font-size:13px;display:flex}.about-contact__row:first-child{border-top:none}.about-contact__label{color:var(--text);font-weight:600}.about-contact__value{color:var(--text-faint);align-items:center;gap:6px;display:inline-flex}.about-contact__icon{font-size:12px}.about-communities{margin-bottom:80px}.about-communities__heading{margin-bottom:28px}.about-communities__heading h2{font-family:var(--font-serif);margin:0 0 6px;font-size:24px;font-weight:500}.about-communities__hint{color:var(--text-faint);font-size:12px;font-weight:600;display:block}.about-communities__row{flex-wrap:wrap;gap:28px;display:flex}.about-outro{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:40px 0;display:flex}.about-outro__stack{flex-direction:row;flex-shrink:0;align-items:flex-end;gap:16px;display:flex}.about-outro__text{font-family:var(--font-serif);color:var(--text-muted);font-size:15px;font-style:italic}.about-outro__graphic{width:130px;height:90px}.about-outro__graphic:nth-child(odd){margin-bottom:28px}@media (width>=901px){.about-communities__row{flex-wrap:nowrap;gap:16px}.flip-card{flex:1 1 0;width:auto;min-width:0}.flip-card__frame{width:100%;height:170px}}@media (width<=760px){.about-page{padding-top:64px}.about-hero__heading{font-size:32px}.about-hero__facts{font-size:22px}.about-intro{grid-template-columns:1fr}.about-intro__photo{width:200px;height:200px}}.resume-page{padding-top:12px;padding-bottom:80px}.resume-card{background:var(--bg-warm);border-radius:var(--radius-lg);max-width:900px;margin:0 auto;overflow:hidden}.resume-card__header{justify-content:space-between;align-items:flex-start;padding:36px 40px 28px;display:flex}.resume-card__name{font-family:var(--font-serif);margin:0 0 6px;font-size:28px;font-weight:600}.resume-card__subtitle{color:var(--text-muted);margin-bottom:2px;font-size:13px}.resume-card__contact{color:var(--text-faint);font-size:13px}.resume-card__summary{color:var(--text-muted);max-width:620px;margin:0;font-size:14px;line-height:1.6}.resume-card__download{background:var(--accent);color:#fff;letter-spacing:.04em;white-space:nowrap;border-radius:999px;flex-shrink:0;padding:10px 18px;font-size:11px;font-weight:600}.resume-card__section{border-top:1px solid var(--border);grid-template-columns:140px 1fr;gap:24px;padding:28px 40px;display:grid}.resume-card__label{letter-spacing:.08em;color:var(--text-faint);text-transform:uppercase;padding-top:2px;font-size:11px;font-weight:600}.resume-card__content{flex-direction:column;gap:24px;display:flex}.resume-entry__row{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:6px;display:flex}.resume-entry__title{font-family:var(--font-serif);margin:0;font-size:17px;font-weight:500}.resume-entry__link{color:var(--accent)}.resume-entry__org{color:var(--text)}.resume-entry__extra{color:var(--text-muted);font-weight:400}.resume-entry__date{color:var(--text-faint);white-space:nowrap;font-size:12px}.resume-entry__description{color:var(--text-muted);max-width:620px;font-size:14px;line-height:1.6}.resume-card__skills{flex-flow:wrap;gap:8px}@media (width<=720px){.resume-card__header{flex-direction:column;gap:16px;padding:28px 24px 24px}.resume-card__section{grid-template-columns:1fr;gap:10px;padding:24px}.resume-entry__row{flex-direction:column;gap:4px}}.lightbox{z-index:100;cursor:zoom-out;background:#0a0a0cd9;justify-content:center;align-items:center;padding:40px;display:flex;position:fixed;inset:0}.lightbox__frame{aspect-ratio:4/3;cursor:default;width:100%;max-width:min(900px,90vw);max-height:85vh}.lightbox__close{color:#fff;cursor:pointer;background:0 0;border:none;padding:8px;font-size:32px;line-height:1;position:absolute;top:24px;right:32px}.play-page{padding-top:40px;padding-bottom:80px}.play-grid{column-count:3;column-gap:32px}.play-grid__item{break-inside:avoid;cursor:pointer;border-radius:var(--radius-lg);width:100%;animation:.65s linear backwards play-grid-drop;animation-delay:calc(var(--i,0) * .22s);background:0 0;border:none;margin-bottom:32px;padding:0;display:block;position:relative;overflow:hidden}@keyframes play-grid-drop{0%{opacity:0;transform:translateY(-140px)scale(.9)}30%{opacity:1;transform:translateY(18px)scale(1.05)}48%{transform:translateY(-20px)scale(.96)}66%{transform:translateY(9px)scale(1.02)}84%{transform:translateY(-3px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.play-grid__item{animation:none}}.play-grid__item .img-slot{transition:transform .35s}.play-grid__item:hover .img-slot,.play-grid__item:focus-visible .img-slot{transform:scale(1.04)}.play-grid__tooltip{pointer-events:none;color:#fff;z-index:20;background:#0a0a0ce0;border-radius:8px;max-width:240px;padding:8px 12px;font-size:13px;line-height:1.4;position:fixed;transform:translate(18px,18px)}@media (width<=900px){.play-grid{column-count:2}}@media (width<=560px){.play-grid{column-count:1}}.carousel{justify-content:center;align-items:center;gap:20px;margin-top:8px;display:flex}.carousel__body{flex-direction:column;align-items:center;gap:14px;display:flex}.carousel__frame{cursor:grab;touch-action:pan-y;border-radius:32px;flex:none;width:100%;overflow:hidden}.carousel__frame:active{cursor:grabbing}.carousel__track{width:100%;height:100%;display:flex}.carousel__slide{box-sizing:border-box;flex:0 0 100%;justify-content:center;align-items:center;gap:16px;width:100%;height:100%;padding:12px;display:flex}.carousel__image{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;border-radius:20px;flex:0 auto;width:auto;max-width:100%;height:100%;display:block}.carousel__placeholder{background:var(--placeholder);border-radius:20px;flex:auto;width:0;max-width:100%;height:100%}.carousel__note{color:#4a4520;text-align:left;background:#fff6a8;border-radius:4px;flex:0 0 200px;padding:14px 16px;transform:rotate(-2deg);box-shadow:0 4px 10px #0000002e}.carousel__note-title{margin:0 0 6px;font-size:14px;font-weight:700;line-height:1.3}.carousel__note-body{margin:0;font-size:13px;line-height:1.45}.carousel__arrow{border:1px solid var(--border);background:var(--bg);width:36px;height:36px;color:var(--text);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:20px;line-height:1;transition:background .15s;display:flex}.carousel__arrow:hover{background:var(--bg-warm)}.carousel__dots{gap:8px;display:flex}.carousel__dot{background:var(--border);cursor:pointer;border:none;border-radius:50%;width:7px;height:7px;padding:0}.carousel__dot--active{background:var(--accent)}.project-detail{max-width:780px;padding-top:160px;padding-bottom:60px}.project-detail__title{font-family:var(--font-serif);margin:0 0 12px;font-size:38px;font-weight:500}.project-detail__tagline{font-family:var(--font-serif);color:var(--text-muted);margin-bottom:16px;font-size:18px}.project-detail__tags{gap:6px;margin-bottom:32px;display:flex}.project-detail__cover{aspect-ratio:21/9;margin-bottom:32px}.project-detail__placeholder-note{color:var(--text-faint);font-size:14px;line-height:1.6}.project-detail__placeholder-note code{font-family:var(--font-mono);background:var(--bg-warm);border-radius:4px;padding:2px 6px}.case-study{flex-direction:column;gap:96px;display:flex}.case-study__meta{border-bottom:1px solid var(--border);grid-template-columns:repeat(4,1fr);gap:24px;padding-bottom:40px;display:grid}.case-study__meta-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin:0 0 8px;font-size:11px;font-weight:600}.case-study__meta-value{color:var(--text);margin:0;font-size:14px;line-height:1.5}.case-study__section{flex-direction:column;gap:16px;display:flex}.case-study__section--centered{text-align:center;align-items:center;padding:32px 0}.case-study__eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin:0;font-size:11px;font-weight:600}.case-study__heading{font-family:var(--font-serif);color:var(--text);margin:0;font-size:24px;font-weight:500;line-height:1.35}.case-study__section--centered .case-study__heading{max-width:560px;font-size:32px}.case-study__body{color:var(--text-muted);margin:0;font-size:15px;line-height:1.6}.case-study__split{flex-wrap:wrap;align-items:center;gap:32px;margin-top:8px;display:flex}.case-study__split-text{flex:260px}.case-study__split-media{flex:none;justify-content:center;display:flex}.case-study__split-media .case-study__placeholder-row{margin-top:0}.case-study__split-media .case-study__image--half{width:280px;max-width:100%}.case-study__split--compact{justify-content:center}.case-study__split--compact .case-study__split-text{flex:0 420px;max-width:420px;padding:24px}.case-study__split--compact .case-study__split-media .case-study__image--half{width:200px}.case-study__link{color:var(--accent);text-decoration:none}.case-study__link:hover{text-decoration:underline}.case-study__cards{grid-template-columns:repeat(3,1fr);gap:16px;margin-top:8px;display:grid}.case-study__card{background:var(--accent-soft);border-radius:var(--radius-md);text-align:center;padding:20px}.case-study__card-title{color:var(--text);margin:0 0 8px;font-size:15px;font-weight:600}.case-study__card-body{color:var(--text-muted);margin:0;font-size:13px;line-height:1.5}.case-study__media-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;margin-top:8px;display:flex}.case-study__media-item{border-radius:var(--radius-lg);flex:none;width:100%;max-width:260px;display:block}.case-study__media-crop{aspect-ratio:1179/2556;border-radius:var(--radius-lg);background:var(--placeholder);flex:none;width:100%;max-width:260px;overflow:hidden}.case-study__media-crop img{object-fit:cover;width:100%;height:100%;display:block}.case-study__placeholder-row{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:8px;display:flex}.case-study__placeholder{background:var(--placeholder);border-radius:var(--radius-lg);flex:240px}.case-study__image{border-radius:var(--radius-lg);flex:auto;width:100%;display:block}.case-study__image--small{flex:none;width:100%;max-width:320px;margin:0 auto}.case-study__image--medium{flex:none;width:100%;max-width:420px;margin:0 auto}.case-study__image--half{flex:none;width:28%;margin:0 auto}.case-study__image--compact{width:85%;margin:0 auto}.case-study__placeholder.case-study__placeholder--wide{aspect-ratio:16/9;width:100%;height:auto}.case-study__placeholder.case-study__placeholder--notification{aspect-ratio:1024/434;width:100%;max-width:520px;height:auto}.case-study__placeholder.case-study__placeholder--phone{aspect-ratio:9/16;flex:none;width:100%;max-width:260px;height:auto}.case-study__placeholder.case-study__placeholder--iphone-top{aspect-ratio:427/429;flex:none;width:100%;max-width:260px;height:auto}.case-study__placeholder.case-study__placeholder--progress-bottom{aspect-ratio:393/426;flex:none;width:100%;max-width:260px;height:auto}.case-study__placeholder.case-study__placeholder--votecaravan{aspect-ratio:736/450;flex:none;width:92%;height:auto}.case-study__placeholder.case-study__placeholder--tall{aspect-ratio:1080/1219;flex:none;width:100%;max-width:380px;height:auto}.case-study__placeholder.case-study__placeholder--note{aspect-ratio:393/99;flex:none;width:100%;max-width:360px;height:auto}.case-study__placeholder.case-study__placeholder--small{aspect-ratio:4/3;flex:none;width:100%;max-width:320px;height:auto}.case-study__placeholder.case-study__placeholder--piechart{aspect-ratio:612/765;flex:none;width:100%;max-width:420px;height:auto}.case-study__placeholder.case-study__placeholder--half-left{aspect-ratio:756/982;flex:none;width:100%;max-width:320px;height:auto;margin:0 auto}.case-study__caption{color:var(--text-faint);text-align:center;margin:0;font-size:13px}@media (width<=720px){.project-detail{padding-top:64px}.case-study__meta{grid-template-columns:repeat(2,1fr);gap:24px 16px}.case-study__cards{grid-template-columns:1fr}}.app-layout{width:100%;max-width:var(--content-width);padding:0 var(--page-padding);flex-direction:column;flex:1;margin:0 auto;display:flex}.app-content{flex-direction:column;flex:1;min-width:0;display:flex}@media (width>=901px){.app-layout{flex-direction:row;align-items:flex-start;gap:64px}}@media (width<=900px){.app-layout{padding:0 var(--page-padding-mobile)}}
