/* v014: revised manifesto and a compact contact panel. */
@font-face{font-family:Geist;src:url('fonts/Geist-Variable.ttf') format('truetype');font-weight:100 900;font-display:swap}
:root{--paper:#fafafa;--ink:#151515;--gutter:clamp(22px,4.5vw,96px);--ease:cubic-bezier(.16,1,.3,1);--image-limit:95vh;--image-limit:95dvh;--video-limit:80vh;--video-limit:80dvh;font-family:Geist,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--paper);color-scheme:light;font-synthesis:none}
*,*::before,*::after{box-sizing:border-box}html{scroll-padding-top:154px;scrollbar-gutter:stable}body{margin:0}h1,h2,h3,p,figure{margin:0}a{color:inherit;text-decoration:none}
button{border:0;background:none;color:inherit;font:inherit;cursor:pointer;padding:0;touch-action:manipulation}a,button{-webkit-tap-highlight-color:transparent}
img,video{display:block;max-width:100%;height:auto;border:0;border-radius:0;box-shadow:none;padding:0;background:transparent}img{max-height:var(--image-limit)}video{max-height:var(--video-limit)}iframe{display:block;border:0}
::selection{background:var(--ink);color:var(--paper)}[hidden]{display:none!important}:focus-visible{outline:2px solid currentColor;outline-offset:7px}button:disabled{opacity:.3;cursor:default}
.skip-link{position:fixed;top:-90px;left:20px;z-index:30;padding:15px;background:var(--ink);color:var(--paper)}.skip-link:focus{top:15px}
/* A further 10% on the header and logo, and 20% less on the welcome headline. */
.site-header{position:absolute;inset:0 0 auto;z-index:10;display:grid;grid-template-columns:130.625px 1fr auto;align-items:center;padding:8px var(--gutter);height:137.5px}
.brand{display:block;width:118.25px;height:118.25px}.brand img{width:min(118.25px,var(--image-limit));height:auto;filter:invert(1)}.brand-note{font-size:15.125px;line-height:1.55;font-weight:400;margin-left:28px}
.site-header nav{display:flex;align-items:center;gap:32px;font-size:16.5px}.site-header nav a,.site-header nav button{min-height:44px;display:flex;align-items:center;gap:13px}.site-header nav button span{font-size:28.875px;font-weight:300}
.site-header a,.site-header button{transition:opacity .4s}.site-header a:hover,.site-header button:hover{opacity:.65}
.scroll-cue{position:fixed;z-index:20;right:var(--gutter);width:max-content;max-width:calc(100% - 2 * var(--gutter));transform:translateX(calc(-50vw + var(--gutter) + 50%));bottom:max(22px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:18px;min-height:56px;padding:10px 26px;background:#fff;font-size:12px;line-height:1;opacity:0;visibility:hidden;pointer-events:none;transition:transform .95s cubic-bezier(.22,1,.36,1),opacity .35s ease,visibility .35s ease}.scroll-cue.is-docked{transform:translateX(0)}.scroll-cue.is-visible{opacity:1;visibility:visible;pointer-events:auto}.scroll-cue-arrow{font-size:29px;font-weight:200;animation:scroll-cue-drift 2.8s ease-in-out infinite}body:has(dialog[open]) #scroll-cue,.project-dialog:not([data-phase="open"])>.scroll-cue{opacity:0;visibility:hidden;pointer-events:none}
@keyframes scroll-cue-drift{0%,100%{transform:translateY(-3px)}50%{transform:translateY(3px)}}
.hero{padding-top:177.5px;position:relative}.hero-heading-drift{position:relative;z-index:1;pointer-events:none}.hero h1{font-size:4.368vw;font-weight:400;letter-spacing:-.065em;line-height:.97;text-align:center;padding:0 2vw .12em}.hero-word{display:block;overflow:hidden;padding-bottom:.1em}.hero-unit{display:inline-block;white-space:nowrap}
.hero-stage{position:relative;width:100%;padding-top:16px;margin-top:4px;z-index:2}
.hero-feature{--media-limit:var(--image-limit);position:relative;width:min(60vw,calc(var(--media-limit) * var(--ratio,1.5)));margin-left:33vw;transform-origin:center}
.hero-feature.is-portrait{width:min(30vw,calc(var(--media-limit) * var(--ratio,.666667)));margin-left:50vw}.hero-feature.is-video{--media-limit:var(--video-limit)}
.hero-orbit{position:absolute;width:min(18vw,calc(var(--image-limit) * .65 * var(--ratio,1)));left:8vw;top:18%}.hero-feature>a,.hero-orbit>a{display:block}.hero-entrance{width:100%}
.intrinsic{width:min(100%,calc(var(--image-limit) * var(--ratio,1.5)));display:block;height:auto;position:relative;background:none;border:0;padding:0;overflow:visible}.intrinsic:has(video){width:min(100%,calc(var(--video-limit) * var(--ratio,1.777778)))}
.intrinsic img,.intrinsic video{width:100%;height:auto}.intrinsic video{object-fit:initial}
.feature-caption{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:12px;font-size:11px;line-height:1.4}.feature-caption span:last-child{opacity:.655;font-size:10px}.hero-orbit .feature-caption{font-size:10px}
.hero-baseline{padding:36px var(--gutter) 0;display:flex;align-items:flex-end;justify-content:space-between;font-size:13px;line-height:1.6}.hero-baseline em{font-synthesis:style}.hero-baseline>a{font-size:11px;display:flex;gap:24px;align-items:center;min-height:44px}.hero-baseline>a span{font-size:25px;font-weight:200}
.preview-toggle{font-size:10px;min-height:44px;opacity:.6;margin-top:4px}.preview-toggle:hover{opacity:1}
/* An 18-track canvas extends the published 12-track composition to three images. */
.work-section{padding:128px var(--gutter) 0}.work-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:clamp(64px,8vh,104px)}
.work-heading h2{font-size:clamp(38px,5vw,88px);font-weight:350;letter-spacing:-.065em;line-height:1.1;display:flex;gap:16px}.work-heading h2 span{font-size:10px;letter-spacing:0;opacity:.655;margin-top:8px}
.filters{display:flex;gap:22px;font-size:11px}.filters button{min-height:44px;opacity:.65;transition:opacity .5s}.filters button[aria-pressed=true],.filters button:hover{opacity:1}
.project-grid{display:grid;grid-template-columns:repeat(18,minmax(0,1fr));column-gap:1.2vw;row-gap:clamp(112px,24vh,336px);align-items:start;padding-bottom:8vh}
.project-card{grid-column:1/span 6;min-width:0;position:relative;width:min(100%,calc(var(--image-limit) * var(--ratio,1.5)));justify-self:start}.project-card:has(video){width:min(100%,calc(var(--video-limit) * var(--ratio,1.777778)))}
.project-card:nth-child(3n+2){grid-column:8/span 4;margin-top:22vh}.project-card:nth-child(3n){grid-column:13/span 6;margin-top:8vh}
.project-card:nth-child(6n+4){grid-column:2/span 5;margin-top:8vh}.project-card:nth-child(6n+5){grid-column:7/span 6;margin-top:24vh}.project-card:nth-child(6n){grid-column:14/span 5;margin-top:2vh}
.project-drift,.project-reveal,.project-link{display:block;width:100%;height:auto}.project-link .intrinsic{transition:opacity .6s}.project-link:hover .intrinsic{opacity:.9}
.card-caption{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding-top:14px}.card-caption h3{font-size:clamp(18px,2.2vw,38px);line-height:1.2;font-weight:350;letter-spacing:-.045em}.card-caption>span{font-size:10px;opacity:.65;white-space:nowrap}
.empty-state{padding:48px 0;font-size:14px;opacity:.6}.media-failure{display:block;min-height:100px;line-height:1.5;font-size:12px;opacity:.6}
.studio-section{margin:240px var(--gutter) 0;padding:40px 0 100px}.studio-section h2{font-weight:350;font-size:clamp(60px,7.8vw,145px);letter-spacing:-.065em;line-height:1.06}.studio-copy{width:54%;max-width:720px;margin:90px 10% 0 auto;font-size:clamp(16px,1.25vw,20px);line-height:1.8}.studio-copy strong{font-weight:600}.studio-copy p+p{margin-top:28px}
.site-footer{padding:80px var(--gutter) 28px}.footer-link{display:block;font-size:clamp(70px,14vw,270px);line-height:.96;letter-spacing:-.075em;font-weight:350;position:relative;width:fit-content}.footer-link span{position:absolute;left:110%;top:22%;font-size:.6em;font-weight:200;transition:transform 1s var(--ease)}.footer-link:hover span{transform:translate(12px,-12px)}.footer-meta{display:flex;align-items:center;justify-content:space-between;gap:25px;font-size:10px;margin-top:72px;opacity:.6}.footer-meta a{min-height:44px;display:flex;align-items:center}
/* Project: compact introduction, then the complete gallery. */
dialog{color:var(--ink);background:var(--paper);border:0;margin:0;padding:0;width:100vw;height:100dvh;max-width:none;max-height:none;overscroll-behavior:contain}dialog::backdrop{background:transparent}html:has(dialog[open]),body:has(dialog[open]){overflow:hidden}
.close-button{min-width:44px;min-height:44px;font-size:31px;line-height:1;font-weight:200;display:grid;place-items:center;transition:rotate .8s var(--ease)}.close-button:hover{rotate:90deg}
.contact-dialog{position:fixed;inset:0;width:var(--viewport-width,100vw);padding:24px;overflow:hidden;background:transparent}.contact-dialog[open]{display:grid;place-items:center}.contact-veil{position:absolute;inset:0;background:rgba(250,250,250,.9)}.contact-panel{position:relative;width:min(520px,100%);max-height:calc(100dvh - 48px);overflow-y:auto;padding:42px 44px 44px;background:var(--ink);color:#fff}.contact-panel h2{font-size:13px;font-weight:400;line-height:1.4;margin-bottom:28px;opacity:.65}.contact-close{position:absolute;top:12px;right:12px;font-size:27px}.contact-links{display:flex;flex-direction:column;gap:20px;font-size:clamp(17px,1.4vw,21px);line-height:1.55;letter-spacing:-.02em}.contact-links a{display:block;overflow-wrap:anywhere;transition:opacity .35s}.contact-links a:hover{opacity:.65}.contact-links a>span:first-child{opacity:.65}.contact-links a>span[aria-hidden]{display:inline-block;margin-left:8px}
.project-dialog{width:var(--viewport-width,100vw);overflow-y:auto;scrollbar-gutter:stable;scroll-behavior:auto}.project-dialog[open]{position:fixed;inset:0}.project-topbar{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:0 var(--gutter);height:80px;z-index:10;background:var(--paper);font-size:11px}.project-topbar [data-close-project]:first-child{min-height:44px;display:flex;align-items:center}.project-topbar>span{font-size:11px;letter-spacing:-.04em}
.project-intro{padding:32px var(--gutter) 36px}.project-intro :is(h1,h2){font-size:clamp(58px,10vw,185px);font-weight:350;line-height:1.02;letter-spacing:-.07em;max-width:95%;overflow-wrap:anywhere}.project-intro-info{max-width:420px;width:35%;margin:28px 4% 0 auto}.project-meta{display:flex;gap:22px;font-size:10px;opacity:.655;margin-bottom:14px}.project-description{font-size:15px;line-height:1.75;white-space:pre-line}
.gallery-heading{display:flex;justify-content:space-between;align-items:center;margin:0 var(--gutter) clamp(48px,6.5vh,88px);font-size:10px}.gallery-heading :is(h2,h3){font-size:14px;font-weight:400}.gallery-heading>span{opacity:.65}
.project-gallery{display:grid;grid-template-columns:repeat(18,minmax(0,1fr));column-gap:1.2vw;row-gap:clamp(112px,24vh,336px);padding:0 var(--gutter) 8vh;align-items:start}
.gallery-item{grid-column:1/span 6;min-width:0;width:min(100%,calc(var(--image-limit) * var(--ratio,1.5)));height:auto;justify-self:start}.gallery-item .gallery-image{display:block;width:100%;height:auto;cursor:zoom-in}.gallery-item img,.gallery-item video{width:100%;height:auto}.gallery-item.is-video{width:min(100%,calc(var(--video-limit) * var(--ratio,1.777778)))}.gallery-item iframe{width:100%;height:auto;aspect-ratio:var(--ratio,1.777778);max-height:var(--video-limit)}
.gallery-item:nth-child(3n+2){grid-column:8/span 4;margin-top:22vh}.gallery-item:nth-child(3n){grid-column:13/span 6;margin-top:8vh}
.gallery-item:nth-child(6n+4){grid-column:2/span 5;margin-top:8vh}.gallery-item:nth-child(6n+5){grid-column:7/span 6;margin-top:24vh}.gallery-item:nth-child(6n){grid-column:14/span 5;margin-top:2vh}
@media(min-width:1025px){
 .project-gallery>.gallery-item:last-child:nth-child(3n+1){grid-column:7/span 6;justify-self:center}
 .project-gallery>.gallery-item:last-child:nth-child(6n+4){max-width:calc(83.333333% - .2vw)}
 .project-gallery>.gallery-item:last-child:nth-child(6n+2){grid-column:15/span 4}
 .project-gallery>.gallery-item:last-child:nth-child(6n+5){grid-column:13/span 6}
}
.project-next{margin:96px var(--gutter) 0;padding-bottom:56px}.project-next small{font-size:10px;opacity:.65}.next-title{display:block;font-size:clamp(40px,7.5vw,140px);font-weight:350;line-height:1.1;letter-spacing:-.065em;text-align:left;margin-top:20px}.project-prev{display:flex;align-items:center;margin-top:24px;min-height:44px;font-size:10px;opacity:.6}
/* Existing index and viewer interactions. */
.index-dialog{overflow-y:auto;padding:28px var(--gutter) 48px}.index-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:36px}.index-header h2{font-size:clamp(68px,11vw,180px);font-weight:350;line-height:1.05;letter-spacing:-.075em}.index-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:4vw;align-items:start}
.index-row{display:grid;grid-template-columns:26px 1fr 50px;align-items:baseline;gap:18px;min-height:56px;padding:10px 0;font-size:clamp(20px,2.5vw,42px);font-weight:350;letter-spacing:-.045em;line-height:1.15;transition:opacity .6s,transform .8s var(--ease)}.index-number,.index-category{font-size:9px;opacity:.65;letter-spacing:0;font-weight:400}.index-row:hover{transform:translateX(12px)}.index-preview{--preview-limit:max(1px,calc(100dvh - clamp(71.4px,11.55vw,189px) - 120px));position:sticky;top:28px;width:100%;margin-top:28px}.index-preview img{width:min(100%,calc(var(--preview-limit) * var(--ratio,1.5)));height:auto;max-height:min(var(--image-limit),var(--preview-limit));object-fit:contain}.index-preview video{width:min(100%,calc(min(var(--video-limit),var(--preview-limit)) * var(--ratio,1.777778)));height:auto;max-height:min(var(--video-limit),var(--preview-limit));object-fit:contain}
.viewer{display:none;flex-direction:column}.viewer[open]{display:flex}.viewer-top,.viewer-bottom{display:flex;align-items:center;justify-content:space-between;gap:25px;height:64px;flex-shrink:0;padding:0 var(--gutter);font-size:11px}.viewer-bottom{justify-content:center;gap:30px}.viewer-bottom>button{font-size:25px;font-weight:200;min-width:48px;min-height:44px}.viewer-bottom>span{min-width:70px;text-align:center;opacity:.65}
#viewer-media{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 var(--gutter)}#viewer-media img{width:auto;height:auto;max-width:100%;max-height:min(var(--image-limit),calc(100dvh - 128px));object-fit:initial}#viewer-media video{width:auto;height:auto;max-width:100%;max-height:min(var(--video-limit),calc(100dvh - 128px));object-fit:initial}#viewer-media iframe{width:min(90vw,calc(min(var(--video-limit),100dvh - 128px) * var(--ratio,1.777778)));height:auto;max-height:min(var(--video-limit),calc(100dvh - 128px));aspect-ratio:var(--ratio,1.777778)}noscript p{padding:28px;text-align:center}
/* Separate animation layers keep image boxes intrinsic. */
#site-shell{transform-origin:center 40vh}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:hidden}.project-dialog[data-phase="switching"] #project-content{pointer-events:none}.project-dialog[data-phase="closing"]{pointer-events:none}.project-intro,.gallery-drift,.gallery-reveal{transform-origin:center}.gallery-drift,.gallery-reveal{width:100%;height:auto}
/* Snapshot layers are temporary, inert and removed when the movement completes. */
.project-doors{position:fixed;inset:0;z-index:50;overflow:hidden;pointer-events:auto;isolation:isolate;contain:strict}.project-door{position:absolute;left:0;width:100%;height:50%;overflow:hidden;background:var(--paper);will-change:transform;backface-visibility:hidden}.project-door--top{top:0}.project-door--bottom{top:50%}.door-stage,.door-surface{position:absolute;top:0;left:0;width:100%;height:100dvh;overflow:hidden}.project-door--bottom .door-stage{top:-100%}.door-surface{pointer-events:none}.door-surface *{animation-play-state:paused!important;transition:none!important}.project-dialog:is([data-phase="opening"],[data-phase="closing"]) #project-scroll-content{will-change:transform;pointer-events:none}
@media(min-width:1800px){.site-header{height:158.125px}.brand{width:137.5px;height:137.5px}.brand img{width:min(137.5px,var(--image-limit))}.hero{padding-top:194.375px}.hero-baseline{padding-top:44px}}
@media(min-width:768px) and (max-width:1024px){.project-grid,.project-gallery{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:2vw;row-gap:24vh}.project-card:nth-child(n),.gallery-item:nth-child(n){grid-column:1/span 5;margin-top:0}.project-card:nth-child(even),.gallery-item:nth-child(even){grid-column:8/span 5;margin-top:20vh}}
@media(max-width:1024px){.site-header nav{gap:25px}.brand-note{margin-left:12px}.hero{padding-top:167.5px}.studio-copy{width:56%;margin-right:0}.project-intro-info{width:45%;margin-right:0}}
@media(max-width:767px){
 :root{--gutter:16px}html{scroll-padding-top:126.5px}.site-header{height:115.5px;padding:5px var(--gutter);grid-template-columns:89.375px 1fr}.brand{width:90.75px;height:90.75px}.brand img{width:min(90.75px,var(--image-limit))}.brand-note{display:none}.site-header nav{justify-content:flex-end;gap:clamp(10px,3vw,20px);font-size:15.125px}.site-header nav button{gap:8px}.site-header nav>a:nth-child(2){display:none}
 .contact-dialog{padding:20px}.contact-panel{padding:36px 24px 32px;max-height:calc(100dvh - 40px)}.contact-links{font-size:17px;gap:18px}.contact-panel h2{margin-bottom:24px}
 .hero{padding-top:150.5px;padding-bottom:24px}.hero h1{font-size:4.836vw;line-height:1;letter-spacing:-.065em;padding-inline:var(--gutter)}.hero-stage{padding-top:18px;margin-top:0}.hero-feature{width:min(82vw,calc(var(--media-limit) * var(--ratio,1.5)));margin-left:12vw}.hero-feature.is-portrait{width:min(56vw,calc(var(--media-limit) * var(--ratio,.666667)));margin-left:38vw}.hero-orbit{left:6vw;top:60%;width:min(34vw,calc(var(--image-limit) * .5 * var(--ratio,1)))}
 .feature-caption{font-size:10px;padding-top:10px;gap:10px}.feature-caption span:last-child{font-size:9px}.hero-orbit .feature-caption{font-size:9px}.hero-baseline{padding-top:64px;align-items:flex-end;gap:20px}.hero-baseline p{font-size:11px;line-height:1.65}.hero-baseline>a{font-size:10px;gap:12px;max-width:140px;line-height:1.6}.hero-baseline>a span{font-size:22px}.preview-toggle{font-size:9px}
 .hero-feature .feature-caption{width:max-content;max-width:100%;margin-left:auto;justify-content:flex-end;text-align:right}.scroll-cue{bottom:max(16px,env(safe-area-inset-bottom));gap:14px;font-size:12px}
 .work-section{padding-top:80px}.work-heading{display:block;margin-bottom:56px}.work-heading h2{font-size:46px}.filters{margin-top:20px;gap:26px;font-size:10px}.project-grid,.project-gallery{grid-template-columns:repeat(6,minmax(0,1fr));column-gap:16px;row-gap:clamp(72px,12vh,112px);padding-bottom:6vh}.project-card:nth-child(n),.gallery-item:nth-child(n){grid-column:1/span 5;margin-top:0}.project-card:nth-child(even),.gallery-item:nth-child(even){grid-column:2/span 5}.card-caption{padding-top:17px;gap:12px}.card-caption h3{font-size:23px}.card-caption>span{font-size:9px}
 .studio-section{margin-top:80px;padding-top:0;padding-bottom:32px}.studio-section h2{font-size:clamp(48px,11.5vw,80px)}.studio-copy{width:100%;margin:32px 0 0 auto;font-size:15px;line-height:1.8}.site-footer{padding-top:56px}.footer-link{font-size:19vw}.footer-link span{left:105%;font-size:.5em;top:15%}.footer-meta{margin-top:48px;flex-wrap:wrap;gap:20px;font-size:9px}.footer-meta>span:first-child{flex-basis:100%}
 .project-topbar{height:64px}.project-topbar>span{display:none}.project-intro{padding-top:24px;padding-bottom:28px}.project-intro :is(h1,h2){font-size:clamp(46px,12vw,80px);max-width:100%}.project-intro-info{width:95%;margin:22px 0 0 auto}.project-description{font-size:13px}.gallery-heading{margin-bottom:20px}.project-next{margin-top:64px;padding-bottom:40px}.next-title{font-size:42px}.project-prev{margin-top:20px}
 .index-dialog{padding-top:20px}.index-header{margin-bottom:24px}.index-header h2{font-size:70px}.index-layout{display:block}.index-preview{display:none}.index-row{font-size:23px;grid-template-columns:20px 1fr 40px;gap:14px;min-height:56px;padding-block:12px}.index-number,.index-category{font-size:9px}.viewer-top,.viewer-bottom{height:56px;padding-inline:16px;font-size:10px}#viewer-media{padding-inline:12px}#viewer-media img{max-height:min(var(--image-limit),calc(100dvh - 112px))}#viewer-media video{max-height:min(var(--video-limit),calc(100dvh - 112px))}#viewer-media iframe{width:min(90vw,calc(min(var(--video-limit),100dvh - 112px) * var(--ratio,1.777778)));max-height:min(var(--video-limit),calc(100dvh - 112px))}
}
@media(max-width:360px){.site-header nav{gap:6px}.hero-baseline>a{max-width:115px}.hero-baseline{gap:15px}.hero-baseline p{font-size:10px}.work-heading h2{font-size:40px}.index-row{font-size:21px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
