.fs30 {
  font-size: 6vw;
  line-height: 2.3333333333;
  letter-spacing: 0.2em;
}

.fs40 {
  color: #651616;
  font-size: 7.33vw;
  line-height: 1;
  letter-spacing: 0.05em;
}

@media screen and (max-width: 767px) {
  #key-box.key-child h2 {
    width: 58vw;
  }
}
@media screen and (min-width: 768px) {
  .fs30 {
    font-size: 30px;
  }
  .fs40 {
    font-size: 40px;
  }
  #key-box.key-child h2 {
    top: 348px;
    right: 87px;
  }
}
#lead {
  background: url("../img/scene/lead_deco.png") no-repeat center top/100%;
  padding-top: 15vw;
}
#lead h2 span {
  display: block;
  text-align: center;
}
#lead h2 span.jp {
  margin-top: 7vw;
}
#lead .txt {
  margin-top: 7vw;
}
#lead .photo1 {
  margin: 10vw 70% 0 -7%;
}
#lead .photo2 {
  margin: -48vw 0 0 37%;
}
@media screen and (max-width: 767px) {
  #lead h2 span.en {
    font-size: 6.17vw;
  }
  #lead h2 span.jp {
    font-size: 4.8vw;
  }
}
@media screen and (min-width: 768px) {
  #lead {
    background-size: auto;
    padding-top: 210px;
  }
  #lead h2 span.jp {
    margin: 71px 0 0 23px;
  }
  #lead .txt {
    text-align: center;
    margin-top: 67px;
  }
  #lead .photo1 {
    position: absolute;
    top: 279px;
    left: -250px;
    margin: 0;
  }
  #lead .photo2 {
    text-align: right;
    margin: 87px -28px 0 0;
  }
}
@media screen and (min-width: 768px) and (max-width: 1500px) {
  #lead .photo1 {
    left: calc(-50vw + 50%);
  }
}
@media screen and (min-width: 768px) and (max-width: 1300px) {
  #lead .photo1 {
    left: calc(-50vw + 50% - 40px);
  }
}

#date {
  position: relative;
  z-index: 1;
  background: url("../img/scene/date_deco.png") no-repeat center top 75vw/100%;
  margin-top: 15vw;
}
#date .line {
  position: absolute;
  inset: auto -40% 0;
  z-index: -1;
}
#date .set1 .ttl {
  margin-top: 11vw;
}
#date .set1 .ttl h2 span {
  display: block;
  text-align: center;
}
#date .set1 .ttl h2 span.jp {
  margin-top: 5vw;
}
#date .set2 {
  margin-top: 7vw;
}
#date .set2 .photo {
  margin: 10vw 10% 0;
}
@media screen and (min-width: 768px) {
  #date {
    background-size: auto;
    background-position: center top 153px;
    margin-top: -72px;
  }
  #date .line {
    width: 1250px;
    inset: 422px auto 0 100px;
  }
  #date .wrap {
    max-width: 1200px;
    width: auto;
  }
  #date .set1 {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
  }
  #date .set1 .photo {
    flex: 1;
    height: 715px;
    margin-left: calc(-50vw + 50%);
  }
  #date .set1 .photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  #date .set1 .ttl {
    order: 2;
    box-sizing: border-box;
    width: 600px;
    padding-left: 25px;
    margin: 0 0 86px;
  }
  #date .set1 .ttl h2 {
    width: -moz-fit-content;
    width: fit-content;
    margin: 0 auto;
  }
  #date .set1 .ttl h2 span {
    text-align: left;
  }
  #date .set1 .ttl h2 span.jp {
    margin-top: 30px;
  }
  #date .set2 {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    max-width: 1000px;
    margin: 39px auto 0;
  }
  #date .set2 .txt {
    margin: 48px 0 0 57px;
  }
  #date .set2 .photo {
    margin: 0 -175px 0 0;
  }
}
@media screen and (min-width: 768px) and (max-width: 1400px) {
  #date .set2 .photo {
    margin-right: calc(-50vw + 50% + 30px);
  }
}

#shared {
  position: relative;
  z-index: 1;
  padding-top: 15vw;
}
#shared .deco {
  position: absolute;
  top: 100vw;
  left: 0;
  right: 0;
  z-index: -1;
}
#shared .col-l h2 {
  text-align: right;
}
#shared .col-l .photo {
  margin-top: 3vw;
}
#shared .col-r {
  margin-top: 9vw;
}
#shared .col-r h3 {
  text-align: center;
}
#shared .col-r .txt {
  margin-top: 7vw;
}
@media screen and (max-width: 767px) {
  #shared h3 {
    font-size: 5.5vw;
  }
}
@media screen and (min-width: 768px) {
  #shared {
    padding-top: 170px;
  }
  #shared .deco {
    top: -150px;
    left: 0;
    right: 0;
    text-align: center;
    z-index: -1;
  }
  #shared .wrap {
    display: flex;
    gap: 0px;
    max-width: 1200px;
    width: auto;
  }
  #shared .col-l {
    flex: 1;
    max-width: 600px;
  }
  #shared .col-l .photo {
    height: 600px;
    margin-top: 21px;
  }
  #shared .col-l .photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  #shared .col-r {
    margin: 243px 30px 0 59px;
  }
  #shared .col-r h3 {
    text-align: left;
  }
  #shared .col-r .txt {
    width: 475px;
    margin-top: 51px;
  }
}

#party {
  position: relative;
  z-index: 1;
  padding: 15vw 0;
}
#party .deco {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: -1;
}
#party .line {
  position: absolute;
  top: 0;
  left: -20%;
  right: -20%;
  z-index: -1;
}
#party .set1 h2 span {
  display: block;
  text-align: center;
}
#party .set1 h2 span.en {
  font-family: "Cormorant Garamond", serif;
  font-size: 18.67vw;
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.05em;
}
#party .set1 h2 span.jp {
  margin-top: 4vw;
  font-size: 4.67vw;
  line-height: 2;
  letter-spacing: 0.15em;
}
#party .set1 .inner {
  position: relative;
  z-index: 1;
  color: #f6f1e8;
}
#party .set1 .inner::before {
  content: "";
  position: absolute;
  top: -15vw;
  left: 50%;
  transform: translateX(-50%);
  background: #998e7f;
  width: 1px;
  height: 15vw;
}
#party .set1 .inner::after {
  content: "";
  position: absolute;
  inset: 10vw 0;
  z-index: -1;
  background: url("../img/shared/main_bg2.jpg") repeat center;
}
#party .set1 .inner .photo1 {
  height: 60vw;
  margin: 20vw 6% 0;
}
#party .set1 .inner .photo1 img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
#party .set1 .inner .group-txt {
  margin-top: 12vw;
}
#party .set1 .inner .group-txt h3 span {
  display: block;
  text-align: center;
  letter-spacing: 0.2em;
}
#party .set1 .inner .group-txt h3 span:nth-child(1) {
  width: -moz-fit-content;
  width: fit-content;
  border-top: 1px solid #fff;
  border-bottom: 1px solid #fff;
  margin: 0 auto 2vw;
  padding: 2vw;
  font-size: 4.4vw;
  line-height: 1;
}
#party .set1 .inner .group-txt h3 span:nth-child(1) i {
  letter-spacing: 0.2em;
}
#party .set1 .inner .group-txt .txt {
  background: url("../img/scene/party_deco_txt.png") no-repeat left bottom/auto;
  margin-top: 7vw;
  padding-bottom: 12vw;
}
#party .set1 .inner .group-photo {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 5%;
  margin-top: 15vw;
}
#party .set1 .inner .group-photo li:nth-child(2) {
  margin-bottom: 5vw;
}
#party .set2 {
  margin-top: 10vw;
}
#party .set2 .row1 .col-r dt {
  margin-bottom: 3vw;
}
#party .set2 .row1 .col-l {
  margin-top: 5vw;
}
#party .set2 .row1 .col-l h3 {
  text-align: center;
}
#party .set2 .row1 .col-l .box {
  background: rgba(192, 176, 151, 0.3);
  padding: 8vw 6%;
  margin-top: 5vw;
  line-height: 1.5;
}
#party .set2 .row1 .col-l .box .name-price * {
  letter-spacing: 0.2em;
}
#party .set2 .row1 .col-l .box .name-price dt {
  margin-left: -7px;
  font-size: 16px;
}
#party .set2 .row1 .col-l .box .name-price dd {
  margin-top: 5vw;
  font-size: 18px;
}
#party .set2 .row1 .col-l .box .txt {
  margin-top: 5vw;
}
#party .set2 .row2 {
  margin-top: 10vw;
}
#party .set2 .row2 .photo {
  margin: 10vw 10% 0;
}
@media screen and (min-width: 768px) {
  #party {
    padding: 218px 0 143px;
  }
  #party .deco {
    text-align: center;
    top: 8px;
  }
  #party .line {
    width: 1500px;
    top: 8px;
    left: 50%;
    right: auto;
    transform: translateX(-50%);
  }
  #party .set1 h2 span.en {
    font-size: 140px;
  }
  #party .set1 h2 span.jp {
    margin-top: 31px;
    font-size: 25px;
  }
  #party .set1 .inner::before {
    top: -118px;
    height: 118px;
  }
  #party .set1 .inner::after {
    inset: 223px 0 128px;
  }
  #party .set1 .inner .photo1 {
    height: 630px;
    margin: 168px 60px 0;
  }
  #party .set1 .inner .wrap {
    box-sizing: border-box;
    max-width: 1330px;
    width: auto;
    padding: 0 30px;
  }
  #party .set1 .inner .group-txt {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    max-width: 1050px;
    margin: 173px auto 0;
  }
  #party .set1 .inner .group-txt h3 {
    margin-left: 87px;
    white-space: nowrap;
  }
  #party .set1 .inner .group-txt h3 span {
    text-align: left;
  }
  #party .set1 .inner .group-txt h3 span:nth-child(1) {
    border-top: none;
    border-bottom: none;
    border-left: 1px solid #fff;
    border-right: 1px solid #fff;
    width: 41px;
    height: -moz-fit-content;
    height: fit-content;
    margin: 0;
    padding: 5px 0 0;
    font-size: 18px;
    line-height: 41px;
  }
  #party .set1 .inner .group-txt h3 span:nth-child(1) i {
    text-combine-upright: all;
    -webkit-text-combine: horizontal;
  }
  #party .set1 .inner .group-txt h3 span:nth-child(2) {
    margin: 51px 23px 0 0;
  }
  #party .set1 .inner .group-txt h3 span:nth-child(3) {
    margin-top: 87px;
  }
  #party .set1 .inner .group-txt .txt {
    width: 662px;
    margin: 157px 0 0;
    padding-bottom: 109px;
  }
  #party .set1 .inner .group-photo {
    margin: -218px 0 0;
  }
  #party .set1 .inner .group-photo li:nth-child(2) {
    margin: 0 9px 87px 0;
  }
  #party .set2 {
    margin-top: 100px;
  }
  #party .set2 .wrap {
    box-sizing: border-box;
    max-width: 1360px;
    padding: 0 30px;
    width: auto;
  }
  #party .set2 .row1 {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    max-width: 1000px;
    margin: 0 auto;
  }
  #party .set2 .row1 .col-r {
    order: 2;
    flex: 1;
    margin: 0 calc(-50vw + 50%) 0 100px;
  }
  #party .set2 .row1 .col-r dt {
    margin-bottom: 30px;
  }
  #party .set2 .row1 .col-r dd {
    height: 560px;
  }
  #party .set2 .row1 .col-r dd img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  #party .set2 .row1 .col-l {
    order: 1;
    width: 480px;
    margin-top: 220px;
  }
  #party .set2 .row1 .col-l h3 {
    text-align: left;
  }
  #party .set2 .row1 .col-l .box {
    padding: 43px 30px 44px 63px;
    margin-top: 55px;
  }
  #party .set2 .row1 .col-l .box .name-price dt {
    margin-left: -19px;
    font-size: 18px;
  }
  #party .set2 .row1 .col-l .box .name-price dd {
    margin: 19px 0 0;
    font-size: 20px;
  }
  #party .set2 .row1 .col-l .box .txt {
    margin-top: 24px;
    line-height: 30px;
  }
  #party .set2 .row2 {
    display: flex;
    justify-content: space-between;
    gap: 30px;
    max-width: 1158px;
    margin-top: 156px;
  }
  #party .set2 .row2 .photo {
    order: 1;
    flex: 1;
    max-width: 378px;
    height: 252px;
    margin: 0;
  }
  #party .set2 .row2 .txt {
    order: 2;
    margin-top: -11px;
  }
}

#cta .box {
  background: #fff;
  padding: 10vw 6%;
}
#cta h2 {
  text-align: center;
}
#cta .btn-tel {
  margin-top: 7vw;
}
#cta .btn-tel dl {
  text-align: center;
}
#cta .btn-tel dl dt {
  font-size: 30px;
  line-height: 1;
  letter-spacing: 0.15em;
}
#cta .btn-tel dl dt img {
  width: 21px;
  margin: -5px 7px 0 0;
}
#cta .btn-tel dl dd {
  margin-top: 15px;
  line-height: 20px;
}
#cta .btn-reservation {
  margin-top: 9vw;
}
#cta .btn-reservation a {
  border: 1px solid #514e49;
  border-radius: 40px;
  display: block;
  text-align: center;
  font-size: 18px;
  line-height: 56px;
  letter-spacing: 0.15em;
}
@media screen and (min-width: 768px) {
  #cta {
    padding: 0 30px;
  }
  #cta .wrap {
    max-width: 1200px;
    width: auto;
  }
  #cta .box {
    padding: 109px 0 118px;
  }
  #cta .row {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    gap: 161px;
    margin-top: 75px;
  }
  #cta .btn-tel {
    margin-top: 0;
  }
  #cta .btn-tel dl dt {
    font-size: 36px;
  }
  #cta .btn-tel dl dt img {
    width: auto;
    margin: -5px 15px 0 0;
  }
  #cta .btn-tel dl dd {
    margin-top: 33px;
  }
  #cta .btn-reservation {
    width: 300px;
    margin-top: 0px;
  }
  #cta .btn-reservation a {
    font-size: 22px;
    line-height: 79px;
    transition: 0.4s ease;
  }
  #cta .btn-reservation a:hover {
    letter-spacing: 0.25em;
  }
}

#floor {
  background: url("../img/scene/floor_deco.png") no-repeat center top 110vw/100%;
  padding: 15vw 0;
}
#floor h2 {
  text-align: right;
  position: relative;
  color: #651616;
  font-size: 10vw;
  line-height: 1;
  letter-spacing: 0.05em;
}
#floor h2::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 30%;
  transform: translateY(-50%);
  background: #aca395;
  height: 1px;
}
#floor .row1 {
  margin-top: 10vw;
}
#floor .row1 .flex {
  display: flex;
  align-items: center;
}
#floor .row1 .flex .photo {
  flex: 1;
  margin-right: 6%;
}
#floor .row1 .txt {
  margin-top: 9vw;
}
#floor .row2 {
  margin-top: 10vw;
}
#floor .row2 .photo {
  margin-top: 10vw;
}
@media screen and (min-width: 768px) {
  #floor {
    background-size: auto;
    background-position: left calc(50% - 279px) top 542px;
    padding: 236px 0 161px;
  }
  #floor .wrap {
    max-width: 1316px;
    width: auto;
  }
  #floor h2 {
    width: calc(50% + 194px);
    font-size: 60px;
  }
  #floor h2::before {
    right: 164px;
  }
  #floor .row1 {
    position: relative;
    margin-top: 40px;
  }
  #floor .row1 .flex {
    display: block;
  }
  #floor .row1 .flex .photo {
    position: absolute;
    top: 0;
    left: 0;
    margin-right: 0;
  }
  #floor .row1 .flex h3 {
    padding: 118px 0 0 468px;
  }
  #floor .row1 .txt {
    margin: 52px 0 0 468px;
  }
  #floor .row2 {
    display: flex;
    justify-content: space-between;
    gap: 71px;
    max-width: 1122px;
    margin: 170px auto 0;
  }
  #floor .row2 .photo {
    flex: 1;
    margin: 0 calc(-50vw + 50%) 0 0;
    height: 485px;
  }
  #floor .row2 .photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
}

@media screen and (min-width: 768px) and (max-width: 1260px) {
  #lead .txt {
    font-size: 14px;
  }
  #lead .photo1 {
    left: calc(-50vw + 50% - 70px);
  }
}