/* Общий слой «живости» для демо-сайтов Лидохода. Цвет задаёт демо: --fx (акцент), --fx-ink (текст на акценте), --fx-bg (фон заставки). */

/* кольцо у курсора */
.fx-ring{position:fixed;left:0;top:0;z-index:2147483600;width:38px;height:38px;margin:-19px 0 0 -19px;border:1.5px solid var(--fx,#fff);border-radius:50%;pointer-events:none;opacity:0;transition:width .3s,height .3s,margin .3s,background-color .3s,border-color .3s,opacity .3s;will-change:transform}
.fx-ring.on{opacity:1}
.fx-ring.hot{width:62px;height:62px;margin:-31px 0 0 -31px;background:color-mix(in srgb,var(--fx,#fff) 16%,transparent)}
.fx-ring.down{width:26px;height:26px;margin:-13px 0 0 -13px}
.fx-ring b{position:absolute;left:50%;top:50%;margin:14px 0 0 14px;padding:6px 11px 5px;border-radius:100px;background:var(--fx,#fff);color:var(--fx-ink,#111);font:600 12px/1.2 system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:0;white-space:nowrap;opacity:0;transform:scale(.6);transform-origin:0 0;transition:opacity .25s,transform .3s}
.fx-ring.tip{border-color:transparent;background:transparent}
.fx-ring.tip b{opacity:1;transform:none}
[data-fx-magnet]{transition:translate .35s cubic-bezier(.2,.7,.2,1),transform .35s,box-shadow .35s,background .2s}

/* заголовки по словам: слово поднимается из-под обреза, под акцентом проводится линия с бегущим бликом */
.fx-h .fx-w{display:inline-block;clip-path:inset(0 0 105% 0);transform:translateY(.55em) rotate(2.5deg);transform-origin:0 100%;transition:clip-path .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i)*75ms)}
.fx-h.fx-in .fx-w{clip-path:inset(-.35em -.15em);transform:none}
.fx-h .fx-acc{position:relative}
.fx-h .fx-acc::after{content:"";position:absolute;left:0;right:0;bottom:-.02em;height:.045em;min-height:2px;background:linear-gradient(90deg,transparent 40%,#fff 50%,transparent 60%) 130% 0/300% 100% no-repeat,var(--fx,currentColor);transform:scaleX(0);transform-origin:0 50%;transition:transform 1s cubic-bezier(.2,.7,.2,1) calc(.35s + var(--i)*75ms);animation:fx-glint 4.5s ease-in-out 2s infinite}
.fx-h.fx-in .fx-acc::after{transform:scaleX(1)}
@keyframes fx-glint{0%,45%{background-position:130% 0,0 0}100%{background-position:-60% 0,0 0}}

/* меняющееся слово */
.fx-rot{display:inline-block}

/* «шторка» на картинках */
.fx-wipe{clip-path:inset(0 100% 0 0);transition:clip-path 1.25s cubic-bezier(.65,0,.2,1)}
.fx-wipe.fx-in{clip-path:inset(0)}
.fx-wipe img{scale:1.14;transition:scale 1.8s cubic-bezier(.2,.7,.2,1)}
.fx-wipe.fx-in img{scale:1}

/* крупное контурное слово на фоне секции */
.fx-host{overflow:clip}
.fx-mark{position:absolute;left:50%;top:6%;z-index:-1;transform:translateX(-50%);font:800 clamp(140px,24vw,380px)/.8 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;letter-spacing:-.04em;white-space:nowrap;text-transform:uppercase;color:transparent;-webkit-text-stroke:1.5px var(--mc,rgba(255,255,255,.07));pointer-events:none;user-select:none;animation:fx-mark 14s ease-in-out infinite alternate;will-change:translate}
.fx-mark.r{left:auto;right:-4%;transform:none}
.fx-mark.l{left:-3%;transform:none}
@keyframes fx-mark{from{rotate:-1.5deg;scale:1}to{rotate:1.5deg;scale:1.04}}

/* заставка-занавес (критичные стили продублированы в <head> страницы) */
.fx-intro{position:fixed;inset:0;z-index:2147483640;display:grid;place-items:center;background:var(--fx-bg,#111);color:var(--fx,#fff);transition:transform .95s cubic-bezier(.75,0,.2,1)}
.fx-intro::after{content:"";position:absolute;left:0;right:0;top:100%;height:14vh;background:var(--fx,#fff)}
.fx-intro.fx-out{transform:translateY(-114vh)}
.fx-intro b{display:block;font:700 clamp(18px,2.4vw,30px)/1.2 system-ui,-apple-system,"Segoe UI",sans-serif;letter-spacing:.42em;text-indent:.42em;text-transform:uppercase;animation:fx-intro-b .9s cubic-bezier(.2,.7,.2,1) both}
.fx-intro i{display:block;width:min(240px,50vw);height:2px;margin:22px auto 0;background:currentColor;transform-origin:0 50%;animation:fx-intro-i 1.05s cubic-bezier(.4,0,.2,1) both}
@keyframes fx-intro-b{from{opacity:0;letter-spacing:.9em;filter:blur(6px)}}
@keyframes fx-intro-i{from{transform:scaleX(0)}}
.fx-nointro .fx-intro{display:none}
/* пока занавес не ушёл, анимации страницы стоят на первом кадре */
.fx-loading main *,.fx-loading header *{animation-play-state:paused!important}

@media (prefers-reduced-motion:reduce){.fx-ring,.fx-intro,.fx-mark{display:none}}
