:root {
    --motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
    --motion-fast: 160ms;
    --motion-base: 420ms;
    --motion-slow: 720ms;
}

html {
    scroll-behavior: smooth;
}

body {
    overflow-x: hidden;
}

.motion-stage {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    overflow: hidden;
    contain: strict;
}

.motion-grid {
    position: absolute;
    inset: -12%;
    opacity: 0.045;
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
    background-size: 80px 80px;
    transform: translate3d(0, 0, 0) perspective(1100px) rotateX(70deg);
    transform-origin: top center;
    mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.85), rgba(0, 0, 0, 0.24) 58%, transparent 100%);
    animation: motionGridMove 34s linear infinite;
    will-change: background-position;
}

.motion-vignette {
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 50% 36%, transparent 0%, rgba(0, 0, 0, 0.14) 62%, rgba(0, 0, 0, 0.42) 100%);
}

#motion-cursor-glow {
    position: fixed;
    left: 0;
    top: 0;
    width: 320px;
    height: 320px;
    margin-left: -160px;
    margin-top: -160px;
    pointer-events: none;
    z-index: 1;
    border-radius: 999px;
    opacity: 0;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0.035) 34%, transparent 72%);
    transform: translate3d(-9999px, -9999px, 0);
    transition: opacity 140ms ease;
    mix-blend-mode: screen;
    will-change: transform, opacity;
}

body.motion-pointer-on #motion-cursor-glow {
    opacity: 1;
}

#main-content-wrapper,
.site-header,
header,
footer {
    position: relative;
    z-index: 2;
}

.motion-reveal {
    opacity: 0;
    transform: translate3d(0, 18px, 0);
    transition:
        opacity var(--motion-base) var(--motion-ease),
        transform var(--motion-base) var(--motion-ease);
    transition-delay: var(--motion-delay, 0ms);
    will-change: opacity, transform;
}

.motion-reveal.is-in {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.motion-panel,
.motion-button,
.motion-chip {
    position: relative;
    overflow: hidden;
    backface-visibility: hidden;
    transform: translate3d(0, 0, 0);
}

.motion-panel {
    transition:
        transform var(--motion-fast) var(--motion-ease),
        border-color var(--motion-fast) ease,
        background var(--motion-fast) ease;
    will-change: transform;
}

.motion-button,
.motion-chip {
    transition:
        transform var(--motion-fast) var(--motion-ease),
        border-color var(--motion-fast) ease,
        background var(--motion-fast) ease,
        color var(--motion-fast) ease;
}

.motion-panel::before,
.motion-button::before,
.motion-chip::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    background: radial-gradient(260px circle at var(--mx, 50%) var(--my, 50%), rgba(255, 255, 255, 0.08), transparent 48%);
    transition: opacity var(--motion-fast) ease;
}

.motion-panel::after,
.motion-button::after,
.motion-chip::after {
    display: none !important;
}

.motion-panel:hover::before,
.motion-button:hover::before,
.motion-chip:hover::before {
    opacity: 1;
}

.motion-panel:hover {
    transform: translate3d(0, -3px, 0);
}

.motion-button:hover {
    transform: translate3d(0, -2px, 0);
}

.motion-chip:hover {
    transform: translate3d(0, -1px, 0);
}

.motion-hero-visual {
    animation: motionHeroFloat 8s ease-in-out infinite;
    will-change: transform;
}

.motion-hero-title {
    animation: motionHeroTitle 720ms var(--motion-ease) both;
}

.motion-hero-subtitle {
    animation: motionHeroText 720ms var(--motion-ease) 80ms both;
}

.motion-hero-actions {
    animation: motionHeroText 720ms var(--motion-ease) 140ms both;
}

.motion-hero-visual.motion-reveal {
    transition-duration: var(--motion-slow);
}

.motion-divider {
    position: relative;
}

.motion-divider::after {
    content: "";
    display: block;
    width: 64px;
    height: 1px;
    margin: 16px auto 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.5), transparent);
    transform: scaleX(0.5);
    opacity: 0;
    transition:
        transform var(--motion-slow) var(--motion-ease),
        opacity var(--motion-slow) var(--motion-ease);
}

.motion-divider.is-in::after {
    transform: scaleX(1);
    opacity: 1;
}

.motion-stagger > * {
    --motion-delay: 0ms;
}

.motion-float-y {
    animation: motionFloatY 8s ease-in-out infinite;
    will-change: transform;
}

.motion-pulse-soft {
    animation: motionPulseSoft 4.8s ease-in-out infinite;
    will-change: transform, opacity;
}

.site-header nav a,
.site-header .nav-link,
header nav a,
header .nav-link {
    transition:
        transform var(--motion-fast) var(--motion-ease),
        opacity var(--motion-fast) ease;
}

.site-header nav a:hover,
.site-header .nav-link:hover,
header nav a:hover,
header .nav-link:hover {
    transform: translate3d(0, -1px, 0);
}

.watch-pill,
.pricing-option,
.pricing-tab,
.pricing-sidebar-purchase,
.btn-primary,
.btn-secondary,
.cta-main-btn {
    position: relative;
    overflow: hidden;
}

body.motion-route-out .dash-layout,
body.motion-route-out .res-layout,
body.motion-route-out .admin-layout,
body.motion-route-out #main-content-wrapper,
body.motion-route-out main {
    opacity: 0;
    transform: translate3d(0, 10px, 0);
    transition:
        opacity 220ms var(--motion-ease),
        transform 220ms var(--motion-ease);
}

.motion-tab-in {
    animation: motionTabIn 360ms var(--motion-ease) both;
}

.motion-tab-child {
    animation: motionTabChildIn 380ms var(--motion-ease) both;
    animation-delay: var(--motion-delay, 0ms);
}

.motion-tab-clicked {
    animation: motionTabClick 180ms var(--motion-ease) both;
}

.res-section,
.settings-subsection,
.dash-content,
.tab-content,
.tab-pane,
.admin-tab-content,
.network-tab-content,
.yara-tab-content,
.pricing-options {
    transform-origin: top center;
}

.motion-video-safe,
.motion-video-safe:hover,
.motion-video-safe video,
.motion-video-safe iframe {
    transform: none !important;
    animation: none !important;
}

#pricing .pricing-neww-btn.is-loading {
    pointer-events: none;
    opacity: 0.72;
}

#pricing .pricing-neww-switch,
#pricing .pricing-tab,
#pricing .pricing-tab::before,
#pricing .pricing-tab::after,
#pricing .pricing-options,
#pricing .pricing-option,
#pricing .pricing-neww-card,
#pricing .pricing-switching,
#pricing .pricing-card-switching,
#pricing .motion-tab-in,
#pricing .motion-tab-child,
#pricing .motion-tab-clicked {
    animation: none !important;
    transition:
        background 0.16s ease,
        border-color 0.16s ease,
        color 0.16s ease,
        transform 0.16s var(--motion-ease) !important;
    filter: none !important;
}

#pricing .pricing-tab::before,
#pricing .pricing-tab::after,
#pricing .pricing-option::before,
#pricing .pricing-option::after,
#pricing .pricing-neww-btn::before,
#pricing .pricing-neww-btn::after {
    display: none !important;
    content: none !important;
    animation: none !important;
}

#pricing .pricing-options,
#pricing .pricing-options.active,
#pricing .pricing-option {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    animation: none !important;
}

#pricing .pricing-option:hover {
    transform: translate3d(0, -2px, 0) !important;
}

@keyframes motionGridMove {
    0% {
        background-position: 0 0, 0 0;
    }

    100% {
        background-position: 80px 80px, 80px 80px;
    }
}

@keyframes motionHeroTitle {
    0% {
        opacity: 0;
        transform: translate3d(0, 22px, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes motionHeroText {
    0% {
        opacity: 0;
        transform: translate3d(0, 16px, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes motionHeroFloat {
    0%, 100% {
        transform: translate3d(0, 0, 0);
    }

    50% {
        transform: translate3d(0, -6px, 0);
    }
}

@keyframes motionFloatY {
    0%, 100% {
        transform: translate3d(0, 0, 0);
    }

    50% {
        transform: translate3d(0, -4px, 0);
    }
}

@keyframes motionPulseSoft {
    0%, 100% {
        transform: scale(1);
        opacity: 1;
    }

    50% {
        transform: scale(1.006);
        opacity: 0.96;
    }
}

@keyframes motionTabIn {
    0% {
        opacity: 0;
        transform: translate3d(0, 14px, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes motionTabChildIn {
    0% {
        opacity: 0;
        transform: translate3d(0, 12px, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes motionTabClick {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(0.985);
    }

    100% {
        transform: scale(1);
    }
}

@media (max-width: 900px) {
    .motion-grid {
        background-size: 64px 64px;
        opacity: 0.035;
    }

    #motion-cursor-glow {
        display: none;
    }

    .motion-panel:hover {
        transform: translate3d(0, -2px, 0);
    }
}

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }

    .motion-grid,
    .motion-hero-visual,
    .motion-float-y,
    .motion-pulse-soft {
        animation: none !important;
    }

    .motion-reveal,
    .motion-reveal.is-in,
    .motion-divider::after,
    .motion-divider.is-in::after {
        opacity: 1 !important;
        transform: none !important;
    }
}

.motion-reveal {
    filter: none !important;
    transform: translate3d(0, 16px, 0);
    transition:
        opacity 420ms cubic-bezier(0.22, 1, 0.36, 1),
        transform 420ms cubic-bezier(0.22, 1, 0.36, 1);
}

.motion-reveal.is-in {
    transform: translate3d(0, 0, 0);
}

.motion-panel::after,
.motion-button::after,
.motion-chip::after,
.pricing-tab::before,
.pricing-tab::after,
.pricing-option::before,
.pricing-option::after,
.pricing-neww-btn::before,
.pricing-neww-btn::after {
    display: none !important;
    animation: none !important;
}

.motion-panel:hover {
    transform: translate3d(0, -2px, 0) !important;
}

.motion-button:hover,
.motion-chip:hover {
    transform: translate3d(0, -1px, 0) !important;
}

.motion-grid {
    opacity: 0.04;
    animation-duration: 34s;
    will-change: background-position;
}

.motion-hero-visual,
.motion-float-y,
.motion-pulse-soft {
    animation-duration: 8s;
}

body.motion-route-out .dash-layout,
body.motion-route-out .res-layout,
body.motion-route-out .admin-layout,
body.motion-route-out #main-content-wrapper,
body.motion-route-out main {
    filter: none !important;
    transform: translate3d(0, 10px, 0);
}

.motion-tab-in {
    animation: motionTabIn 340ms cubic-bezier(0.22, 1, 0.36, 1) both !important;
}

.motion-tab-child {
    animation: motionTabChildIn 360ms cubic-bezier(0.22, 1, 0.36, 1) both !important;
}

.motion-tab-clicked {
    animation: motionTabClick 160ms cubic-bezier(0.22, 1, 0.36, 1) both !important;
}

#pricing .pricing-neww-switch,
#pricing .pricing-tab,
#pricing .pricing-options,
#pricing .pricing-option,
#pricing .pricing-neww-card,
#pricing .pricing-switching,
#pricing .pricing-card-switching,
#pricing .motion-tab-in,
#pricing .motion-tab-child,
#pricing .motion-tab-clicked {
    animation: none !important;
    filter: none !important;
    transition:
        background 0.16s ease,
        border-color 0.16s ease,
        color 0.16s ease,
        transform 0.16s cubic-bezier(0.22, 1, 0.36, 1) !important;
}

#pricing .pricing-options,
#pricing .pricing-options.active,
#pricing .pricing-option {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    animation: none !important;
}

@keyframes motionTabIn {
    0% {
        opacity: 0;
        transform: translate3d(0, 14px, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes motionTabChildIn {
    0% {
        opacity: 0;
        transform: translate3d(0, 12px, 0);
    }

    100% {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

@keyframes motionTabClick {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(0.985);
    }

    100% {
        transform: scale(1);
    }
}

@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;
    }
}