@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap');
:root{
    --bg-color: white;
    --menu-bg-color:rgb(225, 225, 225);
    --field-bg-color: rgb(192, 192, 192);
    --field-success: rgb(78, 154, 61);
    --field-failure: rgb(191, 57, 57);
    --dim-text: rgb(78, 78, 78);
    --primary-text-color: black;
    --inverse-color:white;
    --btn-txt-color: #0077ff;
    --btn-border: solid 0.1rem #0077ff;
    --body-blur: none;
}
html, html[data-theme="light"]{
    --bg-color: white;
    --menu-bg-color:rgb(225, 225, 225);
    --field-bg-color: rgb(192, 192, 192);
    --dim-text: rgb(78, 78, 78);
    --primary-text-color: black;
    --inverse-color:white;
    --btn-txt-color: #0077ff;
    --btn-border: solid 0.1rem #0077ff;
}
html[data-theme="dark"]{
    --bg-color: #212121;
    --menu-bg-color: #292929;
    --field-bg-color: rgb(54, 54, 54);
    --btn-bg-color: rgb(54, 54, 54);
    --dim-text: rgb(119, 119, 119);
    --primary-text-color: white;
    --inverse-color: black;
    --btn-txt-color: white;
    --btn-border: solid 0.1rem rgb(54, 54, 54);
}
* {
    transition: background-color 0.25s, border 0.25s, color 0.25s, fill 0.25s, filter 0.25s;
}
#score{
    margin-bottom: 1rem;
}
.meter-container{
    width: 100%;
    background-color: var(--field-bg-color);
    border-radius: 1rem;
    margin: 0 auto;
    overflow: hidden;
}
.meter-value{
    height: 0.5rem;
    transition: width 1s;

}
.meter-red{
    width: 0%;
    background-color: #ff5757;
    float:right;
}
.meter-green{
    width: 0%;
    background-color: #3f943f;
    float: left;

}
.score-correct{
    float: left;
    color: #3f943f;
}
.score-incorrect{
    float: right;
    color: #ff5757;
}

.score-value{
    padding:0.1rem;
}
.hidden{
    position: absolute;
    visibility: hidden;
}
#app{
    height: 100dvh;
    display: flex;
    flex-flow: column;
    background-color: var(--bg-color);
    margin-bottom: 0;
}
body{
    margin: 0;
    background-color: var(--bg-color);
    font-family: "Noto Sans Display", sans-serif;
    a{
        color: var(--dim-text);
    }
}
#toolbar{
    display: flex;
    justify-content: right;
    margin-top: auto;
    margin-bottom: auto;
}
#title{
    display: flex;
    justify-content: left;
    margin-top: auto;
    margin-bottom: auto;
    svg{
        margin: auto;
        padding-right: 0.25rem;
        padding-left: 0;
    }

}
#new-ui-message{
    top: 5%;
}
.icon{
    padding: 0.5rem;
    width: 1.5rem;
    height: 1.5rem;
    fill: var(--primary-text-color);
}
#header{
    display: flex;
    flex-wrap: wrap;
    margin: auto;
    justify-content: space-between;
    width: 100%;
    color: var(--primary-text-color);
    h4{
        flex: 1 1 0;
        text-wrap: wrap;
    }
}
#note-selector{
    margin-right: auto;
    margin-left: auto;
    padding-bottom: 1rem;
    width: 100%;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: max-content max-content max-content max-content;
    padding-top: 0.5rem;
    button{
        text-align: center;
        flex-basis: 0;
        flex-grow: 1;
        flex-shrink: 1;
        display: block;
        padding-top: 3vh;
        padding-bottom: 3vh;
        font-size: 1rem;
        padding-left: 0;
        padding-right: 0;
    }
    #enter{
        grid-column: 4;
        grid-row: 1;
        background-color: #0077ff;
        color:white;
        display: block;
        border: solid 0.1rem #0077ff;
        padding-top: 3vh;
        padding-bottom: 3vh;
        font-size: 1rem;
        &:active{
            svg{
                fill: var(--btn-txt-color);
            }
            color:var(--btn-txt-color);
            background-color: var(--btn-bg-color);
            border: var(--btn-border);
        }
    
    }
    .note-row{
        display: flex;
        flex-wrap: wrap;
    }
    #note-row-1{
        grid-row:2;
        grid-column: 1/5;
    }
    #note-row-2{
        grid-row:3;
        grid-column: 1/5;
    }
    #note-row-3{
        grid-row:4;
        grid-column: 1/5;
    }
    #notes-box{
        grid-column: 1 / 4;
        grid-row: 1;
        background-color: var(--field-bg-color);
        border-radius: 0.25rem;
        padding: 0;
        display: flex;
        align-items: center;
        border-top-right-radius: 0.25rem;
        border-bottom-right-radius: 0.25rem;
        overflow: hidden;
        flex: 3 0 0;
        margin: 0.15rem;
        #notes{
            mask: linear-gradient(90deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 2%);
            display: flex;
            overflow: auto;
            scrollbar-width: none;
            scroll-behavior: smooth;
            cursor: default;
            user-select: none;
            align-items: center;
            padding-left: 0.2rem;
            width: 100%;
            div{
                animation: 200ms ease-in-out grow;
                transition: scale 200ms;
            }
        }
        #clear-notes{
            font-size: 0.75rem;
            padding: 0.5rem;
            visibility: hidden;
            cursor: pointer;
            user-select: none;
            color:var(--dim-text);
            &:hover{
                text-decoration: underline;
            }
        }
    }
    .note{
        padding:0.25rem;
        vertical-align: middle;
        color: var(--primary-text-color);
    }
}
#app{
    padding-left: 2.5%;
    padding-right: 2.5%;
    margin-left: auto;
    margin-right: auto;
    margin-top: 0;
}
button{
    border: var(--btn-border);
    background-color: var(--btn-bg-color);
    color: var(--btn-txt-color);
    border-radius: 0.25rem;
    padding-top: 3vh;
    padding-bottom: 3vh;
    cursor: pointer;
    user-select: none;
    margin: 0.15rem;
    transition: background-color 0.25s, color 0.25s, border 0.25s;
    &:active{
        background-color: #0077ff;
        border: solid 0.1rem #0077ff;
        color: white;
    }
}
#infobox{
    background-color: var(--field-bg-color);
    margin-left: auto;
    margin-right: auto;
    border-radius: 0.25rem;
    flex: 1 0 0;
    width: 100%;
    display: flex;
    text-align: center;
    justify-content: center;
    align-content: center;
    flex-direction: column;
    transition: background-color 0.25s, background-size 0.25s;
    color: var(--primary-text-color);
    .info-content{
    }
    #bigtext{
    }
    #littletext{
        padding: 1rem;
    }
}
#infobox.correct{
    background-color: var(--field-success);
    color: white;

}
#infobox.incorrect{
    background-color: var(--field-failure);
    color: white;

}
#flow-controls{
    display: flex;
    margin-right: auto;
    margin-left: auto;
    width: 100%;
    padding-bottom: 0.5rem;
    #play-key{
        margin-left: 0;
    }
    #play-chord{
        margin-right: 0;
    }
    button{
        font-size: 1rem;
        width: 50%;
        background-color: #0077ff;
        border: solid 0.1rem #0077ff;
        color: white;
        svg{
            fill: white;
        }
        &:active{
            svg{
                fill: var(--btn-txt-color);
            }
            color:var(--btn-txt-color);
            background-color: var(--btn-bg-color);
            border: var(--btn-border);
        }
        span{
            vertical-align: middle;
        }
    }
    svg{
        height: 2rem;
        width: 2rem;
        fill: #0077ff; 
        transition: fill 0.25s;
        vertical-align: middle;
    }
}
.shrink{
    animation: 200ms ease-in-out shrink;
}
@media only screen and (min-aspect-ratio: 3/4){
    #app{
        aspect-ratio: 3/4;
    }
    .menu{
        width: 75vh;
        left: 50%;
        transform: translate(-50%, 0);
        margin-left: 0rem;
    }
    #note-selector, #flow-controls, #info, #header{
    }
}   
@media only screen and (max-aspect-ratio: 3/4){
    .menu{
        margin-left: 1rem;
        margin-right: 1rem;
        left: 0;
        right: 0;
    }
}
#dark-mode-toggle{
    visibility: hidden;
    position: absolute;
}
@media (prefers-color-scheme: dark){
    html:not([data-theme]){
        --bg-color: #212121;
        --field-bg-color: rgb(54, 54, 54);
        --btn-bg-color: rgb(54, 54, 54);
        --dim-text: rgb(119, 119, 119);
        --primary-text-color: white;
        --inverse-color: black;
        --btn-txt-color: white;
        --btn-border: solid 0.1rem rgb(54, 54, 54);
        --menu-bg-color: #292929;
    }
    #light-mode-toggle{
        visibility: hidden;
        position: absolute;
    }
    #dark-mode-toggle{
        visibility: visible;
        position: relative;
    }
}
.menu{
    position: absolute;
    display: none;
    box-sizing: border-box;
    top: 0;
    background-color: var(--menu-bg-color);
    padding: 2rem;
    border-radius: 0.25rem;
    margin-top: 1rem;
    color: var(--primary-text-color);
    transition: opacity 0.25s;
    overflow: hidden;
    max-height: 100vh;
    .menu-close{
        position: absolute;
        top: 0.5rem;
        right: 0.5rem;
        float: right;
        padding: 0;
        z-index: 3;
    }
}
.menu-content{
    mask: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 3%, rgba(0,0,0,1) 97%, rgba(0,0,0,0) 100%);
    width: 100%;
    overflow-y: auto;
    scrollbar-gutter: auto;
    scrollbar-color: var(--dim-text) var(--menu-bg-color);
    scrollbar-width: thin;
    max-height: 85dvh;
    p{
        font-size: 1rem;
    }
}
#settings-grid{
    display: grid;
    grid-template-columns: max-content 1fr max-content;
    .setting{
        grid-column: 3;
        margin: auto;
        display: flex;
        gap: 1rem;
    }
    h4{
        grid-column: 1;
    }

}
#app{
    filter: var(--body-blur);
}
@keyframes grow {
    0%{
        transform: scale(0);
    }
    60%{
        transform: scale(1.15);
    }
    100% {
      transform: scale(1);
    }
}