/* REVNIX animation pack — подключается после style.css */
:root{--sk:0deg}
/* заставка */
.curtain{position:fixed;inset:0;z-index:300;pointer-events:none;display:flex;flex-direction:column}
.curtain i{flex:1;background:#171e1b;transition:transform .95s cubic-bezier(.76,0,.24,1)}
.curtain.go i:first-child{transform:translateY(-101%)}.curtain.go i:last-child{transform:translateY(101%)}
.curtain b{position:absolute;inset:0;display:grid;place-items:center;font-size:72px;font-weight:800;letter-spacing:-8px;color:#fff;animation:logoIn .7s cubic-bezier(.2,.8,.2,1) both;transition:opacity .35s,transform .7s}
.curtain b span{color:var(--mint)}.curtain.go b{opacity:0;transform:scale(1.5)}
@keyframes logoIn{from{opacity:0;transform:scale(.6) rotate(-8deg)}}
/* заголовок по буквам */
.hero h1 em{animation:none!important}
.ch{display:inline-block;opacity:0;transform:translateY(115%) rotate(7deg);animation:chIn .95s cubic-bezier(.2,.75,.2,1) forwards;animation-delay:calc(var(--i)*32ms + 1.05s)}
.w{display:inline-block;white-space:nowrap}
h1 em .ch{animation:chIn .95s cubic-bezier(.2,.75,.2,1) forwards,wave 5s ease-in-out infinite;animation-delay:calc(var(--i)*32ms + 1.05s),calc(var(--i)*-170ms)}
@keyframes chIn{to{opacity:1;transform:none}}
@keyframes wave{0%,100%{color:#929c94}50%{color:#4fae98}}
/* появление при скролле: размытие + направления */
.reveal.visible{animation:unblur .9s ease backwards}
@keyframes unblur{from{filter:blur(10px)}}
.service.reveal:not(.visible){transform:translateX(-46px)}
.service:nth-child(even).reveal:not(.visible){transform:translateX(46px)}
.case.reveal:not(.visible){transform:translateY(46px) scale(.93)}
/* градиентный блеск заголовков */
.section-head h2 span{background:linear-gradient(100deg,#929c94 20%,#3f9c86 42%,#a5dfd2 50%,#3f9c86 58%,#929c94 80%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:shine 7s linear infinite}
@keyframes shine{to{background-position:-260% 0}}
/* полоса прогресса */
.progress{background:linear-gradient(90deg,#a5dfd2,#62aa99,#3c8c7a)!important;box-shadow:0 0 14px #62aa99aa}
/* навигация */
.nav a:not(.nav-button){position:relative}
.nav a:not(.nav-button)::after{content:"";position:absolute;left:0;right:0;bottom:-7px;height:1px;background:#4d9d8c;transform:scaleX(0);transform-origin:right;transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.nav a:not(.nav-button):hover::after{transform:scaleX(1);transform-origin:left}
/* герой: северное сияние, орбиты, искры, сканер */
.aurora{position:absolute;inset:-12% -6%;z-index:0;pointer-events:none;transform:translateY(calc(var(--sy,0)*.18px))}
.aurora i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55}
.aurora i:nth-child(1){width:420px;height:420px;background:#a5dfd2;left:4%;top:8%;animation:au1 16s ease-in-out infinite alternate}
.aurora i:nth-child(2){width:360px;height:360px;background:#cfe6ff;right:6%;top:22%;animation:au2 19s ease-in-out infinite alternate}
.aurora i:nth-child(3){width:300px;height:300px;background:#e4f2c8;left:42%;bottom:2%;animation:au3 22s ease-in-out infinite alternate}
@keyframes au1{to{transform:translate(140px,90px) scale(1.25)}}@keyframes au2{to{transform:translate(-160px,60px) scale(.8)}}@keyframes au3{to{transform:translate(-90px,-100px) scale(1.3)}}
.hero-main,.hero-index{position:relative;z-index:2}
.od{position:absolute;left:0;top:0;width:9px;height:9px;margin:-4px;border-radius:50%;background:#4fb9a1;box-shadow:0 0 14px #63cbb5;pointer-events:none;z-index:3}
.spark{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff,0 0 14px #8ed8c8;opacity:0;animation:twinkle 3.5s ease-in-out infinite;pointer-events:none}
@keyframes twinkle{50%{opacity:.95;transform:scale(1.7)}}
.scan{position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,#63cbb5,transparent);box-shadow:0 0 18px #63cbb5;animation:scan 5.5s ease-in-out infinite;pointer-events:none;z-index:4}
@keyframes scan{0%{top:0;opacity:0}12%,88%{opacity:.8}100%{top:100%;opacity:0}}
.art-orb::after{content:"";position:absolute;inset:0;border-radius:50%;background:linear-gradient(115deg,transparent 35%,#ffffffaa 50%,transparent 65%);background-size:260% 100%;animation:sheen 4.5s ease-in-out infinite}
@keyframes sheen{from{background-position:160% 0}to{background-position:-60% 0}}
.art-glow{animation:glowMove 9s ease-in-out infinite alternate}
@keyframes glowMove{to{transform:translate(-120px,30px) scale(1.15)}}
/* бегущие строки реагируют на скролл */
.marquee,.review-strip{transform:skewX(var(--sk));transition:transform .25s}
/* услуги */
.round-arrow{transition:transform .45s cubic-bezier(.2,.8,.2,1),background .3s}
.service:hover .round-arrow{transform:rotate(45deg) scale(1.15);background:var(--mint)}
.service-tags span{display:inline-block;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.service:hover .service-tags span{transform:translateY(-4px)}
.service:hover .service-tags span:nth-child(2){transition-delay:.06s}.service:hover .service-tags span:nth-child(3){transition-delay:.12s}
/* кейсы */
.case{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s;will-change:transform}
.case-visual{position:relative}
.glare{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(circle at var(--gx,50%) var(--gy,50%),#ffffff80,transparent 55%)}
.case:hover .glare{opacity:1}
.map-marker::after{content:"";position:absolute;inset:-6px;border:1.5px solid #4fb9a1;border-radius:50%;animation:ping 2.4s ease-out infinite}
.m2::after{animation-delay:-.8s}.m3::after{animation-delay:-1.6s}
@keyframes ping{from{transform:scale(.6);opacity:.9}to{transform:scale(3.2);opacity:0}}
/* этапы процесса */
.slide-visual::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 40%,#ffffff40 50%,transparent 60%);transform:translateX(-120%)}
.process-slide.active .slide-visual::after,.process-slide.is-current .slide-visual::after{animation:sweep 3.4s ease-in-out infinite}
@keyframes sweep{60%,100%{transform:translateX(120%)}}
/* плавающая кнопка и калькулятор */
.floating-contact b{animation:bpulse 2.4s infinite}
@keyframes bpulse{0%{box-shadow:0 0 0 0 #a5dfd2cc}70%,100%{box-shadow:0 0 0 16px #a5dfd200}}
#estimate.bump{animation:bump .55s cubic-bezier(.2,.8,.2,1)}
@keyframes bump{40%{transform:scale(1.08);color:#3f9c86}}
/* магнит, пыль, ripple */
.mag{transition:translate .25s cubic-bezier(.2,.8,.2,1)}
#dust{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;opacity:.75}
.ripple{position:fixed;z-index:250;width:12px;height:12px;margin:-6px;border-radius:50%;border:1.5px solid #4fb9a1;pointer-events:none;animation:rip .8s ease-out forwards}
@keyframes rip{to{transform:scale(9);opacity:0}}
@media (prefers-reduced-motion:reduce){
  .curtain,.aurora,.od,.spark,.scan,#dust,.ripple{display:none!important}
  .ch{animation:none!important;opacity:1;transform:none}
  .reveal.visible,.section-head h2 span,.map-marker::after,.art-orb::after,.art-glow{animation:none!important}
}
