@charset "utf-8";

/* * {
  outline: 1px solid rgb(201, 233, 201);
} */

.site-container {
  margin-right: clamp(80px, 16vw, 110px);
}

.top-mv {
  position: relative; /* 内部の絶対配置要素の基準点とする */
  width: 100%;
  height: clamp(500px, 95vh, 850px);
  overflow: hidden;
}

@media (max-width: 767px) {
  .site-container {
    margin-right: 0;
  }

  .top-mv {
    height: clamp(425px, 85vw, 550px);
  }
}

/* headerをtop-mvの上方に重ねて表示 */
.site-header {
  position: absolute;
  top: 0; /* 上端に固定 */
  left: 0;
  right: 0;

  z-index: 2; /* 背景（スライド）より手前に表示 */
  padding-top: 10px;
  padding-left: 30px;
  padding-right: clamp(80px, 16vw, 110px);
  /* 背景色をフェードアウトさせる */
  background: linear-gradient(to top, rgba(48, 38, 24, 0) 0%, /* 下端は完全に透明 */ rgba(48, 38, 24, 0.3) 40%, /* 中間から色が不透明に */ rgb(48, 38, 24, 0.6) 100% /* 上端は完全に半分不透明 */);

  .header-content {
    max-width: clamp(800px, 86vw, 1640px);
    margin-left: auto;
    /* margin-right: auto; */
  }

  .contact-tel {
    justify-content: flex-end;
    padding-right: 1.2em;
    line-height: 1;
    align-items: baseline;
    gap: 10px;
    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
  }

  :where(.gnav) {
    .gnav-list {
      &.hidden {
        display: none;
      }
    }
  }
}

:where(.top-mv) {
  /* 【１】背景となるスライド要素のスタイル */
  .slide-container {
    position: absolute;
    top: 0;
    left: 0;
    /* right:140pxはwidth: 100%-140px;を意味する */
    right: 0;
    height: 100%;
    /* 将来、スライドショーを実現するためのベースコンテナ */
  }

  .slide-item {
    position: absolute; /* スライドを重ねるために絶対配置 */
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: left; /*top-mv画像を左基準で表示*/

    /* --- 画像全体に黒色オーバーレイを重ねる --- */
    &::before {
      content: "";
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      /* 透明度20%の濃い茶を重ねる*/
      background: linear-gradient(to top, rgba(75, 60, 50, 0.2) 30%, rgba(75, 60, 50, 0.5) 70%, rgb(75, 60, 50, 1) 95%);
    }
  }

  /* 【２】 top-mv の上に重ねる要素群 */
  /* [共通設定] headerとキャッチコピーに最大幅(1640px)と中央揃えを適用 */
  /* position: absolute; の要素を中央揃えするため、left: 0; right: 0; と margin: auto; を設定します。 */
  .overlay-catchphrase {
    position: absolute;
    left: 0;
    right: 0; /* left: 0; と組み合わせることで、幅の計算が max-width に従うようになる */
    padding-left: 30px; /*model-innerと同じ左端最小クリアランス*/
  }

  .overlay-catchphrase {
    bottom: 0; /* 下端に固定 */
    left: 0;
    z-index: 1; /* headerよりは低いが背景よりは手前に */
    /* ここでFlexboxやGridを使って内部コンテンツを配置することも可能 */
    /* width: 100%; */
    padding-bottom: clamp(40px, 8vw, 87px);

    .catchphrase-content {
      max-width: clamp(800px, 86vw, 1640px);
      margin-left: auto;
    }

    .main-visual-catchphrase {
      font-size: var(--fs-40);
      /* キャッチコピーの文字スタイル */
      text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
    }

    & small {
      font-size: var(--fs-24);
    }
  }
}

/* main, footerなど、トップビジュアルの下に来る要素のスタイル */
.site-main {
  padding: 0 0 50px;
  /* トップビジュアルの下からコンテンツが始まる */
}

:where(.concept) .section-wrap,
:where(.access) .section-wrap {
  /*右側の画像高さと同じ高さに引き伸ばす*/
  align-items: stretch;
  width: 100%;
  margin-top: 60px;
  margin-left: auto;
  margin-right: auto;
  justify-content: center;

  .image-box {
    position: relative;
    flex-shrink: 0; /*Flexアイテムが縮小しないように設定*/
    aspect-ratio: 1 / 1; /*横幅に対する比率で高さを指定  */
    z-index: 1;

    .img-content {
      width: 100%;
      height: 100%;
      object-fit: cover;
      border-radius: 2px;
    }
  }

  .text-box {
    padding: 40px;
    border-radius: 2px;

    /*
      radial-gradient の設定例:
      - ellipse: グラデーションの形を要素の形状に合わせた楕円形にする
      - at center: グラデーションの中心を要素の中央にする
      - rgba(190, 160, 100, 1) 0%: 中央の色 (不透明)
      - rgba(175, 130, 50, 1) 100%: 外側の色 (不透明)
    */
    background-image: radial-gradient(ellipse at center, rgb(192, 160, 97) 0%, rgb(155, 110, 25) 70%);

    .concept-title {
      margin-bottom: 25px;
      font-size: 1.8rem;
    }
  }
}

:where(.concept) .section-wrap {
  .image-box {
    max-width: 300px;
    margin-top: 50px;
    margin-bottom: auto;

    &::after {
      content: "";
      position: absolute;
      top: clamp(-25px, -2vw, -15px);
      left: clamp(-37px, -2.5vw, -15px);
      width: 100%;
      height: 100%;
      z-index: -1;
      background-color: var(--color-accent);
      border-radius: 2px;
    }
  }

  .text-box {
    margin-right: clamp(-37px, -3vw, -22px);
    padding-right: clamp(20px, 8vw, 100px);
    width: 55%;
    min-height: 375px;
  }
}

:where(.access) .section-wrap {
  .image-box {
    width: 55%;
    margin-top: 0;
    margin-bottom: 0;
    max-width: 500px;

    &::after {
      content: "";
      position: absolute;
      top: clamp(-25px, -2vw, -15px);
      right: clamp(-37px, -2.5vw, -15px);
      width: 100%;
      height: 100%;
      z-index: -1;
      background-color: var(--color-accent);
    }

    & iframe {
      padding: 10px;
      background-color: rgba(214, 163, 74, 0.5);
    }
  }

  .text-box {
    padding-right: 20px;

    width: 100%;
    max-width: 400px;
    margin-top: 50px;
    margin-bottom: 50px;
    margin-left: 0;
    padding-left: clamp(40px, 5vw, 200px);
  }

  & address {
    line-height: 1.5;
    /* word-break: keep-all; */
  }

  .model-btn {
    margin-top: 10%;
  }
}

@media (max-width: 767px) {
  :where(.concept) .section-wrap,
  :where(.access) .section-wrap {
    flex-direction: column;
    align-items: center;
    margin-top: 30px; /*conceptのみの設定*/

    .text-box {
      order: 2;
      min-height: unset;
      padding: 70px 20px 50px;
      margin-top: -40px;

      .concept-title {
        text-align: center;
      }
    }

    .image-box {
      width: 100%;
      padding: 0 10px; /*conceptのみの設定*/

      &::after {
        top: -4vw;
        left: 3vw;
      }
    }

    address {
      & p {
        width: 100%;
        max-width: 300px;
        margin-left: auto;
        margin-right: auto;
      }
    }
  }

  :where(.concept) .section-wrap {
    .text-box {
      width: 100%;
      max-width: 500px;
      margin-left: 0;
      margin-right: 0;
    }
  }

  :where(.access) .section-wrap {
    margin-top: 60px;
    .address-container {
      width: 100%;
      padding: 0 20px;

      .text-box {
        margin-left: auto;
        margin-right: auto;
      }
    }
    .image-box {
      padding: 0;
    }

    .model-btn {
      margin-left: auto;
      margin-right: auto;
    }
  }
}

:where(.menu) {
  /* 税込み表示のスタイル */
  .tax-note {
    text-align: right;
    margin-bottom: 5px;
  }

  .menu-contents {
    background-color: #444;
    padding: 30px 3.5em;

    > .model-btn {
      margin-left: auto;
      margin-right: auto;
    }
  }
  /* ----------------------------------- */
  /* 2行2列レイアウトの親コンテナ設定 */
  /* ----------------------------------- */
  .menu-table {
    display: grid;
    grid-template-columns: repeat(2, 1fr); /* 2列均等幅 */
    gap: 3.5em clamp(30px, 8vw, 150px); /* 行間 30px, 列間 20px */
    margin-bottom: 3em;

    /* 各メニューグループの設定 */
    .menu-group {
      /* 分類タイトルのスタイル */
      .menu-category-title {
        position: relative;
        font-size: var(--fs-18);
        margin: 0;
        padding: 0.5em 0 0.5em 10px;
        border-bottom: 2px solid #aee0fe;

        &::before {
          content: "";
          position: absolute;
          top: 0;
          left: 0px;
          width: 100%;
          height: 5px;
          z-index: 1;
          background: linear-gradient(to right, #aee0fe, #ffdddd);
        }
      }

      &.color-menu {
        .menu-category-title {
          border-bottom: 2px solid #ffd5b9;
          &::before {
            background: linear-gradient(to right, #ffd5b9, #ffdddd);
          }
        }
      }

      &.perm-menu {
        .menu-category-title {
          border-bottom: 2px solid #ffbddd;
          &::before {
            background: linear-gradient(to right, #ffbddd, #ffdddd);
          }
        }
      }

      &.shaving-menu {
        .menu-category-title {
          border-bottom: 2px solid #bdecb4;
          &::before {
            background: linear-gradient(to right, #dfffbf, #ffdddd);
          }
        }
      }

      /* メニューリストのスタイル */
      .menu-list {
        /* 個別のメニュー項目（<li>）のスタイル */
        padding: 1em 0 0 10px;
        .menu-item {
          display: flex; /* 名称と価格を横並びにする */
          justify-content: space-between; /* 両端揃え */
          padding: 0.25em 0;

          .menu-name {
            padding-right: 1em;
            /* wbrで改行させるため↓ */
            word-break: keep-all;
          }

          /* メニュー価格のスタイル */
          .menu-price {
            min-width: 60px; /* 価格が揃うように最小幅を設定 */
            text-align: right;
          }
        }
      }
    }
  }
}

@media (max-width: 767px) {
  :where(.menu) {
    .menu-container {
      width: 100%;
      max-width: 400px;
      margin-left: auto;
      margin-right: auto;
    }
    .menu-contents {
      padding: 30px clamp(15px, 5vw, 30px);
    }

    .menu-table {
      grid-template-columns: repeat(1, 1fr); /* 2列均等幅 */
      gap: 30px; /* 行間 30px, 列間 20px */

      .menu-group {
        .menu-list {
          .menu-item {
            padding-bottom: 1em;
          }
        }
      }
    }
  }
}

:where(.hour-of-op) {
  .business-hours {
    align-items: flex-start;

    .hours-detail {
      width: 60%;
      height: 100%;

      .hours-table {
        border-collapse: collapse; /* セルの境界線を結合 */
        width: 100%;

        & th,
        & td {
          position: relative;
          font-weight: 400;
          text-align: center;
          vertical-align: middle;
          padding: 30px 10px;
        }

        & thead {
          border-bottom: 1px solid #ccc;

          .cell-label {
            display: inline-block;
            padding: 0.1em 0.3em 0.1em 0.1em;
            line-height: 1.2;
            letter-spacing: -0.15em;
          }

          .is-holiday {
            background: var(--color-main); /* 好きな色 */
          }

          & th {
            padding-top: 0;
            white-space: nowrap; /*改行禁止*/
          }
        }

        & tr th:first-child {
          text-align: left;
        }
      }

      & p {
        margin: 20px 0 30px;
        line-height: 3;

        /* 改行位置を指定するテクニック */
        span {
          display: inline-block;
        }
      }

      .op-hours-tel {
        justify-content: flex-start;
        gap: 1em;

        span {
          padding: 0.1em 0.5em;
          background-color: var(--color-accent);
          border-radius: 2px;
        }

        & a {
          letter-spacing: 0.1em;
        }
      }
    }

    & img {
      width: 35%;
      height: 100%;
      object-fit: cover;
    }
  }
}

@media (max-width: 1023px) {
  :where(.hour-of-op) {
    .business-hours {
      flex-direction: column;
      align-items: center;

      .hours-detail {
        width: 100%;
        max-width: 500px;
        order: 2;

        .hours-table {
          font-size: var(--fs-18);
        }
      }

      & img {
        width: 60%;
        aspect-ratio: 1 / 1;
        object-fit: cover;
        margin-bottom: 50px;
      }
    }
  }
}

@media (max-width: 500px) {
  :where(.hour-of-op) {
    .business-hours {
      .hours-detail {
        .hours-table {
          th,
          td {
            padding: 15px 5px;
          }
        }

        & p {
          line-height: 2;
          margin-top: 15px;
        }
      }
    }
  }
}

/* ==================================================
   Information Section / お知らせセクション
   ================================================== */

/* --- 1. レイアウトとリストの基本設定 --- */
.wb-info-list {
  margin-top: 4em;
  margin-bottom: 5em;
  padding-right: 3em;
  font-size: var(--fs-16);
}

.wb-info-item {
  border-bottom: 1px solid #eee;
  margin-top: 1em;
}

/* --- 2. アコーディオン（details/summary） --- */
.wb-info-summary {
  list-style: none;
  cursor: pointer;
  outline: none;

  &::-webkit-details-marker {
    display: none; /* Safari用 */
  }
}

.wb-info-head {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: 1em 0 0.5em;

  /* 矢印アイコン（3階層目） */
  &::after {
    content: "▼";
    font-size: 0.8em;
    color: #aaa;
    margin-left: auto;
    padding-left: 0.5em;
    transition: transform 0.3s ease;
  }
}

/* --- 3. ニュース項目内の詳細要素 --- */
.wb-info-date {
  flex-shrink: 0;
  font-size: var(--fs-14);
  font-weight: normal;
  margin-right: 50px;
  padding: 0 0.5em;
  background-color: rgba(204, 204, 204, 0.2);
  border-radius: 2px;
}

.wb-info-topic {
  font-size: var(--fs-18);
}

/* --- 4. 開閉コンテンツの状態 --- */
.wb-info-content {
  font-family: "Noto Sans JP", sans-serif;
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  padding: 0 16px;
  background-color: var(--color-base-dark);
  box-shadow: 1px 1px 4px gray;
  transition: max-height 0.4s ease, opacity 0.3s ease, padding 0.3s ease;
}

/* 開閉時のスタイル（状態変化） */
.wb-info-accordion[open] {
  & .wb-info-content {
    max-height: 1000px;
    opacity: 1;
    padding: 16px;
  }

  & .wb-info-head {
    border-bottom: none;

    &::after {
      transform: rotate(180deg);
    }
  }
}

/* --- 5. その他（ボタン） --- */
.wb-info-sec .model-btn {
  margin-left: auto;
  margin-right: auto;
  display: block; /* 中央寄せ用 */
  width: fit-content;
}

/* --- 6. 続きを読むリンクのスタイル --- */
.wb-info-more {
  color: var(--color-main);
  margin-left: 15px;
}

@media (max-width: 767px) {
  .wb-info-list {
    margin-top: 0;
  }
  .wb-info-wrap {
    flex-direction: column;
    align-items: flex-start;
  }
}

@media (max-width: 500px) {
  .wb-info-list {
    padding-right: 0;
  }
}
