*,
*::after,
*::before {
    box-sizing: border-box;
}

html {
    background: #3573d6;
}

body::before {
    content: '';
    position: fixed;
    z-index: 1000000;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100%;
    background: #FF561D;
    opacity: 0;
    transition: opacity 0.8s;
    pointer-events: none;
}

/* Fade effect */
.js body {
    opacity: 0;
    transition: opacity 0.3s;
}

.js body.render {
    opacity: 1;
}

/* Page Loader */
.js .loading::before {
    opacity: 1;
}

.js .loading::after {
    content: '';
    position: fixed;
    z-index: 1000000;
    top: 50%;
    left: 50%;
    width: 60px;
    height: 60px;
    margin: -30px 0 0 -30px;
    pointer-events: none;
    border-radius: 50%;
    opacity: 0.4;
    background: #FFF;
    animation: loaderAnim 0.7s linear infinite alternate forwards;
}

@keyframes loaderAnim {
    to {
        opacity: 1;
        transform: scale3d(0.5, 0.5, 1);
    }
}

.hidden {
    position: absolute;
    overflow: hidden;
    width: 0;
    height: 0;
    pointer-events: none;
}
