.inview {
    opacity: 0;
    transition: 
        opacity 0.7s ease, 
        transform 0.7s ease, 
        filter 0.8s ease, 
        clip-path 0.7s ease;
}

.inview.js-on {
    opacity: 1;
}


/* ====== fade-up ====== */
.fade-up {
    transform: translateY(40px);
    transition: .8s;
}
.fade-up.js-on {
    transform: translateY(0);
}


/* ====== fade-down ====== */
.fade-down {
    transform: translateY(-40px);
    transition: .8s;
}
.fade-down.js-on {
    transform: translateY(0);
}


/* ====== fade-left ====== */
.fade-left {
    transform: translateX(-60px);
    transition: .8s;
}
.fade-left.js-on {
    transform: translateX(0);
}


/* ====== fade-right ====== */
.fade-right {
    transform: translateX(60px);
    transition: .8s;
}
.fade-right.js-on {
    transform: translateX(0);
}


/* ====== scale-up ====== */
.scale-up {
    transform: scale(.9);
}
.scale-up.js-on {
    transform: scale(1);
}


/* ====== blur ====== */
.blur {
    filter: blur(50px);
    transition: 1s;
}
.blur.js-on {
    filter: blur(0);
}


/* ====== clip ====== */
.clip {
    clip-path: inset(0 0 100% 0);
    transition: clip-path .8s cubic-bezier(0.45, 0, 0.55, 1), opacity 1.4s ease;
}

.clip.js-on {
    clip-path: inset(0);
}


/* ====== tenko ====== */
.tenko {
    margin: 0 auto 100px;
    position: relative;
    overflow: hidden;
}

.tenko::after {
    content: "";
    position: absolute;
    inset: 0;
    background: #fff;
    transform: translateY(0%);
    transition: transform 0.6s ease-in-out;
    z-index: 2;
}

.tenko img {
    width: 100%;
    vertical-align: middle;
    display: block;
    transform: scale(1.05);
    transition: .8s;
}

.tenko.js-on::after {
    transform: translateY(-100%);
    transition: 1s;
}

.tenko.js-on img {
    transform: scale(1);
}


/* ============
    delay
============ */
.delay {
    transform: translateY(20px);
}

.delay.js-on {
    transform: translateY(0);
}