.text-wrap {
    position: relative;
    display: flex;
    align-items: center;
    overflow: hidden;
}

.after {
    position: absolute;
    top: 0;
    left: 0;
    display: flex;
    align-items: center;
}

.before {
    display: flex;
    align-items: center;
}

.before span,
.after span {
    line-height: 1.1;
    transition: color .3s ease-out;
    /*ease-outで余裕のある動きに*/
}

.after span {
    transform: translateY(100%);
}

.anime-up-slow,
.anime-up-fast {
    opacity: 0;
}

.anime-up-slow.displayed,
.anime-up-fast.displayed {
    opacity: 1;
}

.anime-up-slow.displayed span,
.anime-up-fast.displayed span {
    display: inline-block;
}

.anime-up-slow.displayed>span,
.anime-up-fast.displayed>span {
    overflow: hidden;
}

.anime-up-slow.displayed>span>span,
.anime-up-fast.displayed>span>span {
    animation: showTextFromBottom .4s backwards;
    transition-timing-function: cubic-bezier(.21, .7, .81, .58);
}

@keyframes showTextFromBottom {
    0% {
        opacity: 1;
        transform: translateY(100%);
    }
    100% {
        opacity: 1;
        transform: translateY(0px);
    }
}

.rollIcon {
    animation: rollIconAnime .8s ease forwards;
    opacity: 0;
    animation-delay: 0.1s;
}

@keyframes rollIconAnime {
    from {
        opacity: 0;
        transform: rotate(-50deg);
        transform-origin: 50% 70%;
    }
    to {
        opacity: 1;
        transform: rotate(0);
        transform-origin: 50% 70%;
    }
}

.fu-anime {
    animation: fuAnime 1.2s ease-out forwards;
}

@keyframes fuAnime {
    0% {
        opacity: 0;
        transform: translateY(30px);
    }
    95% {
        opacity: 1;
        transform: translateY(0);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-float {
    animation: floatAnime 3s ease-in-out infinite;
    opacity: 1 !important;
}

@keyframes floatAnime {
    0%,
    100% {
        transform: translateY(0);
        /* 初期位置 */
    }
    50% {
        transform: translateY(-10px);
        /* 上方向に移動 */
    }
}

.delay1 {
    animation-delay: 0.2s;
}

.delay2 {
    animation-delay: 0.3s;
}

.delay3 {
    animation-delay: 0.4s;
}

.delay4 {
    animation-delay: 0.5s;
}

.delay5 {
    animation-delay: 0.6s;
}

.delay6 {
    animation-delay: 0.7s;
}

.delay7 {
    animation-delay: 1s;
}

.fadeUp {
    animation-name: fadeUpAnime;
    animation-duration: 0.8s;
    animation-fill-mode: forwards;
    opacity: 0;
}

@keyframes fadeUpAnime {
    from {
        opacity: 0;
        transform: translateY(15px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.fadeIn {
    animation-name: fadeInAnime;
    animation-duration: 1s;
    animation-fill-mode: forwards;
    opacity: 0;
}

@keyframes fadeInAnime {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.fadeDown {
    animation-name: fadeDownAnime;
    animation-duration: 0.8s;
    animation-fill-mode: forwards;
    opacity: 0;
}

@keyframes fadeDownAnime {
    from {
        opacity: 0;
        transform: translateY(-30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.fadel-r {
    animation-name: fadel-rAnime;
    animation-duration: 0.8s;
    animation-fill-mode: forwards;
    opacity: 0;
}

@keyframes fadel-rAnime {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.fader-l {
    animation-name: fader-lAnime;
    animation-duration: 0.8s;
    animation-fill-mode: forwards;
    opacity: 0;
}

@keyframes fader-lAnime {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes svgAnime1 {
    0% {
        opacity: 0;
        transform: translate(-150%, -50%);
    }
    100% {
        opacity: 1;
        transform: translate(0, -50%);
    }
}

@keyframes svgAnime2 {
    0% {
        opacity: 1;
        transform: translate(0, 0);
    }
    100% {
        opacity: 0;
        transform: translate(150%, 0);
    }
}

.bgtextend {
    position: relative;
    &::before {
        animation-name: bgextendAnimeBase;
        animation-duration: 1s;
        animation-delay: .5s;
        animation-fill-mode: forwards;
        animation-timing-function: cubic-bezier(1, 0, 0, 1);
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 0;
        height: 100%;
    }
}

@keyframes bgextendAnimeBase {
    0% {
        width: 100%;
        opacity: 1;
    }
    99% {
        opacity: 1;
        width: 0;
    }
    100% {
        opacity: 0;
        width: 0;
    }
}