/* Distinct motion roles: hero assembly, fluid morph, reading reveal, card wipe,
   sticky stacking, process rules, radial CTAs, menu curtain, footer rotation. */
.hero-stage{position:relative;aspect-ratio:616/624;border-radius:24px;overflow:hidden;background:#211a29;isolation:isolate;perspective:1100px}.fluid-morph{position:absolute;inset:-10%;width:120%;height:120%;opacity:.42;filter:blur(15px);transform:rotate(-18deg) scale(1.12);pointer-events:none}.hero-layers{position:relative;display:block;width:100%;height:100%;overflow:visible;transform:rotateX(var(--hero-rx,0deg)) rotateY(var(--hero-ry,0deg));transition:transform .6s var(--ease)}.hero-entry,.hero-float{transform-box:fill-box;transform-origin:center}.motion-live .hero-web{animation:web-assemble 1.4s var(--ease) both}.motion-live .hero-app{animation:app-assemble 1.5s .15s var(--ease) both}.hero-web .hero-float{animation:web-float 8s 1.5s ease-in-out infinite}.hero-app .hero-float{animation:app-float 6.5s 1.5s ease-in-out infinite}.hero-motion-toggle{position:absolute;right:16px;bottom:63px;z-index:2;font-size:12px;padding:7px 11px;border-radius:30px;background:#21192bcc;color:#ded0e9;border:1px solid #ad8bc04d;backdrop-filter:blur(6px)}.hero-paused .hero-float,.hero-offscreen .hero-float{animation-play-state:paused}.motion-live [data-hero-line]{animation:hero-focus 1.1s var(--ease) both}.motion-live em[data-hero-line]{animation-delay:.2s;transform-origin:left center}.motion-live [data-hero-title]{animation:hero-focus .9s var(--ease) both}.hero-copy .lead{transition-delay:.2s}.hero-actions{transition-delay:.3s}[data-scroll-text]{--read:100%;background:linear-gradient(90deg,#2f2537 var(--read),#796386 var(--read));color:transparent;background-clip:text;-webkit-background-clip:text}.service-card .card-image{clip-path:inset(0 round 20px)}.motion-live [data-card-reveal]:not(.card-visible) .card-image{clip-path:inset(0 0 100% 0 round 20px)}.motion-live [data-card-reveal] .card-image{transition:clip-path 1.15s var(--ease),border-color .5s}.motion-live [data-card-reveal]:not(.card-visible) .card-image img{transform:scale(1.13)}.motion-live [data-card-reveal] .card-image img{transition:transform 1.3s var(--ease)}[data-card-reveal] .service-title,[data-card-reveal]>p{transition:opacity .45s .2s,translate .6s .2s var(--ease)}.motion-live [data-card-reveal]:not(.card-visible) .service-title,.motion-live [data-card-reveal]:not(.card-visible)>p{opacity:0;translate:0 12px}.process-grid article{position:relative}.process-grid article:before{content:'';position:absolute;left:0;top:-1px;width:100%;height:2px;background:var(--purple);transform:scaleX(var(--step-progress,0));transform-origin:left}.process-grid article .number{transition:color .3s}.process-grid article.step-active .number{color:#eee0f8}.process-grid article.step-active h3{color:#d5bce6;transition:color .4s}.closing[data-closing]{clip-path:inset(0 round 24px);transition:clip-path 1s var(--ease)}.motion-live .closing[data-closing]:not(.closing-visible){clip-path:inset(12% 5% 12% 5% round 60px)}.motion-live [data-cta-reveal]{transition:filter 1s var(--ease),opacity 1s,translate 1s var(--ease)}.motion-live .closing:not(.closing-visible) [data-cta-reveal]{filter:blur(10px);opacity:0;translate:0 18px}
@property --rg-pos-x{syntax:'<percentage>';initial-value:40%;inherits:false}@property --rg-pos-y{syntax:'<percentage>';initial-value:140%;inherits:false}@property --rg-spread-x{syntax:'<percentage>';initial-value:130%;inherits:false}@property --rg-spread-y{syntax:'<percentage>';initial-value:170%;inherits:false}
.hero-actions .button,.closing .button{background:radial-gradient(var(--rg-spread-x) var(--rg-spread-y) at var(--rg-pos-x) var(--rg-pos-y),#c8b1df 30%,#ddc5ed 58%,#a781be 87%,#c8b1df 100%);transition:--rg-pos-x .75s,--rg-pos-y .75s,--rg-spread-x .75s,--rg-spread-y .75s,box-shadow .4s,transform .4s}.hero-actions .button:hover,.closing .button:hover{--rg-pos-x:0%;--rg-pos-y:40%;--rg-spread-x:180%;--rg-spread-y:150%;box-shadow:0 0 36px #b58ed340}.hero-actions .button:before,.closing .button:before{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 25%,#fff8 50%,transparent 75%);transform:translateX(-140%);transition:transform .8s var(--ease);pointer-events:none}.hero-actions .button:hover:before,.closing .button:hover:before{transform:translateX(140%)}.button-label{position:relative;z-index:1}
.menu-dialog[open]{animation:menu-curtain .65s var(--ease)}.menu-dialog[open] nav>a{animation:menu-link .75s var(--ease) both;animation-delay:calc(.15s + var(--i)*.045s)}.menu-dialog.closing-menu{animation:menu-curtain-out .4s var(--ease) forwards}.route-curtain{position:fixed;inset:0;z-index:999;background:#b99acc;pointer-events:none;transform:scaleY(0);transform-origin:bottom;transition:transform .42s cubic-bezier(.76,0,.24,1)}.route-going .route-curtain{transform:scaleY(1)}.footer-wordmark{perspective:600px}.footer-letter{display:inline-block;transform:translateY(var(--fy,0px)) rotateX(var(--fr,0deg));opacity:var(--fo,1);transform-origin:50% 100%;transition:transform .15s linear,opacity .15s linear}.footer-wordmark:hover .footer-letter{color:var(--accent);transition:color .35s}
@keyframes hero-focus{from{opacity:0;filter:blur(12px);transform:translateY(25px)}to{opacity:1;filter:blur(0);transform:translateY(0)}}@keyframes web-assemble{from{opacity:0;transform:translate(-60px,85px) rotate(-9deg) scale(.88)}to{opacity:1;transform:none}}@keyframes app-assemble{from{opacity:0;transform:translate(40px,-80px) rotate(11deg) scale(.85)}to{opacity:1;transform:none}}@keyframes web-float{0%,100%{transform:translateY(0) rotate(-.5deg)}50%{transform:translateY(-9px) rotate(.5deg)}}@keyframes app-float{0%,100%{transform:translateY(0) rotate(.8deg)}50%{transform:translateY(12px) rotate(-.8deg)}}@keyframes menu-curtain{from{clip-path:polygon(0 0,100% 0,100% 0,0 0)}to{clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}}@keyframes menu-curtain-out{from{clip-path:inset(0)}to{clip-path:inset(0 0 100% 0)}}
@media(min-width:1000px) and (prefers-reduced-motion:no-preference){body[data-page=services] .services-page .services-grid{display:block;position:relative;margin-top:0}body[data-page=services] .services-page .service-card{display:grid;grid-template-columns:1.15fr 1fr;gap:16px 55px;align-content:center;position:sticky;top:calc(35px + var(--card-index)*22px);background:#1d1921;border:1px solid #403548;border-radius:24px;padding:35px;margin-bottom:70px;min-height:470px;transform:scale(var(--stack-scale,1));transform-origin:50% 0;box-shadow:0 -20px 55px #141315bb}body[data-page=services] .services-page .card-image{grid-row:1/3;align-self:center}body[data-page=services] .services-page .service-title{align-self:end;margin:0}body[data-page=services] .services-page .service-card>p{align-self:start;margin:0}body[data-page=services] .services-page{padding-bottom:60px}}
@media(max-width:760px){.hero-motion-toggle{font-size:12px;bottom:54px;right:12px}.hero-stage{border-radius:18px}.fluid-morph{filter:blur(10px)}.hero-layers{transform:none}.motion-live [data-card-reveal] .card-image{transition-duration:.85s}.closing[data-closing]{transition-duration:.7s}}
.reduced-motion .hero-entry,.reduced-motion .hero-float,.reduced-motion .hero-layers,.reduced-motion [data-hero-title],.reduced-motion [data-hero-line],.reduced-motion .footer-letter{transform:none!important;opacity:1!important;filter:none!important}.reduced-motion [data-scroll-text]{color:#2f2537;background:none}.reduced-motion [data-card-reveal] .card-image,.reduced-motion .closing[data-closing]{clip-path:none!important}.reduced-motion [data-card-reveal] .service-title,.reduced-motion [data-card-reveal]>p,.reduced-motion [data-cta-reveal]{opacity:1!important;translate:none!important;filter:none!important}.reduced-motion .route-curtain{display:none}.reduced-motion .services-page .service-card{position:relative!important;top:auto!important;transform:none!important}.reduced-motion .process-grid article:before{transform:scaleX(1)}
@media(prefers-reduced-motion:reduce){.hero-entry,.hero-float,.footer-letter{animation:none!important;transform:none!important;opacity:1!important}[data-scroll-text]{color:#2f2537;background:none}.route-curtain{display:none}[data-card-reveal] .card-image,.closing[data-closing]{clip-path:none!important}[data-card-reveal] .service-title,[data-card-reveal]>p,[data-cta-reveal]{opacity:1!important;translate:none!important;filter:none!important}}
