@charset "UTF-8";

/*
SP: ～767px
Tab: 768px ～ 1023px
PC: 1024px～
*/

/* ========================
CSS共通定数
======================== */
:root {
  /*最大幅基準*/
  --width-wrapper: 1240px; /*左右padding:20px分を考慮済*/
  --width-contents-large: 996px;
  --width-contents-medium: 588px;
  --width-contents-small: 384px;
  --padding-wrapper: 20px; /*wrapperの左右パディング */

  /* Js参照用breakpoint
    CSSファイルでは直接参照できないので値を直書き */
  --breakpoint-pc-narrow: 1024px;
  --breakpoint-sp: 767px;

  /*カラー*/
  --color-base: #0b0c10;
  --color-base-second: #15161a;
  --color-white: #eaeaea;
  --color-main: #c9a227;
  --color-sub: #ffb020;
  --color-accent: #263cc9;
  --color-accent-second: #26a3c9;
  --color-header-bg: rgba(11, 12, 16, 0.7);
  --color-accent-hover: hsl(232, 68%, 52%);

  /* オーバーレイ用グラデーション */
  --overlay-light: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4));
  --overlay-medium: linear-gradient(rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0.65));
  --overlay-page-title: linear-gradient(
    rgba(0, 0, 0, 0.25),
    rgba(0, 0, 0, 0.25)
  );

  /*フォントファミリー*/
  --font-family-noto-sans-jp: 'Noto Sans JP', sans-serif;
  --font-family-noto-serif-jp: 'Noto Serif JP', serif;
  --font-family-dancing-script: 'Dancing Script', cursive;
  --font-family-merriweather: 'Merriweather', serif;

  /*フォントウェイト(一部フォントでは非標準なので確実な指定をする)*/
  /*noto-sans*/
  --font-weight-noto-sans-regular: 400;
  --font-weight-noto-sans-medium: 500;
  --font-weight-noto-sans-bold: 700;
  /*noto-serif*/
  --font-weight-noto-serif-semi-bold: 600;
  --font-weight-noto-serif-bold: 700;
  /*merriweather*/
  --font-weight-merriweather-bold: 700;

  /* フォントサイズ */
  --size-large: 1.25rem; /*20px*/
  --size-normal: 1rem; /*16px*/
  --size-small: 0.75rem; /*12px*/
  --size-button-normal: 1.125rem; /*18px*/
  --size-page-title-pc: 3rem; /*48px*/
  --size-page-title-sp: 2rem; /*32px*/
  --size-page-title-en-pc: 1.5rem; /*24px*/
  --size-page-title-en-sp: 1rem; /*16px*/
  --size-section-title-pc: 1.75rem; /*28px*/
  --size-section-title-sp: 1.5rem; /*24px*/
  --size-contents-title-pc: 1.5rem; /*24px*/
  --size-contents-title-sp: 1.25rem; /*20px*/
  --size-hero-title-pc: 3.5rem; /*56px*/
  --size-hero-title-sp: 2.5rem; /*40px*/
  --size-features-title-pc: 1.5rem; /*24px*/
  --size-features-title-sp: 1.25rem; /*20px*/

  /*フォントショートハンド(font-sizeはPCデフォ)*/
  --font-text-large-medium: var(--font-weight-noto-sans-medium)
    var(--size-large) var(--font-family-noto-sans-jp);
  --font-text-normal-bold: var(--font-weight-noto-sans-bold) var(--size-normal)
    var(--font-family-noto-sans-jp);
  --font-text-normal: var(--font-weight-noto-sans-regular) var(--size-normal)
    var(--font-family-noto-sans-jp);
  --font-text-small: var(--font-weight-noto-sans-regular) var(--size-small)
    var(--font-family-noto-sans-jp);
  --font-button-normal-bold: var(--font-weight-noto-sans-bold)
    var(--size-button-normal) var(--font-family-noto-sans-jp);
  --font-page-title: var(--font-weight-noto-serif-bold)
    var(--size-page-title-pc) var(--font-family-noto-serif-jp);
  --font-page-title-en: var(--font-weight-merriweather-bold)
    var(--size-page-title-en-pc) var(--font-family-merriweather);
  --font-section-title: var(--font-weight-noto-serif-bold)
    var(--size-section-title-pc) var(--font-family-noto-serif-jp);
  --font-contents-title: var(--font-weight-noto-serif-bold)
    var(--size-contents-title-pc) var(--font-family-noto-serif-jp);
  --font-hero-title: var(--font-weight-noto-serif-semi-bold)
    var(--size-hero-title-pc) var(--font-family-noto-serif-jp);
  --font-features-title: var(--font-weight-noto-serif-bold)
    var(--size-features-title-pc) var(--font-family-noto-serif-jp);

  --line-height-default: 1.75;

  /* ベース値 */
  --space-unit: 8px;

  /* マージン */
  --margin-hero-pc: 120px;
  --margin-hero-sp: 72px;
  --margin-section-pc: 112px;
  --margin-section-sp: 64px;
  --margin-element-large-pc: 56px;
  --margin-element-large-sp: 40px;
  --margin-element-medium-pc: 32px;
  --margin-element-medium-sp: 24px;
  --margin-element-small-pc: 16px;
  --margin-element-small-sp: 10px;

  --gutter-extra-large-pc: 96px;
  --gutter-extra-large-sp: 32px;
  --gutter-large-pc: 56px;
  --gutter-large-sp: 24px;
  --gutter-medium-pc: 32px;
  --gutter-medium-sp: 16px;
  --gutter-small-pc: 16px;
  --gutter-small-sp: 8px;

  --spacing-text-large: 32px;
  --spacing-text-normal: 24px;
  --spacing-text-small: 16px;
  --spacing-text-extra-small: 8px;

  /*その他値*/
  --height-header-pc: 74px;
  --height-header-sp: 68px;
}

/* ========================
全体設定
======================== */
html {
  font-size: 100%;
  color: var(--color-white);
  background-color: var(--color-base);
}

body {
  font: var(--font-text-normal);
}

.clearfix::after {
  content: '';
  display: block;
  clear: both;
}

a {
  text-decoration: none;
}

img {
  max-width: 100%;
}

.center {
  margin-left: auto;
  margin-right: auto;
}

.wrapper {
  max-width: var(--width-wrapper);
  margin-left: auto;
  margin-right: auto;
  padding-left: 20px;
  padding-right: 20px;
  /* padding: 0 20px;
  margin: 0 auto; */
}

/* ========================
共通ページ構成
======================== */
.page-section:first-of-type {
  margin-top: var(--margin-hero-pc);
}

.page-section {
  margin-bottom: var(--margin-section-pc);
}

.page-section:last-of-type {
  margin-bottom: var(--margin-hero-pc);
}

/*スマートフォン*/
@media screen and (max-width: 767px) {
  .page-section:first-of-type {
    margin-top: var(--margin-hero-sp);
  }

  .page-section {
    margin-bottom: var(--margin-section-sp);
  }

  .page-section:last-of-type {
    margin-bottom: var(--margin-hero-sp);
  }
}

/* ========================
ボタン・インタラクション
======================== */
.button-area {
  /*ボタンを中央寄りにしたい場合はこちらをラップする*/
  text-align: center;
}

.btn {
  display: inline-block;
  margin-left: auto;
  margin-right: auto;
  text-align: center;
  min-width: 248px;
  padding: 16px 56px 16px 40px; /*”>”矢印分左のpaddingを多めに*/
  color: #fff;
  background-color: var(--color-accent);
  position: relative;
  border-radius: 32px;

  transition: 0.4s;
}

.btn::after {
  font-family: 'Material Symbols Outlined';
  content: '\e5c8';
  vertical-align: middle;
  position: absolute;
  top: 50%;
  right: 35px;
  transform: translateY(-50%);

  transition: 0.4s;
}

.btn:hover {
  /* opacity: 0.7; */
  background-color: var(--color-accent-hover);
  box-shadow: 0 4px 16px rgb(234, 234, 234, 0.2);
}

.btn:hover::after {
  right: 30px;
  content: '\e5c8';
}

/*スマートフォン*/
@media screen and (max-width: 767px) {
  /* SPではボタンのアニメーションを無効化 */
  .btn {
    transition: none;
  }

  .btn:hover {
    background-color: transparent;
    color: var(--color-white);
    opacity: 1;
  }

  .btn::after {
    transition: none;
  }

  .btn:hover::after {
    right: 20px;
  }
}

/* ========================
共通タイトル
======================== */
.page-title-area {
  padding-top: var(--height-header-pc);
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-bottom: var(--margin-hero-pc);
  position: relative;
  overflow: hidden;
}

.page-title-area::before {
  content: '';
  position: absolute;
  /* 背景ぼかしが親要素の境界に影響しないよう少し拡張する */
  top: -5px;
  left: -5px;
  right: -5px;
  bottom: -5px;
  background-image: var(--overlay-page-title);
  background-size: cover;
  background-position: center center;
  filter: blur(3px);
  z-index: -1;
}

/*page-title-area配下にある場合の分岐設定*/
.page-title-area .page-title {
  margin: 47px 0;
}

.page-title {
  text-align: center;
  margin-bottom: var(--margin-element-large-pc);
  font: var(--font-page-title);
}

.page-title span {
  display: block;
  font-weight: bold;
  font: var(--font-page-title-en);
}

.section-title {
  text-align: center;
  position: relative;
  margin-bottom: var(--margin-element-large-pc);
  font: var(--font-section-title);
}

.section-title::after {
  content: '';
  display: block;
  width: 160px;
  height: 3px;
  background: var(--color-white);
  margin: 16px auto 0 auto;
}

.content-title {
  font: var(--font-contents-title);
}

/*スマートフォン*/
@media screen and (max-width: 767px) {
  .page-title-area {
    padding-top: var(--height-header-sp);
  }

  .page-title-area {
    margin-bottom: var(--margin-hero-sp);
  }

  .page-title {
    text-align: center;
    margin-bottom: var(--margin-element-large-sp);
    font-size: var(--size-page-title-sp);
  }
  .page-title span {
    font-size: var(--size-page-title-en-sp);
  }

  .section-title {
    margin-bottom: var(--margin-element-large-sp);
    font-size: var(--size-section-title-sp);
  }

  .section-title::after {
    width: 144px;
    margin-top: 12px;
  }

  .content-title {
    font-size: var(--size-contents-title-sp);
  }
}

/* ========================
共通パーツ
======================== */
/*カード形式*/
.card-large-grid {
  /*最大横幅を最大カラム数とスペースpxから計算*/
  --card-width: 280px;
  --max-columns: 3;
  --card-space-w: var(--gutter-medium-pc);
  --side-padding: var(--gutter-medium-pc);

  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--card-width), 1fr));
  margin: 0 auto;
  padding: 0 var(--side-padding);
  column-gap: var(--card-space-w);
  row-gap: var(--gutter-large-pc);
  max-width: calc(
    var(--card-width) * var(--max-columns) + var(--card-space-w) *
      var(--max-columns) + var(--side-padding) * 2
  );
}

.card {
  margin: 0 auto;
  max-width: 280px;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.card-thumb {
  width: 100%;
}

.card-title {
  margin-top: var(--margin-element-small-pc);
  text-align: center;
  font: var(--font-contents-title);
}

.card-thumb img {
  width: 100%;
  height: auto;
}

.card-text {
  margin-top: var(--margin-element-small-pc);
}

/*スマートフォン*/
@media screen and (max-width: 767px) {
  .card-large-grid {
    row-gap: var(--gutter-extra-large-sp);
  }

  .card-title {
    margin-top: var(--margin-element-small-sp);
    font-size: var(--size-contents-title-sp);
  }

  .card-text {
    margin-top: var(--margin-element-small-sp);
  }
}

/*スマートフォン(小)*/
@media screen and (max-width: 500px) {
  .card-large-grid {
    /*セルが1列に縮小した際にpaddingが邪魔になるので個別設定*/
    padding: 0 0;
  }
}

/* ========================
共通アニメーション・演出
======================== */

/*フェードイン*/
.fade-slider {
  position: relative;
  /* overflow: hidden; */
}

.fade-slider-child {
  position: absolute; /* 親要素内で重ねる */

  opacity: 0;
  transition: opacity 1s ease-in-out;
}

.fade-slider-child.active {
  opacity: 1;
}

/* ========================
ヘッダー/ナビ
======================== */
/*ヘッダー部*/
header {
  height: 74px;
  background-color: var(--color-header-bg);
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000; /*tips: mainvisualの背面に行ってしまうので最前面に */
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 20px;
  backdrop-filter: blur(15px);
}

header .logo a {
  font: bold 3rem var(--font-family-dancing-script);
  color: var(--color-main);
}

/*ナビゲーション(ヘッダー内)*/
header nav ul {
  display: flex;
  gap: 24px;
}

header nav li a {
  color: var(--color-main);
  display: block;
  padding: 8px 10px 6px 10px; /*border-bottom分、予め確保しておく*/
  border-bottom: solid 2px transparent;
}

header nav li a:hover {
  opacity: 0.7;
}

#top #nav-top a,
#price #nav-price a,
#seat #nav-seat a,
#service #nav-service a,
#access #nav-access a {
  border-bottom-color: var(--color-main);
}

#top #nav-top {
  display: none; /*トップページはnavトップを見せない*/
}

/*ハンバーガーメニュー*/
.nav-btn {
  display: none;
  position: relative;
  width: 30px;
  height: 40px;
  z-index: 1;
}

.nav-btn span,
.nav-btn::before,
.nav-btn::after {
  width: 30px;
  height: 3px;
  background-color: var(--color-main);
  position: absolute;
  top: 50%;
  left: 2px;

  /*三↔✕切り替え時*/
  transition: transform 0.4s;
}

.nav-btn::before,
.nav-btn::after {
  /*NOTE:
  疑似要素はcontentを明示的に空にしないと表示されない*/
  content: '';
}

.nav-btn::before {
  transform: translateY(-11px);
}

.nav-btn::after {
  transform: translateY(11px);
}

body.is-nav-open .nav-btn span {
  transform: scaleX(0);
}
body.is-nav-open .nav-btn::before {
  transform: translateY(0) rotate(45deg);
}
body.is-nav-open .nav-btn::after {
  transform: translateY(0) rotate(-45deg);
}

/*スマートフォン*/
@media screen and (max-width: 767px) {
  header {
    height: 68px;
  }

  /*ハンバーガーメニューとnavの設定*/
  .nav-btn {
    display: block;
  }

  header .logo a {
    font-size: 2.6875rem;
  }

  header nav {
    position: fixed;
    width: 80%;
    height: 100vh;
    right: 0;
    top: 0;
    background-color: var(--color-base-second);

    /*移動アニメーション*/
    transform: translateX(100%);
    transition: transform 0.4s;
  }

  body.is-nav-open nav {
    transform: translateX(0);
  }

  header nav ul {
    flex-direction: column;
    align-items: center;
    margin-top: var(--margin-hero-sp);
  }

  header nav li a {
    font-size: 2rem;
    border-bottom-width: 3.5px;
  }
}

/* ========================
フッター
======================== */
footer {
  padding-top: 64px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 64px;
  background-image: var(--overlay-medium),
    url(../images/footer-bg/footer-bg-01.jpg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

footer .information {
  max-width: calc(1122px + (var(--padding-wrapper) * 2));
  padding: 0 var(--padding-wrapper);
  width: 100%;
  display: flex;
  align-items: center;
  gap: 78px;
}

footer .box-left,
footer .box-right {
  width: 50%;
}

/*左パネル部*/
footer .box-left {
  display: flex;
  align-items: center;
  flex-direction: column;
  gap: 24px;
}

footer .logo a {
  font: bold 3rem var(--font-family-dancing-script);
  color: var(--color-main);
}

footer .contact-info {
  text-align: center;
  font: var(--font-text-normal);
}

footer .contact-info .tel {
  margin-bottom: 8px;
  font-weight: var(--font-weight-noto-sans-bold);
  font-size: 1.5rem;
}

footer .price-tables {
  /* width: 100%; */
  /* max-width: fit-content; */
  background-color: var(--color-base-second);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  flex-wrap: wrap;
  padding: 8px 12px;
  border-radius: 8px;
}

footer .price-tables .pack {
  /* text-align: center; */
  /* width: fit-content; */
  padding: 0 12px;
  flex-shrink: 0; /* packが縮まないようにする */
}

footer .price-tables .pack .title {
  font-size: 1.125rem;
  font-weight: var(--font-weight-noto-serif-bold);
  font-family: var(--font-family-noto-serif-jp);

  margin-bottom: 8px;
}

footer .price-tables .pack.always .title {
  color: var(--color-sub);
}

footer .price-tables .pack.night .title {
  color: var(--color-accent-second);
}

footer .price-tables table {
  text-align: center;
  /* width: 100%; */
  /* max-width: 140px; */
  width: 140px;
}

footer .price-tables table tr td:nth-child(odd) {
  text-align: left;
}

footer .price-tables table tr td:nth-child(even) {
  text-align: right;
  font-weight: var(--font-weight-noto-sans-bold);
}

/*右パネル部*/
footer .box-right iframe {
  width: 100%;
  height: auto;
  aspect-ratio: 1/1;
}

/*ナビゲーション(フッター内)*/
footer nav {
  width: 100%;
  padding: 32px 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 24px;
  background-color: var(--color-main);
}

footer nav ul {
  display: flex;
  justify-content: center;
  gap: 24px;
}

footer nav li a {
  color: var(--color-base);
  display: block;
  padding: 8px 10px;
}

footer nav li a:hover {
  opacity: 0.7;
}

footer nav small {
  font: var(--font-text-small);
  color: var(--color-base);
}

/*スマートフォン*/
@media screen and (max-width: 767px) {
  footer .information {
    flex-direction: column;
    align-items: center;
    gap: 40px;
  }

  footer .box-left,
  footer .box-right {
    width: 100%;
  }

  footer .box-right {
    max-width: 500px;
  }

  footer nav ul {
    flex-direction: column;
    align-items: center;
    gap: 6px;
  }
}
