:root {
    --height: calc(100vh - 200px);
}

body, html {
    width: 100%;
    padding: 0;
    margin: 0;
    background-color: black;
    height: 100%;
}

body {
    height: 100%;
}

* {
    font-family: Arial, sans-serif;
    font-feature-settings: 'ss01' 1;
}

.spacer {
    height: 100px;
}

.screen {
    width: 100%;
    min-height: var(--height);
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    position: relative;
}

.screen h1 {
    font-size: min(80px, 15vw);
    margin: 0;
}

.screen p, .screen a {
    font-size: 30px;
}

.screen > p, .screen > h1, .screen > a {
    text-align: center;
}

.arrow {
    background-image: url("images/downarrow.svg");
    background-color: rgba(0,0,0,0);
    background-size: cover;
    width: 50px;
    height: 50px;
    border: none;
    transition: opacity 250ms;
    opacity: 0.5;
}

.arrow:hover:not(.inactive) {
    opacity: 1;
}

.arrow.left {
    rotate: 90deg;
}

.arrow.right {
    rotate: -90deg;
}

.arrow.inactive {
    opacity: 0.2;
}

#arrow {
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
    z-index: 200;
    bottom: 25px;
    width: 50px;
    height: 50px;
    transition: opacity 200ms, transform 200ms;
    background-image: url("images/downarrow.svg");
    background-color: rgba(0,0,0,0);
    background-size: cover;
    border: none;
    opacity: 0.5;
    transform-origin: center;
}

#arrow:hover {
    opacity: 1;
}

#arrow.end {
    transform: translateX(-50%) rotate(180deg);
}

header {
    background-color: black;
    z-index: 100;
    width: 100%;
    min-height: 100vh;
}

header div {
    width: 100%;
    height: 100px;
    position: fixed;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: black;
    z-index: 200;
    will-change: transform;
}

header h1 {
    will-change: transform;
    transform: scale(var(--sx), var(--sy));
}

footer {
    height: 600px;
    width: 100%;
    position: fixed;
    bottom: -500px;
    left: 0;
    background-color: black;
}

#topbarrier {
    height: 100px;
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background-color: black;
}

header h1 {
    color: white;
    margin: 0;
    font-size: 500px;
}

.bg{
    width: 100%;
    height: 100%;
    position: fixed;
    top:0;
    left:0;
    background-color: white;
    z-index: -1;
}

.grass {
    width: 100%;
    height: 100%;
    background-image: url("images/grass.png");
    background-repeat: repeat-x;
    position: absolute;
}

#grass1 {
    background-position: bottom 90px right 0;
    background-size: 75%;
}

#grass2 {
    background-position: bottom 110px right 0;
    background-size: 70%;
}

#grass3 {
    background-position: bottom 130px right 0;
    background-size: 65%;
}

#grass4 {
    background-position: bottom 140px right 0;
    background-size: 65%;
}

.sky {
    width: 100%;
    height: 100%;
    position: absolute;
    background-image: url("images/sky.png");
    background-size: cover;
}

/* https://stackoverflow.com/questions/14068103/disable-antialising-when-scaling-images */
div, img, canvas { 
    image-rendering: optimizeSpeed;             /* STOP SMOOTHING, GIVE ME SPEED  */
    image-rendering: -moz-crisp-edges;          /* Firefox                        */
    image-rendering: -o-crisp-edges;            /* Opera                          */
    image-rendering: -webkit-optimize-contrast; /* Chrome (and eventually Safari) */
    image-rendering: pixelated;                 /* Universal support since 2021   */
    image-rendering: optimize-contrast;         /* CSS3 Proposed                  */
    -ms-interpolation-mode: nearest-neighbor;   /* IE8+                           */
}

.cards {
    width: 100%;
    display: flex;
    justify-content: center;
    overflow-x: hidden;
    overflow-y: visible;
    flex-wrap: nowrap;
    position: relative;
    position: relative;
}

.prog-card {
    padding: 20px;
    margin: 20px;

    background: rgba(255, 255, 255, 0.2);
    border-radius: 16px;
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(5px);

    width: 300px;
    flex-shrink: 0;

    transform: translateX(var(--scrolled));
    transition: transform 500ms;
}

.prog-card h2, .prog-card h2 a, .music-card h2, .music-card h2 a {
    font-size: 25px;
    /* margin: 0; */
}

.music-card h2, .music-card h2 a {
    margin: 0;
}

.prog-card p, .prog-card p a, .music-card p, .music-card li a {
    font-size: 15px;
    /* margin: 0; */
}

.prog-card:first-child, .prog-card:last-child {
    /* flex-grow: 1; */
    width: 100vw;
}

.prog-card:first-child img, .prog-card:last-child img {
    height: calc(calc(350px * 2) / 3);
    width: 100%;
    object-fit: fill;
}

.prog-card img {
    width: 100%;
}

.music-card {
    margin: 20px;
    margin-top: 200px;

    width: 300px;
    flex-shrink: 0;

    transform: translateX(calc(var(--scrolled) - 20px));
    transition: transform 500ms;
    overflow: visible;
}

.music-card > div {
    background: rgba(255, 255, 255, 0.2);
    border-radius: 0 0 16px 16px;
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(5px);
    inset: 0;
    padding: 20px;
    width: 300px;
    position: relative;
}

.music-card::before {
    content: "";
    display: block;
    position: absolute;
    width: 340px;
    height: 50px;
    inset: 0;
    top: -200px;

    background: rgba(255, 255, 255, 0.2);
    border-radius: 16px 16px 0 0;
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(5px);
    transform: translateZ(0);
}

#visualizer { 
    position: absolute;
    width: 100%;
    height: 140px;
    top: 55px;
}

ol {
    height: 100px;
    overflow-y: scroll;
    border: 1px solid white;
}

ol a {
    color: black;
}