@media screen and (max-width: 767px) {
    #header #key .img img
    {
       -o-object-position:33% center;
       object-position:33% center
    }
 }
 
 #sec1
 {
    position:relative;
    padding:20vw 0 15vw
 }
 
 #sec1::before
 {
    content:"";
    position:absolute;
    top:0;
    left:0;
    bottom:0;
    right:0;
    background:url(../img/concept/s1_bg.png) no-repeat top center/80% auto
 }
 
 #sec1 .wrap
 {
    z-index:2
 }
 
 #sec1 h2
 {
    width:22vw;
    margin:0 auto 15vw;
    height:40vw;
    position:relative;
    text-align:center;
    font-size:7vw;
    line-height:2;
    box-sizing:border-box;
    padding:0 4vw;
    letter-spacing:.25em
 }
 
 #sec1 h2::before
 {
    content:"";
    position:absolute;
    top:0;
    right:0;
    box-sizing:border-box;
    border-top:1px solid;
    border-right:1px solid;
    width:7vw;
    height:10vw
 }
 
 #sec1 h2::after
 {
    content:"";
    position:absolute;
    bottom:0;
    left:0;
    box-sizing:border-box;
    border-bottom:1px solid;
    border-left:1px solid;
    width:7vw;
    height:10vw
 }
 
 #sec1 .group-txt h3
 {
    font-size:5vw;
    letter-spacing:.15em;
    line-height:1.5;
    margin:0 0 5vw
 }
 
 #sec1 .group-txt .txt
 {
    letter-spacing:.15em
 }
 
 #sec1 .group-txt .txt+.txt
 {
    margin-top:30px
 }
 
 @media screen and (min-width: 768px) {
    #sec1
    {
       padding:166px 0 100px
    }
 
    #sec1::before
    {
       background-size:auto
    }
 
    #sec1 h2
    {
       width:128px;
       margin:0 auto 126px;
       height:345px;
       font-size:40px;
       padding:0 24px
    }
 
    #sec1 h2::before
    {
       width:43px;
       height:65px
    }
 
    #sec1 h2::after
    {
       width:43px;
       height:65px
    }
 
    #sec1 .group-txt
    {
       margin:0 auto;
       /* width:810px; */
       display:flex;
       flex-direction:row-reverse;
       height:500px
    }
 
    #sec1 .group-txt h3
    {
       font-size:24px;
       margin:0 0 0 60px
    }
 
    #sec1 .group-txt .txt+.txt
    {
       margin-top:0;
       margin-right:45px
    }
 }
 
 #sec2
 {
    position:relative;
    padding:10vw 0 0
 }
 
 #sec2::before
 {
    content:"";
    position:absolute;
    top:0;
    right:0;
    left:60vw;
    height:70vw;
    background:url(../img/shared/bg.png)
 }
 
 #sec2 .wrap
 {
    z-index:2
 }
 
 #sec2 h2
 {
    position:relative;
    margin:0 0 5vw
 }
 
 #sec2 h2 span
 {
    display:inline-block;
    position:relative;
    letter-spacing:.26em
 }
 
 #sec2 h2 span::before
 {
    content:"";
    position:absolute;
    top:50%;
    transform:translateY(-50%);
    left:calc(100% + 2vw);
    height:1px;
    background:linear-gradient(90deg,#000 20%,rgba(0,0,0,0) 100%);
    width:40vw
 }
 
 #sec2 .group .item
 {
    position:relative
 }
 
 #sec2 .group .item+.item
 {
    margin-top:12vw
 }
 
 #sec2 .group .item:nth-child(2)::before
 {
    content:"";
    position:absolute;
    background:url(../img/shared/bg.png);
    width:40vw;
    height:50vw;
    top:35vw;
    left:60vw
 }
 
 #sec2 .group .item .img
 {
    position:relative;
    z-index:2
 }
 
 #sec2 .group .item .group-txt
 {
    margin:8vw 0 0;
    position:relative;
    z-index:2
 }
 
 #sec2 .group .item .group-txt h3
 {
    line-height:1.5
 }
 
 @media screen and (max-width: 767px) {
    #sec2 .group .item .group-txt h3
    {
       text-align:center
    }
 }
 
 #sec2 .group .item .group-txt h3 span
 {
    text-align:center;
    display:inline-block;
    position:relative;
    padding:0 3vw 1vw;
    letter-spacing:.25em;
    min-width:30vw;
    box-sizing:border-box
 }
 
 #sec2 .group .item .group-txt h3 span::before
 {
    content:"";
    position:absolute;
    left:0;
    right:0;
    height:1px;
    bottom:0;
    background:radial-gradient(circle,#000 0%,rgba(0,0,0,0) 100%);
    opacity:.3
 }
 
 #sec2 .group .item .group-txt .txt
 {
    text-align:justify;
    letter-spacing:.1em;
    margin:7vw 0 0
 }
 
 #sec2 .img2
 {
    margin:15vw 0 0;
    height:40vw
 }
 
 @media screen and (min-width: 768px) {
    #sec2
    {
       padding:61px 0 0
    }
 
    #sec2::before
    {
       left:calc(50% + 128px);
       height:411px
    }
 
    #sec2 .wrap
    {
       width:1054px
    }
 
    #sec2 h2
    {
       margin:0 auto 31px;
       max-width:100%;
       width:1030px
    }
 
    #sec2 h2 span::before
    {
       width:886px;
       max-width:100vw;
       left:calc(100% + 13px)
    }
 
    #sec2 .group .item
    {
       display:flex;
       justify-content:space-between;
       align-items:flex-start;
       width:1016px;
       max-width:100%
    }
 
    #sec2 .group .item+.item
    {
       margin-top:79px
    }
 
    #sec2 .group .item:nth-child(2)::before
    {
       width:314px;
       height:382px;
       top:133px;
       left:299px
    }
 
    #sec2 .group .item .group-txt
    {
       margin:61px 0 0;
       width:355px
    }
 
    #sec2 .group .item .group-txt h3
    {
       text-align:right
    }
 
    #sec2 .group .item .group-txt h3 span
    {
       padding:0 15px 7px;
       min-width:118px
    }
 
    #sec2 .group .item .group-txt .txt
    {
       margin:44px 15px 0 0
    }
 
    #sec2 .group .item:nth-child(odd)
    {
       flex-direction:row-reverse;
       margin-left:auto
    }
 
    #sec2 .group .item:nth-child(odd) .group-txt
    {
       width:350px
    }
 
    #sec2 .group .item:nth-child(odd) .group-txt h3
    {
       text-align:left
    }
 
    #sec2 .group .item:nth-child(odd) .group-txt .txt
    {
       margin-left:21px;
       margin-right:0
    }
 
    #sec2 .img2
    {
       margin:151px 0 0;
       height:400px
    }
 }
 
 #sec3
 {
    padding:20vw 0 0
 }
 
 #sec3 h2
 {
    text-align:center;
    background:url(../img/concept/s3_logo.png) no-repeat top center/15% auto;
    padding:20vw 0 0;
    line-height:2;
    letter-spacing:.25em;
    margin:0 0 15vw
 }
 
 #sec3 .flex
 {
    position:relative
 }
 
 #sec3 .flex::before
 {
    content:"";
    position:absolute;
    background:url(../img/shared/bg.png);
    top:78vw;
    left:50vw;
    width:50vw
 }
 
 @media screen and (max-width: 767px) {
    #sec3 .flex::before
    {
       bottom:-20vw
    }
 }
 
 #sec3 .flex .img
 {
    position:relative;
    z-index:2
 }
 
 #sec3 .flex .group-txt
 {
    margin:7vw var(--wrapPadding) 0;
    position:relative;
    z-index:2
 }
 
 #sec3 .flex .group-txt .txt
 {
    letter-spacing:.15em
 }
 
 #sec3 .flex .group-txt .txt+.txt
 {
    margin-top:30px
 }
 
 @media screen and (min-width: 768px) {
    #sec3
    {
       padding:150px 0 0
    }
 
    #sec3 h2
    {
       background-size:auto;
       padding:101px 0 0;
       line-height:74px;
       margin:0 0 137px
    }
 
    #sec3 .flex
    {
       position:relative;
       display:flex;
       align-items:flex-start;
       gap:0 118px
    }
 
    #sec3 .flex::before
    {
       top:385px;
       left:calc(50% - 166px);
       height:670px;
       width:481px
    }
 
    #sec3 .flex .img
    {
       width:calc(50% + 36px);
       height:900px;
       max-width:calc(100% - 643px)
    }
 
    #sec3 .flex .group-txt
    {
       width:515px;
       margin:30px 0 0
    }
 
    #sec3 .flex .group-txt .txt+.txt
    {
       margin-top:45px
    }
 }
 
 #sec4
 {
    margin:30vw 0 0;
    position:relative
 }
 
 #sec4::before
 {
    content:"";
    position:absolute;
    background:url(../img/concept/s3_line.png) no-repeat center/100% auto;
    width:30vw;
    height:30vw;
    top:-30vw;
    left:43vw
 }
 
 #sec4 h2
 {
    line-height:2;
    margin:0 var(--wrapPadding) 12vw
 }
 
 #sec4 h2 span
 {
    display:inline-block;
    text-align:left;
    letter-spacing:.25em
 }
 
 #sec4 .set1
 {
    margin:0 var(--wrapPadding)
 }
 
 #sec4 .set1 .group-img .img+.img
 {
    margin-top:1.5vw
 }
 
 #sec4 .set1 .group-txt
 {
    margin:8vw 0 0
 }
 
 #sec4 .set1 .group-txt h3
 {
    width:12.3vw;
    margin:0 auto;
    letter-spacing:.25em;
    height:20vw
 }
 
 #sec4 .set1 .group-txt .txt
 {
    letter-spacing:.15em
 }
 
 #sec4 .set2
 {
    margin:15vw var(--wrapPadding) 0
 }
 
 #sec4 .set2 .img
 {
    margin:0 0 1.5vw
 }
 
 #sec4 .set2 .flex .group-txt
 {
    margin:8vw 0 0
 }
 
 #sec4 .set2 .flex .group-txt h3
 {
    width:12.3vw;
    margin:0 auto;
    letter-spacing:.25em;
    height:20vw
 }
 
 #sec4 .set2 .flex .group-txt .txt
 {
    letter-spacing:.15em
 }
 
 #sec4 .set3
 {
    margin:15vw var(--wrapPadding) 0;
    position:relative
 }
 
 #sec4 .set3::before
 {
    content:"";
    position:absolute;
    background:url(../img/concept/s4_line.png) no-repeat center/100% auto;
    width:50vw;
    height:46vw;
    left:70vw
 }
 
 @media screen and (max-width: 767px) {
    #sec4 .set3::before
    {
       bottom:-15vw
    }
 }
 
 #sec4 .set3 .img
 {
    margin:0 0 8vw
 }
 
 #sec4 .set3 .group-txt
 {
    position:relative;
    z-index:2
 }
 
 #sec4 .set3 .group-txt h3
 {
    width:12.3vw;
    margin:0 auto;
    letter-spacing:.25em;
    height:20vw
 }
 
 #sec4 .set3 .group-txt .txt
 {
    letter-spacing:.15em
 }
 
 @media screen and (min-width: 768px) {
    #sec4
    {
       margin:279px 0 0
    }
 
    #sec4::before
    {
       width:254px;
       height:214px;
       top:-203px;
       left:calc(50% - 93px)
    }
 
    #sec4 h2
    {
       text-align:right;
       line-height:74px;
       width:1100px;
       max-width:calc(100% - 60px);
       margin:0 auto 93px
    }
 
    #sec4 .set1
    {
       margin:0 auto;
       max-width:calc(100% - 60px);
       width:1192px;
       display:flex;
       gap:0 132px
    }
 
    #sec4 .set1 .group-img
    {
       width:730px;
       max-width:calc(100% - 402px)
    }
 
    #sec4 .set1 .group-img .img
    {
       height:351px
    }
 
    #sec4 .set1 .group-img .img+.img
    {
       height:352px;
       margin-top:10px
    }
 
    #sec4 .set1 .group-txt
    {
       margin:132px 0 0;
       width:270px
    }
 
    #sec4 .set1 .group-txt h3
    {
       width:90px;
       height:157px
    }
 
    #sec4 .set1 .group-txt .txt
    {
       height:400px
    }
 
    #sec4 .set2
    {
       margin:148px auto 0;
       max-width:calc(100% - 60px);
       width:1256px
    }
 
    #sec4 .set2 .img
    {
       text-align:right;
       width:988px;
       margin:0 auto 66px
    }
 
    #sec4 .set2 .flex
    {
       width:1140px;
       max-width:100%;
       display:flex;
       flex-direction:row-reverse;
       justify-content:space-between;
       margin-left:auto
    }
 
    #sec4 .set2 .flex .img2
    {
       width:758px;
       height:382px;
       max-width:calc(100% - 370px)
    }
 
    #sec4 .set2 .flex .group-txt
    {
       margin:32px 0 0;
       width:225px
    }
 
    #sec4 .set2 .flex .group-txt h3
    {
       width:90px;
       height:115px
    }
 
    #sec4 .set2 .flex .group-txt .txt
    {
       height:440px
    }
 
    #sec4 .set3
    {
       margin:-33px auto 0;
       max-width:calc(100% - 60px);
       width:1272px;
       display:flex;
       align-items:flex-start;
       gap:0 203px
    }
 
    #sec4 .set3::before
    {
       width:481px;
       height:404px;
       left:calc(50% + 505px);
       top:328px
    }
 
    #sec4 .set3 .img
    {
       width:837px;
       height:578px;
       max-width:calc(100% - 400px);
       margin:55px 0 0
    }
 
    #sec4 .set3 .group-txt h3
    {
       width:90px;
       height:156px
    }
 
    #sec4 .set3 .group-txt .txt
    {
       height:460px
    }
 }
 
 #sec5
 {
    margin:25vw 0 0;
    padding:0 0 20vw;
    position:relative
 }
 
 #sec5::before
 {
    content:"";
    position:absolute;
    bottom:0;
    left:0;
    right:0;
    top:30vw;
    background:url(../img/shared/bg.png)
 }
 
 #sec5 .wrap
 {
    z-index:2
 }
 
 #sec5 .img
 {
    margin:0 -5.5vw 0 40vw
 }
 
 #sec5 .flex
 {
    margin:5vw 0 0
 }
 
 #sec5 .flex .group-txt
 {
    margin:8vw 0 0
 }
 
 #sec5 .flex .group-txt h2
 {
    letter-spacing:.25em
 }
 
 #sec5 .flex .group-txt .txt
 {
    margin:6vw 0 0;
    letter-spacing:.15em
 }
 
 @media screen and (min-width: 768px) {
    #sec5
    {
       margin:201px 0 0;
       padding:0 0 189px
    }
 
    #sec5::before
    {
       top:215px
    }
 
    #sec5 .wrap
    {
       width:1184px
    }
 
    #sec5 .img
    {
       text-align:right;
       margin:0 auto;
       width:1134px;
       max-width:100%
    }
 
    #sec5 .flex
    {
       display:flex;
       justify-content:space-between;
       margin:-116px 0 0 auto;
       width:1147px;
       max-width:100%
    }
 
    #sec5 .flex .img2
    {
       width:543px;
       height:802px;
       max-width:calc(100% - 604px)
    }
 
    #sec5 .flex .group-txt
    {
       margin:228px 0 0;
       width:465px
    }
 
    #sec5 .flex .group-txt .txt
    {
       margin:48px -30px 0 7px
    }
 }