/* A continuous scroll journey. Native page flow is never replaced or pinned. */
body{isolation:isolate}
html:has(body.motion-paused){scroll-behavior:auto}
.journey-atmosphere{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;opacity:0;contain:strict}
.journey-active .journey-atmosphere{opacity:1}
.journey-glow{position:absolute;width:min(74vw,920px);aspect-ratio:1;border-radius:50%;will-change:transform;pointer-events:none}
.glow-mint{left:0;top:0;background:radial-gradient(ellipse,#2be6b315,transparent 68%);transform:translate3d(var(--aura-x,42vw),var(--aura-y,-20vh),0)}
.glow-blue{right:-15%;bottom:-40%;background:radial-gradient(ellipse,#559bff12,transparent 65%);transform:translate3d(var(--echo-x,0px),var(--echo-y,0px),0)}
.journey-orbit{position:absolute;left:50%;top:50%;width:min(78vw,1050px);aspect-ratio:1;border:1px solid #79edc914;border-radius:50%;box-shadow:0 0 0 42px #87ffd403,0 0 0 43px #79edc907;transform:translate(-50%,-50%) perspective(1100px) rotateX(68deg) rotateZ(var(--orbit-turn,0deg));mask-image:linear-gradient(90deg,transparent,#000 35%,#000 70%,transparent);pointer-events:none}
.journey-motion{position:fixed;z-index:35;right:22px;bottom:22px;min-height:44px;display:flex;gap:9px;align-items:center;justify-content:center;padding:11px 15px;border:1px solid #7ad6b749;border-radius:999px;background:#0c211bef;color:#d3f5e7;box-shadow:0 8px 28px #0004;font-size:.75rem;backdrop-filter:blur(14px)}
.journey-motion:hover{background:#1a382deF;border-color:#96f2d4}
.journey-motion:disabled{cursor:default;color:#9db6ac}
.journey-motion svg{width:15px;height:15px;stroke-width:2}
.journey-play{fill:currentColor;stroke:none}
.journey-ready .hero-copy{translate:0 var(--hero-copy-shift,0px)}
.journey-ready .hero-visual{translate:0 var(--hero-scene-shift,0px);scale:var(--hero-scale,1)}
.journey-ready .scene-fallback{transform:rotateX(calc(var(--scene-rx,9deg) + var(--hero-pitch,0deg))) rotateY(calc(var(--scene-ry,-18deg) + var(--hero-turn,0deg)))}
.journey-ready .hero::after{translate:0 var(--grid-shift,0px)}
.journey-word{display:inline-block;transform-origin:50% 90%;opacity:var(--word-opacity,1);transform:perspective(800px) translate3d(0,var(--word-y,0px),0) rotateX(var(--word-tilt,0deg))}
.journey-active .journey-word{clip-path:inset(-12% -10% var(--word-mask,0%) -10%)}
.journey-ready .hero h1 .mint{background:none;color:var(--mint)}
.journey-ready .hero h1 .mint .journey-word{background:linear-gradient(130deg,#c8fff0 5%,#56f4c6 40%,#14bb8c 90%);background-clip:text;-webkit-background-clip:text;color:transparent}
.journey-ready .hero-foot svg{transform:translateY(var(--scroll-cue,0px))}
.journey-ready .discipline-strip{overflow:clip}
.journey-ready .discipline-strip::after{content:"";position:absolute;inset:auto 0 0;height:1px;background:linear-gradient(90deg,transparent,#9affdc,transparent);transform:scaleX(var(--strip-progress,0));transform-origin:50%}
.journey-ready .discipline-strip i{rotate:var(--strip-turn,0deg)}
.journey-card{translate:var(--enter-x,0px) var(--enter-y,0px);rotate:var(--enter-rotate,0deg);scale:var(--enter-scale,1);opacity:var(--enter-opacity,1);transform-origin:50% 80%}
.journey-card:not(.depth-card){transform:perspective(1500px) rotateX(var(--enter-depth,0deg))}
.journey-ready .journey-card:focus-within{translate:none;rotate:none;scale:none;opacity:1;transform:none}
.journey-ready .depth-card{transform:perspective(1100px) translateY(var(--lift,0px)) rotateX(calc(var(--rx,0deg) + var(--enter-depth,0deg))) rotateY(var(--ry,0deg))}
.journey-ready .work-grid{perspective:1800px}
.journey-ready .work-caption .work-index{color:#9de6cd}
.journey-ready .services-section{overflow:clip}
.journey-active .services-section{clip-path:inset(0 var(--surface-inset,0px) round var(--surface-radius,30px))}
.journey-ready .service-fold{position:relative}
.journey-ready .service-fold::after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,#137755,#57cdaa);transform:scaleX(var(--step-progress,1));transform-origin:left;pointer-events:none}
.journey-ready .service-fold.is-current .service-number{color:#075638}
.journey-ready .service-fold.is-current .service-main h3{color:#11664c}
.journey-ready .service-fold.is-current .service-tags span{background:#fcfffc9c}
.journey-ready .service-main,.journey-ready .service-tags{transition:color .3s}
.journey-ready .process-grid article{position:relative}
.journey-ready .process-grid article::before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:linear-gradient(90deg,#a2ffde,#258e6c);transform:scaleX(var(--step-progress,1));transform-origin:left;pointer-events:none}
.journey-ready .process-number{color:#d2fff0}
.journey-ready .connect-section{overflow:clip;isolation:isolate}
.journey-ready .connect-section::before,.journey-ready .connect-section::after{content:"";position:absolute;pointer-events:none;z-index:0;width:min(1000px,115vw);aspect-ratio:1;left:-28%;top:0;border:1px solid #85e7c926;border-radius:50%;transform:perspective(1200px) rotateY(-28deg) rotateX(53deg) rotateZ(var(--connect-turn,0deg)) scale(var(--connect-scale,1));opacity:var(--connect-light,.5)}
.journey-ready .connect-section::after{width:min(720px,88vw);left:-18%;top:16%;border-color:#85e7c911;transform:perspective(1200px) rotateY(24deg) rotateX(-45deg) rotateZ(var(--connect-turn,0deg))}
.journey-ready .connect-grid{position:relative;z-index:1}
.journey-ready .enquiry-form{transform-origin:center top}
.journey-ready .site-footer{position:relative;padding-bottom:84px;overflow:clip}
.journey-ready .footer-wordmark{background-image:linear-gradient(105deg,#315146 0%,#9be4c8 38%,#274c3c 68%,#172d25 100%);background-size:200% 100%;background-position:var(--footer-shine,100%) 0;translate:0 var(--footer-rise,0px);scale:var(--footer-scale,1);transform-origin:left center}
.journey-ready .footer-wordmark>span{color:#91efcc}
.footer-legal{display:grid;gap:4px;min-width:0}

/* Individual elements assemble with the scroll, rather than appearing only
   as a single section. No opacity is changed until the controller is active. */
.scroll-inline{display:inline-block;max-width:100%}
.journey-active .scroll-piece{opacity:var(--piece-opacity,1);translate:var(--piece-x,0px) var(--piece-y,0px);rotate:var(--piece-turn,0deg);scale:var(--piece-scale,1);transform-origin:center}
.journey-active .scroll-copy,.journey-active .scroll-chip,.journey-active .scroll-value{clip-path:inset(-12% -8% var(--piece-mask,0%) -8%)}
.journey-active .scroll-media{clip-path:inset(var(--piece-mask,0%) 0 0 round 20px)}
.journey-active .scroll-icon{clip-path:none;transform-box:fill-box;transform-origin:center}
.journey-active .scroll-wordmark{clip-path:inset(-12% -3% var(--piece-mask,0%) -3%);translate:0 calc(var(--piece-y,0px) + var(--footer-rise,0px))}
.journey-active .scroll-feature::before{scale:var(--piece-scale,1);transform-origin:center}

/* Focus immediately exposes a whole control and its text. Typing, video
   controls, native validation and open accordions never wait for a reveal. */
.journey-active .scroll-piece:focus-within,.journey-active .scroll-piece:focus-visible,
.journey-active .scroll-piece:focus-within .scroll-piece,
.journey-active .journey-card:focus-within .scroll-piece,
.journey-active .enquiry-form:focus-within .scroll-piece,
.journey-active .scroll-button:hover,.journey-active .scroll-button:hover .scroll-piece{opacity:1!important;translate:none!important;rotate:none!important;scale:none!important;clip-path:none!important}
.journey-active .journey-card:focus-within .journey-word{opacity:1;transform:none;clip-path:none}

body:not(.journey-active) .scroll-piece{opacity:1;translate:none;rotate:none;scale:none;clip-path:none}
body:not(.journey-active) .journey-word{clip-path:none}
.journey-measuring .scroll-piece,.journey-measuring .journey-card,.journey-measuring .hero-copy,.journey-measuring .hero-visual{translate:none!important;rotate:none!important;scale:none!important;clip-path:none!important}
.journey-measuring .journey-card,.journey-measuring .depth-card{transform:none!important}
.journey-measuring .services-intro{position:static!important}
.journey-ready .section-heading .eyebrow,.journey-ready .services-intro>.eyebrow{color:#c2dcd2}
.journey-ready .services-intro>.eyebrow{color:#355e4d}

/* The heading stays alongside the services, inside their existing height. */
@media(min-width:1100px){
 .journey-ready .services-section>.container{display:grid;grid-template-columns:.88fr 1.12fr;gap:clamp(42px,5vw,88px);align-items:start}
 .journey-ready .services-intro{position:sticky;top:136px;display:flex;flex-direction:column;gap:30px;margin:0}
 .journey-ready .services-intro h2{font-size:clamp(2.5rem,3.5vw,3.7rem)}
 .journey-ready .services-intro>p:last-child{align-self:start;justify-self:start;width:auto}
 .journey-ready .service-row{grid-template-columns:26px 1fr;gap:18px 22px;padding:34px 10px}
 .journey-ready .service-row:hover{padding-left:10px}
 .journey-ready .service-tags{grid-column:2;justify-content:flex-start;padding:0}
 .journey-ready .service-main h3{font-size:clamp(1.5rem,2vw,1.875rem)}
 .journey-ready .service-main p{font-size:1rem;line-height:1.65}
 .journey-ready .service-fold:first-child .service-row{padding-top:24px}
}
@media(max-width:760px){
 .journey-glow{width:120vw}.glow-mint{background:radial-gradient(ellipse,#2be6b30d,transparent 64%)}
 .glow-blue,.journey-orbit{display:none}
 .journey-motion{right:16px;bottom:calc(91px + env(safe-area-inset-bottom,0px));width:44px;height:44px;padding:12px;background:#0d281f}
 .journey-motion>span{display:none}
 .journey-ready .work-grid{perspective:none}
 .journey-ready .service-fold::after{background:linear-gradient(90deg,#318f6e,#8eb9a6)}
 .journey-ready .connect-section::before{width:135vw;left:-55%;top:0}
 .journey-ready .connect-section::after{display:none}
 .journey-ready .site-footer{padding-bottom:20px}
 .journey-ready .depth-card{transform:none}
}
/* A readable, complete layout is also the paused, reduced-motion and no-JS view. */
body:not(.journey-active) .journey-word{opacity:1;transform:none}
body:not(.journey-active) .journey-card{translate:none;rotate:none;scale:none;opacity:1}
body:not(.journey-active) .journey-card:not(.depth-card),body:not(.journey-active) .depth-card{transform:none}
body:not(.journey-active) .hero-copy,body:not(.journey-active) .hero-visual,body:not(.journey-active) .hero::after,body:not(.journey-active) .footer-wordmark{translate:none;scale:none}
body:not(.journey-active) .scene-fallback{transform:rotateX(var(--scene-rx,9deg)) rotateY(var(--scene-ry,-18deg))}
body:not(.journey-active) .service-fold::after,body:not(.journey-active) .process-grid article::before{transform:scaleX(1)}
body:not(.journey-active) .discipline-strip i{rotate:none}
body:not(.journey-active) .connect-section::before,body:not(.journey-active) .connect-section::after{opacity:.35;transform:rotateX(53deg)}
@media(prefers-reduced-motion:reduce){
 .journey-atmosphere{display:none}
 .journey-word,.journey-card,.hero-copy,.hero-visual,.footer-wordmark,.scroll-piece{transform:none!important;translate:none!important;rotate:none!important;scale:none!important;opacity:1!important;clip-path:none!important}
 .journey-ready .service-main,.journey-ready .service-tags{transition:none}
}
