:root{--paper:#F3EDE2;--ink:#1B1813;--charcoal:#23201C;--accent:#2446CE;--accent-soft:#DEE4FF;--muted:#6E675C;--studio:#12100E;--studio-ink:#EDE8DD;--studio-accent:#6C8BFF;--line:#E3DED2;--cut:cubic-bezier(.65,0,.35,1);--settle:cubic-bezier(.2,.55,.3,1)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Hanken Grotesk',sans-serif;font-weight:400}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:6px}::selection{background:var(--accent);color:var(--paper)}header,main,footer{max-width:1600px;margin:auto}header{padding:30px 5%;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}nav{display:flex;gap:36px;font-size:15px}nav a{padding:8px 0}nav a[aria-current],nav a:hover{color:var(--accent);box-shadow:0 2px var(--accent)}.brand{display:inline-flex;gap:13px;align-items:center}.mark{width:32px;height:32px;fill:currentColor;overflow:visible}.mark path{transition:transform 280ms ease-out}.brand:hover .twin-a,.still:hover .twin-a{transform:translate(-1.5px,-1.5px)}.brand:hover .twin-b,.still:hover .twin-b{transform:translate(1.5px,1.5px)}.brand:active .twin-a{transform:translate(1px,1px);transition-duration:120ms}.brand:active .twin-b{transform:translate(-1px,-1px);transition-duration:120ms}.wm{font-size:27px;font-weight:500;letter-spacing:-1.2px;white-space:nowrap}.jd{position:relative;display:inline-block}.jd::after{content:'';position:absolute;width:3.6px;height:3.6px;background:currentColor;top:.21em;left:50%;transform:translateX(-50%);box-shadow:0 0 0 2px var(--paper)}main{padding:0 5%}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(52px,6.5vw,100px);line-height:.98;font-weight:600;letter-spacing:-.065em;margin-bottom:30px}h2{font-weight:600;font-size:36px;letter-spacing:-.04em;line-height:1.1}h3{font-size:22px;font-weight:500;letter-spacing:-.025em;line-height:1.25}.eyebrow,.mono,.card-meta,.exif,.visual-label,.art-caption,.art-coordinate,.copyright{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.06em}.eyebrow{font-size:12px;margin-bottom:28px}.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:7%;align-items:center;padding:80px 0 90px}.eyebrow span{display:block;color:var(--muted);font-size:10px;margin-top:10px}.tagline{font-family:'IBM Plex Mono',monospace;font-style:italic;font-size:13px;color:var(--muted);line-height:1.7}.text-link{display:inline-flex;align-items:center;gap:35px;font-size:15px;border-bottom:1px solid var(--ink);padding:10px 0;margin-top:22px}.text-link:hover{color:var(--accent)}.hero-art{height:490px;background:var(--accent);color:var(--paper);position:relative;display:grid;place-items:center;overflow:hidden}.hero-art>.mark{width:58%;height:58%;z-index:1}.art-lines{position:absolute;inset:0;background:repeating-linear-gradient(145deg,transparent 0,transparent 55px,#ffffff18 56px,transparent 57px)}.art-caption{position:absolute;bottom:25px;left:25px}.art-coordinate{position:absolute;top:25px;right:25px}.reveal{padding:50px 0 60px}.section-heading{display:flex;gap:30px;align-items:center;margin-bottom:20px}.section-heading h2{white-space:nowrap;margin:0;font-size:28px}.section-rule{height:1px;background:var(--accent);flex:1;transform-origin:left;transition:transform 1100ms var(--cut)}.section-intro{color:var(--muted);font-size:17px;margin-bottom:30px}.video-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.visual{aspect-ratio:1.5;position:relative;overflow:hidden;background:linear-gradient(135deg,#acb7bf,#3b4956 54%,#1b242c);color:var(--paper);display:grid;place-items:center}.visual>.mark{width:65px;height:65px;opacity:.6}.visual:before{content:'';position:absolute;width:32%;height:120%;background:#ffffff16;transform:rotate(35deg);left:18%;top:-10%}.visual-1{background:linear-gradient(130deg,#c2b79e,#766c55 60%,#363529)}.visual-2{background:linear-gradient(145deg,#cad0cc,#7e948d 45%,#354744)}.visual-3{background:linear-gradient(145deg,#e1bd95,#815f47 50%,#322b28)}.visual-4{background:linear-gradient(140deg,#aebddd,#596687 45%,#212e52)}.visual-5{background:linear-gradient(135deg,#dbcabc,#8a7167 60%,#433a3b)}.frame-number{position:absolute;top:15px;left:15px;font:11px 'IBM Plex Mono',monospace}.visual-label{position:absolute;left:15px;bottom:15px;font-size:9px}.card-meta{display:flex;justify-content:space-between;color:var(--muted);margin:17px 0 10px;padding-left:12px;position:relative}.card-meta:before{content:'';width:3px;height:10px;background:var(--accent);position:absolute;left:0;top:2px}.latest-list>a{display:flex;align-items:center;gap:35px;border-bottom:1px solid var(--line);padding:24px 0}.latest-list h3{flex:1;margin:0}.latest-list .mono{color:var(--muted);min-width:155px}.latest-list>a:hover{color:var(--accent)}.studio-teaser{background:var(--accent-soft);padding:50px;position:relative;display:grid;grid-template-columns:1fr 1fr;gap:10px 60px;margin:40px 0 80px}.studio-teaser .eyebrow{grid-column:1/-1}.studio-teaser h2{font-size:54px;margin-bottom:0}.studio-teaser>div p{max-width:330px;line-height:1.6;color:var(--muted)}.studio-teaser>.mark{position:absolute;right:25px;top:25px;color:var(--accent)}footer{padding:45px 5% 30px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:20px}footer .tagline{text-align:right;margin:0;align-self:center}footer>a:not(.brand){font-size:14px}.copyright{text-align:right;color:var(--muted)}.page-intro{padding:80px 0 30px}.page-intro>p:last-child{color:var(--muted);font-size:19px;line-height:1.5}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:35px}.filters button{border:1px solid var(--line);background:transparent;border-radius:30px;padding:10px 22px;font-size:14px}.filters button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.works-grid{row-gap:35px}.video-card[hidden]{display:none}.placeholder-note{margin:30px 0 0;color:var(--muted);font-size:9px}.stills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:35px 28px}.still{padding:0;border:0;background:none;text-align:left}.still-image{display:block;aspect-ratio:1.5;position:relative;overflow:hidden}.still-image:after,.expanded-still:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,#ffffff04 0,#ffffff04 1px,transparent 1px,transparent 4px)}.still-0{background:radial-gradient(ellipse at 65% 35%,#e7cfad,transparent 35%),linear-gradient(145deg,#847c68,#253c39)}.still-1{background:linear-gradient(170deg,#6174a3 10%,#ad9bb9 50%,#31384d 51%,#101a31)}.still-2{background:linear-gradient(115deg,#c1bda9 35%,#716950 36%,#c9c1a5 60%,#4e5348 61%)}.still-3{background:radial-gradient(ellipse at 25% 65%,#b99868,transparent 35%),linear-gradient(135deg,#282b24,#827053)}.still-4{background:linear-gradient(180deg,#aa674c,#e4b584 52%,#4a4145 53%,#302d3d)}.still-5{background:linear-gradient(120deg,#c8d0c2 32%,#5f7870 33%,#304f4a 66%,#acb8a7 67%)}.still-6{background:radial-gradient(circle at 70% 50%,#b2bfc5,transparent 25%),linear-gradient(120deg,#253b48,#7b929d)}.still-7{background:linear-gradient(145deg,#d1beb0,#8e776a 50%,#403c37 51%)}.still-no{position:absolute;top:18px;left:18px;color:var(--paper);font:12px 'IBM Plex Mono',monospace}.exif{display:flex;justify-content:space-between;margin-top:14px;color:var(--muted)}.exif>span{font-size:20px;color:var(--accent)}.hire-panel{background:var(--studio);color:var(--studio-ink);padding:60px;position:relative;margin:25px 0}.hire-panel>.mark{position:absolute;top:55px;right:60px;color:var(--studio-accent);width:45px;height:45px}.hire-panel>h2{font-size:70px;margin-bottom:25px}.hire-panel>p:not(.eyebrow){max-width:600px;line-height:1.7;color:#b5aea1;font-size:19px}.services{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:60px;border-top:1px solid #ffffff25;padding-top:30px}.services span{font:11px 'IBM Plex Mono',monospace;color:var(--studio-accent)}.services h3{margin-top:18px}.services p{line-height:1.6;font-size:15px;color:#b5aea1}.conversation{padding:60px 0 90px}.conversation h2{font-size:50px}.conversation>a{font-size:clamp(19px,3vw,32px);border-bottom:1px solid var(--accent);padding-bottom:8px;color:var(--accent)}.route-overlay{position:fixed;inset:0;z-index:100;pointer-events:none;visibility:hidden;overflow:hidden}.wipe{position:absolute;inset:-60%;background:var(--studio);transform:translate(-100%,-100%) rotate(-30deg);transition:transform 640ms var(--cut)}.wipe-b{transform:translate(100%,100%) rotate(-30deg)}.route-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:30px;opacity:0;color:var(--studio-ink);transition:opacity 280ms}.route-center .mark{width:70px;height:70px}.route-overlay.active{visibility:visible}.route-overlay.closed .wipe{transform:translate(0,0) rotate(-30deg)}.route-overlay.closed .route-center{opacity:1}.route-overlay .twin-a{transform:translate(-6px,-6px);transition:transform 640ms var(--cut)}.route-overlay .twin-b{transform:translate(6px,6px);transition:transform 640ms var(--cut)}.route-overlay.closed .mark path{transform:translate(0,0)}.route-overlay.loading .mark{animation:breathe 1.6s ease-in-out infinite}@keyframes breathe{50%{transform:scale(.9)}}.js-motion .reveal:not(.seen)>*:not(.section-heading){opacity:0;transform:translateY(16px)}.js-motion .reveal>*{transition:opacity 900ms var(--settle),transform 900ms var(--settle)}.js-motion .reveal:not(.seen) .section-rule{transform:scaleX(0)}dialog{border:0;padding:0;width:100vw;max-width:none;height:100dvh;max-height:none;background:var(--studio);color:var(--studio-ink);overflow:hidden}dialog::backdrop{background:var(--studio)}.expanded-still{position:absolute;inset:0}.lightbox-top{position:absolute;left:5%;right:5%;top:30px;display:flex;justify-content:space-between;align-items:center;z-index:2;text-shadow:0 1px 5px #000}.lightbox-top button{background:var(--studio);color:var(--studio-ink);border:1px solid #ffffff50;padding:10px 16px}.shutter{position:absolute;inset:0;background:var(--studio);display:grid;place-items:center;pointer-events:none;transition:opacity 720ms var(--cut);z-index:3}.shutter .mark{width:90px;height:90px}.shutter.open{opacity:0}.skip-link{position:fixed;top:-100px;left:20px;z-index:110;background:var(--paper);padding:15px}.skip-link:focus{top:10px}@media(min-width:1600px){main{padding:0 80px}}@media(max-width:700px){header{padding:22px 6%}.wm{font-size:23px}.brand{gap:9px}.brand .mark{width:25px;height:25px}nav{gap:18px;font-size:12px}main{padding:0 6%}.hero{grid-template-columns:1fr;gap:35px;padding:48px 0 25px}h1{font-size:56px}.hero-art{height:300px}.hero-art>.mark{width:170px;height:170px}.eyebrow{font-size:10px}.hero .text-link{margin-top:12px}.tagline{font-size:11px}.reveal{padding:35px 0}.section-heading h2{font-size:25px}.section-intro{font-size:15px}.video-grid{grid-template-columns:1fr;gap:22px}.video-card h3{font-size:21px}.visual{aspect-ratio:1.7}.latest-list>a{gap:12px;flex-wrap:wrap}.latest-list .mono{width:100%;font-size:10px}.latest-list h3{font-size:20px}.studio-teaser{padding:30px;grid-template-columns:1fr;margin:25px 0 50px;gap:20px}.studio-teaser h2{font-size:43px}.studio-teaser>div p{font-size:15px;margin:0}.studio-teaser .eyebrow{margin-bottom:0}.studio-teaser>.mark{width:25px;top:20px;right:20px}footer{padding:35px 6%;grid-template-columns:1fr;gap:20px}footer .tagline,footer .copyright{text-align:left}.page-intro{padding:50px 0 10px}.page-intro>p:last-child{font-size:16px}.filters{gap:7px;margin-bottom:25px}.filters button{font-size:12px;padding:9px 14px}.stills-grid{grid-template-columns:1fr;gap:25px}.exif{font-size:10px}.hire-panel{padding:35px 25px;margin-top:20px}.hire-panel>.mark{width:25px;right:25px;top:25px}.hire-panel>.eyebrow{max-width:220px;font-size:9px;line-height:1.7}.hire-panel>h2{font-size:45px}.hire-panel>p:not(.eyebrow){font-size:16px}.services{grid-template-columns:1fr;gap:20px;margin-top:35px}.services h3{margin:12px 0}.services p{margin-bottom:0}.conversation h2{font-size:37px}.lightbox-top{align-items:flex-start;gap:15px}.lightbox-top .mono{max-width:200px;font-size:10px;line-height:1.6}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.js-motion .reveal:not(.seen)>*{opacity:1;transform:none}.js-motion .reveal:not(.seen) .section-rule{transform:none}.route-overlay{display:none}}
.route-overlay.loading .mark{animation:none}.route-overlay.loading .twin-a{animation:breathe-a 1.6s ease-in-out infinite}.route-overlay.loading .twin-b{animation:breathe-b 1.6s ease-in-out infinite}@keyframes breathe-a{0%,100%{transform:translate(-2px,-2px)}50%{transform:translate(1px,1px)}}@keyframes breathe-b{0%,100%{transform:translate(2px,2px)}50%{transform:translate(-1px,-1px)}}
