:root{--motion-ease:cubic-bezier(.22,1,.36,1);--reveal-distance:26px;--reveal-time:850ms}
/* A persistent, quiet navigation surface, with the original no-script layout retained. */
.ui-ready .site-header{position:fixed;top:0;transition:background-color .3s,color .3s,box-shadow .3s;isolation:isolate}
.ui-ready .site-header .header-inner{transition:height .3s,border-color .3s}
.ui-ready body.service-page{padding-top:var(--header-height)}
.ui-ready .service-page .site-header{background:var(--paper)}
.ui-ready .site-header.is-scrolled{background:rgba(243,241,235,.96);color:var(--ink);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 0 #22232018}
.ui-ready .site-header.is-scrolled .header-inner{height:72px;border-bottom-color:transparent}
.ui-ready .site-header.is-scrolled .logo-light{display:none}.ui-ready .site-header.is-scrolled .logo-dark{display:block}
.ui-ready .site-header.is-scrolled a:focus-visible,.ui-ready .site-header.is-scrolled button:focus-visible{outline-color:var(--accent)}
.reading-progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--accent);transform:scaleX(var(--reading-progress,0));transform-origin:left;pointer-events:none}
.desktop-nav a[aria-current=location]:after{transform:scaleX(1)}
.page-index a{position:relative;transition:color .2s}
.page-index a:after{content:"";position:absolute;height:1px;background:var(--accent);bottom:5px;left:0;right:0;transform:scaleX(0);transform-origin:left;transition:transform .35s var(--motion-ease)}
.page-index a[aria-current=location]{color:var(--ink)}.page-index a[aria-current=location]:after{transform:scaleX(1)}
/* Content remains readable until JavaScript explicitly opts into motion. */
.has-motion .reveal{transition:none}
.has-motion .reveal:not(.is-visible){opacity:0;transform:translate3d(0,var(--reveal-distance),0)}
.has-motion .reveal.is-visible{opacity:1;transform:none;transition:opacity var(--reveal-time) var(--motion-ease),transform var(--reveal-time) var(--motion-ease);transition-delay:var(--reveal-delay,0ms)}
.has-motion .reveal:focus-within{opacity:1;transform:none;transition:none}
.has-motion .detail-intro{animation:opening-type 1s var(--motion-ease) both}

.has-motion .detail-visual{animation:material-window 1.1s var(--motion-ease) both}
/* A single, bottom-to-top opening; the settled layout stays unchanged. */
@media(prefers-reduced-motion:no-preference){
 .hero{--opening-time:2800ms;--type-time:1800ms;--type-delay:260ms;--copy-delay:440ms;--opening-ease:cubic-bezier(.22,.6,.3,1);--opening-rise:28px}
 .hero.is-preparing .hero-art,.hero.is-preparing .hero-heading,.hero.is-preparing .hero-copy{opacity:0}
 .hero.is-entering .hero-art{animation:hero-unfold var(--opening-time) var(--opening-ease) both}
 .hero.is-entering .hero-art img{animation:hero-material-rise var(--opening-time) var(--opening-ease) both;transform-origin:center bottom}
 .hero.is-entering .hero-heading{animation:hero-type-rise var(--type-time) var(--opening-ease) var(--type-delay) both}
 .hero.is-entering .hero-copy{animation:hero-type-rise var(--type-time) var(--opening-ease) var(--copy-delay) both}
}
@keyframes hero-unfold{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0)}}
@keyframes hero-material-rise{from{transform:translateY(30px) scale(1.025)}to{transform:none}}
@keyframes hero-type-rise{from{opacity:0;transform:translateY(var(--opening-rise))}to{opacity:1;transform:none}}
@media(max-width:767px){.hero{--opening-time:2000ms;--type-time:1400ms;--type-delay:140ms;--copy-delay:260ms;--opening-rise:18px}}
@keyframes opening-type{from{opacity:0;transform:translate3d(0,20px,0)}to{opacity:1;transform:none}}
@keyframes material-window{from{opacity:0;clip-path:inset(5% 0 5% 0)}to{opacity:1;clip-path:inset(0)}}


.section-heading h2,.about h2{letter-spacing:-.04em}
.contact-grid h2{font-size:clamp(2.75rem,4.5vw,4rem);letter-spacing:-.045em}
.contact-inner{padding-block:88px 86px}.site-footer{padding-block:40px}.site-footer img{width:130px}
.text-link span{display:inline-block;transition:transform .35s var(--motion-ease)}
.text-link:hover span,.text-link:focus-visible span{transform:translate(3px,-3px)}
.text-link{transition:color .25s,border-color .25s;position:relative}
.service,.project,.scope-item{position:relative}
.service:before,.project:before,.scope-item:before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .55s var(--motion-ease);pointer-events:none}
.service:focus-within:before,.project:focus-within:before,.scope-item:focus-within:before{transform:scaleX(1)}
.project-dialog[open]{animation:dialog-arrive .28s var(--motion-ease)}
.project-dialog[open]::backdrop{animation:backdrop-arrive .25s ease}
@keyframes dialog-arrive{from{opacity:0;transform:translateY(10px) scale(.992)}to{opacity:1;transform:none}}
@keyframes backdrop-arrive{from{opacity:0}to{opacity:1}}
@media(hover:hover) and (pointer:fine){.service:hover:before,.project:hover:before,.scope-item:hover:before{transform:scaleX(1)}}
@media(min-width:1001px){.about-heading{position:sticky;top:130px;align-self:start}.principles article{padding-block:34px}}
@media(max-width:1000px){.contact-inner{padding-block:76px}.detail-visual img{inset:0;height:100%;translate:none}}
@media(max-width:767px){
 :root{--reveal-distance:12px;--reveal-time:620ms;scroll-padding-top:88px}
 .ui-ready .site-header.is-scrolled .header-inner{height:66px}
 .ui-ready .site-header.menu-open,.ui-ready .service-page .site-header.menu-open{position:fixed;top:0;height:100svh;background:var(--dark);color:white;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
 .ui-ready .site-header.menu-open .logo-light{display:block}.ui-ready .site-header.menu-open .logo-dark{display:none}
 .ui-ready .site-header.menu-open .header-inner{height:var(--header-height);border-color:#ffffff2b}
 .ui-ready .site-header.menu-open .reading-progress{opacity:0}
 .ui-ready .site-header.menu-open a:focus-visible,.ui-ready .site-header.menu-open button:focus-visible{outline-color:#efc8b8}

 .contact-grid h2{font-size:2.5rem}.contact-inner{padding-block:62px 44px}.site-footer{padding-block:32px}.site-footer img{width:108px}
 .has-motion .detail-intro{animation-duration:.75s;animation-delay:0s}
}
@media(prefers-reduced-motion:reduce){
 .has-motion .reveal,.has-motion .reveal:not(.is-visible){opacity:1;transform:none;transition:none}
 .detail-visual img{translate:none!important}
 .reading-progress{display:none}
 *,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
@media print{.reveal{opacity:1!important;transform:none!important}.ui-ready .site-header{position:static}.ui-ready body.service-page{padding-top:0}.reading-progress{display:none}.about-heading{position:static}.detail-visual img{translate:none!important}}
