#keyvisual {
    margin: 6.5vw 7% 0;
    transition: .3s linear
}

#keyvisual .catch {
    position: absolute;
    bottom: -12vw;
    left: 50%;
    z-index: 1;
    transform: translateX(-50%)
}

#keyvisual .catch span {
    display: block;
    height: -moz-fit-content;
    height: fit-content;
    color: #fff;
    font-size: 6.67vw;
    line-height: 1;
    letter-spacing: .12em
}

#keyvisual .catch span:nth-child(1) {
    background: url("../img/concept/kv_deco_ttl.png") no-repeat right top/auto 100%;
    padding: 5vw 14vw 5vw 0
}

#keyvisual .catch span:nth-child(2) {
    opacity: 0;
    transition: .3s linear;
    margin: 65vw 4vw 0 0
}

#keyvisual.active {
    margin-left: 0;
    margin-right: 0
}

#keyvisual.active .catch span:nth-child(2) {
    transition-delay: 0.5s;
    opacity: 1
}

@media screen and (min-width: 768px) {
    #keyvisual {
        margin: 41px 50px 0
    }

    #keyvisual .catch {
        bottom: -77px;
        left: calc(50% - 137px)
    }

    #keyvisual .catch span {
        font-size: 42px
    }

    #keyvisual .catch span:nth-child(1) {
        background-position: right top;
        background-size: auto;
        padding: 19px 86px 0px 0
    }

    #keyvisual .catch span:nth-child(2) {
        margin: 412px 33px 0 0
    }
}

#sec1 .sec1-scroll {
    position: relative;
    height: 100vh;
    overflow: hidden
}

#sec1 .sec1-scroll .bg {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1
}

#sec1 .sec1-scroll .bg img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover
}

#sec1 .sec1-scroll .overlay {
    position: absolute;
    inset: 0;
    z-index: 2;
    background: rgba(0, 0, 0, .6);
    opacity: 0
}

#sec1 .sec1-scroll .ttl {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 2;
    transition: 0.6s linear
}

#sec1 .sec1-scroll .ttl h2 {
    background: url("../img/concept/sec1_deco_ttl.png") no-repeat center top/auto 100%;
    color: #fff;
    padding: 6vw;
    font-size: 9.06vw;
    line-height: 1;
    letter-spacing: .12em
}

#sec1 .sec1-scroll .ttl h2 span {
    font-size: 7.33vw;
    letter-spacing: .12em
}

#sec1 .sec1-scroll .ttl.is-hide {
    opacity: 0
}

#sec1 .desc {
    position: relative;
    z-index: 3;
    height: 100vh;
    color: #fff;
    padding: 0 7%;
    display: flex;
    align-items: center;
    justify-content: center
}

@media screen and (min-width: 768px) {
    #sec1 .sec1-scroll .ttl {
        max-width: 1200px;
        margin: 0 auto;
        left: 0;
        right: 0;
        transform: translateY(-50%)
    }

    #sec1 .sec1-scroll .ttl h2 {
        margin-left: 124px;
        padding: 28px 31px 35px 26px;
        font-size: 60px
    }

    #sec1 .sec1-scroll .ttl h2 span {
        font-size: 50px
    }

    #sec1 .desc {
        text-align: center;
        padding: 0
    }
}

#sec2 {
    position: relative;
    z-index: 2;
    background: url("../img/shared/bg1.jpg") repeat center;
    margin-top: -100px;
    -webkit-clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 100px);
    clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 100px);
    padding-top: 30vw
}

#sec2::before {
    content: "";
    position: absolute;
    background: url("../img/shared/bg2.jpg") repeat center;
    top: 0;
    left: 0;
    right: 0;
    -webkit-clip-path: polygon(0 0, 100% 100%, 100% 0);
    clip-path: polygon(0 0, 100% 100%, 100% 0);
    height: 100px
}

#sec2 .set1 h2 {
    margin-right: 4%
}

#sec2 .set1 .group1 {
    position: relative;
    margin-top: 10vw
}

#sec2 .set1 .group1 h3 {
    position: absolute;
    top: 10vw;
    left: 0;
    right: 0;
    z-index: 1;
    color: #fff;
    text-align: center;
    font-size: 5.33vw;
    line-height: 1.5;
    letter-spacing: .12em
}

#sec2 .set1 .group1 h3 span {
    font-size: 7.73vw;
    letter-spacing: .12em
}

#sec2 .set1 .group2 {
    margin: 10vw 7% 0
}

#sec2 .set1 .group2 .photo {
    margin-top: 10vw
}

#sec2 .set2 {
    margin: 15vw 7% 0
}

#sec2 .set2 .group1 h3 {
    background: url("../img/concept/sec2_deco_ttl1.png") no-repeat right top/8.4vw auto, url("../img/concept/sec2_deco_ttl2.png") no-repeat left bottom/8.4vw auto;
    margin: 0 auto;
    padding: 9vw 6vw
}

#sec2 .set2 .group1 h3 span {
    display: block;
    line-height: 2.03125;
    letter-spacing: .12em
}

#sec2 .set2 .group1 h3 span:nth-child(1) {
    text-align: left;
    font-size: 5.33vw
}

#sec2 .set2 .group1 h3 span:nth-child(2) {
    text-align: right;
    font-size: 4.4vw
}

#sec2 .set2 .group1 .photo {
    margin-top: 10vw
}

#sec2 .set2 .group2 {
    margin-top: 9vw
}

#sec2 .set2 .group2 .photo {
    margin-top: 10vw
}

@media screen and (min-width: 768px) {
    #sec2 {
        -webkit-clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 210px);
        clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 210px);
        margin-top: -210px;
        padding-top: 191px
    }

    #sec2::before {
        height: 185px
    }

    #sec2 .set1 h2 {
        text-align: center;
        margin-right: 0
    }

    #sec2 .set1 .group1 {
        max-width: 1400px;
        margin: 64px auto 0
    }

    #sec2 .set1 .group1 h3 {
        max-width: 1053px;
        margin: 0 auto;
        padding-left: 50px;
        top: 50%;
        transform: translateY(-50%);
        left: 0;
        z-index: 1;
        text-align: left;
        font-size: 32px;
        line-height: 56px
    }

    #sec2 .set1 .group1 h3 span {
        font-size: 50px
    }

    #sec2 .set1 .group1 .photo {
        height: 650px
    }

    #sec2 .set1 .group2 {
        display: flex;
        justify-content: space-between;
        -moz-column-gap: 30px;
        column-gap: 30px;
        max-width: 1240px;
        margin: 0 auto;
        padding: 0 20px
    }

    #sec2 .set1 .group2 .photo {
        order: 1;
        flex: 1;
        max-width: 670px;
        height: 425px;
        margin-top: -121px
    }

    #sec2 .set1 .group2 .photo img {
        -o-object-position: right;
        object-position: right
    }

    #sec2 .set1 .group2 .txt {
        width: 501px;
        order: 2;
        margin-top: 64px
    }

    #sec2 .set2 {
        max-width: 1260px;
        padding: 0 30px;
        margin: 64px auto 0
    }

    #sec2 .set2 .group1 {
        position: relative
    }

    #sec2 .set2 .group1 h3 {
        background-size: auto;
        margin: 0 0 0 -44px;
        padding: 48px 43px 54px 30px
    }

    #sec2 .set2 .group1 h3 span:nth-child(1) {
        font-size: 32px
    }

    #sec2 .set2 .group1 h3 span:nth-child(2) {
        margin: 0 -5px 5px 0;
        font-size: 25px
    }

    #sec2 .set2 .group1 .photo {
        margin-top: 0;
        top: 36px;
        left: calc(50% - 151px);
        right: calc(-50vw + 50%);
        height: 600px
    }

    #sec2 .set2 .group2 {
        position: relative;
        margin-top: 0
    }

    #sec2 .set2 .group2 .txt {
        margin: 259px 0 0 auto;
        width: 500px
    }

    #sec2 .set2 .group2 .photo {
        margin-top: 0;
        top: -210px;
        left: -102px;
        right: calc(50% + 50px);
        height: 440px
    }
}

@media screen and (min-width: 768px)and (max-width: 1400px) {
    #sec2 .set2 .group1 h3 {
        margin-left: calc(-50vw + 50% + 50px)
    }
}

@media screen and (min-width: 768px)and (max-width: 1250px) {
    #sec2 .set2 .group1 .photo {
        left: 446.5px
    }
}

#sec3 {
    padding: 15vw 0
}

#sec3 .group1 h2 {
    background: url("../img/concept/sec3_deco_ttl.png") no-repeat center bottom/60vw auto;
    padding-bottom: 1vw;
    text-align: center;
    font-size: 6.67vw;
    line-height: 1.6666666667;
    letter-spacing: .12em
}

#sec3 .group1 h2 span {
    font-size: 7.73vw;
    letter-spacing: .12em
}

#sec3 .group1 .photo {
    position: relative;
    margin: 10vw 15% 0 0
}

#sec3 .group1 .photo::before {
    content: "";
    position: absolute;
    border: 3px solid #ff4500;
    top: 3vw;
    left: 3vw;
    bottom: -3vw;
    right: -3vw;
    z-index: -1
}

#sec3 .group2 .photo {
    position: relative;
    margin: 10vw 0 0 15%
}

#sec3 .group2 .photo::before {
    content: "";
    position: absolute;
    border: 3px solid #ff4500;
    top: 3vw;
    left: -3vw;
    bottom: -3vw;
    right: 3vw;
    z-index: -1
}

#sec3 .group2 .txt {
    margin-top: 10vw
}

@media screen and (min-width: 768px) {
    #sec3 {
        padding: 87px 0 125px
    }

    #sec3 .wrap {
        max-width: 1260px;
        padding: 0 30px
    }

    #sec3 .group1 {
        display: flex;
        justify-content: space-between
    }

    #sec3 .group1 h2 {
        background-size: auto;
        background-position: left bottom;
        height: -moz-fit-content;
        height: fit-content;
        padding: 176px 0 11px;
        text-align: left;
        font-size: 42px;
        line-height: 73px
    }

    #sec3 .group1 h2 span {
        font-size: 50px
    }

    #sec3 .group1 .photo {
        margin: 0 -100px 0 40px;
        flex: 1;
        max-width: 883px;
        height: 500px
    }

    #sec3 .group1 .photo::before {
        top: 20px;
        left: 20px;
        bottom: -20px;
        right: -20px
    }

    #sec3 .group2 {
        display: flex;
        justify-content: space-between;
        margin-top: 60px
    }

    #sec3 .group2 .photo {
        margin: 0 40px 0 -49px;
        flex: 1;
        max-width: 649px;
        height: 410px
    }

    #sec3 .group2 .photo::before {
        top: 20px;
        left: -20px;
        bottom: -20px;
        right: 20px
    }

    #sec3 .group2 .txt {
        width: 533px;
        margin-top: 82px
    }
}

@media screen and (min-width: 768px)and (max-width: 1500px) {
    #sec3 .group1 .photo {
        margin-right: calc(-50vw + 50% + 50px)
    }
}

@media screen and (min-width: 768px)and (max-width: 1390px) {
    #sec3 .group2 .photo {
        margin-left: calc(-50vw + 50% + 50px)
    }
}

#sec4 {
    position: relative;
    background: url("../img/concept/sec4_bg.jpg") no-repeat center/cover;
    padding: 20vw 0
}

#sec4 .infiniteslide_wrap {
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    transform: translateY(-50%)
}

#sec4 .infiniteslide_wrap img {
    width: auto;
    height: 120vw
}

#sec4 .box {
    position: relative;
    z-index: 2;
    background: rgba(255, 255, 255, .8);
    border-radius: 20px;
    padding: 10vw 5%;
    margin: 0 7% 0
}

#sec4 .box h2 {
    text-align: center;
    line-height: 1.5625;
    font-size: 5.33vw;
    letter-spacing: .12em
}

#sec4 .box h2 span {
    color: #ff4500;
    font-size: 6.67vw;
    letter-spacing: .12em
}

#sec4 .box .txt {
    margin-top: 5vw
}

@media screen and (min-width: 768px) {
    #sec4 {
        padding: 197px 0
    }

    #sec4 .infiniteslide_wrap img {
        height: auto
    }

    #sec4 .box {
        width: 500px;
        margin: 0 auto;
        padding: 64px 0 70px
    }

    #sec4 .box h2 {
        font-size: 32px;
        line-height: 54px
    }

    #sec4 .box h2 span {
        font-size: 42px
    }

    #sec4 .box .txt {
        text-align: center;
        margin-top: 15px
    }
}

#sec5 {
    padding: 15vw 4%
}

#sec5 .group-link li {
    height: 60vw
}

#sec5 .group-link li a {
    position: relative;
    display: block;
    height: 100%
}

#sec5 .group-link li a::before {
    content: "";
    position: absolute;
    border-width: 3px;
    border-style: solid;
    inset: 2vw;
    z-index: 1
}

#sec5 .group-link li a .photo {
    height: 100%
}

#sec5 .group-link li a .photo img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
    object-fit: cover
}

#sec5 .group-link li a .sub-ttl {
    position: absolute;
    top: 40%;
    left: 0;
    right: 0;
    transform: translateY(-50%);
    text-align: center;
    z-index: 1
}

#sec5 .group-link li a .sub-ttl span {
    display: block;
    color: #fff;
    letter-spacing: .12em
}

#sec5 .group-link li a .sub-ttl span.jp {
    font-size: 4.33vw;
    line-height: 1;
    line-height: 1.5625
}

#sec5 .group-link li a .sub-ttl span.en {
    margin-top: 2vw;
    font-size: 9.4vw
}

#sec5 .group-link li a .arrow {
    position: absolute;
    bottom: 5vw;
    left: 50%;
    transform: translateX(-50%);
    width: 10vw;
    z-index: 1
}

#sec5 .group-link li+li {
    margin-top: 5vw
}

#sec5 .group-link li:nth-child(2) a::before,
#sec5 .group-link li:nth-child(3) a::before {
    border-color: #fff
}

#sec5 .group-link li:nth-child(1) a::before,
#sec5 .group-link li:nth-child(4) a::before {
    border-color: #ff4500
}

@media screen and (min-width: 768px) {
    #sec5 {
        padding: 100px 20px 80px
    }

    #sec5 .group-link {
        display: flex;
        justify-content: space-between;
        row-gap: 20px;
        flex-wrap: wrap;
        max-width: 1400px;
        margin: 0 auto
    }

    #sec5 .group-link li {
        height: auto
    }

    #sec5 .group-link li a {
        overflow: hidden
    }

    #sec5 .group-link li a::before {
        inset: 8px
    }

    #sec5 .group-link li a .sub-ttl {
        top: calc(50% - 11px)
    }

    #sec5 .group-link li a .sub-ttl span.jp {
        font-size: 32px
    }

    #sec5 .group-link li a .sub-ttl span.en {
        margin-top: 23px;
        font-size: 70px
    }

    #sec5 .group-link li a .arrow {
        bottom: 70px;
        width: 75px
    }

    #sec5 .group-link li+li {
        margin-top: 0
    }

    #sec5 .group-link li:nth-child(1) {
        width: 60.7142857143%
    }

    #sec5 .group-link li:nth-child(1) a {
        border-radius: 100px 0 0 0
    }

    #sec5 .group-link li:nth-child(1) a::before {
        border-radius: 100px 0 0 0
    }

    #sec5 .group-link li:nth-child(2) {
        width: 38%
    }

    #sec5 .group-link li:nth-child(2) a {
        border-radius: 0 100px 0 0
    }

    #sec5 .group-link li:nth-child(2) a::before {
        border-radius: 0 100px 0 0
    }

    #sec5 .group-link li:nth-child(3) {
        width: 38%
    }

    #sec5 .group-link li:nth-child(3) a {
        border-radius: 0 0 0 100px
    }

    #sec5 .group-link li:nth-child(3) a::before {
        border-radius: 0 0 0 100px
    }

    #sec5 .group-link li:nth-child(4) {
        width: 60.7142857143%
    }

    #sec5 .group-link li:nth-child(4) a {
        border-radius: 0 0 100px 0
    }

    #sec5 .group-link li:nth-child(4) a::before {
        border-radius: 0 0 100px 0
    }
}

@media screen and (min-width: 768px)and (max-width: 1400px) {
    #sec5 .group-link li a .sub-ttl {
        top: calc(50% - 11px)
    }

    #sec5 .group-link li a .sub-ttl span.jp {
        font-size: 2.2857142857vw
    }

    #sec5 .group-link li a .sub-ttl span.en {
        margin-top: 1.6428571429vw;
        font-size: 5vw
    }

    #sec5 .group-link li a .arrow {
        bottom: 5vw;
        width: 5.3571428571vw
    }

    #sec5 .group-link li a .arrow img {
        width: 100%
    }
}