@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a342834df7752944-s.3hd2l7bm32o7k.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.1l2zhvq5eocqf.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.2vhvl9vrvk-va.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.173xwsdme27n8.woff2)format("woff2");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:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.13hnt-xgp82zk.woff2)format("woff2");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:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.1sj6eobyi31rd.woff2)format("woff2");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:Manrope Fallback;src:local(Arial);ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.0%;size-adjust:103.19%}.manrope_7937b618-module__zsaevG__className{font-family:Manrope,Manrope Fallback;font-style:normal}.manrope_7937b618-module__zsaevG__variable{--font-builder:"Manrope", "Manrope Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.woff2)format("woff2");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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_5e0f3c9f-module__w_dT3q__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal;font-weight:400}.ibm_plex_mono_5e0f3c9f-module__w_dT3q__variable{--font-builder-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
.more-projects-module__Zb0djG__disclosure{width:100%}.more-projects-module__Zb0djG__summary{cursor:pointer;justify-content:space-between;align-items:center;gap:24px;min-height:64px;padding:26px 0 10px;font-size:18px;font-weight:600;list-style:none;transition:color .18s;display:flex}.more-projects-module__Zb0djG__summary::-webkit-details-marker{display:none}.more-projects-module__Zb0djG__summary:hover{color:var(--blue)}.more-projects-module__Zb0djG__count{color:var(--secondary-ink);align-items:center;gap:22px;font-size:15px;font-weight:400;display:inline-flex}.more-projects-module__Zb0djG__toggleIcon{width:18px;height:18px;position:relative}.more-projects-module__Zb0djG__toggleIcon:before,.more-projects-module__Zb0djG__toggleIcon:after{content:"";background:currentColor;width:12px;height:1px;position:absolute;top:8px;left:3px}.more-projects-module__Zb0djG__toggleIcon:after{transition:transform .18s;transform:rotate(90deg)}.more-projects-module__Zb0djG__disclosure[open] .more-projects-module__Zb0djG__toggleIcon:after{transform:rotate(0)}.more-projects-module__Zb0djG__content{padding-top:16px;padding-bottom:6px}@media (max-width:639px){.more-projects-module__Zb0djG__summary{flex-wrap:wrap;gap:12px;font-size:17px}.more-projects-module__Zb0djG__count{gap:12px;font-size:13px}}@media (prefers-reduced-motion:reduce){.more-projects-module__Zb0djG__summary,.more-projects-module__Zb0djG__toggleIcon:after{transition:none}}
.page-module___8aEwW__portfolio{--paper:#f5f4ef;--ink:#22251f;--secondary-ink:#62665e;--blue:#2849d8;--rule:#d5d8ce;--gutter:64px;background:var(--paper);color:var(--ink);font-family:var(--font-builder), sans-serif;width:100%;max-width:1440px;min-height:100vh;margin:0 auto;line-height:1.5}body:has(.page-module___8aEwW__portfolio){background:#f5f4ef}.page-module___8aEwW__portfolio ::selection{color:var(--ink);background:#dbe0fb}.page-module___8aEwW__portfolio :is(a,button,summary):focus-visible{outline:2px solid var(--blue);outline-offset:4px;border-radius:2px}.page-module___8aEwW__portfolio :is(h1,h2,h3,p,ul,dl,dd){margin:0}.page-module___8aEwW__portfolio ul{padding:0;list-style:none}.page-module___8aEwW__portfolio section{scroll-margin-top:24px}.page-module___8aEwW__portfolio a{text-decoration:none;transition:color .18s,background-color .18s}.page-module___8aEwW__portfolio a:hover{color:var(--blue)}.page-module___8aEwW__portfolio a svg{flex-shrink:0;transition:transform .18s ease-out}.page-module___8aEwW__portfolio a:hover svg{transform:translate(2px,-2px)}.page-module___8aEwW__skipLink{z-index:50;background:var(--paper);color:var(--blue);padding:12px 20px;position:fixed;top:12px;left:12px;transform:translateY(-200%)}.page-module___8aEwW__skipLink:focus{transform:translateY(0)}.page-module___8aEwW__navigation{padding:24px var(--gutter);justify-content:space-between;align-items:center;gap:24px;display:flex}.page-module___8aEwW__wordmark{letter-spacing:-1px;font-size:22px;font-weight:800}.page-module___8aEwW__navigation nav{align-items:center;gap:32px;font-size:14px;font-weight:600;display:flex}.page-module___8aEwW__navigation a{align-items:center;min-height:44px;display:inline-flex}.page-module___8aEwW__externalLink{align-items:center;gap:6px;min-height:44px;display:inline-flex}.page-module___8aEwW__externalLink svg{width:18px;height:18px}.page-module___8aEwW__navigation .page-module___8aEwW__navGithub{color:var(--blue);font-weight:400}.page-module___8aEwW__eyebrow{font-family:var(--font-builder-mono), monospace;text-transform:uppercase;letter-spacing:.5px;color:var(--secondary-ink);font-size:12px;font-weight:400;line-height:1.5}.page-module___8aEwW__introduction{padding:62px var(--gutter) 48px;flex-direction:column;gap:32px;display:flex}.page-module___8aEwW__introMeta{justify-content:space-between;gap:24px;display:flex}.page-module___8aEwW__mobileIntro{display:none}.page-module___8aEwW__introduction h1{letter-spacing:-.06em;font-size:clamp(64px,7vw,100px);font-weight:500;line-height:1.04}.page-module___8aEwW__positioning{align-items:center;gap:64px;padding:12px 0 20px;display:flex}.page-module___8aEwW__role{flex:1;min-width:0}.page-module___8aEwW__role>p{color:var(--secondary-ink);font-size:22px;line-height:1.5}.page-module___8aEwW__heroActions{flex-wrap:wrap;align-items:center;gap:28px;margin-top:26px;font-size:15px;display:flex}.page-module___8aEwW__primaryAction{background:var(--blue);color:#fff;border-radius:4px;align-items:center;gap:30px;min-height:54px;padding:14px 22px;font-weight:600;display:inline-flex}.page-module___8aEwW__primaryAction svg{width:18px;height:18px}.page-module___8aEwW__portfolio .page-module___8aEwW__primaryAction:hover{color:#fff;background:#203bad}.page-module___8aEwW__portfolio .page-module___8aEwW__primaryAction:hover svg{transform:translateY(3px)}.page-module___8aEwW__identity{flex-shrink:0;align-items:center;gap:18px;width:325px;display:flex}.page-module___8aEwW__identity img{object-fit:cover;border-radius:3px;width:88px;height:104px}.page-module___8aEwW__identity>div{flex-direction:column;gap:8px;display:flex}.page-module___8aEwW__company{font-size:18px;font-weight:600}.page-module___8aEwW__platform{color:var(--secondary-ink);font-size:14px;line-height:1.5}.page-module___8aEwW__portfolio .page-module___8aEwW__disciplines{border-top:1px solid var(--rule);justify-content:space-between;gap:24px;padding-top:30px;display:flex}.page-module___8aEwW__work{padding:54px var(--gutter) 64px}.page-module___8aEwW__sectionHeading{justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:32px;display:flex}.page-module___8aEwW__sectionHeading h2{letter-spacing:-2px;font-size:46px;font-weight:400;line-height:1.2}.page-module___8aEwW__leadProject{background:#e7eae1;border-radius:5px;grid-template-columns:360px minmax(0,1fr);align-items:center;gap:40px;padding:32px;display:grid}.page-module___8aEwW__leadCopy{flex-direction:column;align-items:flex-start;gap:20px;padding:6px 0;display:flex}.page-module___8aEwW__leadCopy h3{letter-spacing:-3px;font-size:56px;font-weight:500;line-height:1.1}.page-module___8aEwW__proposition{letter-spacing:-1px;font-size:30px;line-height:1.17}.page-module___8aEwW__projectDescription{color:var(--secondary-ink);font-size:17px;line-height:1.55}.page-module___8aEwW__leadCopy .page-module___8aEwW__projectDescription{font-size:16px;line-height:1.625}.page-module___8aEwW__leadActions{color:var(--blue);flex-wrap:wrap;gap:22px;font-size:16px;font-weight:600;display:flex}.page-module___8aEwW__leadActions .page-module___8aEwW__sourceLink{font-size:14px;font-weight:400}.page-module___8aEwW__leadImage{background:#d8ddd1;border-radius:3px;align-items:center;min-height:410px;padding:12px;display:flex}.page-module___8aEwW__leadImage img{object-fit:contain;border-radius:5px;width:100%;height:auto;max-height:380px}.page-module___8aEwW__selectedGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:32px;display:grid}.page-module___8aEwW__selectedProject{flex-direction:column;gap:18px;display:flex}.page-module___8aEwW__projectImage{aspect-ratio:16/9;border-radius:4px;position:relative;overflow:hidden}.page-module___8aEwW__projectImage img{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.page-module___8aEwW__projectHeading{justify-content:space-between;align-items:center;gap:16px;display:flex}.page-module___8aEwW__projectHeading h3{letter-spacing:-1px;font-size:32px;font-weight:600;line-height:1.25}.page-module___8aEwW__projectHeading a{color:var(--blue);justify-content:center;min-width:44px}.page-module___8aEwW__projectHeading svg{width:28px;height:28px}.page-module___8aEwW__selectedProject>.page-module___8aEwW__eyebrow{margin-top:auto}.page-module___8aEwW__workshop{padding:36px var(--gutter) 72px}.page-module___8aEwW__workshop .page-module___8aEwW__sectionHeading h2{letter-spacing:-1px;font-size:32px}.page-module___8aEwW__projectIndex{border-top:1px solid var(--rule)}.page-module___8aEwW__projectRow{border-bottom:1px solid var(--rule);grid-template-columns:250px minmax(0,1fr) auto;align-items:center;gap:32px;padding:24px 0;display:grid}.page-module___8aEwW__projectRow h3{font-size:21px;font-weight:600;line-height:1.4}.page-module___8aEwW__projectRow>p{color:var(--secondary-ink);font-size:16px;line-height:1.6}.page-module___8aEwW__rowMeta{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.page-module___8aEwW__rowMeta time{font:12px var(--font-builder-mono), monospace;color:var(--secondary-ink)}.page-module___8aEwW__rowLink{color:var(--blue);font-size:14px}.page-module___8aEwW__portfolio .page-module___8aEwW__archiveNote{color:var(--secondary-ink);margin:10px 0 24px;font-size:16px}.page-module___8aEwW__about{padding:64px var(--gutter) 80px;background:#eceee6;grid-template-columns:380px minmax(0,1fr);gap:80px;display:grid}.page-module___8aEwW__aboutIntro{flex-direction:column;gap:24px;display:flex}.page-module___8aEwW__aboutIntro h2{letter-spacing:-2px;font-size:43px;font-weight:400;line-height:1.14}.page-module___8aEwW__biography{font-size:21px;line-height:1.62}.page-module___8aEwW__capabilities{border-top:1px solid var(--rule);flex-direction:column;gap:28px;padding-top:30px;display:flex;margin-top:30px!important}.page-module___8aEwW__capabilities>div{grid-template-columns:170px minmax(0,1fr);align-items:baseline;gap:24px;display:grid}.page-module___8aEwW__capabilities dt{font-size:11px}.page-module___8aEwW__capabilities dd{font-size:15px;line-height:1.6}.page-module___8aEwW__contact{padding:72px var(--gutter) 30px;flex-direction:column;gap:30px;display:flex}.page-module___8aEwW__contact h2{letter-spacing:-4px;font-size:80px;font-weight:400;line-height:1.15}.page-module___8aEwW__contactMethods{justify-content:space-between;align-items:center;gap:24px;display:flex}.page-module___8aEwW__email{color:var(--blue);letter-spacing:-1px;overflow-wrap:anywhere;font-size:30px}.page-module___8aEwW__email svg{width:26px;height:26px}.page-module___8aEwW__socials{gap:28px;font-size:16px;display:flex}.page-module___8aEwW__wechatContact{align-items:center;display:flex;position:relative}.page-module___8aEwW__wechatContact summary{cursor:pointer;align-items:center;gap:5px;min-height:44px;list-style:none;transition:color .18s;display:inline-flex}.page-module___8aEwW__wechatContact summary::-webkit-details-marker{display:none}.page-module___8aEwW__wechatContact summary:after{content:"↗";color:var(--secondary-ink);font-size:12px;transition:transform .18s ease-out}.page-module___8aEwW__wechatContact summary:hover,.page-module___8aEwW__wechatContact[open] summary{color:var(--blue)}.page-module___8aEwW__wechatContact summary:hover:after,.page-module___8aEwW__wechatContact[open] summary:after{transform:translate(2px,-2px)}.page-module___8aEwW__wechatPopover{z-index:10;opacity:0;visibility:hidden;pointer-events:none;transform-origin:100% 100%;background:#fff;border:1px solid #e3e4df;border-radius:8px;width:240px;padding:9px;transition:opacity .18s,transform .22s cubic-bezier(.16,1,.3,1),visibility .18s;position:absolute;bottom:calc(100% + 10px);right:0;transform:translateY(8px)scale(.98);box-shadow:0 12px 32px #22251f24}.page-module___8aEwW__wechatPopover img{border-radius:4px;width:100%;height:auto;display:block}.page-module___8aEwW__wechatPopover p{text-align:center;color:var(--secondary-ink);padding:9px 3px 2px;font-size:12px}.page-module___8aEwW__wechatContact:hover .page-module___8aEwW__wechatPopover,.page-module___8aEwW__wechatContact:focus-within .page-module___8aEwW__wechatPopover,.page-module___8aEwW__wechatContact[open] .page-module___8aEwW__wechatPopover{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s;transform:translateY(0)scale(1)}.page-module___8aEwW__footer{margin:0 var(--gutter);border-top:1px solid var(--rule);justify-content:space-between;align-items:center;gap:24px;padding:20px 0 30px;display:flex}.page-module___8aEwW__footer a{align-items:center;gap:8px;min-height:44px;display:inline-flex}.page-module___8aEwW__footer svg{width:14px;height:14px}@media (max-width:1199px){.page-module___8aEwW__portfolio{--gutter:32px}.page-module___8aEwW__positioning{gap:32px}.page-module___8aEwW__desktopBreak{display:none}.page-module___8aEwW__leadProject{grid-template-columns:310px minmax(0,1fr);gap:28px}.page-module___8aEwW__leadImage{min-height:320px}.page-module___8aEwW__about{grid-template-columns:330px minmax(0,1fr);gap:40px}.page-module___8aEwW__capabilities>div{grid-template-columns:140px minmax(0,1fr);gap:18px}}@media (max-width:959px){.page-module___8aEwW__selectedGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-module___8aEwW__positioning{flex-direction:column;align-items:flex-start;gap:30px}.page-module___8aEwW__identity{width:auto}.page-module___8aEwW__leadProject{grid-template-columns:minmax(0,1fr)}.page-module___8aEwW__leadImage{min-height:0}.page-module___8aEwW__leadImage img{max-height:none}.page-module___8aEwW__projectImage{aspect-ratio:16/9;height:auto}.page-module___8aEwW__sectionHeading{flex-direction:column;align-items:flex-start;gap:12px}.page-module___8aEwW__projectRow{grid-template-columns:200px minmax(0,1fr) auto;gap:20px}.page-module___8aEwW__about{grid-template-columns:minmax(0,1fr);gap:32px}}@media (max-width:639px){.page-module___8aEwW__portfolio{--gutter:24px}.page-module___8aEwW__navigation{gap:12px;padding-top:16px;padding-bottom:16px}.page-module___8aEwW__wordmark{font-size:19px}.page-module___8aEwW__navigation nav{gap:18px}.page-module___8aEwW__navigation .page-module___8aEwW__navGithub{display:none}.page-module___8aEwW__introduction{gap:24px;padding-top:40px;padding-bottom:28px}.page-module___8aEwW__desktopIntro,.page-module___8aEwW__hello{display:none}.page-module___8aEwW__mobileIntro{display:inline}.page-module___8aEwW__introduction h1{letter-spacing:-.055em;font-size:clamp(39px,12.56vw,60px);line-height:1.07}.page-module___8aEwW__positioning{padding:0}.page-module___8aEwW__role>p{font-size:17px}.page-module___8aEwW__heroActions{gap:22px;font-size:13px}.page-module___8aEwW__primaryAction{gap:18px;min-height:48px;padding:14px 16px}.page-module___8aEwW__identity img{width:60px;height:70px}.page-module___8aEwW__company{font-size:16px}.page-module___8aEwW__platform{font-size:13px}.page-module___8aEwW__portfolio .page-module___8aEwW__disciplines{flex-direction:column;gap:12px;padding-top:24px}.page-module___8aEwW__work{padding-top:36px;padding-bottom:40px}.page-module___8aEwW__sectionHeading{margin-bottom:24px}.page-module___8aEwW__sectionHeading h2{letter-spacing:-1.5px;font-size:34px}.page-module___8aEwW__leadProject{gap:24px;padding:20px}.page-module___8aEwW__leadCopy{gap:16px}.page-module___8aEwW__leadCopy h3{font-size:44px}.page-module___8aEwW__proposition{font-size:27px}.page-module___8aEwW__leadCopy .page-module___8aEwW__projectDescription{font-size:15px}.page-module___8aEwW__leadCopy>.page-module___8aEwW__eyebrow,.page-module___8aEwW__selectedProject>.page-module___8aEwW__eyebrow{font-size:10px}.page-module___8aEwW__leadCopy>.page-module___8aEwW__eyebrow:first-child{font-size:12px}.page-module___8aEwW__leadImage{padding:0}.page-module___8aEwW__selectedGrid{grid-template-columns:minmax(0,1fr);gap:36px;margin-top:24px}.page-module___8aEwW__workshop{padding-top:24px;padding-bottom:44px}.page-module___8aEwW__workshop .page-module___8aEwW__sectionHeading h2{max-width:290px;font-size:29px}.page-module___8aEwW__projectRow{grid-template-columns:minmax(0,1fr);gap:10px;padding:22px 0}.page-module___8aEwW__rowMeta{flex-direction:row;justify-content:space-between;align-items:center}.page-module___8aEwW__about{padding-top:40px;padding-bottom:44px}.page-module___8aEwW__aboutIntro h2{letter-spacing:-1.5px;font-size:34px}.page-module___8aEwW__biography{font-size:18px;line-height:1.6}.page-module___8aEwW__capabilities>div{grid-template-columns:minmax(0,1fr);gap:10px}.page-module___8aEwW__contact{gap:24px;padding-top:44px}.page-module___8aEwW__contact h2{letter-spacing:-2px;font-size:56px}.page-module___8aEwW__contactMethods{flex-direction:column;align-items:flex-start;gap:20px}.page-module___8aEwW__email{letter-spacing:-.5px;font-size:clamp(19px,5.6vw,26px)}.page-module___8aEwW__email svg{width:20px;height:20px}.page-module___8aEwW__footer{flex-direction:column;align-items:flex-start;gap:12px;font-size:10px}}@media (max-width:359px){.page-module___8aEwW__navigation nav{gap:10px;font-size:12px}.page-module___8aEwW__wordmark{font-size:17px}.page-module___8aEwW__heroActions{gap:14px}}@media (prefers-reduced-motion:reduce){.page-module___8aEwW__portfolio a,.page-module___8aEwW__portfolio a svg{transition:none}.page-module___8aEwW__portfolio a:hover svg{transform:none}.page-module___8aEwW__wechatContact summary,.page-module___8aEwW__wechatContact summary:after,.page-module___8aEwW__wechatPopover{transition:none}}
