@import "https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap";

/* GLOBAL */
html,
body {
    margin: 0;
    padding: 0;
    overflow: hidden;
    font-size: 1em;
    --font-size-bigger: 2rem;
    --font-size-big: 1rem;
    --font-size-medium: .7rem;
    --font-size-little: .7rem
}

h1,
h2,
h3,
h4,
h5,
h6,
p,
a,
button,
label,
li {
    font-family: "Inter", sans-serif;
    text-decoration: none
}

a,
p,
button,
label {
    font-size: 1rem;
    font-weight: 400
}

body {
    width: 100vw;
    height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    text-align: center;
    --main-color-dark: #0F1020;
    --main-color-dark-opacity: #0f1020cc;
    --main-color-dark-opacity-low: #e2e2e2;
    --main-bg-color: #FFFCF9;
    transition: all .2s
}

body.active {
    background-color: var(--main-color-dark-opacity-low) !important
}

/* BODY COLORS */
body.color-scales {
    --main-color: #ff5e22;
    --main-color-light: #ff7f49;
    --main-color-light-opacity: #ff7e49b3;
    --main-color-light-opacity-low: #ff7e4966;
    background-color: var(--main-bg-color);
    color: var(--main-color)
}

body.color-arpeggios {
    --main-color: #26547C;
    --main-color-light: #3a6a9f;
    --main-color-light-opacity: #3a6a9fb3;
    --main-color-light-opacity: #3a6a9f66;
    color: var(--main-color)
}

body.color-modes {
    --main-color: #a57504;
    --main-color-light: #c2881e;
    --main-color-light-opacity: #c2881eb3;
    --main-color-light-opacity-low: #c2881e66;
    color: var(--main-color)
}

body.color-green {
    --main-color: #108b6a;
    --main-color-light: #21a67e;
    --main-color-light-opacity: #21a67eb3;
    --main-color-light-opacity-low: #21a67e66;
    color: var(--main-color)
}

body.color-red {
    --main-color: #f73934;
    --main-color-light: #ff564f;
    --main-color-light-opacity: #ff564fb3;
    --main-color-light-opacity-low: #ff564f66;
    color: var(--main-color)
}

body.color-sun {
    --main-color: #d8b400;
    --main-color-light: #f0c91c;
    --main-color-light-opacity: #f0c91cb3;
    --main-color-light-opacity-low: #f0c91c66;
    color: var(--main-color)
}

body.color-apple {
    --main-color: #3c891f;
    --main-color-light: #55a535;
    --main-color-light-opacity: #55a535b3;
    --main-color-light-opacity-low: #55a53566;
    color: var(--main-color)
}

body.color-darkblue {
    --main-color: #202C39;
    --main-color-light: #3b4a59;
    --main-color-light-opacity: #3b4a59b3;
    --main-color-light-opacity-low: #3b4a5966;
    color: var(--main-color)
}

body.color-olive {
    --main-color: #99AA38;
    --main-color-light: #b1bf55;
    --main-color-light-opacity: #b1bf55b3;
    --main-color-light-opacity-low: #b1bf5566;
    color: var(--main-color)
}

body.color-marine {
    --main-color: #187795;
    --main-color-light: #2a93b2;
    --main-color-light-opacity: #2a93b2b3;
    --main-color-light-opacity-low: #2a93b266;
    color: var(--main-color)
}

/* MAIN */
.button {
    display: block;
    background-color: var(--main-color);
    border-radius: 3px;
    border: none;
    text-transform: capitalize;
    color: var(--main-bg-color);
    padding: 8px 20px;
    font-weight: 600
}

.main-title {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: var(--main-color);
    transition: all 1s;
    z-index: 1000000000
}

.main-title-text {
    padding: 20px 10px;
    margin: 0;
    transition: all 1s
}

.main-title-text a {
    font-weight: 900;
    color: #fff;
    font-size: var(--font-size-big);
    margin: 0;
    padding: 0
}

main.app {
    height: calc(100vh - 120px);
    width: 100%;
    overflow: hidden;
    color: var(--main-bg-color);
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    padding-bottom: 20vh;
    position: relative;
    max-width: 750px
}

/* MENU OPTIONS */
.options {
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    transition: all 1s
}

.options section.menu {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    background-color: var(--main-color);
    position: relative;
    z-index: 150
}

.options .menu ul {
    display: flex;
    justify-content: center;
    align-items: center;
    color: #fff;
    background-color: #fff;
    transition: all 1s;
    width: 100%;
    max-width: 750px
}

.options .menu ul li {
    flex: 1 1 33.333333%;
    background-color: var(--main-color-light);
    padding: 20px;
    transition: all 1s;
    font-size: var(--font-size-medium);
    font-weight: 700
}

.options section.filter {
    padding: 10px;
    display: flex;
    position: relative
}

.options button.filter-button {
    width: 50px;
    height: 50px;
    border: unset;
    background-color: var(--main-color-light);
    color: #fff;
    display: flex;
    font-size: 30px;
    justify-content: center;
    align-items: center;
    border-radius: 5px;
    transition: all .5s;
    z-index: 100
}

/* MENU OPTION FILTER */
.options .filter div.filter-options {
    color: var(--main-color);
    background-color: var(--main-color-dark-opacity-low);
    width: 100vw;
    max-width: 750px;
    position: absolute;
    top: 0;
    left: 0;
    height: 95vh;
    transform: translateY(-100%);
    opacity: 0;
    transition: all .2s;
    z-index: 11
}

.options .filter div.filter-options.active {
    transform: translateY(0);
    opacity: 100%
}

.options .filter article.filter-options-title {
    text-align: center;
    padding: 26px;
    color: var(--main-color-dark);
    font-weight: 700;
    border-bottom: 1px solid #d3d3d3;
    font-size: var(--font-size-medium)
}

.options .filter article.filter-options-elements {
    padding: 25px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center
}

.options .filter article.filter-options-elements p {
    padding: 10px 15px;
    margin: 7px;
    color: var(--main-color-dark);
    border: 1.5px solid var(--main-color-dark);
    border-radius: 5px;
    font-weight: 500;
    transition: all .5s;
    order: 1;
    cursor: pointer;
    font-size: var(--font-size-little)
}

.options .filter article.filter-options-elements p:hover {
    background-color: var(--main-color-dark-opacity-low)
}

.options .filter article.filter-options-elements p.active {
    background-color: var(--main-color-light);
    color: #fff;
    border-color: var(--main-color-light);
    order: 0
}

.options .filter article.filter-options-elements p.active .icon-cross {
    display: inline
}

.options .filter article.filter-options-elements p.active:hover {
    background-color: var(--main-color-light-opacity);
    color: #fff;
    border-color: var(--main-color-light-opacity)
}

/* APP DISPLAY */
.display {
    padding-top: 16vh;
}

.display .play {
    display: none;
    font-size: var(--font-size-bigger);
    font-weight: 900;
    text-transform: uppercase;
    padding: 0 30px;
    margin: 0;
    margin-bottom: 20px;
    color: var(--main-color);
    transition: all 1s
}

.display .result {
    font-size: var(--font-size-bigger);
    font-weight: 900;
    padding: 0 30px;
    margin: 0;
    color: var(--main-color);
    transition: all 1s
}

/* METRONOME */
.metronome-element {
    width: 75%;
    margin: auto;
    padding: 25px 45px 50px;
    max-width: 550px;
    position: absolute;
    bottom: 1vh;
    transition: all 1s;
    color: var(--main-bg-color);
    background-color: var(--main-color-light);
    border-radius: 8px;
    z-index: 10;
    transform: translateY(85%);
}

.metronome-element.active {
    transform: translateY(0)
}

.metronome-element h3 {
    font-size: var(--font-size-big);
    color: var(--main-color-dark);
    font-weight: 700;
    cursor: pointer;
}

.metronome-element h4 {
    font-size: var(--font-size-medium);
    color: var(--main-color-dark);
    font-weight: 600;
    text-align: left;
    margin: 0 0 20px 0;
}

section.metronome-title {
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 35px;
    position: relative
}

section.metronome-title .metronome-button {
    position: absolute;
    left: -25px;
    width: 50px;
    height: 50px;
    border: unset;
    background-color: var(--main-color-dark-opacity-low);
    color: var(--main-color-dark);
    display: flex;
    font-size: 30px;
    justify-content: center;
    align-items: center;
    border-radius: 5px;
    transition: all .5s;
    z-index: 100;
    cursor: pointer
}

.metronome-controls {
    --gap: .5rem;
    --color-bg: var(--main-color-dark);
    --color-text: var(--main-bg-color);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--gap);
    width: 100%;
    max-width: 100%;
    margin: 35px auto
}

.metronome-controls input[type="range"] {
    flex-basis: 100%;
    --thumb-size: 25px;
    --thumb-offset: -8px;
    --track-height: 8px;
    background-color: transparent;
    padding: 1rem 0;
    margin: 0;
    -webkit-appearance: none
}

.metronome-controls label {
    font-size: var(--font-size-little);
    color: var(--main-color-dark);
    font-weight: 600;
    text-align: left
}

.metronome-controls button {
    background: var(--main-color-dark-opacity-low);
    transition: all 1s;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    padding: .5rem 0;
    font-size: 30px;
    color: var(--main-color-dark);
    font-weight: 600;
    width: 50px;
    height: 50px;
    display: flex;
    justify-content: center;
}

.metronome-controls input[type="range"]::-webkit-slider-runnable-track {
    height: var(--track-height);
    background: var(--color-text);
    border: none;
    cursor: pointer
}

.metronome-controls input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    margin-top: var(--thumb-offset);
    width: var(--thumb-size);
    height: var(--thumb-size);
    background-color: var(--color-bg);
    border-radius: 50%;
    cursor: grab
}

.metronome-controls input[type="range"]::-moz-range-track {
    background-color: var(--color-primary);
    height: var(--track-height);
    border: none;
    cursor: pointer
}

.metronome-controls input[type="range"]::-moz-range-thumb {
    width: var(--thumb-size);
    height: var(--thumb-size);
    background-color: var(--color-bg);
    border-radius: 50%;
    cursor: grab
}

.metronome-element ul.metronome-menu-mode {
    display: flex;
    justify-content: center;
    align-items: center;
    color: #fff;
    background-color: #fff;
    transition: all 1s;
    width: 100%;
    max-width: 750px;
    border-radius: 10px;
    overflow: hidden;
    margin-bottom: 20px
}

.metronome-element ul.metronome-menu-mode li {
    transition: all 1s;
    flex: 1 1 50%;
    padding: 20px;
    font-size: var(--font-size-medium);
    font-weight: 700;
    color: var(--main-color-dark);
    background-color: var(--main-color-dark-opacity-low)
}

.metronome-element .keychange-options {
    align-items: center;
    justify-content: center;
}

.metronome-element .keychange-options p {
    font-size: var(--font-size-medium);
    color: var(--main-color-dark);
    font-weight: 400;
    text-align: center;
    margin: 15px;
}

.metronome-element .keychange-options .input-number {
    width: auto;
    font-size: var(--font-size-medium);
    padding: 5px;
    vertical-align: top;
    text-align: center;
    outline: none;
    border: none;
    font-weight: 800;
    border-radius: 5px;
}

.metronome-element ul.metronome-menu-sound {
    display: flex;
    justify-content: center;
    align-items: center;
    color: #fff;
    background-color: #fff;
    transition: all 1s;
    width: 100%;
    max-width: 750px;
    border-radius: 10px;
    overflow: hidden
}

.metronome-element ul.metronome-menu-sound li {
    transition: all 1s;
    flex: 1 1 33.333333333%;
    padding: 20px;
    font-size: var(--font-size-medium);
    font-weight: 700;
    color: var(--main-color-dark);
    background-color: var(--main-color-dark-opacity-low)
}

/* COMMON BUTTONS */
.options .menu ul li:hover,
.options button.filter-button:hover {
    background-color: var(--main-color-light-opacity);
    cursor: pointer
}

.options .menu ul li.active,
.metronome-element ul.metronome-menu-mode li.active,
.metronome-element ul.metronome-menu-sound li.active {
    background-color: var(--main-color-dark);
    color: var(--main-bg-color)
}

.options .menu ul li.active:hover,
.metronome-element ul.metronome-menu-mode li.active:hover,
.metronome-element ul.metronome-menu-sound li.active:hover {
    background-color: var(--main-color-dark-opacity);
    cursor: pointer
}

.options button.filter-button .icon-settings,
.options button.filter-button.active .icon-cross,
.metronome-element .metronome-button .icon-chevron-up,
.metronome-element.active .metronome-button .icon-chevron-down,
.metronome-element .metronome-controls #metronome-play.active .icon-stop,
.metronome-element .metronome-controls #metronome-play .icon-play,
section.metronome-mode.keychange div.keychange-options {
    display: flex
}

.options button.filter-button .icon-cross,
.options button.filter-button.active .icon-settings,
.options .filter article.filter-options-elements p .icon-cross,
.metronome-element.active .metronome-button .icon-chevron-up,
.metronome-element .metronome-button .icon-chevron-down,
.metronome-element .metronome-controls #metronome-play .icon-stop,
.metronome-element .metronome-controls #metronome-play.active .icon-play,
section.metronome-mode div.keychange-options {
    display: none
}

section.metronome-title .metronome-button:hover,
.metronome-controls button:hover {
    background-color: var(--main-bg-color)
}

.metronome-controls input[type="range"]:active::-webkit-slider-thumb,
.metronome-controls input[type="range"]:active::-moz-range-thumb {
    cursor: grabbing
}

.metronome-element ul.metronome-menu-mode li:hover,
.metronome-element ul.metronome-menu-sound li:hover {
    background-color: var(--main-bg-color);
    cursor: pointer
}

/* RESPONSIVE */
@media screen and (min-width: 300px) and (max-width: 469.98px) {

    html,
    body {
        --font-size-bigger: 2.3rem;
        --font-size-big: 2rem;
        --font-size-medium: 1rem;
        --font-size-little: 0.8rem
    }

    .metronome-element{
        padding: 25px 40px 25px;
        bottom: 14vh;
    }
}

@media screen and (min-width: 470px) and (max-width: 749.98px) {

    html,
    body {
        --font-size-bigger: 3.6rem;
        --font-size-big: 2.6rem;
        --font-size-medium: 1.5rem;
        --font-size-little: 1.4rem
    }

    .metronome-element{
        padding: 25px 40px 25px;
        bottom: 14vh;
    }
}

@media screen and (min-width: 750px) {

    html,
    body {
        --font-size-bigger: 3.2rem;
        --font-size-big: 2.2rem;
        --font-size-medium: 1.2rem;
        --font-size-little: 1.2rem
    }

    main.app {
        height: calc(100vh - 85.2px);
        padding-bottom: 20vh;
        overflow: visible
    }

    main.app::before {
        background-color: var(--main-color-light);
        position: absolute;
        content: "";
        height: 59.2px;
        width: 600px;
        top: 0;
        transition: all 1s;
        left: -600px
    }

    main.app::after {
        background-color: var(--main-color-light);
        position: absolute;
        content: "";
        height: 59.2px;
        width: 600px;
        top: 0;
        right: -600px;
        transition: all 1s
    }

    .main-title-text {
        padding: 25px 10px
    }

    .options .filter article.filter-options-title {
        padding-top: 50px
    }
}