/* Copyright © 2023 Daniel Bark. All rights reserved. */

@font-face {
    font-family: 'Roboto';
    src: local('Roboto-Regular.ttf') format('truetype');
    font-weight: 400;
    font-style: normal;
}

:root {
    --menu-element-color: rgb(187, 207, 193);
    --input-element-active-color: rgb(196, 82, 82);
    --coffee-color: rgb(173, 65, 65);
    --input-element-color: rgb(65, 65, 65);
    --pendulum-black-color: rgb(41, 41, 41);
    --pendulum-white-color: rgb(217, 217, 217);
    --pendulum-gray-color: rgb(150, 150, 150);
    --pendulum-link-color: rgb(174, 243, 255);
    --border-color: rgb(100, 100, 100);
    --scrollbar-thumb-color: rgb(100, 100, 100);
}

html,
body {
    height: 100%;
    margin: 0;
    padding: 0;
    overflow: hidden;
}

#pendulumMainDiv * {
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    font-family: 'Roboto', sans-serif;
}

#pendulumMainDiv {
    width: 100%;
    height: 100%;
    background-color: var(--pendulum-black-color);
    position: relative;
    left: 0%;
    top: 0%;
    display: block;
}

#activateJavascript {
    top: 40%;
    width: 80%;
    text-align: center;
    margin-left: 10%;
    margin-right: 10%;
    color: var(--pendulum-white-color);
    font-size: 0.8rem;
    position: absolute;
}

/* screen is in tablet mode */
@media (min-aspect-ratio: 0.6) and (max-aspect-ratio: 1.5) {
    #canvasDiv {
        width: calc(60 * var(--vh));
        height: calc(60 * var(--vh));
        transform: translate(0, 3%);
        margin: auto auto;
    }

    #canvasDiv.editMode {
        width: calc(28 * var(--vh));
        height: calc(28 * var(--vh));
        transform: translate(0, 3%);
        margin: auto auto;
    }

    #canvasDiv.fullScreenMode {
        width: min(calc(100 * var(--vw)), calc(100 * var(--vh)));
        height: min(calc(100 * var(--vw)), calc(100 * var(--vh)));
        transform: translate(0, 0);
        margin: auto auto;
    }

    #inputDiv * {
        font-size: calc(2 * var(--vh));
    }

    #inputDiv {
        width: calc(50 * var(--vh));
        height: calc(75 * var(--vh));

        position: absolute;
        bottom: 10%;
        left: 0%;
        right: 0%;
        margin: auto;
    }

    #menubarDiv {
        font-size: calc(2 * var(--vh));
        width: calc(60 * var(--vh));
        height: calc(10 * var(--vh));
        left: 0%;
        right: 0%;
        column-gap: 7%;
    }

    #pendulumMainDiv * {
        border-radius: calc(1 * var(--vh));
    }

    #infoDiv {
        width: calc(50 * var(--vh));
        height: calc(50 * var(--vh));
        font-size: calc(1.8 * var(--vh));
    }

    #aboutDiv {
        width: calc(50 * var(--vh));
        height: calc(50 * var(--vh));
        font-size: calc(1.8 * var(--vh));
    }

    .advertisement {
        width: calc(50 * var(--vh));
        height: calc(50 * var(--vh));
        font-size: calc(1.8 * var(--vh));
    }

    #advertisementBannerDiv {
        width: calc(50 * var(--vh));
        height: calc(41.666 * var(--vh));
        top: 40%;
    }

    #buyCoffee {
        width: 40%;
        padding: 5%;
    }

    #proBannerDiv {
        width: calc(18 * var(--vh));
        height: calc(18 * var(--vh));
    }

    #fiverrLogoMakerBannerDiv {
        width: calc(24 * var(--vh));
        height: calc(12 * var(--vh));
    }

    .continueButtonDiv {
        width: 50%;
        height: 13.333333%;
    }

    #shortcutInfo {
        display: none;
    }
}

/* screen is in landscape mode */
@media (min-aspect-ratio: 1.5) {
    #canvasDiv {
        width: calc(60 * var(--vh));
        height: calc(60 * var(--vh));
        transform: translate(0, 3%);
        margin: auto auto;
    }

    #canvasDiv.editMode {
        width: min(calc(70 * var(--vh)), calc(45 * var(--vw)));
        height: min(calc(70 * var(--vh)), calc(45 * var(--vw)));
        transform: translate(-52%, calc(10 * var(--vh)));
        margin: auto auto;
    }

    #canvasDiv.fullScreenMode {
        width: min(calc(100 * var(--vw)), calc(100 * var(--vh)));
        height: min(calc(100 * var(--vw)), calc(100 * var(--vh)));
        transform: translate(0, 0);
        margin: auto auto;
    }

    #inputDiv * {
        font-size: calc(2 * var(--vh));
    }

    #inputDiv {
        width: calc(50 * var(--vh));
        height: calc(75 * var(--vh));

        position: absolute;
        bottom: 10%;
        left: 0%;
        right: 0%;
        margin: auto;
    }

    #inputDiv.editMode {
        width: min(calc(50 * var(--vh)), calc(44 * var(--vw)));
        height: min(calc(75 * var(--vh)), calc(66 * var(--vw)));

        position: absolute;
        top: -1%;
        left: 45%;
        right: 0%;
        margin: auto;
    }

    #menubarDiv {
        font-size: calc(2 * var(--vh));
        width: calc(60 * var(--vh));
        height: calc(10 * var(--vh));
        left: 0%;
        right: 0%;
        column-gap: 7%;
    }

    #pendulumMainDiv * {
        border-radius: calc(1 * var(--vh));
    }

    #infoDiv {
        width: calc(75 * var(--vh));
        height: calc(50 * var(--vh));
        font-size: calc(1.8 * var(--vh));
    }

    #aboutDiv {
        width: calc(75 * var(--vh));
        height: calc(50 * var(--vh));
        font-size: calc(1.8 * var(--vh));
    }

    .advertisement {
        width: calc(75 * var(--vh));
        height: calc(50 * var(--vh));
        font-size: calc(1.8 * var(--vh));
    }

    #advertisementBannerDiv {
        width: calc(75 * var(--vh));
        height: calc(62.5 * var(--vh));
        top: 40%;
    }

    #buyCoffee {
        width: 26.666%;
        padding: 3.3333%;
    }

    #proBannerDiv {
        width: calc(18 * var(--vh));
        height: calc(18 * var(--vh));
    }

    #fiverrLogoMakerBannerDiv {
        width: calc(24 * var(--vh));
        height: calc(12 * var(--vh));
    }

    .continueButtonDiv {
        width: 33.333333%;
        height: 13.333333%;
    }

    #shortcutInfo {
        display: block;
    } 
}

/* screen is in portrait mode */
@media (max-aspect-ratio: 0.6) {
    #canvasDiv {
        width: calc(100 * var(--vw));
        height: calc(100 * var(--vw));
        transform: translate(0, 3%);
        margin: auto auto;
    }

    #canvasDiv.editMode {
        width: min(calc(100 * var(--vw)), max(calc(46.666 * var(--vw)), calc(28 * var(--vh))));
        height: min(calc(100 * var(--vw)), max(calc(46.666 * var(--vw)), calc(28 * var(--vh))));
        transform: translate(0, 3%);
        margin: auto auto;
    }

    #canvasDiv.fullScreenMode {
        width: calc(100 * var(--vw));
        height: calc(100 * var(--vw));
        transform: translate(0, 30%);
        margin: auto auto;
    }

    #inputDiv * {
        font-size: min(calc(4 * var(--vw)), calc(2 * var(--vh)));
    }

    #inputDiv {
        width: min(calc(100 * var(--vw)), calc(50 * var(--vh)));
        height: min(calc(150 * var(--vw)), calc(75 * var(--vh)));

        position: absolute;
        bottom: 10%;
        left: 0%;
        right: 0%;
        margin: auto;
    }

    #menubarDiv {
        font-size: calc(4 * var(--vw));
        width: calc(94 * var(--vw));
        height: calc(16.666 * var(--vw));
        left: 3%;
        right: 3%;
        column-gap: 5%;
    }

    #pendulumMainDiv * {
        border-radius: calc(1.666 * var(--vw));
    }

    #infoDiv {
        width: calc(83.333 * var(--vw));
        height: calc(100 * var(--vw));
        font-size: calc(3.2 * var(--vw));
    }

    #aboutDiv {
        width: calc(83.333 * var(--vw));
        height: calc(100 * var(--vw));
        font-size: calc(3.2 * var(--vw));
    }

    .advertisement {
        width: calc(83.333 * var(--vw));
        height: calc(100 * var(--vw));
        font-size: calc(3.2 * var(--vw));
    }

    #advertisementBannerDiv {
        width: calc(83.333 * var(--vw));
        height: calc(69.444 * var(--vw));
        top: 40%;
    }

    #buyCoffee {
        width: 40%;
        padding: 5%;
    }

    #proBannerDiv {
        width: calc(30 * var(--vw));
        height: calc(30 * var(--vw));
    }

    #fiverrLogoMakerBannerDiv {
        width: calc(40 * var(--vw));
        height: calc(20 * var(--vw));
    }

    .continueButtonDiv {
        width: 50%;
        height: 12%;
    }

    #shortcutInfo {
        display: none;
    }
}

/* main divs */
/* canvasDiv causes latency on several android devices when set to display: none/block so I use a class to hide it */
#canvasDiv.hide {
    width: 0px;
    height: 0px;
    transform: translate(0, 0);
    margin: 0 0;
}

#inputDiv {
    display: none;
}

#infoDiv {
    position: absolute;
    left: 0%;
    right: 0%;
    top: 0%;
    margin: auto;
    color: var(--pendulum-white-color);
    background-color: transparent;
    display: none;
}

#aboutDiv {
    position: absolute;
    top: 0%;
    left: 0%;
    right: 0%;
    margin: auto;
    color: var(--pendulum-white-color);
    background-color: transparent;
    display: none;
}

.advertisement {
    position: absolute;
    top: 3%;
    left: 0%;
    right: 0%;
    margin: auto;
    color: var(--pendulum-white-color);
    background-color: transparent;
    display: none;
}

#advertisementMark {
    color: var(--pendulum-gray-color);
}

#infoText {
    color: var(--pendulum-white-color);
}

#canvas {
    width: 100%;
    height: 100%;
}

#reviewDiv {
    width: min(calc(100 * var(--vw)), calc(60 * var(--vh)));
    height: min(calc(150 * var(--vw)), calc(90 * var(--vh)));
    font-size: min(calc(4.4444 * var(--vw)), calc(2.66666 * var(--vh)));
    position: absolute;
    top: 3%;
    left: 0%;
    right: 0%;
    margin: auto;
    display: none;
}

/* div components */

#playButtonDiv {
    left: 15%;
    top: 85%;
    position: absolute;
}

#playButtonDiv.pro {
    left: 30%;
    top: 85%;
    position: absolute;
}

#playButtonDiv.editMode {
    left: 5%;
    top: 85%;
    position: absolute;
}

#resetButtonDiv {
    right: 42.5%;
    top: 85%;
    position: absolute;
}

#resetButtonDiv.pro {
    right: 30%;
    top: 85%;
    position: absolute;
}

#resetButtonDiv.editMode {
    left: 30%;
    top: 85%;
    position: absolute;
}

#donateButtonDiv {
    right: 15%;
    top: 85%;
    position: absolute;
}

#donateButtonDiv.editMode {
    right: 30%;
    top: 85%;
    position: absolute;
}

#donateButtonDiv.pro {
    display: none;
}

#demoTextDiv {
    left: 0%;
    width: 100%;
    top: 65%;
    text-align: center;
    overflow: hidden;
    white-space: nowrap;
    position: absolute;
    display: none;
    color: var(--coffee-color);
}

#presetSelectbox {
    left: 30%;
    top: 70%;
    position: absolute;
}

#numberOfBallsLabelDiv {
    top: 21%;
    left: 5%;
    position: absolute;
}

#ballsNumberPanel {
    top: 25%;
    left: 5%;
    position: absolute;
}

#bpmLabelDiv {
    top: 36%;
    left: 5%;
    position: absolute;
}

#bpmNumberPanel {
    top: 40%;
    left: 5%;
    position: absolute;
}

#divisionsLabelDiv {
    top: 51%;
    left: 5%;
    position: absolute;
}

#divisionsNumberPanel {
    top: 55%;
    left: 5%;
    position: absolute;
}

#instrumentLabelDiv {
    top: 66%;
    left: 5%;
    position: absolute;
}

#instrumentSelectbox {
    top: 70%;
    left: 5%;
    position: absolute;
}

#rootKeyLabelDiv {
    top: 21%;
    left: 55%;
    position: absolute;
}

#rootKeyNumberPanel {
    top: 25%;
    left: 55%;
    position: absolute;
}

#scaleLabelDiv {
    top: 36%;
    left: 55%;
    position: absolute;
}

#scaleSelectbox {
    top: 40%;
    left: 55%;
    position: absolute;
}

#viewLabelDiv {
    top: 51%;
    left: 55%;
    position: absolute;
}

#viewSelectbox {
    top: 55%;
    left: 55%;
    position: absolute;
}

#colorLabelDiv {
    top: 66%;
    left: 55%;
    position: absolute;
}

#colorSelectbox {
    top: 70%;
    left: 55%;
    position: absolute;
}

#menubarDiv {
    position: absolute;
    bottom: 3%;
    margin: auto;
    display: none;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
}


#buyCoffee {
    color: White;
    text-align: right;
    background-color: var(--coffee-color);
    background-image: url('svg/coffee.svg');
    background-position: 5% 50%;
    background-repeat: no-repeat;
    background-size: 18%;
    cursor: pointer;
}

#proBannerDiv {
    background-image: url('pro/android/android-launchericon-192-192.png');
    /*background-color: rgb(144, 153, 236);*/
    background-size: 110% 110%;
    background-position: center;
    background-repeat: no-repeat;
    margin: auto;
    cursor: pointer;
    border-radius: 100%;
    /* center text horizontally but not vertically */
    text-align: center;
    display: flex;
    justify-content: center;
}

#advertisementFrameDiv {
    width: 300px;
    height: 250px;
    position: absolute;
    top: 0%;
    left: 0;
    right: 0;
    margin: auto;
    color: var(--pendulum-white-color);
    background-color: transparent;
    border: 3px solid var(--pendulum-white-color);
}

#advertisementBannerDiv {
    /* position absolute is needed to center div horizontally but not vertically */
    position: absolute;
    left: 0;
    right: 0;
    margin: auto;
    overflow: hidden;
}

#fiverrLogoMakerBannerDiv {
    background-image: url('adBanner/Fiverr-LogoMaker.svg');
    background-color: #1dbf73;
    background-size: 70% 70%;
    background-position: center;
    background-repeat: no-repeat;
    margin: auto;
    cursor: pointer;
}

#reviewText {
    color: var(--pendulum-white-color);
    text-align: center;
    top: 30%;
    left: 5%;
    position: absolute;
    width: 90%;
}

#reviewButton {
    top: 45%;
    left: 10%;
    position: absolute;
}

#noThanksButton {
    top: 45%;
    right: 10%;
    position: absolute;
}

/* buttons */

.buttonDiv {
    width: 15%;
    height: 10%;
    color: var(--pendulum-white-color);
    background-color: var(--input-element-color);
    outline: none;
    cursor: pointer;
    font-size: 1rem;
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;
}

.buttonIconDiv {
    width: 40%;
    height: 40%;
    margin: 30% 30%;
}

.buttonDonateIconDiv {
    width: 50%;
    height: 50%;
    margin: 20% 20%;
}

.menuButtonDiv {
    color: var(--pendulum-white-color);
    background-color: var(--input-element-color);
    border: none;
    border-radius: 100% !important;
    outline: none;
    cursor: pointer;
    margin-top: 45%;
    /* center text */
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;
}

.menuButtonDiv.active {
    color: var(--coffee-color);
}

.continueButtonDiv {
    color: var(--pendulum-white-color);
    background-color: var(--input-element-color);
    outline: none;
    cursor: pointer;
    text-align: center;
    margin: auto;
    display: flex;
    justify-content: center;
    align-items: center;
}

.standardButton {
    width: 30%;
    height: 10%;
    color: var(--pendulum-white-color);
    background-color: var(--input-element-color);
    outline: none;
    cursor: pointer;
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;
}

/* text */

.labelDiv {
    width: 40%;
    height: 10%;
    color: var(--pendulum-white-color);
    text-align: center;
    transform: translate(0%, 3%);
}

a {
    color: var(--pendulum-link-color);
    text-decoration: none;
}

li {
    list-style-position: outside;
}

ul {
    padding-left: 0%;
}

/* number panels */

.numberPanel {
    box-sizing: border-box;
    width: 40%;
    height: 10%;
    background-color: var(--input-element-color);
    border: none;
    outline: none;
    text-align: center;
    cursor: pointer;
}

.numberPanelOutput {
    width: 50%;
    height: 100%;
    position: absolute;
    left: 25%;
    top: 0%;
    background-color: var(--input-element-color);
    color: var(--pendulum-white-color);
    border: none;
    outline: none;
    margin: 0%;
    padding: 0%;
    display: flex;
    justify-content: center;
    align-items: center;
    cursor: pointer;
}

.numberPanelUpButton {
    width: 50%;
    height: 100%;
    position: absolute;
    right: 0%;
    top: 0%;
    background-color: transparent;
    outline: none;
    text-align: center;
    cursor: pointer;
    background-image: url('svg/triangle.svg');
    background-size: 25%;
    transform: rotate(90deg);
    background-position: 50% 20%;
    background-repeat: no-repeat;
}

.numberPanelDownButton {
    width: 50%;
    height: 100%;
    position: absolute;
    left: 0%;
    top: 0%;
    background-color: transparent;
    outline: none;
    text-align: center;
    cursor: pointer;
    background-image: url('svg/triangle.svg');
    background-size: 25%;
    transform: rotate(-90deg);
    background-position: 50% 20%;
    background-repeat: no-repeat;
}

/* select boxes */

.select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    width: 40%;
    height: 10%;
    background-color: var(--input-element-color);
    color: var(--pendulum-white-color);
    border: none;
    outline: none;
    text-align: left;
    cursor: pointer;
    text-align-last: center;
    font-size: 1rem;
    background-image: url('svg/menu.svg');
    background-position: 95% 102%;
    background-repeat: no-repeat;
    background-size: 10%;
    margin: 0%;
    padding: 0%;
    scrollbar-width: 7%;
    scrollbar-color: var(--input-element-color);
}

option:disabled { color: #858585; }

.box {
    background-color: var(--input-element-color);
    color: var(--pendulum-white-color);
}

::-webkit-scrollbar {
    background: var(--input-element-color);
    width: thin;
}

::-webkit-scrollbar-track {
    background: var(--input-element-color);
    border: none;
}

::-webkit-scrollbar-thumb {
    background: var(--scrollbar-thumb-color);
}

::-webkit-scrollbar-thumb:hover {
    background: var(--scrollbar-thumb-color);
}

/* save button must be at the end to overwrite */

#saveButtonDiv {
    right: 5%;
    top: 85%;
    position: absolute;
    cursor: default;
    opacity: 0.5;
}

#saveButtonDiv.active {
    opacity: 1;
    cursor: pointer;
}