em {
   font-style: normal;
}

#key {
   background: url('../img/concept/key.jpg') no-repeat center top / cover;
}


#sec1 {
   background-image: url(../img/concept/sec1_bg.png);
   background-position: center top;
   background-repeat: no-repeat;
   background-size: 100% auto;
   position: relative;
   padding-bottom: 30vw;
}

#sec1:after {
   content: "";
   position: absolute;
   top: 0px;
   left: -10%;
   right: -10%;
   bottom: 0px;
   background-image: url(../img/concept/sec1_deco4.png);
   background-position: center bottom;
   background-repeat: no-repeat;
   background-size: 100% auto;
   z-index: -1;
}

#sec1 .wrap {
   z-index: 1;
}

#sec1 .wrap:before {
   content: "";
   position: absolute;
   top: 0px;
   left: 0px;
   right: 0px;
   bottom: 0px;
   background-image: url(../img/concept/sec1_deco2.png);
   background-position: center top;
   background-repeat: no-repeat;
   background-size: 100% auto;
   z-index: -1;
}

#sec1 .wrap:after {
   content: "";
   position: absolute;
   top: 0px;
   left: 0px;
   right: 40%;
   bottom: -20vw;
   background-image: url(../img/concept/sec1_deco3.png);
   background-position: center bottom;
   background-repeat: no-repeat;
   background-size: 100% auto;
   z-index: -1;
}

#sec1 h2 {
   width: fit-content;
   margin: -4vw auto 0px;
   font-size: 7.46vw;
   font-weight: 600;
   letter-spacing: 0.1em;
   line-height: 2.17;
}

#sec1 h2 small {
   font-size: 6.26vw;
}

#sec1 h2 em {
   display: block;
}

#sec1 h2 span {
   background-image: url(../img/concept/bg_par1.jpg);
   background-position: center top;
   background-repeat: repeat;
   display: inline-block;
   box-sizing: border-box;
   line-height: 1.17;
   padding: 3vw 1vw;
}

#sec1 h2 span i {
   font-size: 8.8vw;
}

#sec1 h2 em {
   margin-top: 17vw;
}

#sec1 h2 em+em {
   margin-top: 30vw;
}

#sec1 h2 .ttl2 {
   position: relative;
   padding-bottom: 18vw;
}

#sec1 h2 .ttl2:after {
   content: "";
   position: absolute;
   left: 0px;
   right: 0px;
   bottom: 0px;
   background: #fff;
   width: 2px;
   height: 15vw;
   margin: 0px auto;
}

#sec1 .sec1-img1 {
   margin-top: 10vw;
   position: relative;
}

#sec1 .sec1-img1:before {
   content: "";
   position: absolute;
   top: -15vw;
   left: -15%;
   right: 50%;
   bottom: 0px;
   background-image: url(../img/concept/sec1_deco_ring.png);
   background-position: center top;
   background-repeat: no-repeat;
   background-size: 100% auto;
}

#sec1 .row2 {
   position: relative;
   margin-top: 10vw;
}

#sec1 .txt {
   position: relative;
   z-index: 1;
}

#sec1 .txt li+li {
   margin-top: 5vw;
}

#sec1 .sec1-img2 {
   margin-top: 8vw;
   margin-bottom: 8vw;
   position: relative;
}

#sec1 .sec1-img2:before {
   content: "";
   position: absolute;
   top: 20vw;
   left: 60%;
   background-image: url(../img/concept/sec1_deco1.png);
   background-position: center;
   background-repeat: no-repeat;
   background-size: cover;
   width: 95vw;
   height: 95vw;
   z-index: -1;
}

@media only screen and (min-width: 768px) {
   #sec1 {
      padding-bottom: 258px;
      background-size: cover;
   }

   #sec1:after {
      top: auto;
      left: calc(50% - 1153px);
      bottom: -400px;
      background-size: auto;
      width: 1360px;
      height: 926px;
   }

   #sec1 .wrap:before {
      top: 0px;
      left: auto;
      right: -356px;
      background-size: auto;
      width: 1010px;
      height: 970px;
   }

   #sec1 .wrap:after {
      top: auto;
      left: -432px;
      bottom: -154px;
      background-size: auto;
      width: 384px;
      height: 470px;
   }

   #sec1 .row1 {
      display: flex;
      flex-direction: row-reverse;
      justify-content: space-between;
      align-items: flex-start;
   }

   #sec1 h2 {
      width: 300px;
      height: 605px;
      margin: -30px -12px 0px 0px;
      font-size: 46px;
   }

   #sec1 h2 small {
      font-size: 37px;
   }

   #sec1 h2 span {
      padding: 23px 4.5px;
   }

   #sec1 h2 span i {
      font-size: 56px;
   }

   #sec1 h2 em {
      margin-top: 102px;
   }

   #sec1 h2 em+em {
      margin-top: 184px;
   }

   #sec1 h2 .ttl2 {
      padding-bottom: 125px;
   }

   #sec1 h2 .ttl2:after {
      height: 110px;
   }

   #sec1 .sec1-img1 {
      margin: 119px 0px 0px -99px;
   }

   #sec1 .sec1-img1:before {
      top: -177px;
      left: -404px;
      background-size: auto;
      width: 606px;
      height: 551px;
   }

   #sec1 .row2 {
      margin-top: 77px;
   }

   #sec1 .txt {
      width: 620px;
      margin: 0px 0px 0px -48px;
      line-height: 38px;
      letter-spacing: 0.05em;
   }

   #sec1 .txt li+li {
      margin-top: 38px;
   }

   #sec1 .sec1-img2 {
      position: absolute;
      top: 114px;
      right: -149px;
      margin-top: 0;
      margin-bottom: 0;
   }

   #sec1 .sec1-img2:before {
      top: 323px;
      left: 406px;
      background-size: auto;
      width: 715px;
      height: 715px;
   }
}

@media only screen and (min-width: 768px) and (max-width: 1120px) {
   #sec1 .txt {
      margin-left: 10px;
   }
}

#sec2 {
   position: relative;
   z-index: 0;
   padding-bottom: 17vw;
}

#sec2:before {
   content: "";
   position: absolute;
   top: 0px;
   left: 0px;
   right: 0px;
   bottom: 0px;
   background-image: url(../img/concept/sec2_bg.png);
   background-position: center top;
   background-repeat: repeat-x;
   background-size: 100% auto;
   z-index: -1;
}

#sec2:after {
   content: "";
   position: absolute;
   top: 80vw;
   left: 0px;
   right: 0px;
   bottom: 0px;
   background-image: url(../img/concept/bg_par2.jpg);
   background-position: center top;
   background-repeat: repeat;
   z-index: -1;
}

#sec2 .col-right {
   margin: 0px 3%;
   box-sizing: border-box;
}

#sec2 .col-right .sec2-img {
   margin-bottom: 6vw;
}

#sec2 h2 {
   margin: 0px 12% 10vw;
}

#sec2 .box {
   background-image: url(../img/shared/bg-pattern-01.jpg);
   background-position: center top;
   background-repeat: repeat;
   color: #2f1c07;
   font-weight: 500;
   box-sizing: border-box;
   padding: 6vw 6% 8vw;
}

#sec2 .box+.box {
   margin-top: 10vw;
}

#sec2 .sec2-tit dt {
   font-size: 6.66vw;
   letter-spacing: 0;
   line-height: 1;
   color: #b0881d;
   background-image: url(../img/concept/line_par.png);
   background-position: center bottom;
   background-repeat: repeat-x;
   width: fit-content;
   box-sizing: border-box;
   margin-left: -6.5%;
   padding: 0px 6% 3vw;
}

#sec2 .sec2-tit dd {
   font-size: 6.13vw;
   line-height: 1.75;
   font-weight: 600;
   letter-spacing: 0;
}

#sec2 .sec2-ttls {
   font-weight: 700;
   margin-top: 4vw;
}

#sec2 .txt {
   margin-top: 4vw;
   letter-spacing: 0.05em;
}

#sec2 .txt li+li {
   margin-top: 4vw;
}

#sec2 .sec2-group-img {
   margin-top: 6vw;
   column-gap: 2vw;
}

#sec2 .sec2-group-img li {
   color: #fff;
   position: relative;
}
#sec2 .sec2-group-img li span {
   display: block;
   position: absolute;
   bottom: 0;
   right: 10px;
}

@media only screen and (max-width: 767px) {
   #sec2 h2 {
      width: max-content;
      margin: 0 auto 8vw;
   }

   #sec2 h2>span {
      display: inline-flex;
      align-items: flex-start;
   }

   #sec2 h2 .bg {
      gap: 2vw;
      font-weight: 400;
      font-size: 14.93vw;
      letter-spacing: 0;
      line-height: 18vw;
      text-align: center;
      padding-left: 13vw;
   }

   #sec2 h2 .bg span {
      display: inline-block;
      background: url('../img/concept/sec2-h2-bg.png') no-repeat center top / cover;
      width: 19.6vw;
      height: 18vw;
      padding-bottom: 1.6vw;
   }

   #sec2 h2 .bg span:nth-child(1) {
      margin-top: 2vw;
   }

   #sec2 h2 .bg span:nth-child(3) {
      margin-top: 3.2vw;
   }
}

@media only screen and (min-width: 768px) {
   #sec2 {
      display: flex;
      justify-content: space-between;
      padding-bottom: 130px;
   }

   #sec2:before {
      background-size: auto;
      height: 1200px;
   }

   #sec2:after {
      top: 1200px;
   }

   #sec2 .col-left {
      width: calc(100% - 750px);
   }

   #sec2 .col-left.left-fixed {
      position: fixed;
      top: 120px;
   }

   #sec2 .col-left ul {
      position: relative;
   }

   #sec2 .col-left ul li {
      width: 100%;
      position: absolute;
      top: 0;
      right: 0;
      z-index: 9;
   }

   #sec2 .col-left .img-left {
      opacity: 0;
      transition: all 0.5s;
      height: 814px;
   }

   #sec2 .col-left .show-img {
      opacity: 1;
      transition: all 0.5s;
   }

   #sec2 .col-right {
      width: 750px;
      margin: 0px 0px 0px auto;
      padding: 0px 51px;
   }

   #sec2 h2 {
      width: 492px;
      position: relative;
      top: -16px;
      left: 20px;
      margin: 0 auto 36px;
   }

   #sec2 h2>span {
      display: inline-flex;
      align-items: flex-start;
   }

   #sec2 h2 .bg {
      gap: 8px;
      font-weight: 400;
      font-size: 100px;
      letter-spacing: 0;
      line-height: 100px;
      text-align: center;
      padding: 16px 0 0 84px;
   }

   #sec2 h2 .bg span {
      display: inline-block;
      background: url('../img/concept/sec2-h2-bg.png') no-repeat center top / cover;
      width: 121px;
      height: 100px;
      padding-bottom: 20px;
   }

   #sec2 h2 .bg span:nth-child(1) {
      margin-top: 18px;
   }

   #sec2 h2 .bg span:nth-child(3) {
      margin-top: 25px;
   }

   #sec2 .col-right .sec2-img {
      display: none;
   }

   #sec2 .col-right .box+.box {
      margin-top: 60px;
   }

   #sec2 .box {
      padding: 22px 55px 54px;
   }

   #sec2 .sec2-tit dt {
      font-size: 40px;
      padding: 0px 30px 19px 30px;
      margin-left: -55px;
   }

   #sec2 .sec2-tit dd {
      font-size: 36px;
      margin-top: -40px;
   }

   #sec2 .txt {
      line-height: 2.375;
      margin: 14px 13px 0px;
   }

   #sec2 .txt li+li {
      margin-top: 24px;
   }

   #sec2 .sec2-ttls {
      margin-top: 12px;
   }

   #sec2 .sec2-group-img {
      column-gap: 17px;
      margin-top: 40px;
   }

   #sec2 .box3 {
      padding-bottom: 59px;
   }

   #sec2 .box3 .txt {
      margin-top: 21px;
   }
}

@media only screen and (min-width: 768px) and (max-width: 1300px) {
   #sec2 .col-left {
      width: calc(100% - 648px);
   }

   #sec2 .col-right {
      width: 648px;
      padding: 0px 25px;
   }

   #sec2 .box {
      padding-left: 30px;
      padding-right: 30px;
   }

   #sec2 .sec2-tit dt {
      margin-left: -30px;
   }
}

.sec-bg {
   background-image: url(../img/shared/bg-pattern-01.jpg);
   background-position: center top;
   background-repeat: repeat;
   color: #2f1c07;
   padding-bottom: 18vw;
}

@media only screen and (min-width: 768px) {
   .sec-bg {
      padding-bottom: 138px;
   }
}

#sec3 {
   position: relative;
   font-weight: 500;
}

#sec3 .sec3-img1 {
   clip-path: polygon(0 0, 100% 0, 100% 88%, 0% 100%);
   height: 89vw;
}

#sec3 .wrap:before {
   content: "";
   position: absolute;
   top: 63vw;
   left: -6%;
   right: 22%;
   bottom: 0px;
   background-image: url(../img/concept/sec3_deco3.png);
   background-position: center top;
   background-repeat: no-repeat;
   background-size: 100% auto;
}

#sec3 .wrap:after {
   content: "";
   position: absolute;
   top: -10vw;
   left: 68%;
   right: -42%;
   bottom: 0px;
   background-image: url(../img/concept/sec3_deco2.png);
   background-position: center top;
   background-repeat: no-repeat;
   background-size: 100% auto;
}

#sec3 .col-txt {
   position: relative;
}

#sec3 .col-txt:before {
   content: "";
   position: absolute;
   top: -45vw;
   left: 60%;
   right: -60%;
   bottom: 0px;
   background-image: url(../img/concept/sec3_deco1.png);
   background-position: center top;
   background-repeat: no-repeat;
   background-size: 100% auto;
}

#sec3 h2 {
   width: 36vw;
   height: 72vw;
   font-size: 8.8vw;
   letter-spacing: 0.1em;
   white-space: nowrap;
   font-weight: 600;
   line-height: 1.485;
   position: relative;
   z-index: 1;
   margin-left: auto;
}

#sec3 h2 span {
   display: flex;
   align-items: center;
}

#sec3 h2 em {
   margin-top: 30vw;
}

#sec3 .txt {
   margin-top: 5vw;
   position: relative;
   z-index: 1;
}

#sec3 .txt li {
   box-sizing: border-box;
   line-height: 3.125;
}

#sec3 .col-img {
   position: relative;
   margin-top: 10vw;
}

#sec3 .col-img:before {
   content: "";
   position: absolute;
}

#sec3 .col-img li+li {
   margin-top: 4vw;
}

@media only screen and (max-width: 767px) {
   #sec3 .col-top {
      position: relative;
      margin-top: 4vw;
   }

   #sec3 h2 img {
      width: 22vw;
      min-height: 37.6vw;
      margin-bottom: 4vw;
   }

   #sec3 .sec3-map {
      position: absolute;
      top: 12vw;
      left: -4%;
      right: 0px;
   }

   #sec3 .txt {
      border-top: 2px dotted #515151;
   }

   #sec3 .txt li {
      display: inline;
      border-bottom: 2px dotted #515151;
      padding-bottom: 3vw;
   }

   #sec3 .col-img:before {
      top: -40vw;
      left: 30%;
      right: -50%;
      bottom: 0px;
      background-image: url(../img/concept/sec4_deco.png);
      background-position: center top;
      background-repeat: no-repeat;
      background-size: 100% auto;
   }
}

@media only screen and (min-width: 768px) {
   #sec3 .sec3-img1 {
      clip-path: polygon(0 0, 100% 0, 100% 79%, 0% 100%);
      clip-path: polygon(0 0, 100% 0, 100% 527px, 0% 100%);
      height: 668px;
   }

   #sec3 .wrap {
      display: flex;
      flex-direction: row-reverse;
      justify-content: space-between;
   }

   #sec3 .wrap:before {
      top: auto;
      left: 181px;
      bottom: -280px;
      background-size: auto;
      width: 606px;
      height: 551px;
   }

   #sec3 .wrap:after {
      top: -135px;
      left: auto;
      right: -439px;
      background-size: auto;
      width: 531px;
      height: 530px;
   }

   #sec3 .col-txt {
      width: 664px;
      margin: -32px -164px 0px 0px;
      display: flex;
      flex-direction: row-reverse;
      justify-content: space-between;
      align-items: flex-start;
   }

   #sec3 .col-txt:before {
      top: -180px;
      left: auto;
      right: 45px;
      background-size: auto;
      width: 386px;
      height: 446px;
   }

   #sec3 h2 {
      width: 238px;
      height: 461px;
      font-size: 56px;
   }

   #sec3 h2 span img {
      margin-bottom: 38px;
   }

   #sec3 h2 em {
      margin-top: 214px;
   }

   #sec3 .txt {
      width: 366px;
      height: 512px;
      margin: 90px 60px 0px 0px;
   }

   #sec3 .txt li {
      border-right: 2px dotted #515151;
      display: block;
   }

   #sec3 .txt li:last-of-type {
      border-left: 2px dotted #515151;
   }

   #sec3 .sec3-map {
      position: absolute;
      right: -58px;
      bottom: -200px;
   }

   #sec3 .sec3-map:after {
      content: "";
      position: absolute;
      top: 37px;
      right: 0px;
      background-image: url(../img/concept/sec3_deco5.png);
      background-size: auto;
      width: 414px;
      height: 451px;
   }

   #sec3 .col-img {
      margin: -122px 0px 0px -148px;
      width: 577px;
   }

   #sec3 .col-img:before {
      left: -267px;
      bottom: -329px;
      background-image: url(../img/concept/sec3_deco4.png);
      width: 375px;
      height: 410px;
      background-position: center center;
      background-repeat: no-repeat;
   }

   #sec3 .col-img li+li {
      margin-top: 31px;
   }
}

@media only screen and (min-width: 768px) and (max-width: 1320px) {
   #sec3 .col-txt {
      margin-right: -54px;
   }

   #sec3 .txt {
      margin-right: 30px;
   }

   #sec3 .col-img {
      margin-left: -228px;
   }
}

#sec4 {
   margin-top: 17vw;
   padding: 10vw 0px 13vw;
   font-weight: 600;
   position: relative;
   z-index: 0;
}

#sec4:before {
   content: "";
   position: absolute;
   top: 0px;
   left: 0px;
   right: 0px;
   bottom: -30vw;
   background-image: url(../img/concept/sec4_deco.png);
   background-position: center bottom;
   background-repeat: no-repeat;
   background-size: 100% auto;
   z-index: -2;
}

#sec4:after {
   content: "";
   position: absolute;
   top: 0px;
   left: 2%;
   right: 2%;
   bottom: 0px;
   background-image: url(../img/shared/bg-pattern-02.jpg);
   background-position: center top;
   background-repeat: repeat;
   z-index: -1;
}

#sec4 h2 {
   font-size: 7.33vw;
   line-height: 2.2;
   font-weight: 600;
}

#sec4 .inner {
   margin-top: 4vw;
}

#sec4 dl {
   line-height: 1.625;
   display: flex;
   border-bottom: 1px solid rgba(138, 129, 114, 0.4);
   box-sizing: border-box;
   padding: 3vw 0px;
}

#sec4 dl dt {
   width: 80px;
}

#sec4 dl dd {
   width: calc(100% - 80px);
}

@media only screen and (min-width: 768px) {
   #sec4 {
      max-width: 1200px;
      margin: 130px auto 0px;
      padding: 67px 0px 98px;
   }

   #sec4:before {
      top: 268px;
      left: 50%;
      width: 967px;
      height: 587px;
   }

   #sec4:after {
      left: 0px;
      right: 0px;
   }

   #sec4 h2 {
      font-size: 45px;
   }

   #sec4 .inner {
      margin-top: 46px;
      display: flex;
      justify-content: space-between;
   }

   #sec4 .col {
      width: 471px;
   }

   #sec4 dl {
      padding: 13px 0px;
   }

   #sec4 dl dt {
      width: 131px;
      margin-left: 19px;
   }

   #sec4 dl dd {
      width: 321px;
   }
}