:root{--bg:#fafaf7;--fg:#101210;--grey:#8b8f8a;--hairline:#dcded8;--accent:#2b3fe0;--sans:"Helvetica Neue", Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html.lenis,html.lenis body{height:auto}html{overflow-x:clip}.lenis.lenis-smooth{scroll-behavior:auto!important}body{background:var(--bg);color:var(--fg);font-family:var(--sans);line-height:1.55;overflow-x:clip}::selection{background:var(--accent);color:var(--bg)}.mono{font-family:var(--mono);letter-spacing:.02em;color:var(--grey);font-size:12px}a{color:inherit}#loader{z-index:100;background:#101210;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loader-word{color:#fafaf7;letter-spacing:.6em;text-indent:.6em;font-size:clamp(18px,3vw,28px);font-weight:500}.loader-word span{display:inline-block}@media (pointer:fine){body,a,.project{cursor:none}}.cursor,.cursor-ring{z-index:99;pointer-events:none;mix-blend-mode:difference;border-radius:50%;display:none;position:fixed;top:0;left:0}@media (pointer:fine){.cursor,.cursor-ring{display:block}}.cursor{background:#fff;width:8px;height:8px;margin:-4px 0 0 -4px}.cursor-ring{border:1px solid #fff;width:38px;height:38px;margin:-19px 0 0 -19px}.cursor-tag{z-index:99;pointer-events:none;mix-blend-mode:difference;color:#fff;text-align:center;letter-spacing:.06em;opacity:0;width:120px;margin:-.5em 0 0 -60px;font-size:11px;line-height:1;display:none;position:fixed;top:0;left:0}@media (pointer:fine){.cursor-tag{display:block}}header{z-index:20;mix-blend-mode:difference;color:#fff;justify-content:space-between;align-items:baseline;padding:26px clamp(24px,5vw,64px);display:flex;position:fixed;top:0;left:0;right:0}header a{color:#fff;font-size:14px;text-decoration:none}header nav a{margin-left:26px;position:relative}header nav a:after{content:"";transform-origin:100%;background:#fff;width:100%;height:1px;transition:transform .35s cubic-bezier(.65,0,.35,1);position:absolute;bottom:-4px;left:0;transform:scaleX(0)}header nav a:hover:after,header nav a:focus-visible:after{transform-origin:0;transform:scaleX(1)}.brand{letter-spacing:1.1em;white-space:nowrap;font-size:11px;font-weight:500}.brand span{display:inline-block}@media (width<=480px){.brand{letter-spacing:.72em}header nav a{margin-left:14px;font-size:13px}}@media (width<=360px){.brand{letter-spacing:.5em}header nav a{margin-left:10px;font-size:12px}}main{padding:0 clamp(24px,5vw,64px)}section{padding:18vh 0 12vh;position:relative}section:before{content:"";background:var(--hairline);transform-origin:0;height:1px;transition:transform 1.1s cubic-bezier(.22,1,.36,1);position:absolute;top:0;left:0;right:0;transform:scaleX(0)}section.on:before{transform:scaleX(1)}section:first-of-type:before,#about:before,#other:before{display:none}.spaced{letter-spacing:.7em;text-indent:.1em;color:var(--grey);text-transform:uppercase;margin-bottom:clamp(28px,6vh,64px);font-size:13px;font-weight:500}.spaced span{display:inline-block}.line{display:block;overflow:hidden}.line>.inner{will-change:transform;display:block}.statement .line{margin:0 0 -.14em -.16em;padding:0 0 .14em .16em}.proj-title .line,.card-title .line{margin-bottom:-.14em;padding-bottom:.14em}.hero{flex-direction:column;justify-content:center;min-height:100vh;padding-bottom:24vh;display:flex}h1{letter-spacing:-.03em;text-wrap:balance;font-size:clamp(52px,11vw,152px);font-weight:500;line-height:1.02}h1 em,.statement em{color:var(--accent);font-style:italic}.swap{display:inline-grid}.swap>*{grid-area:1/1}.swap-sizer{visibility:hidden}.swap-inner{will-change:transform;justify-self:center;display:inline-block}.project{flex-direction:column;justify-content:center;min-height:100vh;display:flex}.project:before{display:none}.ghost{z-index:0;pointer-events:none;letter-spacing:.05em;color:#0000;-webkit-text-stroke:1px var(--hairline);opacity:.5;justify-content:center;align-items:center;font-size:clamp(160px,38vw,560px);font-weight:600;display:flex;position:absolute;inset:0}.proj-idx,.proj-count{color:var(--grey);font-size:clamp(16px,2vw,24px);font-style:italic}.proj-idx{position:absolute;top:clamp(80px,12vh,130px);left:0}.proj-count{z-index:5;align-self:flex-end;margin-top:26px;position:relative}.proj-media{z-index:1;height:clamp(320px,62vh,640px);margin:4vh 0 0;position:relative}.shot{will-change:transform;position:absolute}.shot-a{aspect-ratio:1206/2622;z-index:3;height:100%;top:0;left:50%;translate:-50%}.shot-b{aspect-ratio:1206/2622;z-index:2;height:86%;top:7%;left:50%;translate:-122%;rotate:-6deg}.shot-c{aspect-ratio:1206/2622;z-index:1;height:86%;top:7%;left:50%;translate:22%;rotate:6deg}.layout-b .shot{height:auto;translate:0;rotate:0deg}.layout-b .shot-a{aspect-ratio:1038/814;z-index:3;width:35%;top:6%;left:50%;translate:-50%}.layout-b .shot-b{aspect-ratio:1564/822;z-index:1;width:36%;top:auto;bottom:-6%;left:-2%}.layout-b .shot-c{aspect-ratio:1563/730;z-index:2;width:40%;top:8%;left:auto;right:-5%}.layout-b .shot-d{aspect-ratio:1060/492;z-index:4;width:27%;inset:auto 8% -10% auto}.layout-d .shot{height:auto;translate:0;rotate:0deg}.layout-d .shot-a{aspect-ratio:1600/1000;z-index:1;width:min(72%,1000px);top:2%;left:50%;translate:-50%}[data-tone=d] .shot{border-radius:10px;box-shadow:0 20px 60px #00000073,0 0 0 1px #ffffff14}[data-tone=d] .shot-a{background:url(/shots/train-1.png) 50%/cover no-repeat}[data-tone=d] .proj-media{margin-top:-4vh}.project[data-tone=d]{padding-top:34vh;padding-bottom:55vh}[data-tone=d] .proj-title{color:#fafaf7;margin-top:calc(-1*clamp(170px,33vh,350px));font-size:clamp(38px,6.4vw,96px)}[data-tone=d] .proj-count{margin:0;position:absolute;bottom:6vh;right:0}[data-tone=a] .shot,[data-tone=c] .shot{border-radius:clamp(18px,2.4vh,40px);box-shadow:0 30px 80px #0000008c,0 0 0 1px #ffffff14}[data-tone=a] .proj-media,[data-tone=c] .proj-media{margin-top:-4vh}[data-tone=a] .proj-title{margin-top:clamp(8px,2vh,24px)}[data-tone=a] .proj-title,[data-tone=b] .proj-title,[data-tone=c] .proj-title,[data-tone=d] .proj-title{pointer-events:none}[data-tone=a] .proj-title .inner,[data-tone=b] .proj-title .inner,[data-tone=c] .proj-title .inner,[data-tone=d] .proj-title .inner{pointer-events:auto;width:fit-content;transition:color .35s}[data-tone=a] .proj-title .inner,[data-tone=c] .proj-title .inner,[data-tone=d] .proj-title .inner{margin-inline:auto}[data-tone=a] .proj-title:hover .inner,[data-tone=a] .proj-title:focus-visible .inner,[data-tone=b] .proj-title:hover .inner,[data-tone=b] .proj-title:focus-visible .inner,[data-tone=c] .proj-title:hover .inner,[data-tone=c] .proj-title:focus-visible .inner,[data-tone=d] .proj-title:hover .inner,[data-tone=d] .proj-title:focus-visible .inner{color:var(--accent)}@media (pointer:coarse){[data-case-trigger]{cursor:pointer}}[data-tone=a] .shot-a{background:url(/shots/edo-1.png) 50%/cover no-repeat}[data-tone=a] .shot-b{background:url(/shots/edo-2.png) 50%/cover no-repeat}[data-tone=a] .shot-c{background:url(/shots/edo-3.png) 50%/cover no-repeat}.layout-c .shot{aspect-ratio:1206/2622;translate:0;rotate:0deg}.layout-c .shot-a{z-index:1;height:74%;top:22%;left:13%}.layout-c .shot-b{z-index:1;height:70%;top:0;left:33%}.layout-c .shot-c{z-index:1;height:72%;top:auto;bottom:-6%;left:53%}.layout-c .shot-d{z-index:1;height:64%;top:6%;left:auto;right:13%}[data-tone=c] .shot-a{background:url(/shots/vt-1.png) 50%/cover no-repeat}[data-tone=c] .shot-b{background:url(/shots/vt-2.png) 50%/cover no-repeat}[data-tone=c] .shot-c{background:url(/shots/vt-3.png) 50%/cover no-repeat}[data-tone=c] .shot-d{background:url(/shots/vt-2.png) 50%/cover no-repeat}[data-tone=b] .shot{border-radius:0;box-shadow:0 20px 60px #00000073,0 0 0 1px #ffffff14}[data-tone=b] .shot-a{background:url(/shots/caat-1.png) 50%/cover no-repeat}[data-tone=b] .shot-b{background:url(/shots/caat-2.png) 50%/cover no-repeat}[data-tone=b] .shot-c{background:url(/shots/caat-3.png) 50%/cover no-repeat}[data-tone=b] .shot-d{background:url(/shots/caat-4.png) 50%/cover no-repeat}[data-tone=b] .proj-media{margin-top:-4vh}[data-tone=b] .proj-title,[data-tone=c] .proj-title{mix-blend-mode:difference;color:#fff;margin-top:calc(-1*clamp(240px,44vh,460px))}[data-tone=b] .proj-title{text-align:left;margin-top:calc(-1*clamp(300px,53vh,550px));margin-left:2%}[data-tone=b] .proj-count,[data-tone=c] .proj-count{margin:0;position:absolute;bottom:6vh;right:0}.proj-title{z-index:5;text-align:center;letter-spacing:-.03em;margin-top:calc(-1*clamp(36px,6vw,90px));font-size:clamp(56px,10vw,150px);font-weight:500;line-height:1;position:relative}.proj-info{z-index:2;flex-wrap:wrap;gap:24px clamp(32px,8vw,120px);margin-top:clamp(20px,4vh,40px);display:flex;position:relative}.proj-meta{text-transform:uppercase;line-height:1.9}.proj-desc{max-width:42ch;color:var(--grey);font-size:16px}@media (width<=720px){.proj-media{height:48vh}.proj-title{margin-top:-16px}.layout-b .shot-b,.layout-b .shot-c,.layout-b .shot-d{display:none}.layout-b .shot-a{width:94%;top:0}[data-tone=b] .proj-media{height:34vh;margin-top:-12vh}[data-tone=b] .proj-title{text-align:center;margin-top:-22vh;margin-left:0}[data-tone=b] .proj-title .inner{margin-inline:auto}.layout-c .shot-b,.layout-c .shot-d{display:none}.layout-c .shot-a{height:82%;top:0;left:4%}.layout-c .shot-c{height:82%;inset:auto 4% -2% auto}[data-tone=c] .proj-title{margin-top:-28vh}.project[data-tone=d]{padding-top:34vh;padding-bottom:26vh}.layout-d .shot-a{width:94%}[data-tone=d] .proj-media{height:34vh;margin-top:-13vh}[data-tone=d] .proj-title{margin-top:-22vh}}#edo-case,#caat-case,#vt-case,#train-case{z-index:30;background:var(--bg);color:var(--fg);opacity:0;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;display:none;position:fixed;inset:0;overflow-y:auto}.case-back{z-index:2;cursor:pointer;color:var(--grey);background:0 0;border:0;padding:4px 0;transition:color .3s;position:fixed;top:26px;left:clamp(24px,5vw,64px)}.case-back:hover,.case-back:focus-visible{color:var(--fg)}.case-hero-band{justify-content:space-between;align-items:flex-start;gap:clamp(28px,4vw,80px);min-height:100vh;padding:clamp(90px,14vh,150px) clamp(24px,5vw,64px) clamp(56px,9vh,110px);display:flex}.case-copy{max-width:520px}.case-title{letter-spacing:-.03em;font-size:clamp(48px,8vw,120px);font-weight:500;line-height:1}.case-title a{color:inherit;text-decoration:none;transition:color .3s;display:block}.case-title a:hover,.case-title a:focus-visible{color:var(--accent)}.case-flip{margin-bottom:-.14em;padding-bottom:.14em;display:block;position:relative;overflow:hidden}.case-face{white-space:nowrap;transition:transform .55s cubic-bezier(.76,0,.24,1);display:block}.case-face.alt{align-items:center;font-size:.42em;font-style:italic;display:flex;position:absolute;inset:0;transform:translateY(105%)}.case-title a:hover .case-face,.case-title a:focus-visible .case-face{transform:translateY(-105%)}.case-title a:hover .case-face.alt,.case-title a:focus-visible .case-face.alt{transform:translateY(0)}.case-intro{max-width:44ch;color:var(--grey);margin-top:clamp(20px,3.5vh,36px);font-size:16px}.case-problem{max-width:44ch;color:var(--grey);margin-top:14px;font-size:16px}.case-problem:before{content:"the problem";margin:clamp(16px,3vh,28px) 0 10px;display:block}.case-problem:before,.col-eyebrow,.case-stack h3{font-family:var(--sans);letter-spacing:normal;text-transform:none;color:var(--fg);font-size:18px;font-style:italic;font-weight:500}.case-problem+.case-problem:before{content:none}.case-side{flex:1;max-width:400px}.side-block+.side-block{margin-top:clamp(24px,4.5vh,44px)}.col-eyebrow{margin-bottom:14px}.feature-list{list-style:none}.feature-list li{color:var(--grey);border-radius:8px;margin:0 -12px;padding:9px 12px;font-size:16px;transition:color .25s,background .25s}.feature-list li+li{border-top:1px solid var(--hairline)}.feature-list strong{color:var(--grey);font-weight:500;transition:color .25s}.feature-list li:hover{color:var(--fg);background:var(--hairline)}.feature-list li:hover strong{color:var(--fg)}.side-block>p:not(.col-eyebrow){color:var(--grey);font-size:16px}.side-block>p+p{margin-top:10px}.stack-pills{flex-wrap:wrap;gap:10px;margin-top:14px;list-style:none;display:flex}.stack-pills li{border:1px solid var(--hairline);white-space:nowrap;color:var(--grey);border-radius:12px;padding:8px 17px;font-size:13px}.case-copy>.case-stack{margin-top:clamp(20px,3vh,30px)}.case-gh{z-index:2;color:var(--grey);align-items:center;gap:10px;text-decoration:none;transition:color .3s;display:flex;position:fixed;top:24px;right:clamp(24px,5vw,64px)}.case-gh:hover,.case-gh:focus-visible{color:var(--fg)}.case-gh-label{opacity:0;transition:opacity .3s,transform .3s;transform:translate(8px)}.case-gh:hover .case-gh-label,.case-gh:focus-visible .case-gh-label{opacity:1;transform:none}.gh-mark{background:currentColor;flex:none;width:24px;height:24px;-webkit-mask:url(/github.png) 50%/contain no-repeat;mask:url(/github.png) 50%/contain no-repeat}#vt-case .gh-mark{width:18px;height:18px;-webkit-mask-image:url(/apple.png);mask-image:url(/apple.png)}.case-hero-slot{flex-shrink:0}.case-hero-cap{text-align:center;color:var(--grey);margin-top:18px}.case-hero,.case-shot{aspect-ratio:1206/2622;background:50%/cover no-repeat;border-radius:clamp(18px,2.4vh,40px);box-shadow:0 30px 80px #0000008c,0 0 0 1px #ffffff14}.case-hero{height:min(70vh,660px)}#edo-case .case-hero{background-image:url(/shots/edo-1.png)}#vt-case .case-hero{background-image:url(/shots/vt-1.png)}#vt-case .case-title{font-size:clamp(36px,5vw,76px)}#vt-case .case-face.alt{font-size:.62em}#vt-case .case-title a:hover .case-face:not(.alt),#vt-case .case-title a:focus-visible .case-face:not(.alt){transform:translateY(-125%)}#vt-case .case-copy>.case-stack{margin-top:clamp(34px,6vh,64px)}#caat-case .case-hero,#caat-case .case-hero-b{background:50%/cover no-repeat;border-radius:0;width:min(28vw,420px);height:auto;box-shadow:0 20px 60px #00000073,0 0 0 1px #ffffff14}#caat-case .case-hero{aspect-ratio:1038/814;background-image:url(/shots/caat-1.png)}#caat-case .case-hero-b{aspect-ratio:1060/492;background-image:url(/shots/caat-4.png);margin-top:clamp(40px,8vh,88px)}#caat-case .case-hero-cap{margin-top:24px}#caat-case .case-copy{max-width:460px}#caat-case .case-side{max-width:350px}#train-case .case-hero{aspect-ratio:1600/1000;background-image:url(/shots/train-1.png);border-radius:10px;width:min(34vw,520px);height:auto;box-shadow:0 20px 60px #00000073,0 0 0 1px #ffffff14}#train-case .case-title{font-size:clamp(24px,2.9vw,46px)}#train-case .case-face.alt{font-size:1em}#train-case .case-title a:hover .case-face:not(.alt),#train-case .case-title a:focus-visible .case-face:not(.alt){transform:translateY(-125%)}#train-case .case-copy{max-width:460px}#train-case .case-side{max-width:350px}#train-case .case-hero-slot{align-self:center}.case-body{border-top:1px solid var(--hairline);padding:clamp(24px,6vh,72px) clamp(24px,5vw,64px) clamp(64px,10vh,120px)}.case-step{justify-content:center;align-items:center;gap:clamp(40px,8vw,140px);padding:clamp(56px,10vh,120px) 0;display:flex}.case-step.flip{flex-direction:row-reverse}.case-step+.case-step{border-top:1px solid var(--hairline)}.step-copy{max-width:46ch}.step-eyebrow{letter-spacing:.3em;text-transform:uppercase;margin-bottom:18px}.step-copy h3{letter-spacing:-.02em;text-wrap:balance;font-size:clamp(28px,3.6vw,48px);font-weight:500;line-height:1.1}.step-copy h3 em{color:#8fcbaa;font-style:italic}.step-copy p{color:var(--grey);max-width:42ch;margin-top:16px;font-size:16px}.case-shot{background-image:var(--img);flex-shrink:0;height:min(62vh,560px);position:relative}.case-shot figcaption{text-align:center;margin-top:16px;position:absolute;top:100%;left:0;right:0}#edo-case:not(.no-motion) .case-step{opacity:0;transform:translateY(44px)}#edo-case .case-step.in{opacity:1;transition:opacity .7s,transform .9s cubic-bezier(.22,1,.36,1);transform:none}.case-fly{z-index:40;pointer-events:none;will-change:transform;position:fixed}@media (width<=860px){.case-hero-band{flex-direction:column;align-items:flex-start}.case-side{max-width:none}.case-hero-slot{align-self:center}.case-hero{height:56vh}#caat-case .case-hero,#caat-case .case-hero-b,#train-case .case-hero{width:min(84vw,460px);height:auto}.case-step,.case-step.flip{flex-direction:column;align-items:flex-start}.case-step .case-shot{align-self:center;height:52vh;margin-bottom:40px}}.statement{letter-spacing:-.02em;max-width:24ch;font-size:clamp(30px,5vw,64px);font-weight:500;line-height:1.14}.statement a{color:var(--accent);text-decoration-color:currentColor;transition:color .35s}.statement a em{color:inherit}.statement a:hover,.statement a:focus-visible{color:#3c1669}.services{flex-wrap:wrap;align-items:flex-start;gap:clamp(24px,5vw,72px);margin-top:clamp(40px,8vh,88px);display:flex}.services-label{text-transform:uppercase;letter-spacing:.3em;flex-basis:100%}.services .idx{margin-bottom:10px;display:block}.services p{max-width:22ch;font-size:17px}#other{flex-direction:column;justify-content:center;min-height:100vh;display:flex}#other .ghost{font-size:clamp(120px,30vw,440px)}.shelf{overscroll-behavior-x:contain;scroll-snap-type:x proximity;z-index:1;scrollbar-width:none;gap:clamp(28px,4vw,56px);margin:0 calc(-1*clamp(24px,5vw,64px));padding:2vh clamp(24px,5vw,64px) 3vh;scroll-padding:0 clamp(24px,5vw,64px);display:flex;position:relative;overflow-x:auto}.shelf::-webkit-scrollbar{display:none}.shelf-card{scroll-snap-align:start;border-left:1px solid var(--hairline);flex-direction:column;flex:none;gap:14px;width:clamp(240px,26vw,380px);padding:clamp(20px,3vh,32px) 0 clamp(20px,3vh,32px) clamp(18px,2vw,28px);text-decoration:none;display:flex}.card-idx{font-style:italic}.card-title{letter-spacing:-.03em;font-size:clamp(30px,3.4vw,56px);font-weight:500;line-height:1.08}.card-title .inner{transition:color .3s}.shelf-card:hover .card-title .inner,.shelf-card:focus-visible .card-title .inner{color:var(--accent)}.card-desc{color:var(--grey);max-width:30ch;font-size:15px}.card-tag{margin-top:auto}.shelf-nav{z-index:1;justify-content:flex-end;gap:18px;margin-top:clamp(12px,2.5vh,28px);display:flex;position:relative}.shelf-nav button{cursor:pointer;color:var(--grey);background:0 0;border:0;padding:2px 10px;font-size:clamp(26px,3vw,40px);line-height:1;transition:color .3s,opacity .3s}.shelf-nav button:hover:not(:disabled),.shelf-nav button:focus-visible:not(:disabled){color:var(--fg)}.shelf-nav button:disabled{opacity:.25;cursor:default}.outro{flex-direction:column;min-height:100vh;padding-bottom:4vh;display:flex}.outro .spaced{margin-top:auto}.outro-phone{margin-top:clamp(24px,5vh,48px);margin-bottom:auto}.outro-phone a{color:var(--grey)}.outro-phone a:hover{color:var(--fg)}.big-mail{letter-spacing:-.04em;color:var(--fg);font-size:clamp(56px,13vw,190px);font-weight:500;line-height:1;text-decoration:none;transition:color .3s}.big-mail:hover,.big-mail:focus-visible{color:var(--accent)}.big-mail .line{margin-bottom:-.18em;padding-bottom:.18em}.mail-flip{display:block;position:relative}.mail-face{transition:transform .55s cubic-bezier(.76,0,.24,1);display:block}.mail-face.alt{font-style:italic;position:absolute;inset:0;transform:translateY(130%)}.big-mail:hover .mail-face{transform:translateY(-130%)}.big-mail:hover .mail-face.alt{transform:translateY(0)}footer{justify-content:space-between;gap:20px;margin-top:auto;display:flex}footer a{color:var(--grey)}footer a:hover{color:var(--fg)}.socials{align-items:center;gap:16px;display:flex}.socials a{display:inline-flex}.social-mark{background:currentColor;display:block;-webkit-mask:none 50%/contain no-repeat;mask:none 50%/contain no-repeat}.social-mark.gh{width:26px;height:26px;-webkit-mask-image:url(/github.png);mask-image:url(/github.png)}.social-mark.li{width:17px;height:17px;-webkit-mask-image:url(/linkedin.svg);mask-image:url(/linkedin.svg)}.copyright .egg{opacity:0;pointer-events:none;margin-left:.7em;transition:opacity .4s}.copyright:hover .egg,.copyright:focus-within .egg{opacity:1;pointer-events:auto}@media (prefers-reduced-motion:reduce){.mail-face,.case-face,.cursor-ring{transition:none}}
