body {
    background: #0e0b16 url("assets/noise.svg");
}

#snow {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    background: url("assets/snow.svg") no-repeat center center;
    width: 100%;
    height: 20vw;
    background-size: cover;
}

#tree {
    position: absolute;
    right: 20%;
    bottom: 4vw;
    height: 50vh;
    width: 50vh;
    background: url("assets/tree.svg");
    background-size: contain;
    background-repeat: no-repeat;
}

#hat {
    position: absolute;
    right: calc(20% + 12vh);
    bottom: calc(6.5vw - 1.8rem);
    height: 4em;
}

.content {
    font-family: "Martian Mono";
    position: absolute;
    left: 10vw;
    top: 10vw;
}

.title {
    font-weight: bold;
    margin: 0;
    font-size: 0; /* to hide whitespace */

    --bracket: #7c7888;
    --tag: #d95f77;
}
.title span {
    font-size: 4rem;
}
.subtitle {
    font-size: 1.5rem;
    color: #4a4752
}

#sky {
    position: fixed;
    top: 0;
    right: 0;
    width: 100%;
    height: 100%;
    background-image: url("assets/pixels.png");
    mask-image: linear-gradient(to left, white, transparent);
    opacity: 0.2;
    z-index: -1;
}

#logo {
    height: 5vh;
    position: absolute;
    right: 20%;
    transform: translate(18px, 20px)
}

.snowflake {
    --size: 7px;
    --blur: 10px;
    --angle: 25deg;

    position: fixed;
    left: var(--x);
    top: var(--y);
    width: var(--size);
    height: var(--size);
    background-color: white;
    border-radius: 1000px;
    filter: blur(var(--blur));

    transform: rotateZ(var(--angle));
    animation: 10s linear infinite fall;
}

@keyframes fall {
    0% {
        opacity: 0;
        transform: rotateZ(var(--angle)) translateY(0px);
    }
    10% {
        opacity: 1;
    }
    90% {
        opacity: 1;
    }
    100% {
        opacity: 0;
        transform: rotateZ(var(--angle)) translateY(1000px);
    }
}


#credits, #source {
    font-family: "Martian Mono";
    font-size: 0.8rem;
    position: absolute;
    bottom: 1rem;
}
#credits {
    color: #6a6c72;
    left: 2rem;
}
#credits a {
    color: #6242b7;
}

#source {
    color: #6242b7;
    right: 2rem;
    margin-bottom: 1em;
}


#present {
    cursor: pointer;
    user-select: none;
    position: absolute;
    transform: translateX(-100%);
    transition: all 0.1s;
}
#present.open {
    transform: translateX(-100%) translateY(-10%);
}

#confetti {
    position: absolute;
    transform: translate(-100%, -130%);
    stroke-dasharray: 15;
    stroke-dashoffset: 15;
}
#confetti.open {
    stroke-dashoffset: -14;
    transition: stroke-dashoffset 1s;
}