* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html,
body {
    width: 100%;
    height: 100%;
}

body {
    overflow: hidden;
    font-family: Arial, Helvetica, sans-serif;
    background: #111;
    color: white;
}



.world {
    position: fixed;
    inset: 0;
    overflow: hidden;

    background:
        linear-gradient(
            to bottom,
            #111827 0%,
            #263348 35%,
            #52606b 55%,
            #6e735f 70%,
            #303827 100%
        );
}



.sun {
    position: absolute;

    width: 330px;
    height: 330px;

    top: 7%;
    right: 13%;

    border-radius: 50%;

    background:
        radial-gradient(
            circle,
            rgba(255,240,200,.8),
            rgba(255,210,150,.3) 35%,
            transparent 70%
        );

    filter: blur(5px);

    opacity: .65;

    animation:
        sunPulse 9s ease-in-out infinite alternate;
}




.mountain {
    position: absolute;

    bottom: 23%;

    width: 0;
    height: 0;

    border-left: 350px solid transparent;
    border-right: 350px solid transparent;
    border-bottom: 360px solid #29332a;

    filter:
        drop-shadow(
            0 20px 20px rgba(0,0,0,.3)
        );
}

.mountain.one {
    left: -180px;

    animation:
        mountainOne 22s ease-in-out infinite alternate;
}

.mountain.two {
    left: 25%;

    transform: scale(.75);

    opacity: .8;

    animation:
        mountainTwo 30s ease-in-out infinite alternate;
}

.mountain.three {
    right: -150px;

    transform: scale(.9);

    opacity: .85;

    animation:
        mountainThree 26s ease-in-out infinite alternate;
}




.ground {
    position: absolute;

    left: -5%;
    bottom: -5%;

    width: 110%;
    height: 42%;

    background:
        linear-gradient(
            to bottom,
            #596347,
            #424b35 35%,
            #252b20 70%,
            #171b15
        );

    clip-path:
        polygon(
            0 24%,
            7% 20%,
            13% 27%,
            20% 17%,
            29% 24%,
            37% 15%,
            45% 25%,
            54% 18%,
            63% 27%,
            72% 16%,
            81% 24%,
            90% 18%,
            100% 25%,
            100% 100%,
            0 100%
        );

    animation:
        groundMove 18s ease-in-out infinite alternate;
}

.ground::before {
    content: "";

    position: absolute;

    inset: 0;

    opacity: .25;

    background:
        repeating-linear-gradient(
            90deg,
            transparent 0 10px,
            #222 11px,
            transparent 12px
        );
}




.grass-block {
    position: absolute;

    bottom: 0;

    width: 80px;
    height: 70px;

    background:
        linear-gradient(
            to bottom,
            #4f663a 0 25%,
            #39362a 25%
        );

    opacity: .45;
}

.grass-block:nth-child(1) {
    left: 5%;
    height: 110px;
}

.grass-block:nth-child(2) {
    left: 22%;
    height: 75px;
}

.grass-block:nth-child(3) {
    left: 48%;
    height: 125px;
}

.grass-block:nth-child(4) {
    left: 76%;
    height: 90px;
}




.fog {
    position: absolute;

    left: 0;
    bottom: 28%;

    width: 100%;
    height: 35%;

    background:
        linear-gradient(
            to top,
            rgba(220,220,210,.2),
            transparent
        );

    filter: blur(20px);
}

.ambient {
    position: absolute;

    inset: 0;

    z-index: 3;

    pointer-events: none;

    overflow: hidden;
}

.fog-layer {
    position: absolute;

    width: 180%;
    height: 45%;

    left: -40%;

    border-radius: 50%;

    filter: blur(35px);

    opacity: .12;
}

.fog-1 {
    bottom: 18%;

    background:
        radial-gradient(
            ellipse,
            rgba(220,225,210,.55),
            rgba(190,200,190,.2) 35%,
            transparent 70%
        );

    animation:
        fogMove1 28s ease-in-out infinite alternate;
}

.fog-2 {
    bottom: 30%;

    background:
        radial-gradient(
            ellipse,
            rgba(255,255,255,.35),
            rgba(180,190,180,.12) 40%,
            transparent 70%
        );

    opacity: .08;

    animation:
        fogMove2 42s ease-in-out infinite alternate;
}




.particle {
    position: absolute;

    width: 3px;
    height: 3px;

    border-radius: 50%;

    background:
        rgba(220,220,190,.55);

    box-shadow:
        0 0 8px rgba(220,220,190,.35);

    animation:
        particleFloat var(--speed)
        ease-in-out infinite,

        particleFade var(--fade)
        ease-in-out infinite;
}

.p1 {
    left: 8%;
    bottom: 15%;
    --speed: 9s;
    --fade: 5s;
}

.p2 {
    left: 18%;
    bottom: 30%;
    --speed: 12s;
    --fade: 7s;
}

.p3 {
    left: 27%;
    bottom: 12%;
    --speed: 8s;
    --fade: 6s;
}

.p4 {
    left: 39%;
    bottom: 25%;
    --speed: 15s;
    --fade: 8s;
}

.p5 {
    left: 51%;
    bottom: 18%;
    --speed: 10s;
    --fade: 5s;
}

.p6 {
    left: 63%;
    bottom: 33%;
    --speed: 13s;
    --fade: 7s;
}

.p7 {
    left: 72%;
    bottom: 14%;
    --speed: 11s;
    --fade: 6s;
}

.p8 {
    left: 81%;
    bottom: 27%;
    --speed: 16s;
    --fade: 9s;
}

.p9 {
    left: 91%;
    bottom: 20%;
    --speed: 9s;
    --fade: 5s;
}

.p10 {
    left: 47%;
    bottom: 40%;
    --speed: 18s;
    --fade: 10s;
}



.overlay {
    position: absolute;

    inset: 0;

    background:
        linear-gradient(
            to bottom,
            rgba(0,0,0,.35),
            rgba(0,0,0,.05) 45%,
            rgba(0,0,0,.65)
        );

    z-index: 4;
}

.vignette {
    position: absolute;

    inset: 0;

    z-index: 5;

    pointer-events: none;

    background:
        radial-gradient(
            ellipse at center,
            transparent 45%,
            rgba(0,0,0,.65)
        );
}



.grave {
    position: absolute;

    z-index: 15;

    right: 8%;
    bottom: 8%;

    width: 190px;
    height: 220px;

    filter:
        drop-shadow(
            0 15px 15px rgba(0,0,0,.7)
        );

    animation:
        graveFloat 7s ease-in-out infinite;
}

.grave-ground {
    position: absolute;

    bottom: 10px;
    left: 0;

    width: 190px;
    height: 30px;

    border-radius: 50%;

    background: #161b13;

    box-shadow:
        0 0 15px rgba(0,0,0,.7);
}

.gravestone {
    position: absolute;

    left: 40px;
    bottom: 25px;

    width: 110px;
    height: 145px;

    background:
        linear-gradient(
            90deg,
            #383838,
            #696969,
            #333
        );

    border-radius:
        55px 55px 5px 5px;

    box-shadow:
        inset 8px 0 rgba(255,255,255,.06),
        inset -8px 0 rgba(0,0,0,.3);
}




.cross {
    position: absolute;

    top: 18px;
    left: 50%;

    transform:
        translateX(-50%);

    width: 48px;
    height: 60px;
}

.cross::before {
    content: "";

    position: absolute;

    width: 14px;
    height: 60px;

    left: 17px;

    background: #252525;
}

.cross::after {
    content: "";

    position: absolute;

    width: 48px;
    height: 14px;

    top: 16px;

    background: #252525;
}




.grave-text {
    position: absolute;

    top: 91px;

    left: 0;
    right: 0;

    text-align: center;

    font-size: 12px;

    font-weight: 900;

    letter-spacing: 2px;

    color: #202020;

    text-shadow:
        1px 1px rgba(255,255,255,.08);
}



.dead-flower {
    position: absolute;

    z-index: 20;

    bottom: 29px;
    left: 0;

    width: 90px;
    height: 120px;

    cursor: pointer;

    transition:
        filter .2s;
}

.dead-flower img {
    width: 100%;
    height: 100%;

    object-fit: contain;

    image-rendering: pixelated;

    filter:
        drop-shadow(
            0 8px 5px rgba(0,0,0,.5)
        );

    user-select: none;

    -webkit-user-drag: none;
}

.dead-flower:hover {
    filter:
        brightness(1.2)
        drop-shadow(
            0 0 12px
            rgba(255,255,255,.25)
        );
}




.dead-flower.fly-away {
    animation:
        flowerFly 1.35s
        cubic-bezier(.2,.8,.2,1)
        forwards;
}




.content {
    position: relative;

    z-index: 20;

    width: 100%;
    height: 100vh;

    display: flex;

    align-items: center;
    justify-content: center;

    flex-direction: column;

    padding-bottom: 170px;

    text-align: center;
}

.title {
    font-size:
        clamp(50px,8vw,135px);

    line-height: .88;

    letter-spacing: -6px;

    font-weight: 1000;

    text-transform: uppercase;

    color: #fff;

    text-shadow:
        0 4px #171717,
        0 8px 25px rgba(0,0,0,.8);

    animation:
        titleIn
        1.2s
        cubic-bezier(.17,.89,.32,1.28)
        both;
}

.title span {
    display: inline-block;

    color: #a52dff;

    text-shadow:
        0 0 10px rgba(165,45,255,.7),
        0 5px rgba(40,0,55,.7),
        0 10px 30px rgba(0,0,0,.8);

    animation:
        purplePulse
        2.7s
        ease-in-out
        1.2s
        infinite;
}



.line {
    width: 450px;

    max-width: 65vw;

    height: 2px;

    margin-top: 30px;

    background:
        linear-gradient(
            90deg,
            transparent,
            #fff,
            transparent
        );

    opacity: .5;

    animation:
        lineAppear
        1.5s
        .6s
        both;
}



.subtitle {
    margin-top: 20px;

    font-size: 15px;

    letter-spacing: 7px;

    text-transform: uppercase;

    color:
        rgba(255,255,255,.75);

    animation:
        subtitleIn
        1.4s
        1s
        both;
}



.discord {
    position: fixed;

    z-index: 30;

    left: 50%;

    bottom: 55px;

    width:
        min(760px,calc(100% - 40px));

    min-height: 105px;

    display: flex;

    align-items: center;

    gap: 18px;

    padding: 14px 18px;

    border-radius: 28px;

    background:
        rgba(15,15,18,.88);

    border:
        1px solid rgba(255,255,255,.12);

    backdrop-filter:
        blur(18px);

    box-shadow:
        0 15px 50px rgba(0,0,0,.7),
        inset 0 1px rgba(255,255,255,.08);

    opacity: 0;

    animation:
        cardIn
        .9s
        cubic-bezier(.2,.8,.2,1)
        .45s
        forwards;
}

.discord:hover {
    transform:
        translateX(-50%)
        translateY(-3px);
}

.wumpus {
    width: 75px;
    height: 75px;

    object-fit: cover;

    border-radius: 20px;

    flex-shrink: 0;

    background: #6352c9;
}

.discord-info {
    flex: 1;

    text-align: left;
}

.discord-info h2 {
    font-size: 19px;

    margin-bottom: 6px;
}

.discord-info p {
    color: #aaa;

    font-size: 13px;
}

.discord-button {
    padding:
        13px 21px;

    border-radius: 13px;

    background: #8b32d4;

    color: white;

    text-decoration: none;

    font-size: 14px;

    font-weight: 700;

    transition: .2s;

    white-space: nowrap;
}

.discord-button:hover {
    background: #a94cff;

    transform:
        translateY(-2px);

    box-shadow:
        0 8px 25px
        rgba(150,50,255,.4);
}



@keyframes titleIn {

    0% {
        opacity: 0;

        transform:
            scale(.55)
            translateY(50px);

        filter: blur(18px);
    }

    60% {
        opacity: 1;

        transform:
            scale(1.04)
            translateY(-4px);

        filter: blur(0);
    }

    100% {
        opacity: 1;

        transform:
            scale(1)
            translateY(0);

        filter: blur(0);
    }
}

@keyframes titleFloat {

    0%,
    100% {
        transform:
            translateY(0);
    }

    50% {
        transform:
            translateY(-6px);
    }
}

@keyframes purplePulse {

    0%,
    100% {
        text-shadow:
            0 0 10px rgba(165,45,255,.55),
            0 5px rgba(40,0,55,.7),
            0 10px 30px rgba(0,0,0,.8);

        filter:
            brightness(1);
    }

    50% {
        text-shadow:
            0 0 25px rgba(165,45,255,.95),
            0 0 55px rgba(165,45,255,.35),
            0 5px rgba(40,0,55,.7),
            0 10px 30px rgba(0,0,0,.8);

        filter:
            brightness(1.15);
    }
}

@keyframes cardIn {

    from {
        opacity: 0;

        transform:
            translate(-50%,45px)
            scale(.94);
    }

    to {
        opacity: 1;

        transform:
            translate(-50%,0)
            scale(1);
    }
}

@keyframes lineAppear {

    from {
        width: 0;
        opacity: 0;
    }

    to {
        width: 450px;
        opacity: .5;
    }
}

@keyframes subtitleIn {

    from {
        opacity: 0;

        transform:
            translateY(15px);

        letter-spacing: 15px;
    }

    to {
        opacity: .75;

        transform:
            translateY(0);

        letter-spacing: 7px;
    }
}

@keyframes flowerFly {

    0% {
        transform:
            translate(0,0)
            rotate(0)
            scale(1);

        opacity: 1;
    }

    25% {
        transform:
            translate(-30px,-80px)
            rotate(-20deg)
            scale(1.15);

        opacity: 1;
    }

    55% {
        transform:
            translate(120px,-190px)
            rotate(180deg)
            scale(1.05);

        opacity: .95;
    }

    100% {
        transform:
            translate(650px,-500px)
            rotate(650deg)
            scale(.2);

        opacity: 0;
    }
}

@keyframes sunPulse {

    0% {
        transform: scale(.95);
        opacity: .48;
    }

    100% {
        transform: scale(1.08);
        opacity: .72;
    }
}

@keyframes mountainOne {
    from {
        transform: translateX(-8px);
    }

    to {
        transform: translateX(10px);
    }
}

@keyframes mountainTwo {
    from {
        transform:
            translateX(-5px)
            scale(.75);
    }

    to {
        transform:
            translateX(12px)
            scale(.77);
    }
}

@keyframes mountainThree {
    from {
        transform:
            translateX(8px)
            scale(.9);
    }

    to {
        transform:
            translateX(-10px)
            scale(.92);
    }
}

@keyframes groundMove {

    from {
        transform:
            translateX(-4px);
    }

    to {
        transform:
            translateX(5px);
    }
}

@keyframes fogMove1 {

    0% {
        transform:
            translate3d(-10%,0,0)
            scale(1);
    }

    50% {
        transform:
            translate3d(10%,-8px,0)
            scale(1.08);
    }

    100% {
        transform:
            translate3d(-5%,5px,0)
            scale(1.02);
    }
}

@keyframes fogMove2 {

    0% {
        transform:
            translate3d(12%,5px,0)
            scale(1.1);
    }

    50% {
        transform:
            translate3d(-12%,-10px,0)
            scale(.98);
    }

    100% {
        transform:
            translate3d(8%,0,0)
            scale(1.05);
    }
}

@keyframes particleFloat {

    0% {
        transform:
            translate(0,20px);
    }

    50% {
        transform:
            translate(35px,-45px);
    }

    100% {
        transform:
            translate(-15px,-100px);
    }
}

@keyframes particleFade {

    0%,
    100% {
        opacity: 0;
    }

    40% {
        opacity: .8;
    }

    70% {
        opacity: .35;
    }
}

@keyframes graveFloat {

    0%,
    100% {
        transform:
            rotate(-2deg)
            translateY(0);
    }

    50% {
        transform:
            rotate(-1.5deg)
            translateY(-2px);
    }
}



@media (max-width:650px) {

    .title {
        letter-spacing: -3px;
    }

    .content {
        padding-bottom: 160px;
    }

    .discord {
        bottom: 25px;

        padding: 11px;

        gap: 10px;

        border-radius: 22px;
    }

    .wumpus {
        width: 55px;
        height: 55px;

        border-radius: 15px;
    }

    .discord-info h2 {
        font-size: 14px;
    }

    .discord-info p {
        font-size: 10px;
    }

    .discord-button {
        padding:
            10px 13px;

        font-size: 11px;
    }

    .grave {
        right: 2%;
        bottom: 3%;

        transform: scale(.7);
    }
}