* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
html, body {
    background-color: #66a1ff;
    width: 100vw;
    overflow-x: hidden;
    scrollbar-width: 0;
}
::-webkit-scrollbar {
    display: none;
}
a#resume, a#portfolio {
    position: fixed;
    right: 1vw;
    z-index: 1000;
    background-color: wheat;
    padding: 1vw;
    border-radius: 0.5vw;
    color: black;
    text-decoration: none;
    font-family: "Tahoma";
    font-size: 1vw;
}
a#resume {
    top: 1vw;
}
a#portfolio {
    top: 5vw;
}
a#resume:hover, a#portfolio:hover {
    cursor: pointer;
}
section#intro {
    opacity: 1;
    transition: all ease 1s;
}
section#game {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
}
section#intro nav {
    display: block;
    background-color: violet;
    border: 0.5vw solid purple;
    margin: 1vw;    
    width: 94vw;
    height: 11.5vw;
    margin-left: 3vw;
    z-index: 21;
    position: relative;
    border-radius: 5vw;
    transition: opacity ease 0.5s;
    opacity: 1;
    padding: 0;
    overflow: hidden;
}
div.bigspace {
    height: 100vh;
    display: block;
    width: 100vw;
}
section#intro nav img {
    margin: 2vw;
    width: 6vw;
    transition: all ease 0.5s;
}
section#intro nav img:hover {
    width: 4vw;
    margin: 3vw;
}
div#slide {
    position: fixed;
    width: 0;
    height: 0;
    bottom: 0;
    right: 0;
    border-left: 100vw solid transparent;
    border-top: 100vh solid #3bb5ed;
    border-right: 100vw solid transparent;
    z-index: 20;
    opacity: 0.2;
    transition: right ease 3s, opacity ease 0.5s;
    animation: fromleft 1.5s ease;
}
div#slide.moving {
    right: 100vw;
}
div#slidered.moving {
    left: 100vw;
}
@keyframes fromleft {
    0% { right: 100vw; border-top-color: black; }
}
section#intro h1 {
    position: relative;
    text-align: center;
    display: block;
    font-family: "Tahoma";
    font-size: 8vw;
    z-index: 21;
    color: violet;
    opacity: 1;
    text-shadow: 1vw 1vw 5vw red, -1vw -1vw 5vw blue;
}
section#intro h1#title::after {
    content: "";
    width: 2vw;
    height: 7vw;
    background-color: #76f500;
    display: inline-block;
    position: relative;
    margin-top: 0;
    margin-left: 2vw;
    transition: none;
    animation: cursor 0.7s linear infinite;
}
@keyframes cursor {
    49% { opacity: 1;}
    50% { opacity: 0;}
    99% { opacity: 0;}
    100% { opacity: 1;}
}
section#intro h1#title {
    display: inline-block;
    font-size: 10vw;
    line-height: 100vh;
    height: 100vh;
    text-align: left;
    opacity: 0;
}
div#slidered {
    position: fixed;
    width: 0;
    height: 0;
    bottom: 0;
    left: 0;
    border-left: 100vw solid transparent;
    border-bottom: 100vh solid #ed3b7a;
    border-right: 100vw solid transparent;
    z-index: 20;
    opacity: 0.2;
    transition: left ease 3s, opacity ease 0.5s;
    animation: fromright 1.5s ease;
}
@keyframes fromright {
    0% { left: 100vw; border-bottom-color: black;}
}
img#slideright {
    position: fixed;
    width: 100vw;
    height: 100vh;
    object-fit: cover;
    left: 0;
    top: 0;
}
div.block {
    content: "";
    width: 10vw;
    height: 2vw;
    border-bottom-left-radius: 1vw;
    border-bottom-right-radius: 1vw;
    border: 0.5vw solid transparent;
    opacity: 1;
    display: inline-block;
    position: absolute;
    z-index: 10;
}
div.block::before {
    margin-top: -9.5vw;
    margin-left: -0.5vw;
    content: "";
    width: 100%;
    height: 9vw;
    border-radius: 1vw;
    background-color: inherit;
    border: 0.5vw solid transparent;
    border-color: inherit;
    display: block;
    position: relative;
    opacity: 1;
}
div.grass {
    background-color: green;
    border-color: darkgreen;
}
div.wall {
    background-color: #474747;
    border-color: #363636;
    height: 4vw;
    z-index: 30;
}
div.lava {
    background-color: #e86d64;
    border-color: #ed5247;
}
div.counterclock, div.clock, div.shifter {
    background-color: plum;
    border-color: pink;
}
div.clock::before {
    background-image: url('clock.png');
    background-size: 9vw;
}
div.counterclock::before {
    background-image: url('counterclock.png');
    background-size: 9vw;
}
div.finish {
    background-color: black;
    border-color: white;
    transition: background-color linear 0.25s;
}
div.finish::before {
    transition: all linear 0.25s;
}
div.finish.finished {
    background-color: white;
}
div.finish.finished::before {
    width: 6vw;
    height: 6vw;
    border-width: 2vw;
}
div.shifter::after {
    margin-top: -7vw;
    margin-left: 2.5vw;
    content: "";
    width: 3vw;
    height: 3vw;
    border-radius: 1vw;
    background-color: plum;
    border: 0.5vw solid transparent;
    border-color: purple;
    display: block;
    position: relative;
    opacity: 1;
}
div.brick {
    background-color: #a85836;
    border-color: #573324;
    width: 11vw;
    height: 4vw;
    z-index: 30;
    transform: translateX(-0.5vw);
}
div.checkpoint {
    background-color: #68d62d;
    border-color: #88f74d;
}
div.brick::before {
    height: 11vw;
    margin-top: -10.5vw;
}
div.sand { 
    background-color: yellow;
    border-color: tan;
}
div.shooter {
    background-color: #ed5247;
    border-color: #e86d64;
    height: 12vw;
    border-bottom-left-radius: 5vw;
    border-bottom-right-radius: 5vw;
    z-index: 30;
}
div.shooter::before {
    margin-top: -5.5vw;
    border-radius: 5vw;
    z-index: 30;
}
div#player {
    content: "";
    width: 6vw;
    height: 3.5vw;
    border-bottom-left-radius: 1vw;
    border-bottom-right-radius: 1vw;
    border: 0.5vw solid purple;
    background-color: violet;
    opacity: 1;
    display: inline-block;
    position: fixed;
    top: 28vw;
    left: 44vw;
    z-index: 20;
    transition: width linear 0.25s, margin-left linear 0.25s, height linear 0.25s, margin-top linear 0.25s;
}
div#player::before {
    margin-top: -5.5vw;
    margin-left: -0.5vw;
    content: "";
    width: 100%;
    height: 5vw;
    border-radius: 1vw;
    background-color: inherit;
    border: 0.5vw solid transparent;
    border-color: inherit;
    display: block;
    position: relative;
    opacity: 1;
    transition: all linear 0.25s;
}
div#board {
    transition: all linear 0.25s;
    position: relative;
    margin-left: 0;
    margin-right: 0;
}
div#player.m101 {
    width: 16.5vw;
}
div#player.m-101 {
    width: 16.5vw;
    margin-left: -10.5vw;
}
div#player.m0-11 {
    height: 15vw;
    margin-top: -11.5vw;
}
div#player.m0-11::before {
    height: 16.5vw;
}
div#player.m011 {
    height: 15vw;
}
div#player.m011::before {
    height: 16.5vw;
}
div#waves {
    overflow: hidden;
    width: 100vw;
    height: 100vh;
    display: block;
    position: absolute;
    top: 0;
    left: 0;
}
div.wave {
    position: absolute;
    animation: swim 20s linear;
    z-index: 30;
    height: 2vw;
    border-radius: 1vw;
    background-color: rgba(68, 150, 227);
}
div.wave::after {
    content: "";
    position: relative;
    display: block;
    background-color: rgba(68, 150, 227);
    border-radius: 1vw;
    height: 2.5vw;
    top: -0.5vw;
    left: 25%;
    width: 50%;
}
@keyframes swim {
    0% { left: -15vw; }
    100% { left: 100vw;}
}
div.bulletup {
    position: absolute;
    display: inline-block;
    width: 0; 
    height: 0; 
    border-left: 5vw solid transparent;
    border-right: 5vw solid transparent;
    border-bottom: 10vw solid #e86d64;
    border-radius: 3vw;
    content: "";
    z-index: 28;
    margin-bottom:1vw;
    margin-left: 0vw;
    transition: all linear 0.25s;
    animation: fadeup 1s linear;
}
div.bulletright {
    position: absolute;
    display: inline-block;
    width: 0; 
    height: 0; 
    border-top: 5vw solid transparent;
    border-bottom: 5vw solid transparent;
    border-left: 10vw solid #e86d64;
    border-radius: 3vw;
    content: "";
    z-index: 28;
    margin-bottom:1vw;
    margin-left: 0vw;
    transition: all linear 0.25s;
    animation: faderight 1s linear;
}
div.bulletdown {
    position: absolute;
    display: inline-block;
    width: 0; 
    height: 0; 
    border-left: 5vw solid transparent;
    border-right: 5vw solid transparent;
    border-top: 10vw solid #e86d64;
    border-radius: 3vw;
    content: "";
    z-index: 28;
    margin-bottom:1vw;
    margin-left: 0vw;
    transition: all linear 0.25s;
    animation: fadedown 1s linear;
}
div.bulletleft {
    position: absolute;
    display: inline-block;
    width: 0; 
    height: 0; 
    border-top: 5vw solid transparent;
    border-bottom: 5vw solid transparent;
    border-right: 10vw solid #e86d64;
    border-radius: 3vw;
    content: "";
    z-index: 28;
    margin-bottom:1vw;
    margin-left: 0vw;
    transition: all linear 0.25s;
    animation: fadeleft 1s linear;
}
@keyframes fadeup {
    0% { opacity: 0%; transform: translateY(7vw);}
    100% { opacity: 100%;}
}
@keyframes faderight {
    0% { opacity: 0%; transform: translateX(-7vw);}
    100% { opacity: 100%;}
}
@keyframes fadedown {
    0% { opacity: 0%; transform: translateY(-7vw);}
    100% { opacity: 100%;}
}
@keyframes fadeleft {
    0% { opacity: 0%; transform: translateX(7vw);}
    100% { opacity: 100%;}
}
div#death {
    position: fixed;
    width: 100%;
    height: 100%;
    background-color: red;
    z-index: 100;
    display: block;
    top: 0;
    left: 0;
    animation: blink 1s ease;
}
div#death.hidden {
    display: none;
}
@keyframes blink {
    0% { opacity: 0; }
    50% { opacity: 0.75;}
    100% { opacity: 0; }
}
div.shatter {
    animation: shatter 1s ease;
}
@keyframes shatter {
    0% { transform: scale(1);}
    100% { transform: scale(0); opacity: 0;}
}
div.fakefloor {
    background-color: lightgreen;
    border-color: darkgreen;
    transition: background-color ease 0.5s;
}
div.fakefloor.trapped {
    background-color: #e86d64;
}
div#selector {
    float: right;
    display: block;
    background-color: purple;
    z-index: 100;
    margin-right: 1vw;
    margin-top: 1vw;
    padding-top: 1vw;
    padding-right: 1vw;
    border-radius: 1vw;
    transition: all ease 0.75s;
}
div#selector button {
    margin-left: 1vw;
    margin-bottom: 1vw;
    background-color: violet;
    border: 1px solid transparent;
    border-radius: 0.5vw;
    padding: 1vw;
    color: purple;
    font-family: "Tahoma";
    transition: all ease 0.5s;
    font-size: 1vw;
}
div#selector.restricted {
    opacity: 0.1;
}
div#selector button:hover {
    background-color: purple;
    color: violet;
    border-color: violet;
}
div#selector button.active {
    background-color: lightgreen;
}
div.space {
    display: block;
    width: 100vw;
    height: 40vw;
}
h1#banner {
    font-size: 5vw;
    z-index: 202;
    color: purple;
    position: fixed;
    top: 40vh;
    left: -60vw;
    width: 60vw;
    height: calc(20vh + 4vw);
    line-height: 20vh;
    text-align: center;
    font-family: "Tahoma";
    background-color: pink;
    border-radius: 2vw;
    border: 1vw solid purple;
    transition: all ease 1s;
    padding: 1vw;
}
h1#tutorial {
    font-size: 1vw;
    display: block;
    float: right;
    position: relative;
    border-radius: 2vw;
    padding: 1vw;
    background-color: violet;
    border: 0.5vw solid purple;
    z-index: 100;
    font-family: "Tahoma";
    color: purple;
    animation: fly 1s ease;
    transition: all ease 1s;
    text-align: center;
    margin: auto;
    opacity: 1;
    box-shadow: 0 0 2vw white;
}   
@keyframes fly {
    0% { right: -100vw; opacity: 0;}
    100% { right: 0; opacity: 1;}
}
h1#tutorial.hidden {
    right: -100vw;
    animation: flyout 1s ease;
}
@keyframes flyout {
    0% { right: 0; opacity: 1;}
    100% { right: -100vw; opacity: 0;}
}
section#bottomright {
    z-index: 100;
    position: fixed;
    right: 1vw;
    bottom: 1vw;
}
button.state {
    margin-top: 1vw;
    width: 5vw;
    height: 5vw;
    display: block;
    margin-right: 1vw;
    float: right;
    z-index: 100;
    border-radius: 3vw;
    transition: all ease 0.75s;
}
button#edit {
    clear:both;
    border: 0vw solid palegoldenrod;
    background-color: palegoldenrod;
    color: coral;
    font-family: "Tahoma";
    font-size: 1.5vw;
}
button#play {
    border: 0vw solid lightgreen;
    background-color: lightgreen;
}
button#edit:hover {
    border: 0.5vw solid goldenrod;
}
button#play:hover {
    border: 0.5vw solid green;
}
button#play:hover::after {
    margin-left: 1.5vw;
}
button#play::after {
    content: "";
    display: block;
    width: 0;
    height: 0;
    margin-left: 2vw;
    border-top: 1.5vw solid transparent;
    border-bottom: 1.5vw solid transparent;
    border-left: 1.5vw solid green;
    border-right: 0vw solid transparent;
    transition: all ease 0.75s;
}
button.state.restricted {
    border-color: lightgray !important;
    background-color: lightgray !important;
    color: gray !important;
}
button#play.restricted::after {
    border-left-color: gray;
}
div.block.starting {
    animation: start 1s ease;
}
@keyframes start {
    0% { background-color: gold; }
}
div.checkpointing {
    animation: check 1s ease;
}
div.checkpointing::before {
    animation: check 1s ease;
}
@keyframes check {
    0% { background-color: gold; border-color: goldenrod;}
    50% { background-color: goldenrod; border-color: gold; opacity: 0.75;}
}
div.path {
    position: absolute;
    background-color: rgba(68, 150, 227);
    display: block;
    z-index: 20;
    border-radius: 1vw;
    width: 1vw;
    height: 1vw;
    opacity: 50%;
}
div.path.left {
    animation: goleft 2s linear infinite;
}
@keyframes goleft {
    0% { transform: translateX(10.5vw); }
    100% { transform: translateX(0); }
}
div.path.right {
    animation: goright 2s linear infinite;
}
@keyframes goright {
    0% { transform: translateX(0); }
    100% { transform: translateX(10.5vw); }
}
div.path.up {
    animation: goup 2s linear infinite;
}
@keyframes goup {
    0% { transform: translateY(0); }
    100% { transform: translateY(-11.5vw); }
}
div.path.down {
    animation: godown 2s linear infinite;
}
@keyframes godown {
    0% { transform: translateY(-11.5vw); }
    100% { transform: translateY(0); }
}
button {
    cursor: pointer;
}
button#mute {
    position: fixed;
    top: 1vw;
    left: 1vw;
    background-image: url('./audiosymbol.png');
    width: 5vw;
    height: 5vw;
    background-size: 3.01vw;
    background-color: lightcoral;
    content: "";
    border: 1vw solid lightcoral;
    border-radius: 2vw;
    z-index: 100;
}
a#build {
    position: fixed;
    top: 1vw;
    left: 7vw;
    background-color: lightsteelblue;
    color: steelblue;
    font-family: "Tahoma";
    font-size: 2vw;
    z-index: 100;
    display: inline;
    padding: 1vw;
    border-radius: 2vw;
    border: 0.25vw solid steelblue;
    text-decoration: none;
    transition: all ease 0.4s;
}
a#build:hover {
    border-color: gold;
    color: gold;
    background-color: transparent;
}
button#mute.unmuted {
    background-color: lightgreen;
    border-color: lightgreen;
}

@media screen and (orientation: portrait) {
    button#mute {
        width: 10vw;
        height: 10vw;
        background-size: 8.01vw;
    }
    a#build {
        left: 12vw;
        font-size: 5vw;
    }
    button.state {
        width: 10vw;
        height: 10vw;
        border-radius: 10vw;
    }
    button#edit {
        font-size: 4vw;
    }
    button#play::after {
        border-top-width: 3vw;
        border-bottom-width: 3vw;
        border-left-width: 3vw;
        margin-left: 4vw;
    }
    button#play:hover::after {
        margin-left: 3.5vw;
    }
}