@import url("/style/main.css");

@font-face {
        font-family: "Monaspace Argon";
        src: url("/font/monaspace-argon/MonaspaceArgonVarVF[wght,wdth,slnt].woff2") format("woff2-variations");
        font-weight: 125 950;
        font-stretch: 75% 125%;
        font-style: oblique 0deg 20deg;
}

html,
body {
        margin: 0;
        padding: 0;
        font-size: 18px;
        color: #fff;
        background-color: #111;
        font-family: "Monaspace Argon", monospace;
}

#background {
        position: fixed;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100vh;
        background-size: cover;
        background-position: center;
        filter: blur(25px) saturate(25%) brightness(0.5);
        -webkit-filter: blur(25px) saturate(25%) brightness(0.5);;
        animation: background-init .5s forwards,background-loop 30s ease-in-out infinite
}

#go-back {
        position: fixed;
        top: 4rem;
        left: 1rem;
        width: 2.5rem;
        height: 2.5rem;
        margin: 0;
        font-size: 1.5rem;
        line-height: 2.6rem;
        display: flex;
        justify-content: center;
        color: #fff;
        background-color: #111;
        border-radius: 4px;
        text-decoration: none;
        box-shadow: 0 0 8px #0004;
        z-index: 1;
}

main {
        position: absolute;
        top: 3rem;
        width: 100vw;
        min-height: calc(100vh - 9rem);
        margin: 0;
        display: flex;
        justify-content: center;
        align-items: center;
}

#music-container {
        width: min(960px, calc(100vw - 4rem));
        height: 360px;
        display: flex;
        flex-direction: row;
        flex-wrap: nowrap;
        gap: 4rem;
        font-size: 16px;
        animation: card-init .5s forwards;
        overflow-y: clip;
        padding: 4rem;
}

#art-container {
        display: flex;
        align-items: center;
        position: relative;
        width: 20rem;
        transition: transform .5s cubic-bezier(0,0,0,1);
}

#art-container:hover {
        transform: scale(1.05) translateY(-5px);
}

#art-container:hover img#artwork {
        box-shadow: 0 16px 18px #0003;
}

/* TILT CONTROLS */

#art-container > div {
        position: absolute;
        width: 33.3%;
        height: 33.3%;
        z-index: 2;
        /* pointer-events: none; */
}

#art-container > div.tilt-topleft {
        top: 0;
        left: 0;
}

#art-container > div.tilt-topleft:hover ~ #artwork {
        transform: rotate3d(-1, 1, 0, 20deg);
        filter: brightness(var(--shine));
        -webkit-filter: brightness(var(--shine));
}

#art-container > div.tilt-top {
        top: 0;
        left: 33.3%;
}

#art-container > div.tilt-top:hover ~ #artwork {
        transform: rotate3d(-1, 0, 0, 20deg);
        filter: brightness(var(--shine));
        -webkit-filter: brightness(var(--shine));
}

#art-container > div.tilt-topright {
        top: 0;
        right: 0;
}

#art-container > div.tilt-topright:hover ~ #artwork {
        transform: rotate3d(-1, -1, 0, 20deg);
        filter: brightness(var(--shine));
        -webkit-filter: brightness(var(--shine));
}

#art-container > div.tilt-right {
        top: 33.3%;
        right: 0;
}

#art-container > div.tilt-right:hover ~ #artwork {
        transform: rotate3d(0, -1, 0, 20deg);
}

#art-container > div.tilt-bottomright {
        bottom: 0;
        right: 0;
}

#art-container > div.tilt-bottomright:hover ~ #artwork {
        transform: rotate3d(1, -1, 0, 20deg);
        filter: brightness(var(--shadow));
        -webkit-filter: brightness(var(--shadow));
}

#art-container > div.tilt-bottom {
        bottom: 0;
        left: 33.3%;
}

#art-container > div.tilt-bottom:hover ~ #artwork {
        transform: rotate3d(1, 0, 0, 20deg);
        filter: brightness(var(--shadow));
        -webkit-filter: brightness(var(--shadow));
}

#art-container > div.tilt-bottomleft {
        bottom: 0;
        left: 0;
}

#art-container > div.tilt-bottomleft:hover ~ #artwork {
        transform: rotate3d(1, 1, 0, 20deg);
        filter: brightness(var(--shadow));
        -webkit-filter: brightness(var(--shadow));
}

#art-container > div.tilt-left {
        top: 33.3%;
        left: 0;
}

#art-container > div.tilt-left:hover ~ #artwork {
        transform: rotate3d(0, 1, 0, 20deg);
}

/* TILT CONTROLS */

#artwork {
        --shine: 1.05;
        --shadow: 0.8;
        width: 360px;
        height: 360px;
        margin: auto;
        display: flex;
        justify-content: center;
        line-height: 15rem;
        border-radius: 4px;
        color: #888;
        background-color: #ccc;
        box-shadow: 0 16px 16px #0004;
        transition: transform 1s cubic-bezier(0,0,0,1), filter .3s linear, box-shadow .3s linear;
}

div#vertical-line {
        width: 1px;
        background-color: #fff4;
}

div#info {
        display: flex;
        flex-direction: column;
        transition: transform .5s ease;
        gap: 6rem;
}

#title-container {
        display: flex;
        align-items: last baseline;
        flex-direction: row;
}

#title {
        margin: 0;
        line-height: 1em;
        font-size: 3em;
}

#year {
        margin-left: .9em;
        font-size: 1.2em;
        color: #eee8;
        font-weight: bold;
}

#artist {
        margin: .2em 0 1em 0;
        font-size: 1em;
        color: #eee;
}

#title,
#artist {
        text-shadow: 0 .05em 2px #0004
}

#type {
        display: inline-block;
        margin: 0;
        padding: .3em .8em;
        color: #fff;
        background-color: #111;
        text-transform: uppercase;
        border-radius: 4px;
}

#type.single {
        background-color: #3b47f4;
}

#type.ep {
        background-color: #f419bd
}

#type.album {
        background-color: #34c627
}

#type.comp {
        background-color: #ee8d46
}

#type.upcoming {
        background-color: #ff3e3e
}

#type.upcoming span {
        animation: bob 2s ease-in-out infinite;
        display: inline-block;
}

#links {
        margin: 1rem 0;
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        gap: .5rem
}

#links a {
        padding: .5em .8em;
        border-radius: 4px;
        flex-grow: 1;
        font-size: 1em;
        color: #111;
        background-color: #fff;
        text-align: center;
        text-decoration: none;
        transition: filter .1s,-webkit-filter .1s
}

#links a.buy {
        background-color: #ff94e9
}

#links a.presave {
        background-color: #ff94e9
}

#links a.spotify {
        background-color: #8cff83
}

#links a.applemusic {
        background-color: #8cd9ff
}

#links a.soundcloud {
        background-color: #fdaa6d
}

#links a.youtube {
        background-color: #ff6e6e
}

#links a:hover {
        filter: brightness(125%);
        -webkit-filter: brightness(125%)
}

#description {
        font-size: 1.2em;
}

ul#extras {
        list-style: none;
        display: flex;
        padding: 0;
        gap: .6em;
}

ul#extras li a {
        color: #888;
        text-decoration: none;
        font-style: italic;
}

div#info > div {
        max-height: 360px;
        min-height: 360px;
        overflow-y: scroll;
        padding: 2rem 4rem;
        margin: -2rem -4rem;
        mask-image: linear-gradient(to bottom, transparent 0%, black 10%, black 90%, transparent 100%);
}

a.scrollback {
        color: #888;
        font-style: italic;
}

#credits ul {
        list-style: "> ";
}

#credits ul li {
        margin-bottom: 1rem;
}

#lyrics p {
        max-width: 500px;
        white-space: pre-line;
}

#share {
        margin: 0;
        display: inline-block;
        text-shadow: 0 .05em 2px #0004;
        cursor: pointer;
        opacity: .5;
        transition: opacity .1s linear;
}

#share:hover {
        opacity: 1;
}

#share.active {
        animation: share-click .5s forwards
}

#share.active::after {
        content: "✓";
        font-size: 1.5em;
        line-height: .75em;
        position: absolute;
        transform: translateX(.3em);
        animation: share-after 2s cubic-bezier(.5,0,1,.5) forwards
}

#tracks {
        flex-basis: 100%;
        max-height: 10rem;
        margin: auto 8rem;
        display: flex;
        flex-wrap: wrap;
        gap: 0 2rem;
        overflow-y: auto;
        scrollbar-color: #fff transparent;
        scrollbar-width: thin
}

#tracks .track-preview {
        width: 100%;
        height: 2.5rem;
        display: flex;
        flex-direction: row;
        border-bottom: 1px solid #fff2;
        border-radius: 4px;
        user-select: none;
        transition: background-color .2s,color .2s
}

#tracks .track-preview: last-of-type {
        border-bottom: none
}

.track-preview:hover {
        background-color: #0002
}

.track-preview.playing {
        color: #111;
        background-color: #fff
}

.track-preview i {
        width: .7em;
        margin: auto .8em;
        pointer-events: none
}

.track-preview p {
        margin: auto 0;
        display: inline-block;
        line-height: 2em;
        font-size: 1em;
        pointer-events: none
}

.track-preview audio {
        width: 100%
}

footer {
        position: fixed;
        left: 0;
        bottom: 0;
        width: 100vw;
        height: 6rem;
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        color: #eee;
        background-color: #0008;
        backdrop-filter: blur(25px)
}

footer p {
        margin: 0
}

footer a {
        color: inherit;
        text-decoration: none
}

footer a:hover {
        text-decoration: underline
}

@media only screen and (min-width: 800px) {
        div#info:has(> #credits:target) {
                transform: translateY(calc(-360px + -6rem));
        }

        div#info:has(> #lyrics:target) {
                transform: translateY(calc((-360px + -6rem) * 2));
        }
}

@media only screen and (max-width: 800px) {
        main {
                min-height: calc(100vh - 4rem);
        }

        #music-container {
                width: calc(100vw - 8rem);
                height: fit-content;
                padding: 2rem 0 6rem 0;
                gap: 1rem;
                flex-direction: column;
                text-align: center;
        }

        #art-container {
                width: 100%;
                margin-bottom: 2rem;
        }

        #artwork {
                width: 50vw;
                height: auto;
        }

        #vertical-line {
                display: none;
        }

        div#info {
                width: 100%;
                gap: 2rem;
        }

        div#info > div {
                max-height: fit-content;
                min-height: fit-content;
                padding: 0;
                margin: 0;
                overflow-y: unset;
                mask-image: none;
        }

        a.scrollback {
                display: none;
        }

        #title-container {
                flex-direction: column;
                align-items: center;
        }

        #year {
                display: block;
                margin: 0;
        }

        #links {
                margin: 2rem 0;
                justify-content: center;
        }

        #extras {
                justify-content: center;
        }

        #credits ul {
                padding: 0;
                list-style: none;
        }

        #share.active: : after {
                transform: translate(calc(-50% - .6em),1.5em);
        }

        #tracks {
                margin: 0;
        }

        footer {
                height: 4rem;
                font-size: .8rem;
        }

        #pride-flag {
                display: none;
        }

}

@keyframes background-init {
        from {
                opacity: 0
        }
        to {
                opacity: 1
        }
}

@keyframes background-loop {
        from {
                transform: scale(1)
        }
        50% {
                transform: scale(1.05)
        }
        to {
                transform: scale(1)
        }
}

@keyframes card-init {
        from {
                opacity: 0;
                transform: scale(.9)
        }
        to {
                opacity: 1;
                transform: scale(1)
        }
}

@keyframes share-click {
        from {
                color: #5dfc01
        }
        to {
                color: #eee
        }
}

@keyframes share-after {
        from {
                opacity: 1
        }
        to {
                opacity: 0
        }
}

@keyframes bob {
        from,
        to {
                transform: translateY(-10%);
        }
        50% {
                transform: translateY(10%);
        }
}

