/* ================================
   YourWeb Site Animations
================================ */

:root {
    --yw-ease: cubic-bezier(0.22, 1, 0.36, 1);
    --yw-duration: 0.85s;
    --yw-delay: 0ms;
}

/* Чтобы не мигало до инициализации */
html.yw-animations-ready .yw-animate {
    opacity: 0;
    will-change: transform, opacity, filter;
}

/* Базовое появление */
html.yw-animations-ready .yw-animate.yw-fade-up {
    transform: translateY(36px);
    filter: blur(8px);
}

html.yw-animations-ready .yw-animate.yw-fade-down {
    transform: translateY(-28px);
    filter: blur(8px);
}

html.yw-animations-ready .yw-animate.yw-fade-left {
    transform: translateX(-38px);
    filter: blur(8px);
}

html.yw-animations-ready .yw-animate.yw-fade-right {
    transform: translateX(38px);
    filter: blur(8px);
}

html.yw-animations-ready .yw-animate.yw-zoom-in {
    transform: scale(0.94);
    filter: blur(8px);
}

html.yw-animations-ready .yw-animate.yw-card {
    transform: translateY(34px) scale(0.96);
    filter: blur(6px);
}

html.yw-animations-ready .yw-animate.yw-form {
    transform: translateY(38px) scale(0.97);
    filter: blur(8px);
}

/* Активное состояние */
html.yw-animations-ready .yw-animate.yw-in {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    filter: blur(0);
    transition:
        opacity var(--yw-duration) var(--yw-ease),
        transform var(--yw-duration) var(--yw-ease),
        filter var(--yw-duration) var(--yw-ease);
    transition-delay: var(--yw-delay);
}

/* ================================
   Header animation
================================ */

.site-header {
    transform: translateY(-18px);
    opacity: 0;
    filter: blur(8px);
    transition:
        opacity 0.75s var(--yw-ease),
        transform 0.75s var(--yw-ease),
        filter 0.75s var(--yw-ease);
}

html.yw-loaded .site-header {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
}

.site-header .logo,
.site-header .nav a,
.site-header .price-btn,
.site-header .phone {
    opacity: 0;
    transform: translateY(-12px);
    transition:
        opacity 0.65s var(--yw-ease),
        transform 0.65s var(--yw-ease);
}

html.yw-loaded .site-header .logo {
    opacity: 1;
    transform: translateY(0);
    transition-delay: 0.08s;
}

html.yw-loaded .site-header .nav a {
    opacity: 1;
    transform: translateY(0);
}

html.yw-loaded .site-header .nav a:nth-child(1) {
    transition-delay: 0.14s;
}

html.yw-loaded .site-header .nav a:nth-child(2) {
    transition-delay: 0.19s;
}

html.yw-loaded .site-header .nav a:nth-child(3) {
    transition-delay: 0.24s;
}

html.yw-loaded .site-header .nav a:nth-child(4) {
    transition-delay: 0.29s;
}

html.yw-loaded .site-header .nav a:nth-child(5) {
    transition-delay: 0.34s;
}

html.yw-loaded .site-header .price-btn {
    opacity: 1;
    transform: translateY(0);
    transition-delay: 0.38s;
}

html.yw-loaded .site-header .phone {
    opacity: 1;
    transform: translateY(0);
    transition-delay: 0.44s;
}

/* ================================
   Hero
================================ */

.el-hero-section {
    overflow: hidden;
}

.el-hero-title,
.el-hero-text {
    will-change: transform, opacity, filter;
}

html.yw-animations-ready .el-hero-title {
    opacity: 0;
    transform: translateY(42px);
    filter: blur(10px);
}

html.yw-animations-ready .el-hero-text {
    opacity: 0;
    transform: translateY(32px);
    filter: blur(8px);
}

html.yw-loaded .el-hero-title {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
    transition:
        opacity 0.95s var(--yw-ease) 0.18s,
        transform 0.95s var(--yw-ease) 0.18s,
        filter 0.95s var(--yw-ease) 0.18s;
}

html.yw-loaded .el-hero-text {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
    transition:
        opacity 0.9s var(--yw-ease) 0.34s,
        transform 0.9s var(--yw-ease) 0.34s,
        filter 0.9s var(--yw-ease) 0.34s;
}

 

/* ================================
   Elementor blocks
================================ */

.elementor-widget-heading.yw-in .elementor-heading-title {
    transition-delay: inherit;
}

/* Картинки */
.elementor-widget-image img,
.elementor-widget-image-carousel img {
    transition:
        transform 0.65s var(--yw-ease),
        filter 0.65s var(--yw-ease);
}

.elementor-widget-image:hover img,
.elementor-widget-image-carousel:hover img {
    transform: scale(1.025);
}

/* ================================
   Cards / assortment
================================ */

.ecpg-card {
    transition:
        transform 0.35s var(--yw-ease),
        opacity 0.35s var(--yw-ease);
}

.ecpg-card:hover {
    transform: translateY(-6px);
}

.ecpg-card-image-box {
    transition:
        transform 0.45s var(--yw-ease),
        box-shadow 0.45s var(--yw-ease);
}

.ecpg-card:hover .ecpg-card-image-box {
    transform: translateY(-2px);
    box-shadow: 0 20px 34px rgba(6, 67, 122, 0.12);
}

/* ================================
   Request form
================================ */

.efrf-form-box {
    transition:
        transform 0.45s var(--yw-ease),
        box-shadow 0.45s var(--yw-ease);
}

.efrf-form-box:hover {
    transform: translateY(-4px);
}

.efrf-input-wrap,
.efrf-file-box {
    transition:
        border-color 0.25s ease,
        box-shadow 0.25s ease,
        transform 0.25s ease;
}

.efrf-input-wrap:focus-within,
.efrf-file-box:hover {
    transform: translateY(-1px);
}

/* ================================
   Buttons
================================ */

.price-btn,
.elementor-button,
.efrf-submit {
    position: relative;
    overflow: hidden;
    transition:
        transform 0.28s var(--yw-ease),
        box-shadow 0.28s var(--yw-ease),
        opacity 0.28s ease;
}

.price-btn:hover,
.elementor-button:hover,
.efrf-submit:hover {
    transform: translateY(-2px);
}

.price-btn::after,
.elementor-button::after,
.efrf-submit::after {
    content: "";
    position: absolute;
    top: 0;
    left: -140%;
    width: 80%;
    height: 100%;
    background: linear-gradient(
        100deg,
        transparent 0%,
        rgba(255, 255, 255, 0.35) 45%,
        transparent 100%
    );
    transform: skewX(-18deg);
    pointer-events: none;
}

.price-btn:hover::after,
.elementor-button:hover::after,
.efrf-submit:hover::after {
    animation: ywButtonShine 0.85s ease;
}

@keyframes ywButtonShine {
    from {
        left: -140%;
    }

    to {
        left: 140%;
    }
}

/* ================================
   Modal polish, если открыт popup
================================ */

.ecpg-modal-window {
    transform-origin: center;
}

/* ================================
   Mobile
================================ */

@media (max-width: 767px) {
    html.yw-animations-ready .yw-animate.yw-fade-up,
    html.yw-animations-ready .yw-animate.yw-card,
    html.yw-animations-ready .yw-animate.yw-form {
        transform: translateY(24px);
        filter: blur(5px);
    }

    html.yw-animations-ready .el-hero-title {
        transform: translateY(28px);
        filter: blur(6px);
    }

    html.yw-animations-ready .el-hero-text {
        transform: translateY(22px);
        filter: blur(5px);
    }

    .ecpg-card:hover,
    .efrf-form-box:hover,
    .price-btn:hover,
    .elementor-button:hover,
    .efrf-submit:hover {
        transform: none;
    }
}

/* ================================
   Accessibility
================================ */

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }

    html.yw-animations-ready .yw-animate,
    html.yw-animations-ready .el-hero-title,
    html.yw-animations-ready .el-hero-text,
    .site-header,
    .site-header .logo,
    .site-header .nav a,
    .site-header .price-btn,
    .site-header .phone {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
    }
}
/* ================================
   Mobile blur fix
   Убираем мыло на мобильных
================================ */

@media (max-width: 767px) {
    html.yw-loaded .el-hero-title,
    html.yw-loaded .el-hero-text {
        filter: blur(0) !important;
        opacity: 1 !important;
        transform: translateY(0) !important;
    }

    html.yw-animations-ready .yw-animate.yw-in {
        filter: blur(0) !important;
        opacity: 1 !important;
        transform: translate3d(0, 0, 0) scale(1) !important;
    }

    html.yw-animations-ready .yw-animate.yw-in.yw-fade-up,
    html.yw-animations-ready .yw-animate.yw-in.yw-fade-down,
    html.yw-animations-ready .yw-animate.yw-in.yw-fade-left,
    html.yw-animations-ready .yw-animate.yw-in.yw-fade-right,
    html.yw-animations-ready .yw-animate.yw-in.yw-zoom-in,
    html.yw-animations-ready .yw-animate.yw-in.yw-card,
    html.yw-animations-ready .yw-animate.yw-in.yw-form {
        filter: blur(0) !important;
        opacity: 1 !important;
        transform: translate3d(0, 0, 0) scale(1) !important;
    }

    .ecpg-card.yw-in,
    .ecpg-card.yw-in .ecpg-card-image,
    .ecpg-card.yw-in .ecpg-card-image-box,
    .elementor-widget-image.yw-in img,
    .elementor-widget-text-editor.yw-in,
    .elementor-widget-heading.yw-in,
    .efrf-form-box.yw-in {
        filter: blur(0) !important;
    }
}
