:root {
    --circleS: 0px;
    --circleBig: 80vw;
    --floor: calc(5vh + 10px);
    --Particle: calc(5vh + 5px);
}

:root {
    --particles: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 122 116'%3E%3Cpath id='b' stroke='%23fff' stroke-linecap='round' stroke-width='0' d='M17.9256 115C17.434 111.774 13.1701 104.086 13.4282 95.6465C13.6862 87.207 18.6628 76.0721 17.9256 64.3628C17.1883 52.6535 8.7772 35.9512 9.00452 25.3907C9.23185 14.8302 16.2114 5.06512 17.9256 1'%3E%3C/path%3E%3Cpath id='d' stroke='%23fff' stroke-linecap='round' stroke-width='0' d='M84.1628 115C85.2376 112.055 94.5618 98.8394 93.9975 91.1338C93.4332 83.4281 82.5505 73.2615 84.1628 62.5704C85.775 51.8793 96.4803 35.4248 95.9832 25.7826C95.4861 16.1404 87.9113 4.71163 84.1628 1'%3E%3C/path%3E%3Cpath id='f' stroke='%23fff' stroke-linecap='round' stroke-width='0' d='M37.0913 115C37.9604 111.921 44.4347 99.4545 45.3816 92.9773C48.9305 68.7011 35.7877 73.9552 37.0913 62.7781C38.3949 51.6011 47.3889 36.9895 46.9869 26.9091C46.585 16.8286 40.1222 4.88034 37.0913 1'%3E%3C/path%3E%3Cpath id='h' stroke='%23fff' stroke-linecap='round' stroke-width='0' d='M112.443 115C111.698 112.235 108.25 106.542 107.715 93.7582C107.241 82.4286 107.229 83.9543 112.443 66.1429C116.085 44.0408 100.661 42.5908 101.006 33.539C101.35 24.4871 109.843 4.48439 112.443 1'%3E%3C/path%3E%3Cg%3E%3Ccircle r='1.5' fill='%23D9D9D9'%3E%3CanimateMotion dur='18s' repeatCount='indefinite'%3E%3Cmpath href='%23b'%3E%3C/mpath%3E%3C/animateMotion%3E%3C/circle%3E%3C/g%3E%3Cg%3E%3Ccircle r='1' fill='%23fff' fill-opacity='1' shape-rendering='crispEdges'%3E%3CanimateMotion dur='15s' repeatCount='indefinite'%3E%3Cmpath href='%23d'%3E%3C/mpath%3E%3C/animateMotion%3E%3C/circle%3E%3C/g%3E%3Cg%3E%3Ccircle r='.5' fill='%23fff' fill-opacity='1' shape-rendering='crispEdges'%3E%3CanimateMotion dur='16s' repeatCount='indefinite'%3E%3Cmpath href='%23f'%3E%3C/mpath%3E%3C/animateMotion%3E%3C/circle%3E%3C/g%3E%3Cg%3E%3Ccircle r='.8' fill='%23fff' fill-opacity='1' shape-rendering='crispEdges'%3E%3CanimateMotion dur='22s' repeatCount='indefinite'%3E%3Cmpath href='%23h'%3E%3C/mpath%3E%3C/animateMotion%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");
}

html,
body {
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
}

body {
    position: relative;
}

body::before,
body::after {
    /* 內容為空 */
    content: "";
    /* 絕對定位 */
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    /* 使用mask影像來淡化每一邊的粒子 */
    mask-image: radial-gradient(black, transparent 70%, transparent 100%);
    /* 重複漸層，並設置粒子背景大小和位置 */
    background-image:
        var(--particles),
        var(--particles),
        var(--particles),
        var(--particles),
        var(--particles);
    background-size: 100%, 60%, 40%, 20%, 200%;
    background-position: 1010% 100%, 160% 60%, 140% 40%, 120% 20%;
    opacity: 0.6;
}

body:before {
    /* 模糊漸層 */
    filter: blur(6px);
}

body:after {
    background-image:
        var(--particles),
        var(--particles),
        var(--particles);
    background-size: 100%, 60%, 40%, 20%;
    background-position: 1010% 100%, 160% 60%, 140% 40%, 120% 20%;
}



body,
html {
    margin: 0;
    padding: 0;
    height: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: linear-gradient(360deg, #000000, #120947, #3c0947);
}

a {
    text-decoration: none;
    color: #cb33f9;
}

header,
.header {
    width: 100%;
    text-align: center;
    font-size: calc(6vw + 10px);
    margin-top: 20px;
    position: absolute;
    font-family: Tahoma, Geneva, sans-serif;
    mask-image: radial-gradient(black, transparent 70%, transparent 100%);
}

.header {
    z-index: 30;
}

.header a {
    color: #312a2a00;
    -webkit-text-stroke: calc(.05vw + 1px) #cb33f9;
    transition: all .2s ease-in-out 0s;
    /* 描邊顏色和寬度 */
    mix-blend-mode: lighten
}

.header a:hover {
    color: #e590ff;
}


.character {
    position: absolute;
    pointer-events: none;
    bottom: var(--floor);
    height: 0;
    /* background: #666; */
    border-radius: 50%;
    /* overflow: hidden; */
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 20px;
    z-index: 4;
}

.character img {
    height: 80vh;
    position: absolute;
    bottom: 0;
    filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.7));
}

.ripples {
    position: absolute;
    bottom: 0;
    width: 100%;
    height: calc(var(--floor) * 2);
    display: flex;
    justify-content: center;
    align-items: center;
    perspective: 1000px;
}

.ripple {
    position: absolute;
    border-radius: 50%;
    /* background: rgba(255, 255, 255, 0.3); */
    transform: rotateX(81deg);
    animation: ripple 4s infinite;
    border-style: solid;
    border-color: #5f0f8d;
    mix-blend-mode: overlay;
    filter: blur(1px);
}

.ripple:nth-child(2) {
    animation-delay: .1s;
    border-color: #df76f4;
    filter: blur(3px);

}

.ripple:nth-child(3) {
    animation-delay: 2s;
}

.ripple:nth-child(4) {
    animation-delay: 2.1s;
    border-color: #df76f4;
    filter: blur(3px);

}

@keyframes ripple {
    0% {
        width: 0;
        height: 0;
        opacity: .7;
        border-width: 30px;
        /* filter: blur(0px); */
    }

    70% {
        width: var(--circleBig*.8);
        height: var(--circleBig*.8);
        opacity: .5;
    }

    100% {
        width: var(--circleBig);
        height: var(--circleBig);
        opacity: 0;
        border-width: 1px;
    }
}

.particles {
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 20%;
    max-height: 12vw;
    pointer-events: none;
}

.particle {
    position: absolute;
    bottom: 0;
    width: 5px;
    height: 5px;
    background: rgba(255, 255, 255, 0.8);
    border-radius: 50%;
    animation: particle 5s infinite;
}

@keyframes particle {
    0% {
        transform: translateY(0) scale(1);
        opacity: 1;
    }

    100% {
        transform: translateY(-200px) scale(0.5);
        opacity: 0;
    }
}


/* 粒子 */

.child {
    width: 50px;
    height: 50px;
    position: absolute;
    animation: fadeOut 3s ease-in infinite;
    background: radial-gradient(ellipse at center, #ff54ff00 0%, #747fe08c 30%, #ffffff 90%, #ff54ff00 100%);
    ;
    border-radius: 50%;
    mix-blend-mode: hard-light;
    z-index: 10;
}


.child.S {
    width: calc(var(--Particle)/2.8);
    height: calc(var(--Particle)/2.8);
    z-index: 1;
}

.child.M {
    width: calc(var(--Particle)/2);
    height: calc(var(--Particle)/2);
    z-index: 1;
}

.child.L {
    width: calc(var(--Particle)/1.5);
    height: calc(var(--Particle)/1.5);
}

.child.XL {
    width: calc(var(--Particle));
    height: calc(var(--Particle));
}

@keyframes fadeOut {
    0% {
        transform: translateY(0) scale(1);
        opacity: 0;
    }

    5% {
        opacity: 1;
    }


    100% {
        transform: translateY(-80vh) scale(0.5);
        opacity: 0;
    }
}



@media screen and (max-width: 768px) {

    #container .child:nth-child(4n),
    #container .child:nth-child(4n-1) {
        display: none;
    }
}