/* Digital Lab motion: compositor-friendly layers, no scroll hijacking. */
body{isolation:isolate}
.scroll-progress{position:fixed;left:0;top:0;width:100%;height:3px;z-index:90;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,var(--green),var(--blue));pointer-events:none}
.hero-art{translate:0 var(--hero-offset,0px)}
.blue-card{animation:card-blue 8s ease-in-out infinite}
.brief-visual{animation:card-paper 7s ease-in-out infinite}
.floating-label{animation:label-float 5s ease-in-out infinite}
.orbit-tag:before{animation:orbit-turn 16s linear infinite;transform-origin:center}
.hero>.hero-copy{animation:hero-arrive .85s cubic-bezier(.2,.7,.2,1) both}
.hero h1{animation:hero-arrive .8s cubic-bezier(.2,.7,.2,1) both}
.hero-actions{animation:hero-arrive .95s cubic-bezier(.2,.7,.2,1) both}
.scroll-reveal{opacity:0;translate:0 24px;transition:opacity .7s ease var(--reveal-delay,0ms),translate .7s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms)}
.scroll-reveal.is-visible,.scroll-reveal:focus-within{opacity:1;translate:0 0}
.btn svg,.category-arrow,.category-icon svg{transition:transform .25s ease}
.btn:active{transform:translateY(0) scale(.98)}
.category-card,.project-card,.price-card{transition:border-color .25s,box-shadow .25s,transform .25s,opacity .7s,translate .7s}
.daily{position:relative;overflow:hidden}
@media(hover:hover) and (pointer:fine){.btn:hover svg,.category-card:hover .category-arrow{transform:translate(3px,-2px)}.category-card:hover .category-icon svg{transform:rotate(-8deg) scale(1.08)}.project-card:hover,.price-card:hover{transform:translateY(-4px);border-color:var(--green);box-shadow:0 14px 35px #0001}}
@keyframes card-blue{0%,100%{transform:rotate(9deg) translateY(0)}50%{transform:rotate(11deg) translateY(-9px)}}
@keyframes card-paper{0%,100%{transform:rotate(-5deg) translateY(0)}50%{transform:rotate(-3deg) translateY(-10px)}}
@keyframes label-float{0%,100%{transform:rotate(3deg) translateY(0)}50%{transform:rotate(1deg) translateY(-7px)}}
@keyframes orbit-turn{to{transform:rotate(360deg)}}
@keyframes hero-arrive{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
.motion-away *,.motion-away *:before,.motion-away *:after{animation-play-state:paused!important}


/* A quiet, static gradient in both themes, independent of JavaScript. */
body:before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(135deg,#17231c 0%,#111513 48%,#161e2c 100%)}
:root[data-theme=light] body:before{background:linear-gradient(135deg,#edf2e3 0%,#f6f6f0 48%,#e8edf7 100%)}
@media(max-width:760px){.scroll-reveal{translate:0 16px}}
@media(prefers-reduced-motion:reduce){.scroll-reveal{opacity:1;translate:none}.hero-art{translate:none}}
