@font-face{font-family:Golos Text Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/golos-text-cyrillic-ext-wght-normal-hICkpzq7.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:Golos Text Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/golos-text-cyrillic-wght-normal-mKek_fSS.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Golos Text Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/golos-text-latin-ext-wght-normal-B-I5lbAQ.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:Golos Text Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/golos-text-latin-wght-normal-BS5oQT7X.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:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-cyrillic-ext-wght-normal-CGKlZYBf.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:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-cyrillic-wght-normal-DLqwHbi6.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-greek-ext-wght-normal-e3e57Shi.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-greek-wght-normal-CO1l-giJ.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-vietnamese-wght-normal-LcSrhZ7T.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:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-ext-wght-normal-BnEbWgdZ.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:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-normal-DLxlUchJ.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:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-cyrillic-ext-wght-italic-DrMGjC4f.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:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-cyrillic-wght-italic-C2hF6zFe.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-greek-ext-wght-italic-f6xT_0ee.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-greek-wght-italic-9BAkQpca.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-vietnamese-wght-italic-LyOFdRXZ.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:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-ext-wght-italic-CC1SwlwQ.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:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-italic-Bm_GJfSc.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{--page-bg:#f4f3ef;--page-fg:#1d201f;--page-muted:#626762;--page-soft:#e9e8e3;--page-line:#c9cbc5;--page-accent:#39433e;--sans:"Golos Text Variable", sans-serif;--serif:"Literata Variable", serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;scrollbar-color:var(--page-line) var(--page-bg)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--page-bg);color:var(--page-fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.5}button,a{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}img{max-width:100%}figure{margin:0}::selection{color:var(--page-fg);background:#cbd0ca}:focus-visible{outline:2px solid var(--page-fg);outline-offset:4px}.skip-link{z-index:20;background:var(--page-fg);color:var(--page-bg);padding:10px 15px;position:fixed;top:0;left:18px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(12px)}.site-header,.page,.site-footer{width:min(100% - 68px,1510px);margin-inline:auto}.site-header{border-bottom:1px solid var(--page-line);grid-template-columns:1fr auto 1fr;align-items:center;gap:30px;height:78px;display:grid}.site-mark{letter-spacing:-.075em;justify-self:start;align-items:center;min-width:48px;font-size:26px;font-weight:720;line-height:1;display:inline-flex}.site-mark-stage{width:150px;height:46px;display:block;position:relative}.site-mark .handwritten-note{opacity:1;transform-origin:0;filter:blur();width:clamp(150px,10vw,148px);max-width:none;transition:opacity .2s,transform .3s cubic-bezier(.16,1,.3,1),filter .2s;display:block;position:absolute;top:50%;left:0;transform:translateY(-50%)scale(1)}.site-mark-monogram{color:var(--page-fg);font-family:var(--sans);letter-spacing:-.075em;opacity:0;clip-path:inset(100% 0 0);font-size:26px;font-style:normal;font-weight:720;line-height:1;transition:opacity .2s,transform .3s cubic-bezier(.16,1,.3,1),clip-path .3s cubic-bezier(.16,1,.3,1);display:block;position:absolute;top:50%;left:0;transform:translateY(calc(6px - 50%))}.site-mark:hover .site-mark-handwritten,.site-mark:focus-visible .site-mark-handwritten{opacity:0;filter:blur(3px);transform:translateY(-50%)scale(.92)}.site-mark:hover .site-mark-monogram,.site-mark:focus-visible .site-mark-monogram{opacity:1;clip-path:inset(0);transform:translateY(-50%)}.site-nav{align-items:center;gap:clamp(22px,3vw,49px);display:flex}.site-nav a,.header-email{letter-spacing:.11em;text-transform:uppercase;font-size:12px;font-weight:580;line-height:1.2}.site-nav a{color:var(--page-muted);padding:9px 0;transition:color .2s;position:relative}.site-nav a:hover,.site-nav a.active{color:var(--page-fg)}.language-switch{color:var(--page-muted);justify-self:end;align-items:center;display:inline-flex}.language-switch button{color:inherit;letter-spacing:.08em;background:0 0;border:0;padding:9px 7px;font-size:11px;font-weight:580;line-height:1;transition:color .2s;position:relative}.language-switch>span{color:var(--page-line);font-size:11px;line-height:1}.language-switch button:hover,.language-switch button.is-active{color:var(--page-fg)}.site-nav a:after{content:"";transform-origin:0;border-bottom:1px solid;transition:transform .25s;position:absolute;bottom:3px;left:0;right:0;transform:scaleX(0)}.site-nav a:hover:after,.site-nav a.active:after{transform:scaleX(1)}.header-email{justify-self:end;align-items:center;gap:7px;display:inline-flex}.header-email svg,.site-footer a svg,.work-end a svg,.archive-section-head a svg,.case-project-github .project-link-arrow{transition:transform .24s}.header-email:hover svg,.site-footer a:hover svg,.work-end a:hover svg,.archive-section-head a:hover svg,.case-project-github:hover .project-link-arrow{transform:translate(3px,-3px)}.page{--page-bg:#f4f3ef;background:var(--page-bg);animation:.42s cubic-bezier(.16,1,.3,1) both page-arrive}@keyframes page-arrive{0%{opacity:.65;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}.editorial-grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(12px,1.7vw,27px);display:grid}.work-intro{align-items:end;padding:45px 0 30px}.work-identity{grid-column:1/span 8}.work-identity h1{letter-spacing:-.04em;margin:0;font-size:clamp(58px,6vw,96px);font-weight:590;line-height:.88}.work-role{white-space:nowrap;align-items:baseline;gap:clamp(8px,1vw,14px);margin:20px 0 0;line-height:.96;display:flex}.work-role-ios{font-family:var(--sans);letter-spacing:-.04em;font-size:clamp(28px,2.4vw,38px);font-style:normal;font-weight:650}.work-role-connector{color:var(--page-muted);font-family:var(--serif);font-size:clamp(20px,1.7vw,27px);font-style:italic;font-weight:430}.work-role-fullstack{font-family:var(--serif);letter-spacing:-.04em;text-transform:none;font-size:clamp(30px,2.65vw,42px);font-weight:460}.work-intro-aside{grid-column:9/span 4;align-self:end;padding:0 0 5px}.work-intro-aside p{font-family:var(--serif);letter-spacing:-.035em;margin:0;font-size:clamp(21px,1.75vw,28px);font-weight:430;line-height:1.23}.work-intro-aside p span{display:block}.work-index-head{text-transform:uppercase;letter-spacing:.08em;color:var(--page-muted);justify-content:space-between;align-items:baseline;padding:8px 0 0;font-size:12px;display:flex}.work-index-head span:last-child{font-variant-numeric:tabular-nums}.work-index{align-items:start;row-gap:clamp(78px,9vw,136px);padding:22px 0 75px}.index-project{min-width:0}.index-project-walk{grid-area:1/1/auto/span 5}.index-project-stu{grid-area:1/7/auto/span 6;margin-top:164px}.index-project-satellite{grid-area:2/1/auto/span 5;margin-top:-30px}.index-project-roomprint{grid-area:2/8/auto/span 5;margin-top:95px}.index-project-algo{grid-area:3/1/auto/span 7}.index-project-edtech{grid-area:3/8/auto/span 5;margin-top:145px}.index-project-chinese{grid-area:4/4/auto/span 6;margin-top:5px}.index-project-link{display:block}.image-reveal{background:var(--page-soft);display:block;overflow:hidden}.index-project-image{width:100%}.index-project-walk .index-project-image{aspect-ratio:4/4.55}.index-project-stu .index-project-image{aspect-ratio:1.56}.index-project-satellite .index-project-image,.index-project-roomprint .index-project-image{aspect-ratio:1/1.02}.index-project-algo .index-project-image{aspect-ratio:1.38}.index-project-edtech .index-project-image{aspect-ratio:1.28}.index-project-chinese .index-project-image{aspect-ratio:1.42}.index-project-device .index-project-image{background:#e8e7e2}.project-desktop-preview{object-fit:cover;width:100%;height:100%;transition:transform .7s cubic-bezier(.16,1,.3,1),filter .7s;display:block}.project-type-preview{width:100%;height:100%;color:var(--page-fg);background:#dedfd9;flex-direction:column;justify-content:space-between;padding:clamp(24px,4vw,58px);display:flex;position:relative;overflow:hidden}.project-type-preview-kicker{z-index:1;letter-spacing:.09em;text-transform:uppercase;font-size:11px;font-weight:580;position:relative}.project-type-preview strong{z-index:1;max-width:9ch;font-family:var(--serif);letter-spacing:-.035em;font-size:clamp(29px,3.6vw,55px);font-weight:430;line-height:1.04;position:relative}.project-type-preview-mark{color:#1d201f17;letter-spacing:-.1em;font-size:clamp(180px,26vw,390px);font-weight:650;line-height:1;transition:transform .7s cubic-bezier(.16,1,.3,1);position:absolute;bottom:-.28em;right:-.05em}.index-project-link:hover .project-type-preview-mark,.index-project-link:focus-visible .project-type-preview-mark{transform:translate(-.04em,-.025em)rotate(-2deg)}.index-project-stu .project-desktop-preview{object-position:50% 12%}.index-project-algo .project-desktop-preview{object-position:50% 10%}.index-project-pizza .project-desktop-preview{object-position:50% 18%}.index-project-desktop .index-project-link:hover .project-desktop-preview,.index-project-desktop .index-project-link:focus-visible .project-desktop-preview{filter:contrast(1.025);transform:scale(1.025)}.device-fan{isolation:isolate;width:100%;height:100%;display:block;position:relative}.device-fan-item{transform-origin:50% 88%;filter:saturate(.93);width:42%;transition:transform .75s cubic-bezier(.16,1,.3,1),filter .75s;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.index-project-edtech .device-fan-item{width:35%}.index-project-chinese .device-fan-item{width:31%}.mingai-preview-extract{z-index:6;color:#242120;background:#fffaf4;border-radius:13px;gap:8px;width:34%;padding:9px;transition:transform .65s cubic-bezier(.16,1,.3,1),box-shadow .65s cubic-bezier(.16,1,.3,1);display:grid;position:absolute;top:19%;right:5%;transform:rotate(2.5deg);box-shadow:0 16px 35px #1c191733}.mingai-preview-crop{aspect-ratio:1.42;background:#f3eff5;border-radius:8px;width:100%;display:block;overflow:hidden}.mingai-preview-crop img{transform-origin:50% 0;width:100%;height:auto;display:block;transform:translateY(-11%)scale(1.04)}.mingai-preview-extract>span:last-child{font-size:clamp(9px,.78vw,12px);font-weight:620;line-height:1.25}.index-project-link:hover .mingai-preview-extract,.index-project-link:focus-visible .mingai-preview-extract{transform:translate(9px,-7px)rotate(4deg);box-shadow:0 21px 42px #1c191740}.device-fan-item:first-child{z-index:1;transform:translate(-61%,-48%)rotate(-2.5deg)scale(.91)}.device-fan-item:nth-child(2){z-index:3;transform:translate(-50%,-51%)rotate(.3deg)scale(.96)}.device-fan-item:nth-child(3){z-index:2;transform:translate(-39%,-48%)rotate(2.5deg)scale(.91)}.device-count-1 .device-fan-item{width:46%;transform:translate(-50%,-50%)rotate(0)scale(1)}.device-fan-poster .device-fan-item{width:40%;box-shadow:0 14px 34px #1d201f21}.device-fan-poster img{width:100%;height:auto;display:block}.index-project-link:hover .device-fan-item:first-child,.index-project-link:focus-visible .device-fan-item:first-child{filter:saturate();transform:translate(-108%,-47%)rotate(-8deg)scale(.88)}.index-project-link:hover .device-fan-item:nth-child(2),.index-project-link:focus-visible .device-fan-item:nth-child(2){filter:saturate();transform:translate(-50%,-54%)rotate(0)scale(.98)}.index-project-link:hover .device-fan-item:nth-child(3),.index-project-link:focus-visible .device-fan-item:nth-child(3){filter:saturate();transform:translate(8%,-47%)rotate(8deg)scale(.88)}.index-project-link:hover .device-count-1 .device-fan-item,.index-project-link:focus-visible .device-count-1 .device-fan-item{transform:translate(-50%,-52%)rotate(0)scale(1.015)}.device-fan-poster .device-fan-item:first-child{transform:translate(-62%,-50%)rotate(-2.5deg)scale(.91)}.device-fan-poster .device-fan-item:nth-child(2){transform:translate(-50%,-50%)rotate(.3deg)scale(.96)}.device-fan-poster .device-fan-item:nth-child(3){transform:translate(-38%,-50%)rotate(2.5deg)scale(.91)}.index-project-link:hover .device-fan-poster .device-fan-item:first-child,.index-project-link:focus-visible .device-fan-poster .device-fan-item:first-child{transform:translate(-99%,-50%)rotate(-7deg)scale(.88)}.index-project-link:hover .device-fan-poster .device-fan-item:nth-child(2),.index-project-link:focus-visible .device-fan-poster .device-fan-item:nth-child(2){transform:translate(-50%,-50%)rotate(0)scale(.98)}.index-project-link:hover .device-fan-poster .device-fan-item:nth-child(3),.index-project-link:focus-visible .device-fan-poster .device-fan-item:nth-child(3){transform:translate(-1%,-50%)rotate(7deg)scale(.88)}.iphone-16-frame{aspect-ratio:1206/2622;background:#090a09;border:1px solid #7f817f;border-radius:13%/6%;width:100%;padding:1.7%;display:block;position:relative;box-shadow:0 15px 32px #1618173d,inset 0 0 0 1px #252826}.iphone-16-frame>.iphone-screen{object-fit:cover;border-radius:11.7%/5.35%;width:100%;height:100%;display:block}.iphone-16-island{background:#050505;border-radius:999px;width:29%;height:2.25%;position:absolute;top:1.8%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 1px #ffffff06}.iphone-frame-iphone-17-pro{box-sizing:border-box;background:linear-gradient(105deg,#555a58 0%,#111413 9%,#060807 48%,#2d3230 88%,#737774 100%);border:1px solid #777b79;border-radius:13.2%/6.05%;padding:1.3%;box-shadow:0 18px 38px #12141340,inset 0 0 0 1px #ffffff29,inset 0 0 0 3px #080a09}.iphone-frame-iphone-17-pro:before{content:"";z-index:3;pointer-events:none;border:1px solid #ffffff21;border-radius:12.8%/5.85%;position:absolute;inset:.42%}.iphone-frame-iphone-17-pro>.iphone-screen{border-radius:12%/5.45%}.iphone-frame-iphone-17-pro .iphone-16-island{z-index:4;background:#030404;width:28%;height:3.25%;top:2.05%;box-shadow:inset 0 0 0 1px #ffffff09,0 1px 2px #0000003d}.iphone-frame-iphone-17-pro .iphone-16-island:before{content:"";aspect-ratio:1;background:#07101a;border-radius:50%;width:10%;position:absolute;top:25%;right:9%;box-shadow:inset 0 0 0 1px #46647e47}.iphone-frame-iphone-17-pro .iphone-16-side{background:linear-gradient(90deg,#171a19,#777b79 52%,#202422);width:1.35%;box-shadow:inset 0 0 0 1px #ffffff26}.iphone-frame-iphone-17-pro .iphone-16-side-left{height:6.5%;top:13.5%;left:-1.55%;box-shadow:0 54px #303432,0 92px #303432}.iphone-frame-iphone-17-pro .iphone-16-side-right{height:12.5%;top:21%;right:-1.55%;box-shadow:0 132px 0 -1px #303432}.iphone-frame-iphone-13-pro{aspect-ratio:984/1992;background:0 0;border:0;border-radius:10%/4.9%;padding:0;box-shadow:0 17px 34px #16181738}.iphone-frame-iphone-13-pro>.iphone-screen{z-index:0;object-fit:contain;background:#050505;border-radius:7.5%/3.6%;width:91.5%;height:96.7%;position:absolute;top:1.65%;left:4.25%}.iphone-device-bezel{z-index:2;object-fit:contain;pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.iphone-frame-iphone-13-pro .iphone-16-island{z-index:3;border-radius:0 0 15px 15px;width:35%;height:3.25%;top:1.15%}.iphone-frame-iphone-13-pro .iphone-16-island:before{content:"";background:#1c1d1d;border-radius:999px;width:42%;height:17%;position:absolute;top:21%;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 1px #ffffff14}.iphone-frame-iphone-13-pro .iphone-16-island:after{content:"";aspect-ratio:1;background:#101721;border-radius:50%;width:8%;position:absolute;top:18%;right:17%;box-shadow:inset 0 0 0 1px #5a748a47}.iphone-16-side{background:#343735;border-radius:2px;width:1.1%;display:block;position:absolute;box-shadow:inset 0 0 0 1px #ffffff1f}.iphone-16-side-left{height:12%;top:16%;left:-1.3%}.iphone-16-side-right{height:15%;top:23%;right:-1.3%}.index-project-caption{justify-content:space-between;align-items:start;gap:20px;padding-top:18px;display:flex}.index-project-caption>svg{flex:none;margin-top:32px;transition:transform .25s}.index-project-link:hover .index-project-caption>svg{transform:translate(4px,-4px)}.project-meta-inline{letter-spacing:.08em;text-transform:uppercase;max-width:260px;color:var(--page-muted);justify-content:space-between;gap:17px;font-size:11px;display:flex}.project-title-row{align-items:center;gap:12px;margin-top:11px;display:flex}.project-logo{background:var(--page-soft);width:42px;height:42px;color:var(--page-fg);text-transform:uppercase;flex:0 0 42px;place-items:center;font-size:12px;font-weight:650;display:grid;overflow:hidden}.project-logo img{object-fit:cover;width:100%;height:100%;display:block}.index-project-satellite .project-logo img{object-fit:contain;background:#080909}.index-project-caption h2{letter-spacing:-.038em;margin:0;font-size:clamp(32px,3.1vw,51px);font-weight:520;line-height:1.07;transition:font-style .25s}.index-project-link:hover h2{font-style:italic}.index-project-caption p{color:var(--page-muted);margin:0;font-size:14px}.work-end{border-top:1px solid var(--page-line);justify-content:space-between;align-items:center;gap:30px;padding:28px 0 85px;display:flex}.work-end p{max-width:390px;color:var(--page-muted);margin:0;font-size:15px}.work-end a{border-bottom:1px solid var(--page-fg);white-space:nowrap;align-items:center;gap:12px;padding-bottom:5px;font-size:15px;display:inline-flex}.about-opening{align-items:start;padding:70px 0 85px}.about-lead{grid-area:1/1/auto/span 7}.about-lead h1{letter-spacing:-.04em;max-width:12ch;margin:52px 0 30px;font-size:clamp(58px,6.4vw,91px);font-weight:530;line-height:.96}.about-lead>p{max-width:39ch;margin:0;font-size:clamp(17px,1.6vw,22px);line-height:1.55}.about-main-photo{background:var(--page-soft);grid-area:1/8/span 2/span 5;height:clamp(520px,48vw,690px);margin-top:90px;overflow:hidden}.about-main-photo img{object-fit:cover;object-position:47% 50%;width:100%;height:100%;display:block}.about-second-text{max-width:52ch;color:var(--page-muted);grid-area:2/2/auto/span 5;align-self:end;margin:90px 0 10px;font-size:17px;line-height:1.75}.about-photo-interlude{align-items:end;padding:5px 0 120px}.about-train{grid-column:2/span 5;height:420px;overflow:hidden}.about-ferry{grid-column:9/span 4;height:330px;margin-bottom:-36px;overflow:hidden}.about-photo-interlude img:not(.handwritten-note){object-fit:cover;width:100%;height:100%;display:block}.about-train img{object-position:50% 48%}.about-ferry img{object-position:50% 50%}.handwritten-note{width:var(--note-width);transform:translate(var(--note-x), var(--note-y)) rotate(var(--note-rotation));height:auto}.about-experience,.about-education{border-top:1px solid var(--page-line);grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(12px,1.7vw,27px);padding:48px 0 105px;display:grid}.about-experience>h2,.about-education>h2{font-family:var(--serif);letter-spacing:-.035em;grid-column:1/span 4;margin:0;font-size:clamp(37px,3.7vw,56px);font-weight:420;line-height:1.1}.about-education{padding-bottom:92px}.experience-entry{grid-column:5/span 8}.experience-entry+.experience-entry{border-top:1px solid var(--page-line);margin-top:58px;padding-top:48px}.experience-period{color:var(--page-muted);letter-spacing:.07em;text-transform:uppercase;font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:0 .55em;margin:7px 0 34px;font-size:12px;font-weight:580;display:flex}.experience-entry header{margin-bottom:32px}.experience-entry h3{letter-spacing:-.035em;margin:0 0 10px;font-size:clamp(31px,3.3vw,50px);font-weight:530;line-height:1.05}.experience-entry header p{font-family:var(--serif);margin:0;font-size:clamp(18px,1.7vw,24px);line-height:1.45}.experience-company{align-items:center;gap:13px;min-height:36px;display:flex}.experience-company-logo{flex:none;display:block;position:relative;overflow:hidden}.experience-company-logo-stu{width:34px;height:34px}.experience-company-logo-stu img{object-fit:contain;width:100%;height:100%}.experience-company-logo-martspec{width:104px;height:35px}.experience-company-logo-martspec img{mix-blend-mode:multiply;width:182px;max-width:none;height:auto;position:absolute;top:-49px;left:-28px}.experience-technologies{flex-wrap:wrap;gap:6px;margin-top:17px;display:flex}.experience-technologies span{border:1px solid color-mix(in srgb, var(--page-ink) 12%, transparent);background:color-mix(in srgb, var(--page-ink) 5%, transparent);color:var(--page-muted);letter-spacing:.035em;white-space:nowrap;border-radius:999px;padding:5px 10px 6px;font-size:11px;font-weight:560;line-height:1}.experience-entry ul{max-width:65ch;margin:0;padding-left:1.15em}.experience-entry li{margin-bottom:11px;padding-left:.35em;font-size:16px;line-height:1.6}.experience-entry li:last-child{margin-bottom:0}.about-capabilities{border-top:1px solid var(--page-line);padding:48px 0 115px}.about-capabilities>h2,.about-contact h2{font-family:var(--serif);letter-spacing:-.035em;margin:0;font-size:clamp(37px,3.7vw,56px);font-weight:420;line-height:1.1}.capability-list{grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(42px,5vw,72px) clamp(12px,1.7vw,27px);margin-top:64px;display:grid}.capability-entry{grid-template-columns:clamp(28px,3vw,46px) minmax(0,1fr);align-items:start;column-gap:clamp(14px,2vw,30px);display:grid}.capability-entry-mobile{grid-column:1/span 7}.capability-entry-backend{grid-column:7/span 6}.capability-entry-web{grid-column:2/span 6}.capability-number{color:var(--page-muted);letter-spacing:.09em;font-variant-numeric:tabular-nums;padding-top:8px;font-size:16px;font-weight:580;line-height:1}.capability-copy{grid-column:2}.capability-entry h3{letter-spacing:-.035em;margin:0 0 12px;font-size:clamp(30px,3.2vw,48px);font-weight:540;line-height:1}.capability-entry .capability-copy p{max-width:31ch;margin:0;font-size:16px;line-height:1.58}.capability-primary{letter-spacing:-.035em;flex-wrap:wrap;grid-column:2;gap:.08em .48em;margin:30px 0 0;font-size:clamp(25px,2.6vw,39px);font-weight:520;line-height:1.08;display:flex}.capability-primary span:not(:last-child):after{content:"/";color:var(--page-line);margin-left:.48em;font-weight:400}.capability-secondary{max-width:58ch;color:var(--page-muted);letter-spacing:.015em;grid-column:2;margin:18px 0 0;font-size:12px;line-height:1.7}.about-contact{border-top:1px solid var(--page-line);grid-template-columns:minmax(0,1fr) minmax(290px,34%);align-items:start;column-gap:7%;padding:55px 0 115px;display:grid}.about-contact h2{grid-column:1}.about-contact>a{border-bottom:1px solid var(--page-fg);letter-spacing:-.025em;word-break:break-word;grid-column:1;justify-self:start;align-items:center;gap:18px;margin-top:44px;padding-bottom:6px;font-size:clamp(23px,3.5vw,45px);display:inline-flex}.about-contact-art{grid-area:1/2/span 2;width:100%;margin:9px 0 0;transform:rotate(-3deg)}.about-contact-art img{width:100%;height:auto;display:block;box-shadow:12px 19px 35px #1817141f}.archive-opening{grid-template-columns:2fr 1fr;column-gap:70px;padding:67px 0 105px;display:grid}.archive-opening h1{letter-spacing:-.044em;margin:0;font-size:clamp(59px,6.4vw,91px);font-weight:530;line-height:.96}.archive-opening p{max-width:34ch;color:var(--page-muted);align-self:end;margin:0 0 8px;font-size:18px;line-height:1.6}.archive-certificates,.archive-experiments{border-top:1px solid var(--page-line);padding:36px 0 116px}.archive-section-head{justify-content:space-between;align-items:baseline;gap:25px;margin-bottom:40px;display:flex}.archive-section-head h2{font-family:var(--serif);letter-spacing:-.035em;margin:0;font-size:clamp(38px,4vw,60px);font-weight:420}.archive-section-head a,.archive-section-head>span{color:var(--page-muted);align-items:center;gap:7px;font-size:13px;display:inline-flex}.archive-cert-layout{grid-template-columns:minmax(0,1.35fr) minmax(270px,.65fr);gap:7.5%;display:grid}.archive-rows{border-top:1px solid var(--page-line)}.archive-row{border-bottom:1px solid var(--page-line);grid-template-columns:35px minmax(0,1fr) 50px 20px;align-items:start;column-gap:18px;min-height:72px;padding:18px 0;transition:color .25s;display:grid}.archive-row:hover,.archive-row:focus-visible,.archive-row.is-active{color:var(--page-accent)}.archive-row-index,.archive-row-date{color:var(--page-muted);font-variant-numeric:tabular-nums;font-size:12px}.archive-row-name{font-size:15px;line-height:1.45}.archive-row>svg{margin-top:2px}.archive-row-mobile-preview{display:none}.archive-floating-preview{align-self:start;margin:0;position:sticky;top:105px}.archive-preview-sheet{background:#e5e5e0;place-items:center;height:clamp(350px,34vw,490px);display:grid;overflow:hidden}.archive-preview-sheet img{object-fit:contain;max-width:88%;max-height:88%;animation:.28s both preview-arrive;box-shadow:0 14px 27px #20251f1b}@keyframes preview-arrive{0%{opacity:.55;transform:translateY(8px)}to{opacity:1;transform:none}}.archive-floating-preview p{max-width:40ch;color:var(--page-muted);margin:11px 0 0;font-size:12px;line-height:1.5}.archive-experiments{padding-bottom:120px}.experiment-list{grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(52px,6vw,90px) clamp(18px,2.4vw,38px);display:grid}.experiment-card{grid-column:span 4;align-self:start;min-width:0}.experiment-card:nth-child(4),.experiment-card:nth-child(9){grid-column:span 5}.experiment-card:nth-child(5),.experiment-card:nth-child(10){grid-column:span 7}.experiment-media{aspect-ratio:4/3;background:var(--page-soft);place-items:center;margin:0;display:grid;overflow:hidden}.experiment-media img{object-fit:cover;width:100%;height:100%;transition:transform .55s cubic-bezier(.16,1,.3,1);display:block}.experiment-media--desktop{aspect-ratio:16/10}.experiment-media--desktop img{object-position:top center}.experiment-media--phone img{object-fit:contain;filter:drop-shadow(0 13px 16px #20251f1c);width:auto;max-width:58%;height:88%}.experiment-media--logo img{object-fit:contain;width:min(31%,128px);height:auto;max-height:42%}.experiment-media--mark span{font-family:var(--serif);letter-spacing:-.05em;font-size:clamp(64px,9vw,142px);font-style:italic;font-weight:430;line-height:1}.experiment-media--lilac{background:#dfdce5}.experiment-media--orange{background:#e6d5c8}.experiment-media--ink{color:var(--page-bg);background:#242826}.experiment-media--silver{background:#dfe0dc}.experiment-caption{padding-top:14px}.experiment-meta,.experiment-title{justify-content:space-between;align-items:baseline;gap:14px;display:flex}.experiment-meta{color:var(--page-muted);font-variant-numeric:tabular-nums;letter-spacing:.07em;text-transform:uppercase;margin-bottom:8px;font-size:11px}.experiment-title svg{flex:none;transition:transform .3s cubic-bezier(.16,1,.3,1)}.experiment-name{letter-spacing:-.035em;margin:0;font-size:clamp(25px,2.1vw,34px);font-weight:530;line-height:1.08}.experiment-caption p{max-width:46ch;color:var(--page-muted);margin:7px 0 0;font-size:14px;line-height:1.5}.experiment-card:hover .experiment-media img{transform:scale(1.025)}.experiment-card:hover .experiment-media--phone img{transform:translateY(-6px)}.experiment-card:hover .experiment-title svg{transform:translate(3px,-3px)}.case-back{justify-content:space-between;align-items:center;padding:35px 0 95px;font-size:13px;display:flex}.case-back a{align-items:center;gap:10px;display:inline-flex}.case-back>span{color:var(--page-muted);font-variant-numeric:tabular-nums}.case-opening{grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);align-items:start;gap:8%;padding-bottom:77px;display:grid}.case-title-lockup{align-items:center;gap:20px;display:flex}.case-project-logo{object-fit:cover;flex:none;width:64px;height:64px}.case-opening h1{letter-spacing:-.04em;overflow-wrap:anywhere;margin:0;font-size:clamp(62px,8vw,96px);font-weight:520;line-height:.94}.case-subtitle{font-family:var(--serif);letter-spacing:-.025em;margin:22px 0 0;font-size:clamp(25px,2.8vw,40px);line-height:1.3}.case-project-actions{justify-items:start;gap:22px;margin-top:22px;display:grid}.case-state{--state-color:var(--page-muted);color:var(--page-muted);align-items:center;gap:9px;margin:0;font-size:13px;line-height:1;display:inline-flex}.case-state--production{--state-color:#2f8a54}.case-state--development{--state-color:#d87924}.case-state-dot{background:var(--state-color);border-radius:50%;flex:0 0 8px;width:8px;height:8px;position:relative}.case-state--production .case-state-dot:after,.case-state--development .case-state-dot:after{border:1px solid var(--state-color);content:"";border-radius:50%;animation:2.2s cubic-bezier(.16,1,.3,1) infinite case-state-pulse;position:absolute;inset:-4px}@keyframes case-state-pulse{0%,42%{opacity:.7;transform:scale(.55)}82%,to{opacity:0;transform:scale(1.25)}}.case-project-github{border:1px solid var(--page-fg);color:var(--page-fg);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:10px;margin-top:0;padding:12px 15px 11px;font-size:12px;font-weight:580;transition:color .2s,background-color .2s;display:inline-flex}.case-project-github:hover{color:var(--page-bg);background:var(--page-fg)}.case-project-github:focus-visible{outline:2px solid var(--page-fg);outline-offset:4px}.project-facts{gap:18px;margin:7px 0 0;display:grid}.project-facts div{grid-template-columns:112px 1fr;gap:13px;display:grid}.project-facts dt{color:var(--page-muted);text-transform:uppercase;letter-spacing:.06em;font-size:12px}.project-facts dd{margin:0;font-size:14px;line-height:1.5}.case-carousel{margin:0 0 135px}.case-carousel-track{scroll-snap-type:x mandatory;overscroll-behavior-inline:contain;overscroll-behavior-block:auto;scrollbar-width:none;display:flex;overflow:auto hidden}.case-carousel-track::-webkit-scrollbar{display:none}.case-carousel-track:focus-visible{outline:2px solid var(--page-fg);outline-offset:4px}.case-carousel-slide{scroll-snap-align:start;scroll-snap-stop:always;background:#e5e5e0;flex:0 0 100%;place-items:center;height:clamp(470px,56vw,700px);margin:0;padding:35px;display:grid}.case-carousel-portrait .case-carousel-slide{height:clamp(540px,65vw,760px)}.case-carousel-slide a,.case-carousel-media{place-items:center;width:100%;min-width:0;height:100%;min-height:0;display:grid}.case-carousel-slide a{cursor:zoom-in}.case-carousel-slide img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:100%;display:block}.case-carousel-landscape .case-carousel-slide img{object-fit:contain;width:100%;max-width:none;height:100%;max-height:none;position:absolute;inset:0}.case-carousel-landscape .case-carousel-slide a,.case-carousel-landscape .case-carousel-slide .case-carousel-media{position:relative;overflow:hidden}.case-carousel-portrait .case-carousel-slide img{height:100%}.case-carousel-poster .case-carousel-slide{height:min(68dvh,640px);min-height:430px;padding:28px}.case-carousel-poster .case-carousel-slide img{object-fit:contain;place-self:center;width:auto;max-width:100%;height:calc(min(68dvh,640px) - 56px)}.case-carousel-marketing .case-carousel-slide{background:#e2e1dc;height:clamp(640px,72vw,790px);padding:30px}.case-carousel-marketing .case-marketing-link{cursor:zoom-in;place-items:center;display:grid}.case-marketing-card{aspect-ratio:1284/2778;color:#fff8f1;isolation:isolate;background:#d82d40;height:100%;max-height:730px;display:block;position:relative;overflow:hidden}.case-marketing-copy{z-index:3;gap:14px;max-height:42%;padding:clamp(25px,3vw,42px) clamp(22px,2.6vw,36px) 0;display:grid;position:absolute;inset:0 0 auto;overflow:hidden}.case-marketing-brand{letter-spacing:-.01em;align-items:center;gap:9px;font-size:13px;font-weight:650;display:flex}.case-carousel-portrait .case-carousel-slide .case-marketing-brand img{object-fit:cover;border-radius:7px;width:30px;height:30px}.case-marketing-copy strong{max-width:10ch;font-family:var(--serif);letter-spacing:-.035em;text-wrap:balance;font-size:clamp(26px,2.7vw,38px);font-weight:620;line-height:1.03}.case-marketing-copy small{max-width:27ch;font-size:clamp(11px,1vw,14px);line-height:1.4}.case-marketing-phone{z-index:2;width:46%;position:absolute;top:43%;bottom:auto;left:50%;transform:translate(-50%)rotate(-1.4deg)}.case-marketing-pullout{z-index:5;color:#242120;background:#fffaf4;border-radius:13px;gap:8px;width:48%;padding:11px;transition:transform .65s cubic-bezier(.16,1,.3,1),box-shadow .65s cubic-bezier(.16,1,.3,1);display:grid;position:absolute;top:65%;right:3%;transform:rotate(2.5deg);box-shadow:0 14px 30px #1815143d}.case-marketing-pullout:before{content:"";transform-origin:100%;opacity:.55;background:currentColor;width:26px;height:1px;position:absolute;top:24px;left:-21px;transform:rotate(-13deg)}.case-marketing-crop{aspect-ratio:1.42;background:#f1edf3;border-radius:8px;width:100%;display:block;overflow:hidden}.case-carousel-portrait .case-carousel-slide .case-marketing-crop img{transform-origin:50% 0;width:100%;max-width:none;height:auto;max-height:none;display:block;transform:translateY(-11%)scale(1.04)}.case-marketing-pullout>span:last-child{font-size:11px;font-weight:640;line-height:1.25}.case-marketing-card:hover .case-marketing-pullout{transform:translate(7px,-7px)rotate(4deg);box-shadow:0 19px 38px #1815144d}.case-marketing-card--2 .case-marketing-pullout,.case-marketing-card--4 .case-marketing-pullout,.case-marketing-card--6 .case-marketing-pullout{left:3%;right:auto;transform:rotate(-2.5deg)}.case-marketing-card--2 .case-marketing-pullout:before,.case-marketing-card--4 .case-marketing-pullout:before,.case-marketing-card--6 .case-marketing-pullout:before{transform-origin:0;left:auto;right:-21px;transform:rotate(13deg)}.case-marketing-card--2:hover .case-marketing-pullout,.case-marketing-card--4:hover .case-marketing-pullout,.case-marketing-card--6:hover .case-marketing-pullout{transform:translate(-7px,-7px)rotate(-4deg)}.case-carousel-portrait .case-carousel-slide .case-marketing-phone .iphone-16-frame{border-radius:13%/6%;width:100%;height:auto;max-height:none;padding:1.7%}.case-carousel-portrait .case-carousel-slide .case-marketing-phone .iphone-16-frame>.iphone-screen{border-radius:11.7%/5.35%}.case-marketing-glyph{z-index:1;font-family:var(--serif);letter-spacing:-.09em;opacity:.09;font-size:clamp(110px,13vw,180px);font-weight:540;line-height:.8;position:absolute;bottom:23%;right:-.12em;transform:rotate(-8deg)}.case-marketing-card--2{color:#1b1d1c;background:#f4ede2}.case-marketing-card--2 .case-marketing-copy{text-align:right;justify-items:end}.case-marketing-card--2 .case-marketing-brand{flex-direction:row-reverse}.case-marketing-card--2 .case-marketing-phone{transform:translate(-52%)rotate(1.8deg)}.case-marketing-card--2 .case-marketing-glyph{opacity:.14;bottom:28%;left:-.08em;right:auto;transform:rotate(6deg)}.case-marketing-card--3{color:#f6eee3;background:#1c1d1c}.case-marketing-card--3 .case-marketing-glyph{color:#ef334e;opacity:.42}.case-marketing-card--4{color:#241d27;background:#ddd4e5}.case-marketing-card--4 .case-marketing-phone{transform:translate(-48%)rotate(1.5deg)}.case-marketing-card--5{color:#271917;background:#f46b65}.case-marketing-card--5 .case-marketing-glyph{color:#fff0e8;opacity:.28;left:-.06em;right:auto;transform:rotate(5deg)}.case-marketing-card--6{color:#1b1d1c;background:#efe4d6}.case-marketing-card--6 .case-marketing-copy{text-align:center;justify-items:center}.case-marketing-card--6 .case-marketing-glyph{bottom:21%;right:50%;transform:translate(50%)rotate(-4deg)}.case-carousel-portrait .case-carousel-slide .iphone-16-frame{aspect-ratio:1206/2622;background:#090a09;border:1px solid #747875;border-radius:40px;place-self:center;width:auto;height:calc(clamp(540px,65vw,760px) - 110px);max-height:calc(100% - 40px);padding:5px;box-shadow:0 15px 34px #16181733,inset 0 0 0 1px #242725}.case-carousel-portrait .case-carousel-slide .iphone-16-frame>.iphone-screen{object-fit:cover;border-radius:35px;width:100%;max-width:none;height:100%;max-height:none}.case-carousel-portrait .case-carousel-slide .iphone-16-island{background:#050505;width:29%;height:4%;display:block;top:2.5%;box-shadow:inset 0 0 0 1px #ffffff09}.case-carousel-portrait .case-carousel-slide .iphone-frame-iphone-13-pro{aspect-ratio:984/1992;background:0 0;border:0;border-radius:10%/4.9%;padding:0;box-shadow:0 18px 34px #1618172e}.case-carousel-portrait .case-carousel-slide .iphone-frame-iphone-13-pro>.iphone-screen{object-fit:contain;border-radius:7.5%/3.6%;width:91.5%;height:96.7%;top:1.65%;left:4.25%}.case-carousel-portrait .case-carousel-slide .iphone-frame-iphone-13-pro .iphone-16-island{border-radius:0 0 15px 15px;width:35%;height:3.25%;top:1.15%}.case-carousel-portrait .case-carousel-slide .iphone-16-side{display:none}.case-carousel-portrait .case-carousel-slide .iphone-frame-iphone-17-pro{background:linear-gradient(105deg,#555a58 0%,#111413 9%,#060807 48%,#2d3230 88%,#737774 100%);border:1px solid #777b79;border-radius:13.2%/6.05%;padding:1.3%;box-shadow:0 18px 38px #12141340,inset 0 0 0 1px #ffffff29,inset 0 0 0 3px #080a09}.case-carousel-portrait .case-carousel-slide .iphone-frame-iphone-17-pro>.iphone-screen{border-radius:12%/5.45%}.case-carousel-portrait .case-carousel-slide .iphone-frame-iphone-17-pro .iphone-16-island{width:28%;height:3.25%;top:2.05%}.case-carousel-portrait .case-carousel-slide .iphone-frame-iphone-17-pro .iphone-16-side{display:block}.case-carousel-portrait .case-carousel-slide .case-marketing-phone .iphone-frame-iphone-17-pro{border-radius:13.2%/6.05%;padding:1.3%}.case-carousel-controls{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;margin-top:17px;font-size:13px;display:flex}.case-carousel-controls>div{gap:8px;display:flex}.case-carousel-controls button{border:1px solid var(--page-line);width:44px;height:44px;color:var(--page-fg);cursor:pointer;background:0 0;border-radius:0;place-items:center;padding:0;transition:background-color .2s,border-color .2s;display:grid}.case-carousel-controls button:hover:not(:disabled){border-color:var(--page-fg);background:var(--page-soft)}.case-carousel-controls button:disabled{opacity:.35;cursor:default}.case-carousel-controls button:focus-visible,.case-carousel-slide a:focus-visible{outline:2px solid var(--page-fg);outline-offset:3px}.case-section{border-top:1px solid var(--page-line);grid-template-columns:minmax(180px,.7fr) minmax(0,1.3fr);gap:7%;padding:38px 0 74px;display:grid}.case-section h2{font-family:var(--serif);letter-spacing:-.035em;margin:0;font-size:clamp(30px,3vw,45px);font-weight:430;line-height:1.2}.case-section-content{max-width:72ch}.case-section-content p{margin:0 0 22px;font-size:clamp(17px,1.5vw,20px);line-height:1.75}.case-section-content p:last-child{margin-bottom:0}.case-features ul{grid-template-columns:1fr 1fr;gap:16px 29px;margin:0;padding:0;list-style:none;display:grid}.case-features li{border-top:1px solid var(--page-line);padding-top:11px;font-size:15px;line-height:1.55}.case-mobile-gallery .case-section-content{max-width:none}.case-mobile-gallery .case-carousel{margin:0}.case-contributors>div>p{margin-bottom:27px}.case-contributors ul{margin:0;padding:0;list-style:none}.case-contributors li{justify-content:space-between;align-items:start;gap:24px;padding:4px 0;display:flex}.case-contributors li>div{gap:4px;display:grid}.case-contributors strong{font-size:17px;font-weight:560}.case-contributors span{color:var(--page-muted);font-size:13px}.case-contributors .contributor-name-link{color:var(--page-fg);font:inherit;border-bottom:1px solid;align-items:center;padding-bottom:1px;text-decoration:none;transition:color .2s;display:inline-flex}.case-contributors .contributor-name-link:hover{color:var(--page-muted)}.technology-list{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.technology-list li{border:1px solid var(--page-line);background:var(--page-soft);min-height:40px;color:var(--page-fg);border-radius:999px;align-items:center;gap:9px;padding:8px 14px 8px 10px;font-size:14px;line-height:1;display:inline-flex}.technology-icon{flex:0 0 22px;place-items:center;width:22px;height:22px;display:grid}.technology-icon svg{width:20px;height:20px;display:block}.technology-list--compact{gap:6px}.technology-list--compact li{gap:7px;min-height:30px;padding:5px 9px 5px 7px;font-size:12px}.technology-list--compact .technology-icon{flex-basis:17px;width:17px;height:17px}.technology-list--compact .technology-icon svg{width:16px;height:16px}.case-next{border-top:1px solid var(--page-line);justify-content:space-between;align-items:end;gap:30px;padding:31px 0 95px;display:flex}.case-next>span{color:var(--page-muted);font-size:13px}.case-next a{letter-spacing:-.04em;align-items:baseline;gap:15px;font-size:clamp(33px,5vw,72px);line-height:1;display:inline-flex}.case-next a:hover{font-family:var(--serif);font-style:italic}.missing-page{min-height:60vh;padding:100px 0}.missing-page h1{font-size:55px;font-weight:520}.missing-page a{border-bottom:1px solid var(--page-fg)}.site-footer{border-top:1px solid var(--page-line);color:var(--page-muted);grid-template-columns:minmax(180px,.55fr) minmax(0,1.45fr) auto;align-items:start;gap:clamp(28px,5vw,78px);padding:39px 0 38px;font-size:12px;display:grid}.footer-identity{flex-direction:column;align-items:start;gap:5px;display:flex}.footer-identity strong{color:var(--page-fg);font-size:14px;font-weight:550}.footer-contacts{grid-template-columns:repeat(3,minmax(120px,1fr));justify-self:start;gap:14px clamp(12px,2vw,28px);width:min(100%,750px);display:grid}.footer-contact{color:var(--page-fg);border-top:1px;grid-template-columns:25px minmax(0,1fr);align-items:center;gap:11px;padding:11px 0 8px;text-decoration:none;display:grid}.footer-contact>svg{color:var(--page-muted);transition:transform .24s,color .24s}.footer-contact:hover>svg{color:var(--page-fg);transform:translate(3px)}.footer-contact>span{gap:1px;min-width:0;display:grid}.footer-contact small{color:var(--page-muted);letter-spacing:.08em;text-transform:uppercase;font-size:10px;line-height:1.2}.footer-contact strong{overflow-wrap:anywhere;font-size:13px;font-weight:480;line-height:1.4}.footer-year{white-space:nowrap;justify-self:end}@media (width<=720px){.footer-contacts{grid-template-columns:repeat(2,minmax(150px,1fr))}}@media (width<=460px){.footer-contacts{grid-template-columns:1fr}}@media (width<=1100px){.site-header,.page,.site-footer{width:min(100% - 48px,1510px)}.index-project-stu{margin-top:145px}.index-project-roomprint{margin-top:60px}.index-project-edtech{margin-top:100px}.index-project-chinese{margin-top:10px}.about-main-photo{height:540px}.about-train{height:360px}.about-ferry{height:300px}.experiment-list{grid-template-columns:repeat(2,minmax(0,1fr))}.experiment-card,.experiment-card:nth-child(4),.experiment-card:nth-child(5),.experiment-card:nth-child(9),.experiment-card:nth-child(10){grid-column:auto}}@media (width<=1000px){.site-footer{grid-template-columns:1fr auto;gap:28px 18px}.footer-identity{grid-area:1/1}.footer-contacts{grid-area:2/1/auto/-1;width:100%}.footer-year{grid-area:1/2}}@media (width<=760px){.site-header,.page,.site-footer{width:calc(100% - 36px)}.site-header{grid-template-columns:auto 1fr auto;gap:18px;height:67px}.site-mark{font-size:23px}.site-mark-stage{width:74px;height:38px}.site-mark .handwritten-note{width:74px}.site-mark-monogram{font-size:23px}.site-nav{justify-self:center;gap:15px}.site-nav a,.header-email{letter-spacing:.04em;font-size:11px}.header-email{gap:0;font-size:0}.header-email svg{width:18px;height:18px}.editorial-grid{column-gap:10px}.work-intro{row-gap:20px;padding:33px 0 23px}.work-identity{grid-column:1/-1}.work-identity h1{font-size:clamp(56px,13vw,84px)}.work-role{gap:7px;margin-top:17px}.work-role-ios{font-size:clamp(23px,7vw,29px)}.work-role-fullstack{letter-spacing:-.04em;font-size:clamp(24px,7.4vw,31px)}.work-role-connector{font-size:clamp(17px,5vw,22px)}.work-intro-aside{grid-column:1/-1;padding:2px 0 0}.work-intro-aside p{text-align:left;flex-wrap:wrap;justify-content:flex-start;gap:0 12px;font-size:18px;display:flex}.work-index-head{padding-top:14px;font-size:11px}.work-index{padding:11px 0 52px;display:block}.index-project{margin:0 0 68px}.index-project-walk{width:96%;margin-left:0}.index-project-stu,.index-project-algo{width:100%}.index-project-satellite{width:94%;margin-left:auto}.index-project-roomprint{width:92%;margin-left:0}.index-project-edtech{width:100%;margin-left:0}.index-project-chinese{width:96%;margin-left:auto}.index-project-walk .index-project-image,.index-project-satellite .index-project-image,.index-project-roomprint .index-project-image{aspect-ratio:1/1.12}.index-project-stu .index-project-image{aspect-ratio:1.32}.index-project-algo .index-project-image{aspect-ratio:1.18}.index-project-edtech .index-project-image,.index-project-chinese .index-project-image{aspect-ratio:1.12}.device-fan-item{width:39%}.device-fan-poster .device-fan-item{width:40%}.device-count-1 .device-fan-item{width:45%}.device-fan-item:first-child{transform:translate(-106%,-47%)rotate(-7deg)scale(.88)}.device-fan-item:nth-child(2){transform:translate(-50%,-53%)rotate(0)scale(.97)}.device-fan-item:nth-child(3){transform:translate(6%,-47%)rotate(7deg)scale(.88)}.device-count-1 .device-fan-item{transform:translate(-50%,-50%)rotate(0)scale(1)}.index-project-caption{padding-top:12px}.index-project-caption h2{margin-top:8px;font-size:35px}.index-project-caption p{font-size:13px}.project-meta-inline{font-size:11px}.index-project-caption>svg{margin-top:26px}.work-end{flex-direction:column;align-items:start;padding:20px 0 72px}.work-end p{font-size:14px}.about-opening{flex-direction:column;padding:45px 0 65px;display:flex}.about-lead h1{margin:29px 0 22px;font-size:clamp(55px,13vw,83px)}.about-lead>p{font-size:17px}.about-main-photo{align-self:flex-end;width:81%;height:480px;margin:55px 0 0}.about-second-text{max-width:50ch;margin:36px 0 0;font-size:16px;line-height:1.65}.about-photo-interlude{padding:0 0 85px}.about-train{grid-column:1/span 7;height:310px}.about-ferry{grid-column:9/span 4;height:230px;margin-bottom:-20px}.about-experience,.about-education{padding:34px 0 72px;display:block}.experience-entry{margin-top:42px}.experience-entry+.experience-entry{margin-top:46px;padding-top:38px}.experience-period,.experience-entry header{margin-bottom:25px}.experience-entry h3{font-size:34px}.experience-entry li{font-size:14px}.about-capabilities{padding:34px 0 72px}.capability-list{row-gap:42px;margin-top:42px}.capability-entry-mobile{grid-column:1/span 8}.capability-entry-backend{grid-column:5/span 8}.capability-entry-web{grid-column:2/span 8}.capability-entry{grid-template-columns:31px minmax(0,1fr);column-gap:13px}.capability-entry h3{font-size:34px}.capability-entry .capability-copy p{font-size:14px}.capability-primary{margin-top:22px;font-size:clamp(23px,4vw,31px)}.capability-secondary{margin-top:13px;font-size:11px}.about-contact{grid-template-columns:1fr;padding:32px 0 75px}.about-contact>a{font-size:clamp(19px,5vw,28px)}.about-contact-art{grid-area:auto/1;justify-self:end;width:min(75%,420px);margin-top:48px}.archive-opening{padding:46px 0 69px;display:block}.archive-opening h1{font-size:clamp(52px,12vw,82px)}.archive-opening p{margin-top:28px;font-size:16px}.archive-certificates,.archive-experiments{padding:30px 0 80px}.archive-section-head{align-items:start;margin-bottom:29px}.archive-section-head h2{font-size:41px}.archive-section-head a,.archive-section-head>span{text-align:right;font-size:11px}.archive-cert-layout{display:block}.archive-floating-preview{display:none}.archive-row{grid-template-columns:28px minmax(0,1fr) 38px 17px;gap:8px;min-height:68px;padding:17px 0}.archive-row-name{font-size:13px}.archive-row-index,.archive-row-date{font-size:11px}.experiment-list{grid-template-columns:1fr;row-gap:52px}.experiment-name{font-size:30px}.experiment-meta{font-size:11px}.case-back{padding:23px 0 61px}.case-opening{padding-bottom:38px;display:block}.case-title-lockup{gap:13px}.case-project-logo{width:50px;height:50px}.case-opening h1{font-size:clamp(55px,12.5vw,88px)}.case-subtitle{font-size:26px}.project-facts{gap:13px;margin-top:49px}.project-facts div{grid-template-columns:120px minmax(0,1fr);gap:10px}.project-facts dt{white-space:nowrap}.project-facts dd{font-size:13px}.case-carousel{margin-bottom:77px}.case-carousel-slide{height:310px;padding:18px}.case-carousel-portrait .case-carousel-slide{height:540px}.case-carousel-poster .case-carousel-slide{height:min(64dvh,510px);min-height:390px;padding:18px}.case-carousel-poster .case-carousel-slide img{height:calc(min(64dvh,510px) - 36px)}.case-carousel-marketing .case-carousel-slide{height:570px;padding:18px}.case-marketing-card{max-height:534px}.case-marketing-copy{gap:10px;max-height:43%;padding:24px 21px 0}.case-marketing-copy strong{font-size:28px}.case-marketing-copy small{font-size:11px}.case-marketing-phone{width:45%;top:43%;bottom:auto}.case-marketing-pullout{width:50%;padding:9px;top:65%}.case-marketing-pullout>span:last-child{font-size:9px}.case-carousel-portrait .case-carousel-slide .iphone-16-frame{width:min(230px,64vw);height:auto}.case-carousel-controls{margin-top:10px}.case-section{padding:26px 0 57px;display:block}.case-section h2{margin-bottom:31px;font-size:34px}.case-section-content p{font-size:16px;line-height:1.7}.case-features ul{gap:11px 21px}.case-features li{font-size:13px}.technology-list{gap:8px}.technology-list li{min-height:36px;padding:7px 11px 7px 9px;font-size:13px}.case-next{padding:28px 0 70px;display:block}.case-next a{margin-top:27px;font-size:39px;display:flex}.site-footer{grid-template-columns:1fr auto;gap:25px 18px;padding:28px 0 30px}.footer-identity{grid-area:1/1}.footer-contacts{grid-area:2/1/auto/-1;grid-template-columns:1fr;width:100%}.footer-year{grid-area:1/2}}@media (width<=480px){.site-header{gap:12px}.site-mark-stage{width:48px}.site-mark .handwritten-note{width:54px}.site-nav{gap:8px}.site-nav a{font-size:10px}.language-switch button{padding-inline:4px;font-size:10px}.about-main-photo{height:405px}.about-train{height:255px}.about-ferry{height:190px}.capability-list{display:block}.capability-entry{border-top:1px solid var(--page-line);grid-template-columns:28px minmax(0,1fr);column-gap:10px;padding:20px 0 26px}.capability-entry:last-child{padding-bottom:0}.capability-number{padding-top:6px}.capability-entry h3{margin-bottom:8px;font-size:31px}.capability-entry .capability-copy p{margin-bottom:0}.capability-primary{margin-top:20px;font-size:clamp(24px,7.6vw,31px)}.capability-secondary{margin-top:13px;font-size:11px}.case-features ul{grid-template-columns:1fr}.case-contributors li{flex-direction:column;gap:12px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.page,.archive-preview-sheet img{animation:none}.case-state-dot:after{opacity:0;animation:none}.site-mark .site-mark-handwritten,.site-mark .site-mark-monogram{filter:none;transition:opacity .1s linear}.site-mark:hover .site-mark-handwritten,.site-mark:focus-visible .site-mark-handwritten{transform:translateY(-50%)}.site-mark:hover .site-mark-monogram,.site-mark:focus-visible .site-mark-monogram{clip-path:none;transform:translateY(-50%)}.site-nav a:after,.project-desktop-preview,.device-fan-item,.index-project-caption>svg,.header-email svg,.site-footer a svg,.work-end a svg,.archive-section-head a svg,.case-project-github,.case-project-github .project-link-arrow,.case-carousel-controls button{transition:none}.device-fan-item:first-child{transform:translate(-106%,-47%)rotate(-7deg)scale(.88)}.device-fan-item:nth-child(2){transform:translate(-50%,-53%)rotate(0)scale(.97)}.device-fan-item:nth-child(3){transform:translate(6%,-47%)rotate(7deg)scale(.88)}.device-count-1 .device-fan-item{transform:translate(-50%,-50%)rotate(0)scale(1)}}
