html,
body {
    height: 100vh;
}

.ipywidgets-server-contents-container {
    height: 95vh;
    padding-top: 5vh;
}

#result {
    margin-top: auto;
    margin-bottom: auto;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }

    100% {
        transform: rotate(359deg);
    }
}

@keyframes oscillate {
    0% {
        transform: scale(0.8);
        fill: red;
    }

    50% {
        transform: scale(1.0);
    }

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

#sun-spinner {
    animation: spin 10s linear infinite;
    padding: 10px;
}

#sun-spinner-container {
    animation: oscillate 2s linear infinite;
}

@keyframes bounce-in {
    0% {
        transform: scale(0);
    }

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

@keyframes bounce-out {
    0% {
        transform: translateZ(0) scale(1);
    }

    100% {
        transform: translateZ(0) scale(50);
    }
}

.solara-transition-enter-active {
    transition: opacity 0.5s ease;
    /* animation: bounce-in 0.5s ease; */
}

.solara-transition-leave-active {
    transition: opacity 0.5s ease;
}

.solara-transition-leave-active .solara-loader {
    animation: bounce-out 0.5s ease;
}

.solara-transition-leave-active #sun-spinner-container {
    animation: unset;
}

.solara-transition-leave-active h1 {
    visibility: hidden;
}

.solara-transition-enter,
.solara-transition-leave-to {
    opacity: 0;
}

#sun-spinner-container {
    overflow: hidden;
}

#loader-container {
    width: 100vw;
    height: 100vh;
    position: absolute;
    margin: 0;
    padding: 0;
    z-index: 998;
}

#loader {
    position: absolute;
    width: 100vw;
    top: 50%;
    /* position the top  edge of the element at the middle of the parent */
    left: 50%;
    /* position the left edge of the element at the middle of the parent */

    margin-left: auto;
    margin-right: auto;
    left: 0;
    right: 0;
    text-align: center;
    z-index: 1000;
    overflow: hidden;
}


/* from https://codepen.io/elchiconube/pen/naxOWv */
#clouds {
    position: absolute;
    overflow: hidden;
    z-index: 999;
    width: 100vw;
    height: 60vh;
    padding: 100px 0;
    background: #00b4ff;
    background: -webkit-linear-gradient(top, #00b4ff 0%, #fff0 100%);
    background: -linear-gradient(top, #00b4ff 0%, #fff0 100%);
    background: -moz-linear-gradient(top, #00b4ff 0%, #fff0 100%);
}

/*Time to finalise the cloud shape*/
.cloud {
    width: 200px;
    height: 60px;
    background: #fff;

    border-radius: 200px;
    -moz-border-radius: 200px;
    -webkit-border-radius: 200px;

    position: relative;
}

.cloud:before,
.cloud:after {
    content: '';
    position: absolute;
    background: #fff;
    width: 100px;
    height: 80px;
    position: absolute;
    top: -15px;
    left: 10px;

    border-radius: 100px;
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;

    -webkit-transform: rotate(30deg);
    transform: rotate(30deg);
    -moz-transform: rotate(30deg);
}

.cloud:after {
    width: 120px;
    height: 120px;
    top: -55px;
    left: auto;
    right: 15px;
}

/*Time to animate*/
.x1 {
    -webkit-animation: moveclouds 15s linear infinite;
    -moz-animation: moveclouds 15s linear infinite;
    -o-animation: moveclouds 15s linear infinite;
}

/*variable speed, opacity, and position of clouds for realistic effect*/
.x2 {
    left: 200px;

    -webkit-transform: scale(0.6);
    -moz-transform: scale(0.6);
    transform: scale(0.6);
    opacity: 0.6;
    /*opacity proportional to the size*/

    /*Speed will also be proportional to the size and opacity*/
    /*More the speed. Less the time in 's' = seconds*/
    -webkit-animation: moveclouds 25s linear infinite;
    -moz-animation: moveclouds 25s linear infinite;
    -o-animation: moveclouds 25s linear infinite;
}

.x3 {
    left: -250px;
    top: -200px;

    -webkit-transform: scale(0.8);
    -moz-transform: scale(0.8);
    transform: scale(0.8);
    opacity: 0.8;
    /*opacity proportional to the size*/

    -webkit-animation: moveclouds 20s linear infinite;
    -moz-animation: moveclouds 20s linear infinite;
    -o-animation: moveclouds 20s linear infinite;
}

.x4 {
    left: 470px;
    top: -250px;

    -webkit-transform: scale(0.75);
    -moz-transform: scale(0.75);
    transform: scale(0.75);
    opacity: 0.75;
    /*opacity proportional to the size*/

    -webkit-animation: moveclouds 18s linear infinite;
    -moz-animation: moveclouds 18s linear infinite;
    -o-animation: moveclouds 18s linear infinite;
}

.x5 {
    left: -150px;
    top: -150px;

    -webkit-transform: scale(0.8);
    -moz-transform: scale(0.8);
    transform: scale(0.8);
    opacity: 0.8;
    /*opacity proportional to the size*/

    -webkit-animation: moveclouds 20s linear infinite;
    -moz-animation: moveclouds 20s linear infinite;
    -o-animation: moveclouds 20s linear infinite;
}

@-webkit-keyframes moveclouds {
    0% {
        margin-left: 1000px;
    }

    100% {
        margin-left: -1000px;
    }
}

@-moz-keyframes moveclouds {
    0% {
        margin-left: 1000px;
    }

    100% {
        margin-left: -1000px;
    }
}

@-o-keyframes moveclouds {
    0% {
        margin-left: 1000px;
    }

    100% {
        margin-left: -1000px;
    }
}
