.button
{
    position: relative;
}
.active
{
    cursor: pointer;
}
.js body
{
    opacity: 0;
    transition: opacity .3s;
}
.js body.render
{
    opacity: 1;
}
.js .loading::before
{
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--color-bg);
}
.js .loading::after
{
    top: 50%;
    left: 50%;
    width: 60px;
    height: 60px;
    margin: -30px 0 0 -30px;
    border-radius: 50%;
    opacity: .4;
    background: var(--color-link);
    animation: loaderAnim .7s linear infinite alternate forwards;
}
@keyframes loaderAnim
{
    to
    {
        opacity: 1;
        transform: scale3d(.5,.5,1);
    }
}
a
{
    text-decoration: underline;
    color: var(--color-link);
    outline: none;
}
a:hover, a:focus
{
    color: var(--color-link-hover);
    outline: none;
    text-decoration: none;
}
.cursor
{
    display: none;
}
@media(any-pointer: fine)
{
    .cursor
    {
        position: fixed;
        top: 0;
        left: 0;
        display: block;
        pointer-events: none;
    }
    .cursor__inner
    {
        fill: var(--cursor-fill);
        stroke: var(--cursor-stroke);
        stroke-width: var(--cursor-stroke-width);
    }
    .credits
    {
        padding-left: 25vw;
    }
}