.loader {
    display: flex;
    position: fixed;
    top: 0;
    left: 0;
    height: 100%;
    width: 100%;
    z-index: 9999;
    justify-content: center;
    align-items: center;
    animation: hideLoader 1s ease-in forwards;
}

.loader::before {
    position: absolute;
    top: 50%;
    left: 50%;
    height: 100px;
    width: 100px;
    background: #0C1CAF;
    content: "";
    transform-origin: center;
    border-radius: 50%;
    z-index: 1;
    animation: hideLoaderCircle 1s ease-in forwards;
}

.loader .loader__content {
    display: flex;
    position: relative;
    flex-direction: column;
    align-items: center;
    z-index: 2;
    animation: hideLoaderContent 1s ease-in forwards;
    animation-delay: 0.25s;
}

.loader .loader__content .loader__content-logo .gst-svg-icon {
    fill: #0800BA;
}

.loader .loader__content .loader__content-logo .gst-svg-icon-2 {
    fill: #FFFFFF;
}

.loader .loader__content .loader__content-loading-bar {
    position: relative;
    height: 3px;
    width: 219px;
    margin-top: 56px;
    background: rgba( 255, 255, 255, 0.25 );
    margin-left: 18px;
    overflow: hidden;
}

.loader .loader__content .loader__content-loading-bar::before {
    position: absolute;
    left: -34px;
    height: 3px;
    width: 84px;
    background: #FFFFFF;
    content: "";
    animation: progressBar 1.5s infinite ease;
}

.loader.visible {
    animation: showLoader 1s ease-in forwards;
}

.loader.visible .loader__content {
    animation: showLoaderContent 0.5s ease-in forwards;
}

.loader.visible::before {
    animation: showLoaderCircle 1s ease-in forwards;
}

@keyframes progressBar {
    50% {
        left: 195px;
    }
}

@keyframes showLoader {
    0% {
        visibility: hidden;
    }

    100% {
        visibility: visible;
    }
}

@keyframes hideLoader {
    0% {
        visibility: visible;
    }

    100% {
        visibility: hidden;
    }
}

@keyframes showLoaderContent {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes hideLoaderContent {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

@keyframes showLoaderCircle {
    0% {
        transform: translate( -50%, -50% ) scale( 0 );
    }

    100% {
        transform: translate( -50%, -50% ) scale( 50 );
    }
}

@keyframes hideLoaderCircle {
    0% {
        transform: translate( -50%, -50% ) scale( 50 );
    }

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