/* Row reveal inspired by the reference: line, number, title, then copy. */
.ws-row-reveal{position:relative;border-top-color:transparent!important}
.ws-row-reveal::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:currentColor;opacity:.18;transform:scaleX(0);transform-origin:left;transition:transform .65s cubic-bezier(.215,.61,.355,1)}
.ws-row-reveal>*{opacity:0;transform:translateY(45px);transition:transform .65s cubic-bezier(.215,.61,.355,1),opacity 1s cubic-bezier(.215,.61,.355,1)}
.ws-row-reveal>:nth-child(2){transition-delay:.1s}.ws-row-reveal>:nth-child(3){transition-delay:.2s}
.ws-row-reveal.is-row-visible::before{transform:scaleX(1)}
.ws-row-reveal.is-row-visible>*{opacity:1;transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.ws-row-reveal>*,.ws-row-reveal::before{transition:none!important;opacity:1;transform:none}}
html[data-motion=reduced] .ws-row-reveal>*,html[data-motion=reduced] .ws-row-reveal::before{transition:none!important;opacity:1;transform:none}

/* Identical cross-direction arrows on both pages. */
.architecture-link>span:last-child,.direction-link .direction-arrow{display:inline-block!important;font-family:inherit!important;font-size:clamp(48px,5vw,80px)!important;font-weight:400!important;line-height:1!important;letter-spacing:0!important;justify-self:end;transform-origin:center;animation:ws-cross-arrow 2.6s ease-in-out infinite!important}
@keyframes ws-cross-arrow{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(3px,-3px) scale(1.09)}}
@media(prefers-reduced-motion:reduce){.architecture-link>span:last-child,.direction-link .direction-arrow{animation:none!important}}
html[data-motion=reduced] .architecture-link>span:last-child,html[data-motion=reduced] .direction-link .direction-arrow{animation:none!important}

/* Match Digital's spatial entrance at the end of the page. */
.direction-link.scroll-reveal,footer.scroll-reveal{opacity:0;transform:perspective(1400px) translate3d(0,85px,-110px) rotateX(8deg) scale(.94);transform-origin:50% 90%;filter:blur(3px);transition:transform 1.2s cubic-bezier(.22,1,.36,1),opacity .8s ease,filter 1s ease;transition-delay:0ms;backface-visibility:hidden}
footer.scroll-reveal{transition-delay:85ms}
.direction-link.scroll-reveal.is-revealed,footer.scroll-reveal.is-revealed,.direction-link.scroll-reveal:focus-within,footer.scroll-reveal:focus-within{opacity:1;transform:translate3d(0,0,0) rotateX(0) scale(1);filter:blur(0)}
@media(max-width:700px){.direction-link.scroll-reveal,footer.scroll-reveal{transform:translateY(45px) rotateX(5deg) scale(.96);filter:none;transition-duration:.9s}.direction-link.scroll-reveal.is-revealed,footer.scroll-reveal.is-revealed{transform:none}}
@media(prefers-reduced-motion:reduce){.direction-link.scroll-reveal,footer.scroll-reveal{opacity:1;transform:none;filter:none;transition:none}}
html[data-motion=reduced] .direction-link.scroll-reveal,html[data-motion=reduced] footer.scroll-reveal{opacity:1;transform:none;filter:none;transition:none}

/* Project cards assemble on every pass, after their images have decoded. */
#arch-grid .project.scroll-reveal{opacity:0;transform:perspective(1400px) translate3d(0,64px,0) rotateX(4deg) scale(.965);transform-origin:50% 90%;transition:opacity .75s ease,transform 1.1s cubic-bezier(.22,1,.36,1);transition-delay:var(--reveal-delay,0ms)}
#arch-grid .project.scroll-reveal.reveal-from-top:not(.is-revealed){transform:perspective(1400px) translate3d(0,-48px,0) rotateX(-3deg) scale(.965);transform-origin:50% 10%}
#arch-grid .project.scroll-reveal.is-revealed,#arch-grid .project.scroll-reveal:focus-within{opacity:1;transform:none}
@media(max-width:700px){#arch-grid .project.scroll-reveal{transform:translateY(28px) scale(.98);transition-duration:.65s,.85s}#arch-grid .project.scroll-reveal.reveal-from-top:not(.is-revealed){transform:translateY(-28px) scale(.98)}#arch-grid .project.scroll-reveal.is-revealed,#arch-grid .project.scroll-reveal:focus-within{transform:none}}
@media(prefers-reduced-motion:reduce){#arch-grid .project.scroll-reveal{opacity:1;transform:none!important;transition:none}#arch-grid .project.scroll-reveal .project-image{clip-path:none;transition:none}}
html[data-motion=reduced] #arch-grid .project.scroll-reveal{opacity:1;transform:none!important;transition:none}
html[data-motion=reduced] #arch-grid .project.scroll-reveal .project-image{clip-path:none;transition:none}
