@charset "utf-8";
body {
  background: #006934;
}

body.is-loading {
  overflow: hidden;
}

body.is-loading > *:not(.loading) {
  visibility: hidden;
}

.fixed-bg {
  position: relative;
  height: 180vh; /* スクロール量を作る */
}
.fixed-bg__img {
  position: sticky;
  top: 0;
  height: 100vh;
  z-index: 1;
}
.fixed-bg1 .fixed-bg__img {
  background: url("../imgs/index/fix_bg_img1.jpg") center / cover no-repeat;
}
.fixed-bg2 .fixed-bg__img {
  background: url("../imgs/index/fix_bg_img2.jpg") center / cover no-repeat;
}
.fixed-bg3 .fixed-bg__img {
  background: url("../imgs/index/fix_bg_img3.jpg") center / cover no-repeat;
}
.fixed-bg__text {
  color: #fff;
  width: calc(100% - 160px);
  max-width: 1050px;
  padding: 100px 0;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}
.fixed-bg__text--lrg {
  font-size: 16px;
  margin-bottom: 35px;
  line-height: 1.375;
  letter-spacing: 0.05em;
}
.fixed-bg__text--sml {
  font-size: 12px;
  line-height: 3.08;
}

.z-index2 {
  z-index: 2;
}

@media screen and (max-width: 750px) {
  .fixed-bg {
    height: 140svh;
    height: 140dvh; /* スクロール量を作る */
  }
  .fixed-bg__img {
    height: 100svh;
    height: 100dvh;
  }
  .fixed-bg__text {
    width: calc(100% - 40px);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
  }
  .fixed-bg__text--sml {
    line-height: 2.5;
  }
}

/*===================
loading
===================*/
.loading {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  transition: opacity 5s ease;
  background-color: #006934;
  background-image: url(../imgs/index/loading_img.png);
  background-position: center;
  background-size: cover;
}
.loading.is-loaded {
  opacity: 0;
  pointer-events: none;
  transition: opacity 5s;
}
.loading__box {
  width: 270px;
  height: 320px;
  display: grid;
  align-content: center;
  justify-content: center;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  opacity: 0;
  transition: opacity 0.5s ease;
}
.loading__slide {
  grid-area: 1 / 1; /* ← 全部同じ位置に重ねる */
  opacity: 0;
  transition: opacity 0.25s linear;
}
.loading__slide.is-active {
  opacity: 1;
}
.loading__slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.loading__skip button {
  color: #a7a6a0;
  font-size: 13px;
  font-family: "Libre Caslon Display", serif;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.063em;
  position: absolute;
  bottom: 40px;
  right: 50px;
}

@media screen and (max-width: 750px) {
  .loading__box {
    width: 36vw;
    height: 42.666vw;
  }
}

@media screen and (max-width: 480px) {
  .loading__skip button {
    bottom: 20px;
    right: 20px;
  }
}

/*===================
fv
===================*/
.fv-cover {
  position: sticky;
  top: 0;
  height: 100vh;
  z-index: 1;
}
.fv {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100vh;
  overflow: hidden;
  background: #e3e7e8;
}
.fv__logo {
  position: absolute;
  top: 45%;
  left: 50%;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  z-index: 2;
  width: 264px;
  opacity: 1;
  transition: opacity 0.8s ease;
}
/* 初期（非表示） */
.fv__logo.is-hidden {
  opacity: 0;
}

/* フェードアウト */
.fv__logo.is-hide {
  opacity: 0;
}
.fv__textWrap {
  position: absolute;
  bottom: 28px;
  left: 32px;
  z-index: 2;
}
.fv__text {
  color: #a7a6a0;
  font-size: 11px;
  font-family: "Libre Caslon Display", serif;
  font-weight: 400;
  line-height: 1.75;
}
.fv__text:not(:last-child) {
  margin-bottom: 10px;
}
.fv__scroll {
  position: absolute;
  bottom: 37px;
  right: 22px;
  z-index: 2;
}
.fv__scrollText {
  color: #a7a6a0;
  font-size: 12px;
  font-family: "Libre Caslon Display", serif;
  font-weight: 400;
  line-height: 1.75;
  letter-spacing: 0.063em;
}
.scroll {
  margin-bottom: 10px;
  position: relative;
  top: 16px;
  left: 13px;
  display: block;
  width: 1px;
  height: 75px;
  background: #a7a6a0; /* 薄めのベースライン */
  overflow: hidden;
}
.scroll::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 1px;
  height: 100px;
  background: #fff;
  animation: scrollDown 2s infinite;
}
@keyframes scrollDown {
  0% {
    transform: translateY(-100px);
  }
  100% {
    transform: translateY(100px);
  }
}
.fv__swiper img {
  width: 100%;
  height: 100vh;
  object-fit: cover;
  display: block;
}
.fv__swiper img.fv__swiperImg--sp {
  display: none;
}

@media screen and (max-width: 750px) {
  .fv-cover {
    height: 100svh;
  }
  .fv {
    height: 100svh;
  }
  .fv__logo {
    width: 54%;
    max-width: 264px;
  }
  .fv__textWrap {
    width: calc(100% - 90px);
    bottom: 20px;
    left: 20px;
  }

  .fv__swiper img {
    height: 100svh;
    object-position: right center;
  }
  .fv__swiper img.fv__swiperImg--pc {
    display: none;
  }
  .fv__swiper img.fv__swiperImg--sp {
    display: block;
  }
}

@media screen and (max-width: 480px) {
  .fv__scroll {
    right: 10px;
  }
}

/*===================
intro
===================*/
.intro {
  padding-top: 215px;
  padding-bottom: 154px;
  background-color: #006934;
  position: relative;
  z-index: 2;
}
.intro__flex {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0 50px;
}
.intro__flex1 {
  width: calc(100% - 639px);
  max-width: 419px;
  height: 535px;
  position: relative;
  margin-top: 35px;
}
.intro_img {
  position: absolute;
}
.intro_img1 {
  width: 190px;
  top: 0;
  right: 0;
  z-index: 1;
}
.intro_img2 {
  width: 258px;
  top: 138px;
  left: 0;
  z-index: 2;
}
.intro_img3 {
  width: 136px;
  top: 374px;
  right: 52px;
  z-index: 1;
}
.intro__flex2 {
  width: 23px;
  padding-top: 18px;
}
.intro__flex2Text {
  font-size: 18px;
  line-height: 1.3;
  letter-spacing: 0.063em;
}
.intro__flex3 {
  width: 515px;
}
.intro__flex3Text {
  font-size: 12px;
  margin-bottom: 48px;
  line-height: 4;
  letter-spacing: 0.063em;
}

@media screen and (max-width: 1120px) {
  .intro__flex1 {
    width: 40%;
    height: 47.767vw;
    margin-top: 3.125vw;
  }
  .intro_img1 {
    width: 16.964vw;
  }
  .intro_img2 {
    width: 23.035vw;
    top: 12.321vw;
  }
  .intro_img3 {
    width: 12.142vw;
    top: 33.392vw;
    right: 4.642vw;
  }
  .intro__flex3 {
    width: 49%;
    max-width: 515px;
  }
}

@media screen and (max-width: 750px) {
  .intro {
    padding-top: 100px;
    padding-bottom: 120px;
  }
  .intro__flex {
    display: block;
  }
  .intro__flex1 {
    width: 55.866vw;
    height: 71.333vw;
    margin: 0 auto;
  }
  .intro_img1 {
    width: 25.333vw;
  }
  .intro_img2 {
    width: 34.4vw;
    top: 18.4vw;
  }
  .intro_img3 {
    width: 18.133vw;
    top: 49.866vw;
    right: 6.933vw;
  }
  .intro__flex2 {
    width: 100%;
    padding-top: 70px;
    margin-bottom: 30px;
  }
  .intro__flex2 .vertical {
    writing-mode: horizontal-tb;
  }
  .intro__flex3 {
    width: 100%;
    max-width: 100%;
  }
  .intro__flex3Text {
    line-height: 3;
  }
}

/*===================
rooms
===================*/
#rooms.bg-img::after,
#dining.bg-img::before,
#dining.bg-img::after,
#onsen-sauna.bg-img::before,
#onsen-sauna.bg-img::after,
#facility.bg-img::before,
#facility.bg-img::after,
#access.bg-img::before,
#access.bg-img::after,
#news.bg-img::before {
  display: none;
}

.rooms {
  padding-top: 179px;
  padding-bottom: 71px;
  position: relative;
  z-index: 2;
}
.rooms .contents {
  padding-bottom: 198px;
}
.rooms__flex {
  display: flex;
  justify-content: space-between;
}
.rooms .contents__lft {
  width: 456px;
}
.rooms .contents__rgt {
  width: 474px;
}
.rooms__img2 {
  width: 230px;
  position: absolute;
  bottom: 0;
  left: 0;
}
.rooms .section__subTitle {
  top: 200px;
}

@media screen and (max-width: 1120px) {
  .rooms .contents__rgt {
    width: 42.321vw;
  }
  .rooms__img2 {
    width: 20.535vw;
  }
}

@media screen and (max-width: 980px) {
  .rooms .contents {
    padding-bottom: 250px;
  }
}

@media screen and (max-width: 750px) {
  .rooms {
    padding-top: 120px;
  }
  .rooms .contents {
    padding-bottom: 33.333vw;
  }
  .rooms .contents__lft {
    width: 100%;
    max-width: 456px;
    padding-top: 0;
    margin: 0 auto 60px;
  }
  .rooms .contents__rgt {
    width: 63.2vw;
    margin: 0 auto;
  }
  .rooms__img2 {
    width: 30.666vw;
  }
}

/*===================
dining
===================*/
.dining {
  padding-top: 179px;
  padding-bottom: 70px;
  position: relative;
  z-index: 2;
}
.dining .inner--wide {
  margin: 0;
  padding-left: 130px;
}
.dining__flex {
  display: flex;
  justify-content: space-between;
}
.dining .contents__lft {
  width: 440px;
  padding-top: 20px;
}
.dining .contents__rgt {
  width: 435px;
}
.dining .section__subTitle {
  top: 253px;
}

@media screen and (max-width: 980px) {
  .dining .inner--wide {
    padding-left: 0;
    margin: 0 auto;
  }
  .dining .contents__wrap {
    display: block;
  }
  .dining .contents__lft {
    width: 100%;
    max-width: 440px;
    padding-top: 0;
    margin: 0 auto 60px;
  }
  .dining .contents__rgt {
    width: 100%;
    max-width: 435px;
    margin: 0 auto;
  }
}

@media screen and (max-width: 750px) {
  .dining .inner--narrow.left {
    margin: 0;
  }
  .dining .contents__lft {
    max-width: 456px;
  }
}

/*===================
onsen-sauna
===================*/
.onsen-sauna {
  padding-top: 297px;
  padding-bottom: 297px;
  position: relative;
  z-index: 2;
}
.onsen-sauna .inner--narrow {
  width: 450px;
  margin: 0 auto;
}
.onsen-sauna .contents__lft {
  padding-top: 20px;
}
.onsen-sauna__img {
  width: 401px;
  position: absolute;
  top: 50%;
  z-index: 1;
  transform: translateY(-50%);
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -o-transform: translateY(-50%);
}
.onsen-sauna__img1 {
  left: 0;
}
.onsen-sauna__img2 {
  right: 0;
}
.onsen-sauna__img--sp {
  display: none;
}

@media screen and (max-width: 1360px) {
  .onsen-sauna .inner--narrow {
    width: 33.088vw;
  }
  .onsen-sauna__img {
    width: 29.485vw;
  }
  .onsen-sauna .contents__lft {
    padding-top: 1.47vw;
  }
}

@media screen and (max-width: 980px) {
  .onsen-sauna {
    padding-bottom: 650px;
  }
  .onsen-sauna .inner--narrow {
    width: 100%;
    max-width: 450px;
  }
  .onsen-sauna .contents__lft {
    padding-top: 0;
  }
  .onsen-sauna__img {
    width: 284px;
    top: auto;
    bottom: 180px;
    transform: initial;
    -webkit-transform: initial;
    -ms-transform: initial;
    -moz-transform: initial;
    -o-transform: initial;
  }
  .onsen-sauna__img--pc {
    display: none;
  }
  .onsen-sauna__img--sp {
    display: block;
  }
}

@media screen and (max-width: 750px) {
  .onsen-sauna {
    padding-top: 150px;
    padding-bottom: 86.666vw;
  }
  .onsen-sauna__img {
    width: 37.866vw;
    bottom: 24vw;
  }
}

/*===================
facility
===================*/
.facility {
  padding-top: 150px;
  padding-bottom: 250px;
  position: relative;
  z-index: 2;
}
.facility .contents__title {
  margin-bottom: 26px;
}
.facility__slide {
  display: none;
  margin-bottom: 107px;
}
.facility__slide li {
  margin-right: 65px;
}
.facility__slide li img {
  height: 540px;
}
.facility .contents__textSml {
  width: calc(100% - 20px);
  margin: 0 auto 65px;
}

@media screen and (max-width: 750px) {
  .facility {
    padding-top: 140px;
    padding-bottom: 200px;
  }
  .facility__slide {
    margin-bottom: 50px;
  }
  .facility__slide li {
    margin-right: 35px;
  }
  .facility__slide li img {
    height: 72vw;
    min-height: 340px;
  }
  .facility .contents__textSml {
    margin: 0 auto 45px;
  }
}

/*===================
experience
===================*/
.experience {
  padding-top: 130px;
  padding-bottom: 130px;
  position: relative;
  background: url("../imgs/index/experience_mv.jpg") center center / cover no-repeat;
  z-index: 2;
}
.experience .section__subTitle {
  color: #fff;
  top: 50%;
  left: 55px;
  z-index: 2;
  transform: translateY(-50%);
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -moz-transform: translateY(-50%);
  -o-transform: translateY(-50%);
}
.experience .fixed-bg__text {
  width: calc(100% - 260px);
  padding: 0;
}
.experience__flex {
}
.experience .contents__title {
  margin-bottom: 73px;
}
.experience .fixed-bg__text--sml {
  margin-bottom: 40px;
}

@media screen and (max-width: 750px) {
  .experience {
    padding-top: 130px;
    padding-bottom: 160px;
  }
  .experience .section__subTitle {
    left: 25px;
  }
  .experience .fixed-bg__text {
    width: calc(100% - 40px);
    display: block;
    position: static;
  }
  .experience .contents__title {
    margin-bottom: 40px;
  }
  .experience .fixed-bg__text--lrg {
    margin-bottom: 25px;
  }
}

@media screen and (max-width: 375px) {
  .experience .section__subTitle {
    left: 20px;
  }
}

/*===================
access
===================*/
.access {
  padding-top: 215px;
  padding-bottom: 310px;
  position: relative;
  z-index: 2;
}
.access .inner--wide {
  max-width: 1030px;
}
.access .contents__flex {
  max-width: 670px;
  margin-bottom: 80px;
}
.access__map {
  height: 599px;
  filter: grayscale(1);
}
.access__map iframe {
  width: 100%;
  height: 100%;
}
.access__address {
  margin-bottom: 40px;
}
.access__address p {
  font-size: 12px;
  line-height: 1.75;
}
.access__flex {
  padding-top: 42px;
}

@media screen and (max-width: 750px) {
  .access {
    padding-top: 130px;
    padding-bottom: 190px;
  }
  .access .contents__flex {
    max-width: 420px;
    margin: 0 auto 60px;
    display: block;
  }
  .access__map {
    height: 359px;
  }
  .access__flex {
    padding-top: 40px;
  }
  .access__address {
    margin-bottom: 40px;
  }
}

/*===================
top-img
===================*/
.top-img {
  padding: 442px 0;
  position: relative;
  background: url(../imgs/index/top_under_img.jpg) center center / cover no-repeat;
  z-index: 2;
}
.top-img__img {
  width: 264px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  -webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
  z-index: 2;
}

@media screen and (max-width: 750px) {
  .top-img {
    padding: 342px 0;
  }
  .top-img__img {
    width: 45%;
    max-width: 264px;
  }
}

/*===================
top-news
===================*/
.top-news {
  padding-top: 250px;
  padding-bottom: 198px;
  position: relative;
  z-index: 2;
}
.top-news .inner--wide {
  max-width: 1030px;
}
.top-news__wrap {
  width: calc(100% - 40px);
  max-width: 1165px;
  margin: 0 auto 95px;
}
.top-news .contents__flex {
  align-items: flex-start;
  max-width: 1105px;
  margin: 0 0 0 auto;
}
.top-news .contents__title {
  width: 60px;
  padding-top: 10px;
}
.news-list {
  width: calc(100% - 90px);
  max-width: 892px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 30px 20px;
}
.news-list__item {
  width: calc((100% - 40px) / 3);
  max-width: 248px;
}
.news-list__thum {
  width: 100%;
  overflow: hidden;
  position: relative;
  margin-bottom: 18px;
}
.news-list__thum .back-img {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(1);
  z-index: 1;
  transition: transform 0.3s;
}
.archive__date {
  font-size: 11px;
  font-family: "Libre Caslon Display", serif;
  font-weight: 400;
  margin-bottom: 4px;
  line-height: 1.75;
  letter-spacing: 0.063em;
}
.archive__title {
  font-size: 12px;
  line-height: 1.75;
}
.top-news__btn {
  width: calc(100% - 40px);
  max-width: 1165px;
  padding-right: 50px;
  margin: 0 auto;
}
.top-news__btn .btn {
  margin: 0 0 0 auto;
}

@media screen and (max-width: 750px) {
  .top-news {
    padding-top: 160px;
    padding-bottom: 140px;
  }
  .top-news__wrap {
    margin: 0 auto 65px;
  }
  .top-news .contents__flex {
    display: block;
  }
  .top-news .contents__title {
    width: 100%;
    padding-top: 0;
    margin-bottom: 40px;
  }
  .news-list {
    width: 100%;
    max-width: 100%;
  }
}

@media screen and (max-width: 640px) {
  .news-list__item {
    width: calc((100% - 20px) / 2);
    max-width: 100%;
  }
}
