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

#sec1 {
   position: relative;
}

#sec1 h2 {
   color: #541316;
}

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

   #sec1 h2 {
      border-bottom: 1px solid;
      position: relative;
   }

   #sec1 h2 .en {
      display: block;
      font-weight: 400;
      font-size: 12vw;
      letter-spacing: 0;
      line-height: 1;
   }

   #sec1 h2 .ja {
      display: inline-block;
      font-size: 6.6vw;
      border-bottom: 3px solid;
      padding-bottom: 2vw;
   }

   #sec1 .box {
      padding-top: 12vw;
   }

   #sec1 .box .txt,
   #sec1 .box figure {
      padding-top: 6vw;
   }
}

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

   #sec1 h2 {
      border-bottom: 1px solid;
   }

   #sec1 h2 .en {
      font-weight: 400;
      font-size: 135px;
      letter-spacing: 0;
      line-height: 150px;
   }

   #sec1 h2 .ja {
      display: inline-block;
      border-bottom: 3px solid;
      position: relative;
      top: 2px;
      padding-bottom: 34px;
   }

   #sec1 .box {
      display: flex;
      justify-content: flex-end;
      gap: 37px;
   }

   #sec1 .box figure {
      width: calc(100% - 507px);
      max-width: 625px;
      position: relative;
      top: -44px;
   }

   #sec1 .box .col {
      width: 470px;
      padding-top: 102px;
   }

   #sec1 .box .txt {
      width: 436px;
      line-height: 50px;
      padding-top: 25px;
   }
}

@media only screen and (min-width: 1241px) {
   #sec1 h2 .en {
      font-size: 150px;
   }
}

@media only screen and (min-width: 1400px) {
   #sec1 h2 .en {
      font-size: 160px;
   }
}

#sec2 {
   position: relative;
}

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

   #sec2:before {
      content: '';
      width: 100%;
      background-color: #f1f1f1;
      position: absolute;
      top: 20vw;
      bottom: 0;
      left: 0;
   }

   #sec2 h2 .sub-en {
      font-size: 2.4vw;      
   }

   #sec2 .row-1 {
      padding-bottom: 20vw;
   }

   #sec2 .row-1 .box-1 .ttl {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 60vw;
      height: 60vw;
      background-color: #541316;
      color: #fff;
      text-align: center;
      border-radius: 50%;
      margin: 0 auto;
   }

   #sec2 .row-1 .box-1 figure {
      margin-top: -8vw;
   }

   #sec2 .row-1 .box-2 {
      padding-top: 12vw;
   }

   #sec2 .row-1 .box-2 figure {
      padding-top: 8vw;
   }

   #sec2 .row-2 {
      padding: 0 4vw;
   }

   #sec2 .row-2 .wrap {
      background-color: #fff;
      padding: 8vw 4vw;
   }

   #sec2 .row-2 .sub-en {
      text-align: center;
      border-bottom: 1px solid;
      margin: 0 -4vw;
      padding-bottom: 0;
   }

   #sec2 .row-2 .sub-en .txt-latin {
      display: inline-block;
      vertical-align: bottom;
      border-bottom: 2px solid;
      padding-bottom: 2vw;
   }

   #sec2 .row-2 h3 {
      padding-top: 6vw;
   }

   #sec2 .row-2 .txt {
      padding-top: 4vw;
   }

   #sec2 .row-2 .button {
      padding-top: 8vw;
   }

   #sec2 .row-2 figure {
      width: 40vw;
      margin: 0 auto;
      padding-top: 8vw;
   }
}

@media only screen and (min-width: 768px) {
   #sec2 {
      padding-bottom: 142px;
   }

   #sec2:before {
      content: '';
      width: 100%;
      background-color: #f1f1f1;
      position: absolute;
      top: 280px;
      bottom: 0;
      left: 0;
   }

   #sec2 .row-1 .box-1 {
      position: relative;
      padding: 10px 0 24px;
   }

   #sec2 .row-1 .box-1 .ttl {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 636px;
      height: 636px;
      background-color: #541316;
      border-radius: 50%;
      margin-left: auto;
      position: relative;
      left: 26px;
   }

   #sec2 .row-1 .box-1 h2 {
      text-align: left;
      color: #fff;
      padding-left: 15px;
   }

   #sec2 .row-1 .box-1 h2 .sub-en {
      padding-bottom: 0;
      position: relative;
      top: 3px;
      right: -8px;
   }

   #sec2 .row-1 .box-1 figure {
      width: 670px;
      position: absolute;
      top: 0;
      left: -70px;
   }

   #sec2 .row-1 .box-2 {
      display: flex;
      justify-content: flex-end;
      gap: 127px;
      padding: 70px 0 140px;
   }

   #sec2 .row-1 .box-2 .txt {
      width: 480px;
      height: 500px;
      line-height: 50px;
      padding-top: 97px;
   }

   #sec2 .row-2 .wrap {
      width: 1040px;
      background-color: #fff;
      padding: 64px 0 70px 115px;
   }

   #sec2 .row-2 .sub-en {
      text-align: center;
      border-left: 1px solid;
      position: absolute;
      top: 0;
      bottom: 0;
      left: 20px;
      line-height: 38px;
   }

   #sec2 .row-2 .sub-en .txt-latin {
      display: inline-block;
      vertical-align: bottom;
      border-left: 3px solid;
   }

   #sec2 .row-2 .txt {
      width: 454px;
      line-height: 50px;
      padding-top: 25px;
   }

   #sec2 .row-2 figure {
      position: absolute;
      top: 28px;
      right: 30px;
   }

   #sec2 .row-2 .button {
      position: absolute;
      bottom: 80px;
      right: 72px;
   }

   #sec2 .row-2 .button a {
      justify-content: flex-start;
      width: 330px;
      height: 65px;
      font-size: 16px;
      text-align: left;
      padding: 0 30px;
   }

   #sec2 .row-2 .button a:after {
      right: 20px;
   }
}

#sec3 {
   position: relative;
}

#sec3 h2 {
   color: #541316;
}

#sec3 h2 span {
   display: block;
}

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

   #sec3 h2 {
      position: relative;
      padding: 0 4vw;
   }

   #sec3 h2 .en {
      display: block;
      font-weight: 400;
      font-size: 16vw;
      letter-spacing: 0;
      line-height: 1;
   }

   #sec3 h2 .ja {
      display: inline-block;
      font-size: 6.6vw;
   }

   #sec3 .row {
      color: #fff;
      position: relative;
      margin-top: 3vw;
      padding-top: 36vw;
   }

   #sec3 .row:before {
      content: '';
      background: linear-gradient(to bottom, #3d070a 36vw, #541316 36vw);
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: -1;
   }

   #sec3 .row figure figcaption {
      text-align: right;
      padding: 2vw 4vw 0;
   }

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

   #sec3 .row .no {
      font-family: "Playfair Display", serif;
      font-weight: 400;
      font-size: 30vw;
      letter-spacing: 0;
      line-height: 1;
      opacity: 0.08;
      position: absolute;
      top: 0;
      left: 50%;
      transform: translateX(-50%);
   }

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

   #sec3 .row+.row {
      margin-top: 10vw;
   }
}

@media only screen and (min-width: 768px) {
   #sec3 {
      padding-bottom: 93px;
   }

   #sec3 h2 {
      padding: 174px 52px 20px;
   }

   #sec3 h2 .en {
      font-weight: 400;
      font-size: 190px;
      letter-spacing: 0;
      line-height: 150px;
   }

   #sec3 h2 .ja {
      padding-top: 10px;
   }

   #sec3 .row {
      display: flex;
      gap: 90px;
      color: #fff;
      position: relative;
      padding: 113px 0 60px;
   }

   #sec3 .row:before {
      content: '';
      background: linear-gradient(to bottom, #3d070a 280px, #541316 280px);
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 50px;
      z-index: -1;
   }

   #sec3 .row figure {
      width: calc(100% - 600px);
   }

   #sec3 .row figure span {
      display: block;
      height: 620px;
   }

   #sec3 .row figure figcaption {
      text-align: right;
      padding-top: 10px;
   }

   #sec3 .row .col {
      width: 440px;
      padding: 84px 0 0;
      position: relative;
   }

   #sec3 .row .no {
      font-family: "Playfair Display", serif;
      font-weight: 400;
      font-size: 190px;
      letter-spacing: 0;
      line-height: 150px;
      opacity: 0.08;
      position: absolute;
      top: -77px;
      right: -54px;
   }

   #sec3 .row h3 {
      line-height: 77px;
   }

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

   #sec3 .row.img-r {
      flex-direction: row-reverse;
   }

   #sec3 .row.img-r:before {
      right: 50px;
      left: 0;
   }

   #sec3 .row.img-r figure figcaption {
      text-align: left;
   }

   #sec3 .row.img-r .no {
      right: auto;
      left: -54px;
   }

   #sec3 .row+.row {
      margin-top: 48px;
   }
}

@media only screen and (min-width: 1400px) {
   #sec3 .row figure {
      width: calc(50% + 80px);
   }
}