html {
    width: 100%;
    height: 100%;
}
body {
    width: 100%;
    height: 100%;
}
/* https://www.dafont.com/04b-03.font */
@font-face {
    font-family: '04b03';
    src: url('assets/fonts/04b03.woff2') format('woff2'),
            url('assets/fonts/04b03.woff') format('woff');  
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}
.unselectable {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}
.unclickable {
    pointer-events: none;
}
.display-none {
    display: none;
}
.game {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}
.game-canvas {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}
.loading-cover {
    background-color: rgb(15, 16, 22);
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 3;
    display: table;
    text-align: center;
}
.loading-text {
    color: white;
    font-size: 64px;
    display: table-cell;
    vertical-align: middle;
}
.game-ui {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 2;
    color: white;
    font-size: 40px;
}
body {
    background-color: rgb(15, 16, 22);
    margin: 0 0;
    font-family: '04b03';
    transform: scale(1);
    transform-origin: 0 0;
    overflow-y: hidden;
    overflow-x: hidden;
}
.health {
    color: #54fd20;
}
.money {
    color: yellow;
}
.fps-meter {
    visibility: hidden;
}
.fps {
    color: blue;
}
.game-ui-topleft {
    position: absolute;
    top: 0;
    left: 0;
    margin: 30px;
}
.game-ui-topright {
    position: absolute;
    top: 0;
    right: 0;
    margin: 32px;
    text-align: right;
    text-shadow: 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22);
}
.game-ui-bottomleft {
    position: absolute;
    bottom: 0;
    left: 0;
    margin-left: 20px;
    margin-bottom: 10px;
    font-size: 24px;
    text-shadow: 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22);
}
.game-ui-bottomright {
    width: 320px;
    height: 160px;

    position: absolute;
    bottom: 0;
    right: 0;
}
.combat-log {
    font-size: 16px;
    overflow-y: scroll;
    display: flex;
    flex-direction: column-reverse;
    text-shadow: 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22), 0 0 5px rgb(15, 16, 22);
    scrollbar-width: thin;                  /* firefox */
    scrollbar-color: rgb(32, 32, 32) rgb(15, 16, 22);   /* firefox */
}

/* victory/defeat popup */
.game-popup {
    width: 500px;
    height: 350px;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    background: url('assets/ui/background/popup-background.png');
    opacity: 0;
    -webkit-transition: opacity 3s;
    -moz-transition: opacity 3s;     
    transition: opacity 3s;
}
.game-popup.fade {
    opacity: 1;
}
.popup-title {
    position: absolute;
    text-align: center;
    color: #54fd20;
    left: 50%;
    transform: translate(-50%, 0);
    top: 30px;
    font-size: 40px;
}
.popup-victory {
    color: #54fd20;
}
.popup-defeat {
    color: red;
}
.popup-main {
    width: 460px;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    font-size: 24px;
}
.popup-play-again {
    color: #afb917;
    position: absolute;
    text-align: center;
    left: 50%;
    bottom: 30px;
    transform: translate(-50%, 0);
}
.popup-play-again:hover {
    color: yellow;
    cursor: url('assets/ui/cursor.png'), pointer;
}


/* buttons */

/* pause-play button */
.play-button {
    display: inline-block;
    width: 100px;
    height: 40px;
    background: url('assets/ui/buttons/button-play.png');
    cursor: url('assets/ui/cursor.png'), pointer;
}
.play-button:hover {
    background: url('assets/ui/buttons/button-play-hover.png');
}
.play-button:active {
    background: url('assets/ui/buttons/button-play-active.png');
}
.pause-button {
    display: inline-block;
    width: 100px;
    height: 40px;
    background: url('assets/ui/buttons/button-pause.png');
    cursor: url('assets/ui/cursor.png'), pointer;
}
.pause-play-button {
    margin-bottom: 5px;
}
.pause-button:hover {
    background: url('assets/ui/buttons/button-pause-hover.png');
}
.pause-button:active {
    background: url('assets/ui/buttons/button-pause-active.png');
}

/* speedup-button */
.speedup-button {
    margin-bottom: 5px;
    display: inline-block;
    width: 100px;
    height: 40px;
    background: url('assets/ui/buttons/button-speedup.png');
    cursor: url('assets/ui/cursor.png'), pointer;
}
.speedup-button:hover {
    background: url('assets/ui/buttons/button-speedup-hover.png');
}
.speedup-button:active {
    background: url('assets/ui/buttons/button-speedup-active.png');
}

.game-speed {
    margin-bottom: 5px;
    display: inline-block;
    width: 100px;
    height: 40px;
    vertical-align: middle;
    font-size: 24px;
}

/* tower selection */
.tower-select {
    width: 220px;
    height: 220px;
    background: url('assets/ui/background/tower-select-background.png');
    position: relative;
}
.tower-icon {
    width: 60px;
    height: 60px;
    cursor: url('assets/ui/cursor.png'), pointer;
    position: absolute;
}
.tower-disabled {
    cursor: url('assets/ui/cursor.png'), default;
}
.tower-cost {
    font-size: 16px;
    color: #54fd20;
    text-shadow: 0 0 2px black, 0 0 2px black, 0 0 2px black, 0 0 2px black;
    text-align: center;
    position: absolute;
    bottom: 3px;
    left: 50%;
    transform: translate(-50%, 0);
}
.tower-disabled > .tower-cost {
    color: red;
}
.tower-disabled > .tower-coming-soon {
    color: rgb(59, 160, 255);
}

/* tower 0 0 */
.tower-0-0 {
    background: url('assets/ui/buttons/button-ballistic-turret.png');
    top: 12px;
    left: 12px;
}
.tower-0-0:hover {
    background: url('assets/ui/buttons/button-ballistic-turret-hover.png');
}
.tower-0-0:active {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-0-0.tower-selected {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-0-0.tower-disabled {
    background: url('assets/ui/buttons/button-ballistic-turret-disabled.png');
}

/* tower 0 1 */
.tower-0-1 {
    background: url('assets/ui/buttons/button-flame-turret.png');
    top: 12px;
    left: 80px;
}
.tower-0-1:hover {
    background: url('assets/ui/buttons/button-flame-turret-hover.png');
}
.tower-0-1:active {
    background: url('assets/ui/buttons/button-flame-turret-active.png');
}
.tower-0-1.tower-selected {
    background: url('assets/ui/buttons/button-flame-turret-active.png');
}
.tower-0-1.tower-disabled {
    background: url('assets/ui/buttons/button-flame-turret-disabled.png');
}

/* tower 0 2 */
.tower-0-2 {
    background: url('assets/ui/buttons/button-oil-turret.png');
    top: 12px;
    left: 148px;
}
.tower-0-2:hover {
    background: url('assets/ui/buttons/button-oil-turret-hover.png');
}
.tower-0-2:active {
    background: url('assets/ui/buttons/button-oil-turret-active.png');
}
.tower-0-2.tower-selected {
    background: url('assets/ui/buttons/button-oil-turret-active.png');
}
.tower-0-2.tower-disabled {
    background: url('assets/ui/buttons/button-oil-turret-disabled.png');
}

/* tower 1 0 */
.tower-1-0 {
    background: url('assets/ui/buttons/button-nova-turret.png');
    top: 80px;
    left: 12px;
}
.tower-1-0:hover {
    background: url('assets/ui/buttons/button-nova-turret-hover.png');
}
.tower-1-0:active {
    background: url('assets/ui/buttons/button-nova-turret-active.png');
}
.tower-1-0.tower-selected {
    background: url('assets/ui/buttons/button-nova-turret-active.png');
}
.tower-1-0.tower-disabled {
    background: url('assets/ui/buttons/button-nova-turret-disabled.png');
}

/* tower 1 1 */
.tower-1-1 {
    background: url('assets/ui/buttons/button-laser-turret.png');
    top: 80px;
    left: 80px;
}
.tower-1-1:hover {
    background: url('assets/ui/buttons/button-laser-turret-hover.png');
}
.tower-1-1:active {
    background: url('assets/ui/buttons/button-laser-turret-active.png');
}
.tower-1-1.tower-selected {
    background: url('assets/ui/buttons/button-laser-turret-active.png');
}
.tower-1-1.tower-disabled {
    background: url('assets/ui/buttons/button-laser-turret-disabled.png');
}

/* tower 1 2 */
.tower-1-2 {
    background: url('assets/ui/buttons/button-ballistic-turret.png');
    top: 80px;
    left: 148px;
}
.tower-1-2:hover {
    background: url('assets/ui/buttons/button-ballistic-turret-hover.png');
}
.tower-1-2:active {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-1-2.tower-selected {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-1-2.tower-disabled {
    background: url('assets/ui/buttons/button-ballistic-turret-disabled.png');
}

/* tower 2 0 */
.tower-2-0 {
    background: url('assets/ui/buttons/button-ballistic-turret.png');
    top: 148px;
    left: 12px;
}
.tower-2-0:hover {
    background: url('assets/ui/buttons/button-ballistic-turret-hover.png');
}
.tower-2-0:active {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-2-0.tower-selected {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-2-0.tower-disabled {
    background: url('assets/ui/buttons/button-ballistic-turret-disabled.png');
}

/* tower 2 1 */
.tower-2-1 {
    background: url('assets/ui/buttons/button-ballistic-turret.png');
    top: 148px;
    left: 80px;
}
.tower-2-1:hover {
    background: url('assets/ui/buttons/button-ballistic-turret-hover.png');
}
.tower-2-1:active {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-2-1.tower-selected {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-2-1.tower-disabled {
    background: url('assets/ui/buttons/button-ballistic-turret-disabled.png');
}

/* tower 2 2 */
.tower-2-2 {
    background: url('assets/ui/buttons/button-ballistic-turret.png');
    top: 148px;
    left: 148px;
}
.tower-2-2:hover {
    background: url('assets/ui/buttons/button-ballistic-turret-hover.png');
}
.tower-2-2:active {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-2-2.tower-selected {
    background: url('assets/ui/buttons/button-ballistic-turret-active.png');
}
.tower-2-2.tower-disabled {
    background: url('assets/ui/buttons/button-ballistic-turret-disabled.png');
}

/* scrollbar */
::-webkit-scrollbar {
    width: 8px;
}
::-webkit-scrollbar-track {
    background: rgb(15, 16, 22);
}
::-webkit-scrollbar-thumb {
    background: rgb(32, 32, 32);
}
::-webkit-scrollbar-thumb:hover {
    background: rgb(44, 44, 44);
}