@charset "UTF-8";

/* =========================================================
   Header（全ページ共通）
   ロゴ / グローバルナビ / Instagram / 予約ボタン / ハンバーガー
   ※ ボタンの見た目は components/button.css。ここでは配置と上書きのみ
     （読み込み順に依存しないよう、上書きは .btn-reserve との複合セレクタで指定）
   ========================================================= */
.header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  height: var(--header-h);
  background: #fff;
  transition: height 0.3s, box-shadow 0.3s;
}

.header.is-scrolled {
  height: 90px;
  box-shadow: 0 2px 16px rgba(105, 148, 173, 0.15);
}

.header__inner {
  display: flex;
  align-items: center;
  height: 100%;
  max-width: 1440px;
  margin-inline: auto;
  padding: 0 34px 0 79px;
}

.header:not(.is-scrolled) .header__inner {
  align-items: flex-start;
  padding-top: 42px;
}

.header__logo {
  flex-shrink: 0;
  line-height: 0;
}

.header__logo img {
  width: 110px;
  height: 41.13px;
}

.header:not(.is-scrolled) .header__logo {
  margin-top: 8px;
}

.header__reserve {
  flex-shrink: 0;
}

/* ---------- グローバルナビ ---------- */
.gnav {
  display: flex;
  align-items: center;
  flex: 1;
}

.header:not(.is-scrolled) .gnav {
  margin-top: 17px;
}

.gnav__list {
  display: flex;
  gap: 34px;
  margin-left: 64px;
}

.gnav__list a {
  position: relative;
  display: block;
  font-family: var(--f-en);
  font-size: 16px;
  letter-spacing: 0.1em;
  color: var(--c-blue);
  text-transform: uppercase;
  white-space: nowrap;
}

.gnav__list a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -4px;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.3s;
}

.gnav__list a:hover::after,
.gnav__list a[aria-current="page"]::after {
  transform: scaleX(1);
  transform-origin: left;
}

.gnav__insta {
  margin-left: auto;
  margin-right: 45px;
  transition: opacity 0.3s;
}

.gnav__insta img {
  width: 26px;
  height: 26.44px;
}

.gnav__insta:hover {
  opacity: 0.7;
}

/* メニュー内の予約ボタン（ハンバーガー時のみ表示） */
.btn-reserve.gnav__reserve--sp {
  display: none;
}

/* ---------- ハンバーガー ---------- */
.hamburger {
  display: none;
}

/* メニューを開いている間は背面をスクロールさせない */
body.is-menu-open {
  overflow: hidden;
}

/* =========================================================
   Responsive
   ========================================================= */
@media (max-width: 1280px) {
  .header__inner {
    padding-left: 40px;
  }

  .gnav__list {
    gap: 22px;
    margin-left: 40px;
  }

  .gnav__list a {
    font-size: 14px;
  }

  .gnav__insta {
    margin-right: 24px;
  }

  .btn-reserve.header__reserve {
    width: 190px;
    font-size: 17px;
  }
}

@media (max-width: 1100px) {
  .header__inner,
  .header:not(.is-scrolled) .header__inner {
    align-items: center;
    padding: 0 24px 0 32px;
  }

  .header:not(.is-scrolled) .header__logo,
  .header:not(.is-scrolled) .gnav {
    margin-top: 0;
  }

  .header.is-scrolled {
    height: 72px;
  }

  .header__reserve {
    margin-left: auto;
  }

  .hamburger {
    position: relative;
    z-index: 110;
    display: block;
    width: 48px;
    height: 48px;
    margin-left: 16px;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
  }

  .hamburger span {
    position: absolute;
    left: 12px;
    width: 24px;
    height: 1.5px;
    background: var(--c-blue);
    transition: transform 0.3s, opacity 0.3s, top 0.3s;
  }

  .hamburger span:nth-child(1) { top: 16px; }
  .hamburger span:nth-child(2) { top: 23px; }
  .hamburger span:nth-child(3) { top: 30px; }

  .is-menu-open .hamburger span:nth-child(1) { top: 23px; transform: rotate(45deg); }
  .is-menu-open .hamburger span:nth-child(2) { opacity: 0; }
  .is-menu-open .hamburger span:nth-child(3) { top: 23px; transform: rotate(-45deg); }

  .gnav {
    position: fixed;
    inset: 0;
    z-index: 105;
    flex-direction: column;
    justify-content: safe center;
    gap: 40px;
    padding: 80px 24px 40px;
    overflow-y: auto;
    background: rgba(255, 255, 255, 0.97);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.4s, visibility 0.4s;
  }

  .is-menu-open .gnav {
    opacity: 1;
    visibility: visible;
  }

  .gnav__list {
    flex-direction: column;
    align-items: center;
    gap: 26px;
    margin-left: 0;
  }

  .gnav__list a {
    font-size: 18px;
  }

  .gnav__insta {
    margin: 0;
  }

  .btn-reserve.gnav__reserve--sp {
    display: inline-flex;
    height: auto;
    padding-block: 13px; /* ボタン内の上下余白を広めに（高さ 52px → 58px） */
  }
}

@media (max-width: 768px) {
  .header__inner,
  .header:not(.is-scrolled) .header__inner {
    padding: 0 8px 0 20px;
  }

  .header__logo img {
    width: 84px;
    height: auto;
  }

  .header.is-scrolled {
    height: 64px;
  }

  .btn-reserve.header__reserve {
    width: auto;
    height: 40px;
    padding: 0 14px;
    font-size: 14px;
  }

  .hamburger {
    margin-left: 4px;
  }
}

@media (max-width: 480px) {
  .btn-reserve.header__reserve {
    display: none;
  }

  .hamburger {
    margin-left: auto;
  }
}

/* WordPress の管理バー（ログイン時）の分だけ下げる */
.admin-bar .header {
  top: 32px;
}

@media (max-width: 782px) {
  .admin-bar .header {
    top: 46px;
  }
}
