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

@media only screen and (max-width: 767px) {
   #key {
      background-position: center left 68%;
   }

   .txt br {
      display: none;
   }
}

#sec1 {
   position: relative;
}

@media only screen and (max-width: 767px) {
   #sec1 {
      padding: 20vw 0;
   }

   #sec1 .slider_sp figure {
      height: 60vw;
   }

   #sec1 h2 {
      display: flex;
      flex-direction: row-reverse;
      width: 32vw;
      height: 95vw;
      font-size: 8vw;
      letter-spacing: 0;
      line-height: 2;
      margin: 12vw auto 0;
   }

   #sec1 h2 .split-text {
      display: block;
   }

   #sec1 h2 .split-text span {
      display: block;
      width: 16vw;
      height: 16vw;
      border: 1px solid;
      margin-right: -1px;
      margin-bottom: -1px;
      text-align: center;
   }

   #sec1 .photos {
      position: relative;
      padding-top: 8vw;
   }

   #sec1 .photos:before {
      content: '';
      width: 30vw;
      height: 30vw;
      background: url("../img/concept/sec1-deco.jpg") no-repeat center top/cover;
      position: absolute;
      top: 0;
      left: -6.6vw;
   }

   #sec1 .photos .img-1 {
      width: 80vw;
   }

   #sec1 .photos .img-2 {
      width: 50vw;
      margin-top: -5vw;
      margin-left: auto;
   }

   #sec1 .photos .img-3 {
      width: 40vw;
      padding: 6vw 0 0 4vw;
   }
}

@media only screen and (min-width: 768px) {
   #sec1 {
      padding: 147px 0 140px;
   }

   #sec1 .title {
      position: absolute;
      top: 43px;
      right: 0;
      bottom: 43px;
      z-index: 1;
   }

   #sec1 h2 {
      display: flex;
      flex-direction: row-reverse;
      width: 160px;
      height: 405px;
      font-size: 57px;
      letter-spacing: 0;
      line-height: 80px;
      position: sticky;
      top: 100px;
   }

   #sec1 h2 .split-text {
      display: block;
   }

   #sec1 h2 .split-text span {
      display: block;
      width: 80px;
      height: 80px;
      border: 1px solid;
      box-sizing: border-box;
      margin-right: -1px;
      margin-bottom: -1px;
      text-align: center;
   }

   #sec1 .slider_sp {
      position: relative;
      padding-bottom: 250px;
   }

   #sec1 .slider_sp .img-1 {
      width: 650px;
      margin-left: -50px;
   }

   #sec1 .slider_sp .img-2 {
      width: 449px;
      margin-left: -250px;
      padding-top: 80px;
   }

   #sec1 .slider_sp .img-3 {
      width: 550px;
      position: absolute;
      bottom: 0;
      right: 50px;
   }

   #sec1 .photos {
      position: relative;
      padding-top: 80px;
   }

   #sec1 .photos:before {
      content: '';
      width: 304px;
      height: 293px;
      background: url("../img/concept/sec1-deco.jpg") no-repeat center top/cover;
      position: absolute;
      top: -40px;
      left: -250px;
   }

   #sec1 .photos .img-1 {
      width: 750px;
      margin-left: -150px;
   }

   #sec1 .photos .img-2 {
      width: 550px;
      position: absolute;
      top: 547px;
      right: 12px;
   }

   #sec1 .photos .img-3 {
      width: 400px;
      margin-left: -82px;
      padding-top: 146px;
   }
}

#sec2 {
   background: url("../img/shared/footer-bg.jpg") repeat center top;
   color: #fff;
   position: relative;
}

@media only screen and (max-width: 767px) {
   #sec2 .col {
      position: relative;
   }

   #sec2 .col:before {
      content: '';
      width: 0;
      height: 100%;
      border-left: 1px solid #fff;
      position: absolute;
      top: 0;
      left: 4.2vw;
   }

   #sec2 h2 {
      border-bottom: 1px solid #fff;
      padding: 8vw 6.6vw 6vw 9.6vw;
   }

   #sec2 .txt {
      padding: 8vw 6.6vw 12vw 9.6vw;
   }
}

@media only screen and (min-width: 768px) {
   #sec2 {
      display: grid;
      grid-template-columns: 1fr calc(50% - 50px);
   }

   #sec2:before {
      content: '';
      width: 0;
      height: 100%;
      border-left: 1px solid #fff;
      position: absolute;
      top: 0;
      left: 25px;
   }

   #sec2:after {
      content: '';
      width: calc(50% + 50px);
      height: 0;
      border-top: 1px solid #fff;
      position: absolute;
      top: 262px;
      left: 0;
   }

   #sec2 figure {
      grid-area: 1/2;
   }

   #sec2 .col {
      width: 492px;
      grid-area: 1/1;
      margin-left: auto;
      padding: 115px 50px 115px 0;
   }

   #sec2 .txt {
      padding-top: 71px;
   }
}

@media only screen and (min-width: 1231px) {
   #sec2 {
      grid-template-columns: 1fr calc(50% - 50px);
   }

   #sec2:before {
      left: 50px;
   }

   #sec2:after {
      width: calc(50% + 50px);
   }

   #sec2 .col {
      width: 492px;
      padding-right: 100px;
   }
}

#sec3 {
   position: relative;
}

@media only screen and (max-width: 767px) {
   #sec3 .note {
      text-align: right;
      padding: 3vw 2vw 0 0;
   }

   #sec3 h2 {
      padding-top: 8vw;
   }

   #sec3 .desc {
      text-align: justify;
      padding: 3vw 0 12vw;
   }

   #sec3 .desc br {
      display: none;
   }

   #sec3 .row .photo {
      display: none;
   }

   #sec3 .row .col {
      padding: 12vw 6.6vw;
   }

   #sec3 .row h3 {
      border-bottom: 1px solid;
      margin: 0 -6.6vw;
      padding-bottom: 3vw;
   }

   #sec3 .row .txt {
      padding-top: 6vw;
   }

   #sec3 .row h4 {
      padding-top: 6vw;
   }

   #sec3 .row ul {
      padding-top: 3vw;
   }

   #sec3 .row .img-1 {
      width: 50vw;
      margin-right: -6.6vw;
      margin-left: auto;
   }

   #sec3 .row .img-2 {
      width: 35vw;
      margin-right: -6.6vw;
      margin-left: auto;
   }

   #sec3 .row .img-3 {
      padding-top: 6vw;
   }
}

@media only screen and (min-width: 768px) {
   #sec3 .note {
      text-align: right;
      padding: 18px 20px 0;
   }

   #sec3 h2 {
      padding-top: 80px;
   }

   #sec3 .desc {
      padding: 27px 0 82px;
   }

   #sec3 .row {
      display: grid;
      grid-template-columns: 1fr 600px;
   }

   #sec3 .row .photo {
      display: grid;
      height: 100vh;
      position: sticky;
      top: 0;
   }

   #sec3 .row .photo figure {
      width: 100%;
      height: 100vh;
      grid-area: 1/1;
      opacity: 0;
      -webkit-transition: opacity .8s linear 0s;
      transition: opacity .8s linear 0s;
      will-change: opacity;
   }

   #sec3 .row .photo figure.is-show {
      opacity: 1;
   }

   #sec3 .row .col {
      display: flex;
      flex-direction: column;
      justify-content: center;
      min-height: 800px;
      padding: 50px 0;
   }

   #sec3 .row h3 {
      line-height: 60px;
      border-bottom: 1px solid;
   }

   #sec3 .row h4 {
      padding-top: 30px;
   }

   #sec3 .row .txt:not(.last) {
      padding-top: 16px;
   }

   #sec3 .row ul {
      padding-top: 14px;
   }

   #sec3 .row .txt.last {
      padding-top: 25px;
   }

   #sec3 .row .img-1 {
      text-align: right;
   }

   #sec3 .row .img-2 {
      text-align: right;
   }

   #sec3 .row .img-3 {
      margin: 0 auto;
      padding-top: 70px;
   }
}

@media only screen and (min-width: 1201px) {
   #sec3 .row {
      grid-template-columns: repeat(2, 1fr);
   }
}

@media only screen and (min-width: 1401px) {
   #sec3 .row .img-1 {
      margin-top: -40px;
   }
}

#bnr {
   position: relative;
}

#bnr .col {
   position: relative;
}

#bnr .img-obj {
   position: absolute;
   top: 0;
   left: 0;
}

@media only screen and (max-width: 767px) {
   #bnr .col {
      width: 100%;
      height: 100vw;
   }

   #bnr .col:after {
      content: '';
      border: 1px solid #fff;
      position: absolute;
      top: 2vw;
      right: 2vw;
      bottom: 2vw;
      left: 2vw;
   }

   #bnr h3 {
      font-size: 6vw;
      letter-spacing: 0.6em;
      line-height: 2;
      color: #fff;
      position: absolute;
      top: 0;
      right: 0;
      bottom: 8vw;
      left: 0;
      text-align: center;
   }

   #bnr h3 .txt-vertical {
      width: 12vw;
      height: 100%;
      position: relative;
      z-index: 1;
   }

   #bnr h3 .sub {
      position: absolute;
      top: 60%;
      right: 0;
      left: 0;
   }

   #bnr h3 .sub img[src*="sub-1"] {
      width: 40%;
   }

   #bnr h3 .sub img[src*="sub-2"] {
      width: 70%;
   }

   #bnr .button {
      position: absolute;
      bottom: 6vw;
      right: 2vw;
   }

   #bnr .button a {
      width: 50vw;
   }

   #bnr .bnr-href {
      display: block;
      width: 100%;
      height: 100%;
      position: absolute;
      top: 0;
      left: 0;
   }
}

@media only screen and (min-width: 768px) {
   #bnr {
      display: flex;
   }

   #bnr .col {
      width: 50%;
      height: 600px;
      transition: all 0.3s
   }

   #bnr .col:hover {
      opacity: 0.7;
   }

   #bnr .col:after {
      content: '';
      border: 1px solid #fff;
      position: absolute;
      top: 20px;
      right: 20px;
      bottom: 20px;
      left: 20px;
   }

   #bnr h3 {
      font-size: 38px;
      letter-spacing: 0.6em;
      line-height: 82px;
      color: #fff;
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      text-align: center;
   }

   #bnr h3 .txt-vertical {
      width: 82px;
      height: 100%;
      position: relative;
      z-index: 1;
   }

   #bnr h3 .sub {
      position: absolute;
      top: calc(50% + 86px);
      right: 0;
      left: 0;
   }

   #bnr .button {
      position: absolute;
      bottom: 40px;
      right: 20px;
   }

   #bnr .button a {
      font-size: 18px;
      padding-right: 18px;
      padding-left: 23px;
   }

   #bnr .bnr-href {
      display: block;
      width: 100%;
      height: 100%;
      position: absolute;
      top: 0;
      left: 0;
   }
}

#sec4 {
   position: relative;
}

@media only screen and (max-width: 767px) {
   #sec4 {
      padding: 20vw 0;
   }

   #sec4:before {
      content: '';
      width: 6.6vw;
      height: 100%;
      background: url("../img/shared/footer-bg.jpg") repeat center top;
      position: absolute;
      top: 0;
      right: 0;
   }

   #sec4 .wrap {
      padding-right: 13.2vw;
   }

   #sec4 .txt {
      padding-top: 6vw;
   }

   #sec4 .floormap {
      padding-top: 4vw;
   }

   #sec4 .photo-1,
   #sec4 .photo-2 {
      padding-top: 8vw;
   }
}

@media only screen and (min-width: 768px) {
   #sec4 {
      padding: 134px 0 100px;
   }

   #sec4:before {
      content: '';
      width: calc(50% - 407px);
      height: 100%;
      background: url("../img/shared/footer-bg.jpg") repeat center top;
      position: absolute;
      top: 0;
      right: 0;
   }

   #sec4 .floormap {
      padding-top: 30px;
   }

   #sec4 .txt {
      padding-top: 50px;
   }

   #sec4 .photo-1 {
      width: 650px;
      margin-left: -150px;
      padding: 50px 0 68px;
   }

   #sec4 .photo-2 {
      width: 450px;
      position: absolute;
      bottom: 0;
      right: -50px;
   }
}