/* Short, finite movement; content never depends on an animation finishing. */
:root{--ease-out:cubic-bezier(.22,1,.36,1);--ease-soft:cubic-bezier(.2,.65,.3,1)}
.motion-ready .reveal{transition:opacity .65s var(--ease-soft),transform .8s var(--ease-out);transition-delay:var(--reveal-delay,0ms)}
.motion-ready .reveal.pending-reveal{opacity:0;transform:translate3d(0,22px,0)}
.motion-ready .reveal.pending-reveal:focus-within{opacity:1;transform:none;transition:none}
[data-motion-step="1"]{--reveal-delay:65ms}[data-motion-step="2"]{--reveal-delay:130ms}[data-motion-step="3"]{--reveal-delay:195ms}
.motion-ready .hero-overline,.motion-ready .hero-title-wrap,.motion-ready .hero-service-links,.motion-ready .hero-message,.motion-ready .hero-floor{animation:soft-arrival .9s var(--ease-out) both}
.motion-ready .hero-title-wrap{animation-delay:90ms}.motion-ready .hero-service-links{animation-delay:190ms}.motion-ready .hero-message{animation-delay:260ms}.motion-ready .hero-floor{animation-delay:330ms}
@keyframes soft-arrival{from{opacity:0;transform:translate3d(0,16px,0)}to{opacity:1;transform:none}}
.desktop-nav a:after{transition:width .3s var(--ease-out)}
.header-link,.hero-service-links a,.service-contact,.footer a{transition:color .25s ease,border-color .25s ease}
.header-link .icon,.service-contact>span,.footer>a[aria-label="Наверх"]{transition:transform .3s var(--ease-out)}
.hero-cta,.contact-open,.contact-submit,.success-back,.dialog-close,.motion-toggle{transition:background .25s ease,color .25s ease,border-color .25s ease,box-shadow .3s ease,transform .3s var(--ease-out)}
.hero-cta>span,.contact-open>span,.submit-arrow{transition:transform .35s var(--ease-out),background .25s ease}
.work-visual{transition:transform .65s var(--ease-out),box-shadow .65s var(--ease-out)}
.work-visual img{transition:transform 1.1s var(--ease-out)}
.service-row.service-animating{overflow:hidden;overflow:clip}
.service-row>summary h3,.service-plus,.service-plus .icon{transition:color .25s ease,background .3s ease,border-color .3s ease,transform .4s var(--ease-out)}
.service-row[open] .service-body,.service-row[open] .service-pricing,.service-row[open] .service-contact{animation:service-arrival .4s var(--ease-out) both}
@keyframes service-arrival{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.principles h3,.process-list h3{transition:color .3s ease,transform .35s var(--ease-out)}
.process-list article{transition:border-color .3s ease,opacity .65s var(--ease-soft),transform .8s var(--ease-out)}
.mobile-menu:not([hidden]){animation:menu-arrival .24s var(--ease-out)}
@keyframes menu-arrival{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.contact-dialog[open]{animation:modal-arrival .3s var(--ease-out)}
.contact-dialog[open]::backdrop{animation:backdrop-arrival .25s ease-out}
@keyframes modal-arrival{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}
@keyframes backdrop-arrival{from{opacity:0}to{opacity:1}}
.contact-dialog.is-closing::backdrop{animation:backdrop-leave .18s ease-in forwards}
@keyframes backdrop-leave{to{opacity:0}}
.form-success:not([hidden]){animation:soft-arrival .4s var(--ease-out)}
@media(hover:hover) and (pointer:fine){
  .header-link:hover .icon,.service-contact:hover>span{transform:translate(2px,-2px)}
  .hero-cta:hover,.contact-submit:hover:not(:disabled),.success-back:hover{transform:translateY(-2px)}
  .hero-cta:hover .icon{transform:translate(1px,-1px)}
  .hero-cta:hover>span,.contact-open:hover>span{transform:scale(1.06)}
  .contact-submit:hover:not(:disabled) .submit-arrow{transform:translate(2px,-2px)}
  .work-visual:hover{transform:translateY(-4px);box-shadow:0 18px 36px #171a2414}
  .service-row>summary:hover h3{color:#d6c9ee}
  .principles article:hover h3,.process-list article:hover h3{color:#786287;transform:translateX(3px)}
  .process-list article:hover{border-color:#a99ab9}
  .footer a:hover{color:#fff}.footer>a[aria-label="Наверх"]:hover{transform:translateY(-3px)}
}
.contact-submit:active:not(:disabled),.contact-open:active,.hero-cta:active{transform:translateY(0) scale(.99)}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .motion-ready .reveal.pending-reveal{opacity:1;transform:none}
  .work-visual:hover,.work-visual:hover img,.hero-cta:hover,.hero-cta:hover .icon,.hero-cta:hover>span,.contact-open:hover,.contact-open:hover>span,.contact-submit:hover:not(:disabled),.contact-submit:hover:not(:disabled) .submit-arrow,.success-back:hover,.header-link:hover .icon,.service-contact:hover>span,.principles article:hover h3,.process-list article:hover h3,.footer>a[aria-label="Наверх"]:hover{transform:none}
}
@media print{.reveal.pending-reveal{opacity:1!important;transform:none!important}}
