/* Composition and scroll geometry measured against the visual reference.
   This file is independently authored; essential layout works without JS. */
main{isolation:isolate}
.label-rail{position:absolute;left:var(--gutter);top:0;bottom:0;width:2em;pointer-events:none;z-index:4}
.label-rail>.section-label{position:sticky;left:0;top:clamp(147.75px,12.3125vw,221.625px);width:max-content;max-height:none;transform:none}
.home-approach>.label-rail{top:68.75vw}
.services-intro>.label-rail{top:1.875vw}
.home-about>.label-rail{top:6.25vw}
/* Contact follows its content, without extending through the empty scene below. */
.home-contact>.label-rail{bottom:var(--contact-label-end,0px)}
.inner-hero>.label-rail{top:12.3125vw}
.values>.label-rail{top:9.375vw}
.about-story>.label-rail{top:8vw}
.outline>.label-rail{top:0}
.contact-hero>.label-rail{top:12.3125vw}
.service-detail>.label-rail{top:8.5vw}
.service-detail{overflow:clip}
.service-index .label-rail{position:static;width:auto}
.service-index .section-label{position:static}
.home-hero::after{background:linear-gradient(180deg,transparent 30%,#0a08010a 56%,var(--ink) 100%);z-index:1}
.hero-image img{filter:saturate(.92) brightness(.97)}
.hero-image{z-index:0}
.hero-title,.hero-support{position:relative;z-index:2}
.hero-support{position:absolute}
.hero-title h1{line-height:1}
.cloud-field{--cloud-opacity:.55;position:absolute;inset:0;pointer-events:none;z-index:1;overflow:clip;opacity:var(--cloud-opacity);transform:translate3d(0,var(--cloud-y,0px),0);will-change:transform;mask-image:linear-gradient(transparent,#000 14%,#000 65%,transparent 96%)}
.cloud-layer{position:absolute;left:-40vw;width:233.75vw;height:112.5vw;top:2vw;opacity:.45}
.cloud-layer-b{left:-50vw;top:22vw;width:168.75vw;height:81.25vw;opacity:.4}
.cloud-track{display:flex;width:200%;height:100%;animation:cloud-drift 200s linear infinite;animation-play-state:paused;will-change:transform}
.cloud-layer-b .cloud-track{animation-duration:240s;animation-direction:reverse;animation-delay:-120s}
.cloud-track img{width:50%;flex:0 0 50%;height:100%;object-fit:contain;user-select:none}
.cloud-field.is-in-view .cloud-track{animation-play-state:running}
.home-hero .cloud-field{--cloud-opacity:.46;mask-image:none}
/* Keep the alpha bands visible on arrival, with a quieter, slower drift. */
.home-hero .cloud-layer{top:calc(38svh - 60.75vw);opacity:.6;filter:blur(clamp(4px,.45vw,10px))}
.home-hero .cloud-layer-b{top:calc(70svh - 69.0625vw);opacity:.46;filter:blur(clamp(3px,.3vw,7px))}
.home-hero .cloud-track{animation-duration:140s;animation-direction:normal;animation-delay:0s}
.home-hero .cloud-layer-b .cloud-track{animation-duration:170s;animation-delay:-61.2s}
.entering .home-hero .cloud-field{animation:cloud-entrance 3s cubic-bezier(.65,0,.35,1) both}
@keyframes cloud-entrance{from{opacity:0}to{opacity:var(--cloud-opacity)}}
@keyframes cloud-drift{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.about-hero .cloud-field,.home-about .cloud-field{--cloud-opacity:.33}
.home-about-copy,.about-heading{position:relative;z-index:2}
.services-background{transform:translate3d(0,var(--backdrop-shift,0px),0);will-change:transform;opacity:.83;mask-image:linear-gradient(transparent 0%,#000 14%,#000 70%,transparent 100%)}
.service-stage{position:relative}
.service-row{position:relative;top:auto;isolation:isolate;z-index:0}
.services-intro{position:relative;isolation:isolate}
.section-label{transition:opacity .15s linear}
.service-rows{transform:translate3d(0,var(--stack-shift,0px),0);will-change:transform}
.line-link:not(.footer-next) .link-line{width:5vw}
.values-layout{display:grid;grid-template-columns:22.5vw 30vw 22.5vw;gap:7.5vw;position:relative}
.values-visual{grid-column:2;grid-row:1;min-width:0}
.values-stage{position:sticky;top:0;height:100svh;display:flex;align-items:center}
.value-stage-image{position:absolute;top:50%;left:0;width:30vw;height:43.75vw;transform:translateY(-50%);transition:clip-path 1.3s cubic-bezier(.06,.95,.2,.95);clip-path:circle(0% at 50% 50%)}
.value-stage-image.is-revealed,.value-stage-image:first-child{clip-path:circle(75% at 50% 50%)}
.values-list{grid-column:3;grid-row:1;min-width:0}
.value{display:block;min-height:200svh;padding:0 0 100svh}
.value:last-child{min-height:100svh;padding:0}
.value>.value-image{display:none}
.value-number{position:absolute;left:-5vw;top:calc(50svh - 21.875vw)}
.value-copy{height:100svh;min-height:0;justify-content:center;gap:5vw}
.value-copy .display{line-height:1.4}
/* Cinzel is rendered at its original regular weight. */
.hero-title h1{text-shadow:0 1px 12px #0008}
@media(min-width:768px){
 .scene-stack .service-row:first-child{position:sticky;top:0}
 .scene-stack .service-row:nth-child(2){position:sticky;top:var(--row-stick,0px)}
 .scene-stack .service-row:last-child{top:auto;position:relative}
}
@media(max-width:767px){
 :root{--body:2.9850746269vw}
 .label-rail>.section-label{top:33.333vw;font-size:2.9850746269vw}
 .home-approach>.label-rail{top:24.876vw}
 .services-intro>.label-rail{top:0}
 .home-about>.label-rail{top:20vw}
 .inner-hero>.label-rail{top:33.333vw}
 .values>.label-rail{top:24.876vw}
 .about-story>.label-rail{top:25vw}
 .contact-hero>.label-rail{top:32.338vw}
 .service-detail>.label-rail{top:114.5vw;bottom:40vw}
 .line-link{font-size:clamp(13px,3.482587vw,15px)}
 .line-link:not(.footer-next) .link-line{width:19.9005vw}
 .approach-copy .line-link{margin-top:7.46269vw}
 .services-intro-copy .line-link{margin-top:9.45274vw}
 .approach-copy>p{margin-top:5vw;line-height:2.4}
 .hero-title h1{font-size:3.4825870647vw;line-height:1}
 .cloud-layer{left:-40vw;top:58.458vw;width:139.801vw;height:67.413vw;opacity:.6}
 .cloud-layer-b{left:-56vw;top:98vw;width:193.781vw;height:93.284vw;opacity:.5}
 .home-hero .cloud-layer{top:calc(36svh - 36.403vw)}
 .home-hero .cloud-layer-b{top:calc(65svh - 79.2914vw)}
 .values-layout,.values-list{display:block}
 .values-visual{display:none}
 .value{padding:0 0 49.75vw 14.925vw;min-height:0}
 .value:last-child{min-height:0;padding-bottom:49.75vw}
 .value>.value-image{display:block;position:relative;top:0}
 .value-number{position:static;margin-bottom:8vw;display:block}
 .value-copy{display:block;height:auto;margin-top:10vw}
 .value-copy .display{margin-bottom:10vw}
 .services-background{transform:none}
}
@media(prefers-reduced-motion:reduce){
 .cloud-field{display:none}
 .services-background,.service-rows{transform:none!important}
 .service-stage{height:auto!important}
 .service-row{position:relative!important;top:auto!important}
 .value-stage-image{transition:none}
 .value-stage-image.is-active{clip-path:none}
 .value{min-height:100svh;padding-bottom:0}
}

/* Keep fine lettering distinct from every photograph without changing its form. */
body[data-page]{--heading-paper:#fffaf1;--heading-shade:var(--reading-shade,8 12 10);--heading-shadow:0 1px 2px rgb(var(--heading-shade)/.9),0 0 9px rgb(var(--heading-shade)/.6),0 0 22px rgb(var(--heading-shade)/.32)}
:root body[data-page] .header .wordmark,
:root body[data-page] .page-surface main :is(h1,h2,h3,.section-label,.studio-signature){
 --paper:var(--heading-paper);color:var(--heading-paper);text-shadow:var(--heading-shadow);
}
/* Animated lines are separate text, so their shadow cannot come from the hidden source. */
:root body[data-page] .page-surface main :is(h1,h2,h3) .motion-copy{text-shadow:var(--heading-shadow)}

/* A soft local fade follows the vertical lettering; it has no visible panel edge. */
:root body[data-page] .header .wordmark,
:root body[data-page] .page-surface main .label-rail>.section-label{isolation:isolate}
:root body[data-page] .header .wordmark::before,
:root body[data-page] .page-surface main .label-rail>.section-label::before{
 content:"";position:absolute;inset:-1.5rem -1.25rem;z-index:-1;pointer-events:none;
 background:radial-gradient(ellipse closest-side,rgb(var(--heading-shade)/.58) 25%,rgb(var(--heading-shade)/.3) 65%,transparent 100%);
}
@media(forced-colors:active){
 :root body[data-page] .header .wordmark,
 :root body[data-page] .page-surface main :is(h1,h2,h3,.section-label,.studio-signature){--paper:CanvasText;color:CanvasText;text-shadow:none}
 :root body[data-page] .page-surface main :is(h1,h2,h3) .motion-copy{text-shadow:none}
 :root body[data-page] .header .wordmark::before,
 :root body[data-page] .page-surface main .label-rail>.section-label::before{display:none}
}
