/* Native document transitions: normal navigation remains the fallback. */
@view-transition{navigation:auto}
::view-transition-group(*){animation-duration:760ms;animation-timing-function:cubic-bezier(.22,1,.36,1)}
::view-transition-old(root){animation:soft-depart 540ms cubic-bezier(.4,0,.2,1) both}
::view-transition-new(root){animation:soft-arrive 760ms cubic-bezier(.22,1,.36,1) both}
::view-transition-image-pair(featured-image){isolation:auto}
::view-transition-group(featured-image){animation-duration:1150ms;animation-timing-function:cubic-bezier(.3,0,.2,1);overflow:hidden}
::view-transition-old(featured-image){animation:art-depart 650ms ease both;mix-blend-mode:normal;height:100%;width:100%;object-fit:cover}
::view-transition-new(featured-image){animation:art-arrive 650ms 180ms ease both;mix-blend-mode:normal;height:100%;width:100%;object-fit:cover}
::view-transition-new(project-copy){animation:copy-arrive 500ms 600ms var(--ease) both}
html[data-transition-kind=project]::view-transition-old(root){animation:art-depart 300ms ease both}
html[data-transition-kind=project]::view-transition-new(root){animation:art-arrive 600ms 250ms ease both}
@keyframes soft-depart{to{opacity:0;filter:blur(12px);transform:translateY(-12px)}}
@keyframes soft-arrive{from{opacity:0;filter:blur(10px);transform:translateY(18px)}to{opacity:1;filter:blur(0);transform:none}}
@keyframes art-depart{from{opacity:1}to{opacity:0}}
@keyframes art-arrive{from{opacity:0}to{opacity:1}}
@keyframes copy-arrive{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.header{view-transition-name:site-header}.header .brand{display:block}.header-note{display:none}
.header [aria-current=page]{text-decoration:underline;text-underline-offset:5px}
.gallery-layout>.intro,.project-rail{grid-row:1}.gallery-layout{min-height:calc(100svh - 150px)}
.footer .privacy-link{margin-left:auto}.footer button{margin-left:0}
.entrance{min-height:100svh;max-width:1600px;margin:auto;padding:130px clamp(40px,12vw,190px) 100px;display:grid;grid-template-columns:1fr .88fr;gap:clamp(65px,11vw,175px);align-items:center;position:relative}
.entrance-copy{max-width:325px;padding-bottom:25px}
.entrance-eyebrow{display:block;font-size:8px;letter-spacing:.07em;margin-bottom:32px;color:var(--muted)}
.entrance h1 img{width:clamp(190px,19vw,270px);height:auto}
.entrance-copy>p{font-size:13px;line-height:1.85;margin-top:27px;max-width:295px}
.enter-link{display:flex;justify-content:space-between;align-items:center;width:170px;margin-top:46px;padding:13px 0;border-bottom:1px solid var(--ink);font-size:13px}
.enter-arrow{font-size:23px;transition:transform .6s var(--ease)}
.enter-link:hover .enter-arrow{transform:translate(5px,-5px)}
.entrance-art{display:block;position:relative;max-width:370px;width:100%;justify-self:end;margin-top:20px}
.entrance-float{animation:float-in 1.15s var(--ease) both;transform-origin:50% 70%;overflow:hidden}
.entrance-float img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;transition:transform 1.3s var(--ease),filter 1.3s var(--ease)}
.entrance-art:hover img{transform:scale(1.025);filter:blur(.4px)}
.entrance-art{transform:translate3d(var(--float-x,0px),var(--float-y,0px),0);transition:transform .9s var(--ease)}
/* A brief arrival also covers webviews that intercept native cross-document transitions. */
html:not([data-transition]) body:not([data-page=entrance]) #main{animation:soft-arrive 620ms var(--ease) both}
/* Browsers without a shared-document transition still reveal image, then copy.
   Keep navigation native and immediate; there is no fetch/router interception. */
html:not([data-transition]) body[data-page=project] #main{animation:art-arrive 500ms ease both}
html:not([data-transition]) .project-page-copy{animation:copy-arrive 500ms 500ms var(--ease) both}
html[data-art-transfer] body[data-page=project] #main{animation:none}
html[data-art-transfer=waiting] .detail-visual{visibility:hidden}
html[data-art-transfer=running] .detail-visual{overflow:visible;position:relative;z-index:2}
html[data-art-transfer=running] .detail-visual .project-image{overflow:hidden}
html[data-art-transfer=waiting] .project-page-copy{opacity:0;animation:none}
html[data-art-transfer=running] .project-page-copy{animation:copy-arrive 500ms 600ms var(--ease) both}
.entrance-caption{display:flex;justify-content:space-between;gap:20px;margin-top:15px;font:8px/1.6 var(--mono);color:var(--muted)}
.entrance-bottom{position:absolute;bottom:34px;left:var(--gutter);right:var(--gutter);display:flex;justify-content:space-between;align-items:center}
.entrance-bottom>.index-label{font-size:8px;color:var(--muted)}
.motion-toggle{font-size:10px;min-height:44px;min-width:76px;text-align:right;color:var(--muted)}
.motion-toggle span{text-decoration:underline;text-underline-offset:4px}
[data-page=entrance]>.footer{display:none}
[data-page=entrance] .header .brand{visibility:hidden}
@keyframes float-in{from{opacity:0;filter:blur(8px);transform:translateY(20px) rotate(1.5deg)}to{opacity:1;filter:blur(0);transform:none}}
.subpage{max-width:1180px;min-height:calc(100svh - 180px);padding:150px var(--gutter) 65px;margin-inline:auto}
.back-collection{display:inline-block;font-size:11px;margin-bottom:64px;color:var(--muted)}
.subpage .editorial-section{padding:0;grid-template-columns:.8fr 1.2fr;column-gap:12%;max-width:none}
.subpage .editorial-section:before{display:none}
.subpage h1{font-size:28px;line-height:1.35;letter-spacing:-.025em;margin:0 0 27px}
.subpage .section-content{padding-top:0}.subpage .section-label>.index-label{margin-bottom:21px}
.subpage .services{padding-top:4px}.subpage .service{padding-block:26px}.subpage .service:first-child{padding-top:0}
.subpage .section-content>p{max-width:480px;font-size:14px;line-height:2}.subpage .section-content>p.quiet{font-size:12px;margin-top:30px}
.project-page{padding-top:143px;max-width:1500px;min-height:80svh}
.project-page-heading{display:grid;grid-template-columns:1fr auto;row-gap:28px;align-items:center;margin-bottom:40px}
.project-page-heading>.text-link{font-size:11px;justify-self:start}.project-page-heading>.index-label{color:var(--muted);font-size:9px}
.project-page h1{font-size:27px;letter-spacing:.02em;line-height:1.5;grid-column:1/-1}
.project-page-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:clamp(45px,7vw,110px);align-items:start}
.detail-visual{overflow:hidden;min-width:0}.detail-visual img{transform:none;width:100%;height:100%;object-fit:cover}.detail-visual .type-cover{aspect-ratio:1.16}
.project-page-copy{position:sticky;top:125px;padding-top:4px}.project-page-copy>.index-label{font-size:9px;color:var(--muted)}
.detail-gallery{display:grid;gap:clamp(36px,6vw,88px);max-width:1040px;margin:clamp(64px,9vw,128px) auto 0}
.detail-figure{margin:0;min-width:0;width:100%}.detail-figure.is-portrait{max-width:640px;justify-self:center}
.detail-figure img{display:block;width:100%;height:auto;object-fit:contain}
.detail-figure figcaption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 24px;margin-top:12px;color:var(--muted);font-size:11px;line-height:1.8}
.gallery-credit{margin-left:auto}
.relation-teaser{align-items:flex-start}.series-projects{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.detail-copy{font-size:14px;margin-top:25px}.detail-copy p{line-height:2;margin-bottom:18px}.detail-copy .pending{font-size:11px;margin-top:24px}
.detail-copy>.text-link{display:inline-block;font-size:12px;margin-top:35px}
.detail-copy>.project-production-inquiry{font-size:12px;margin-top:8px}
.project-credits{margin-block:28px;font-size:12px}.project-credits>div{display:grid;grid-template-columns:minmax(90px,1fr) 2fr;gap:18px;padding-block:8px;border-bottom:1px solid var(--line)}.project-credits dt{color:var(--muted)}.project-credits dd{margin:0}
.next-project{margin:72px 0 70px;border-top:1px solid var(--line);padding-top:25px;display:flex;justify-content:space-between;gap:35px;align-items:baseline}
.next-project>.index-label{font-size:9px;color:var(--muted)}.next-project>a{display:flex;gap:65px;font-size:16px}.next-project>a>span:last-child{transition:transform .35s var(--ease)}
.next-project>a:hover>span:last-child{transform:translate(3px,-3px)}
@media(min-width:1000px){[data-page=projects] .header>.brand{display:none}[data-page=projects] .header-note{display:block}}
@media(max-width:999px){.entrance{gap:60px;padding-inline:var(--gutter)}.entrance-art{max-width:310px}.entrance-copy>p{font-size:12px}.project-page-grid{gap:40px}.subpage .editorial-section{column-gap:7%}}
@media(max-width:700px){
  .entrance{min-height:100svh;display:flex;flex-direction:column;align-items:stretch;gap:36px;padding:122px 35px 95px}
  .entrance-copy{max-width:295px;padding:0}.entrance-eyebrow{font-size:7px;margin-bottom:21px}.entrance h1 img{width:190px}.entrance-copy>p{font-size:12px;line-height:1.8;margin-top:22px}
  .enter-link{margin-top:24px;width:150px;font-size:12px;padding:9px 0}.entrance-art{width:55%;max-width:230px;align-self:flex-end;margin:0 0 8px}.entrance-caption{font-size:7px;gap:7px}.entrance-caption>span:last-child{display:none}
  .entrance-bottom{bottom:16px}.entrance-bottom>.index-label{font-size:6px}
  .subpage{padding-top:112px;padding-bottom:35px}.back-collection{margin-bottom:43px}.subpage .editorial-section{grid-template-columns:1fr;gap:30px}.subpage h1{font-size:25px;margin-bottom:16px}
  .subpage .section-content>p{font-size:13px}.subpage .section-content>p.quiet{font-size:11px}
  .project-page{padding-top:113px}.project-page-heading{row-gap:27px;margin-bottom:29px;column-gap:18px}.project-page-heading>.index-label{font-size:8px;text-align:right}.project-page h1{font-size:22px}
  .project-page-grid{grid-template-columns:1fr;gap:32px}.project-page-copy{position:static}.detail-copy{font-size:13px;margin-top:18px}
  .next-project{margin-block:47px;flex-direction:column;gap:17px}.next-project>a{width:100%;justify-content:space-between;font-size:14px;gap:20px}.footer .privacy-link{margin:0;font-size:10px}
}
html[data-motion=off] *,html[data-motion=off] *:before,html[data-motion=off] *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html[data-motion=off]{scroll-behavior:auto}
html[data-motion=off]::view-transition-group(*),html[data-motion=off]::view-transition-old(*),html[data-motion=off]::view-transition-new(*){animation:none!important}
@media(prefers-reduced-motion:reduce){@view-transition{navigation:none}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}.entrance-float{animation:none}.entrance-art,.entrance-art:hover img{transform:none;filter:none}}
