@keyframes testimonialReveal {
    0% {
        opacity: 0;
        transform: translateY(25px) scale(.98);
    }

    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes quoteFloat {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-8px);
    }
}

@keyframes shapeMove {

    0%,
    100% {
        transform: translate(0, 0) scale(1);
    }

    50% {
        transform: translate(25px, -20px) scale(1.08);
    }
}

@keyframes blogCardReveal {
    from {
        opacity: 0;
        transform: translateY(25px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes blogFloat {

    0%,
    100% {
        transform: translate(0, 0);
    }

    50% {
        transform: translate(25px, -20px);
    }
}

@keyframes blogCardReveal {
    from {
        opacity: 0;
        transform: translateY(25px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes backTopArrow {

    0%,
    100% {
        transform: translateY(0)
    }

    50% {
        transform: translateY(-4px)
    }
}

@keyframes footerGlow {

    0%,
    100% {
        transform: translate(0, 0) scale(1)
    }

    50% {
        transform: translate(-20px, 20px) scale(1.08)
    }
}

@keyframes preloaderLine {
    0% {
        left: -40%
    }

    100% {
        left: 100%
    }
}

@keyframes preloaderContent {
    from {
        opacity: 0;
        transform: translateY(15px)
    }

    to {
        opacity: 1;
        transform: translateY(0)
    }
}

@keyframes processReveal {
    from {
        opacity: 0;
        transform: translateY(25px)
    }

    to {
        opacity: 1;
        transform: translateY(0)
    }
}

@keyframes processFloat {

    0%,
    100% {
        transform: translate(0, 0)
    }

    50% {
        transform: translate(-20px, 20px)
    }
}

@keyframes categoryReveal {
    from {
        opacity: 0;
        transform: translateY(25px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes categoryFloat {

    0%,
    100% {
        transform: translate(0, 0);
    }

    50% {
        transform: translate(-20px, 20px);
    }
}

@keyframes heroTextIn {
    from {
        opacity: 0;
        transform: translateX(-35px)
    }

    to {
        opacity: 1;
        transform: translateX(0)
    }
}

@keyframes heroImageIn {
    from {
        opacity: 0;
        transform: translateX(40px) scale(.92)
    }

    to {
        opacity: 1;
        transform: translateX(0) scale(1)
    }
}

@keyframes heroSpecIn {
    from {
        opacity: 0;
        transform: translateY(-20px)
    }

    to {
        opacity: 1;
        transform: translateY(0)
    }
}

@keyframes productMove {

    0%,
    100% {
        transform: translateY(0)
    }

    50% {
        transform: translateY(-10px)
    }
}

@keyframes specMove {

    0%,
    100% {
        transform: translateY(0)
    }

    50% {
        transform: translateY(-7px)
    }
}

@keyframes stagePulse {

    0%,
    100% {
        transform: scale(1);
        opacity: .8
    }

    50% {
        transform: scale(1.05);
        opacity: 1
    }
}

@keyframes stageRotate {
    from {
        transform: rotate(0)
    }

    to {
        transform: rotate(360deg)
    }
}

@keyframes statusPulse {

    0%,
    100% {
        box-shadow: 0 0 0 4px rgba(36, 180, 126, .1)
    }

    50% {
        box-shadow: 0 0 0 7px rgba(36, 180, 126, .04)
    }
}

@keyframes kpiMenuIn {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes kpiSticky {
    from {
        opacity: 0;
        transform: translateY(-15px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes rentalFadeUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes rentalButtonShine {
    from {
        left: -120%;
    }

    to {
        left: 130%;
    }
}

@keyframes faqIntro {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes faqHelp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}


@keyframes enquiryInfoIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes enquiryFormIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes enquiryFadeUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes enquiryPointIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes enquiryButtonShine {
    from {
        left: -120%;
    }

    to {
        left: 130%;
    }
}


@keyframes contactFadeUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes contactInfoIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes contactMapIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes contactItemIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes mapButtonIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes breadcrumbLabel {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes breadcrumbTitle {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes breadcrumbList {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}


@keyframes aboutFadeUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes aboutSlideLeft {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes aboutSlideRight {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes aboutCircle {

    0%,
    100% {
        transform: translate(0, 0) rotate(0);
    }

    50% {
        transform: translate(-15px, 15px) rotate(180deg);
    }
}

@keyframes aboutCircleReverse {

    0%,
    100% {
        transform: translate(0, 0) rotate(0);
    }

    50% {
        transform: translate(15px, -15px) rotate(-180deg);
    }
}

@keyframes aboutNumberFloat {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-7px);
    }
}

@keyframes aboutCheckPulse {

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

    50% {
        transform: scale(1.12);
    }
}


@keyframes expertiseDots {

    0%,
    100% {
        transform: translate(0, 0);
    }

    50% {
        transform: translate(8px, -10px);
    }
}

@keyframes experienceFloat {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-10px);
    }
}

@keyframes shapePulse {

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

    50% {
        transform: scale(.9);
        opacity: .7;
    }
}

@keyframes valuesTitleIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes valueItemIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes valuesContentIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes ctaContentIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes ctaButtonIn {
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes ctaGradient {

    0%,
    100% {
        background-position: 0% 50%;
    }

    50% {
        background-position: 100% 50%;
    }
}

@keyframes privacyHeaderIn {
    from {
        opacity: 0;
        transform: translateY(25px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes privacyFadeUp {
    from {
        opacity: 0;
        transform: translateY(25px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes productReveal {
    0% {
        opacity: 0;
        transform: translateY(30px) scale(.97);
    }

    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes productCardIn {

    from {
        opacity: 0;
        transform: translateX(35px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
    }

}

@keyframes tabFade {

    from {
        opacity: 0;
        transform: translateY(10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }

}

@keyframes errorFadeUp {
    from {
        opacity: 0;
        transform: translateY(35px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes errorNumber {
    from {
        opacity: 0;
        transform: translateY(30px) scale(.8);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

@keyframes errorIcon {
    from {
        opacity: 0;
        transform: scale(.5) rotate(-20deg);
    }

    to {
        opacity: 1;
        transform: scale(1) rotate(0);
    }
}

@keyframes errorShake {

    0%,
    100% {
        transform: rotate(0);
    }

    10%,
    30% {
        transform: rotate(-8deg);
    }

    20%,
    40% {
        transform: rotate(8deg);
    }

    50% {
        transform: rotate(0);
    }
}

@keyframes formLoaderSpin {
    to {
        transform: rotate(360deg);
    }
}