/* Memo
・PCのコンテンツ幅：1032px
・テキストカラー：#191E3B
・フォントサイズ：15px
*/

.hb-pre-wrap {
  white-space: pre-wrap;
}

/* text-primaryのカラー上書き */
.text-primary {
  color: #0030AB !important;
}

/* ショップ詳細 > タイトルセクション */
.hb-shop-title-section {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: end;
  margin-bottom: 20px;
}
.hb-shop-title-section .hb-shop-official {
  font-size: 18px;
  line-height: 1;
  margin-bottom: 10px;
}
.hb-shop-title-section h2 {
  font-size: 28px;
  line-height: 1.0;
  margin-bottom: 0;
}

/* ショップ詳細 > ユーティリティボタン（シェア・保存） */
.hb-utility-btn {
  color: #191E3B;
  font-size: 14px;
  line-height: 1.0;
  display: inline-block;
  border: 1px solid #191E3B;
  padding: 7px 10px;
  border-radius: 20px;
  margin-left: 5px;
  position: relative;
}
.hb-utility-btn .favorite-button-inner,
.hb-utility-btn form {
  display: inline;
  margin: 0;
  padding: 0;
}
.hb-utility-btn form button {
  padding: 0;
  font: inherit;
  color: inherit;
  vertical-align: baseline;
}
.hb-utility-btn form button::after,
.hb-utility-btn .favorite-button-inner > a::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}
.hb-utility-btn .bi-heart-fill {
  color: #EC008C;
}

/* ショップ詳細 > メタ情報（住所・レビュー） */
.hb-shop-meta {
  line-height: 1.6;
  font-size: 16px;
}

@media (max-width: 991px) {
  .hb-shop-title-section {
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    margin-top: 10px;
  }
  .hb-shop-title-section .hb-shop-official {
    font-size: 14px;
    margin-bottom: 5px;
  }
  .hb-shop-title-section h2 {
    font-size: 20px;
    line-height: 1.6;
    margin-bottom: 10px;
  }
  .hb-utility-btn {
    font-size: 12px;
    margin-left: 0;
    margin-right: 5px;
  }
  .hb-shop-meta {
    font-size: 14px;
  }
}

/* ショップ詳細 > ショップ画像の表示 */

.hb-shop-images-wrapper {
  border-radius: 0;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 75vh;
  position: relative;
}

.hb-show-gallery-btn {
    display: inline-block;
    font-size: 15px;
    color: #191E3B;
    font-weight: bold;
    padding: 8px 20px;
    background-color: #fff;
    position: absolute;
    right: 15px;
    bottom: 15px;
    border-radius: 5px;
  }

@media (min-width: 1200px) {
  .hb-shop-images-wrapper {
    border-radius: 10px;
  }
}

/* ショップ詳細 - 画像フルブリード（≤1032px） */
@media (max-width: 1032px) {
  .hb-shop-images-section {
    max-width: 100%;
    padding-left: 0;
    padding-right: 0;
  }

  .hb-main--with-header-offset:has(.hb-shop-images-section) {
    padding-top: 0;
    border-top: none;
  }
}

/* ショップ詳細 > セカンダリナビ */
.hb-shop-detail .secondary_nav ul li {
  line-height: 1;
}

/* メインコンテンツのヘッダーオフセット（トップページ以外） */
.hb-main--with-header-offset {
  padding-top: 20px;
  border-top: 1px solid #eee;
}

/* ==========================================================================
   トップページ - ヒーローセクション（クロスフェード）
   ========================================================================== */
.hero_single.version_2 {
  position: relative;
  height: 500px;
  overflow: hidden;
  margin-bottom: 20px;
}

/* 背景画像コンテナ */
.hero-bg {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
}

.hero-bg-image {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
}

.hero-bg-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  image-rendering: -webkit-optimize-contrast;
  image-rendering: crisp-edges;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}

/* クロスフェードアニメーション（9枚/100秒サイクル）
   1枚あたり約11秒表示、3秒フェード
   ---------------------------------------------------------------- */
@keyframes hero-crossfade-1 {
  0%   { opacity: 1; }
  8%   { opacity: 1; }
  11%  { opacity: 0; }
  97%  { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes hero-crossfade-2 {
  0%   { opacity: 0; }
  8%   { opacity: 0; }
  11%  { opacity: 1; }
  19%  { opacity: 1; }
  22%  { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes hero-crossfade-3 {
  0%   { opacity: 0; }
  19%  { opacity: 0; }
  22%  { opacity: 1; }
  30%  { opacity: 1; }
  33%  { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes hero-crossfade-4 {
  0%   { opacity: 0; }
  30%  { opacity: 0; }
  33%  { opacity: 1; }
  41%  { opacity: 1; }
  44%  { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes hero-crossfade-5 {
  0%   { opacity: 0; }
  41%  { opacity: 0; }
  44%  { opacity: 1; }
  52%  { opacity: 1; }
  55%  { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes hero-crossfade-6 {
  0%   { opacity: 0; }
  52%  { opacity: 0; }
  55%  { opacity: 1; }
  63%  { opacity: 1; }
  66%  { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes hero-crossfade-7 {
  0%   { opacity: 0; }
  63%  { opacity: 0; }
  66%  { opacity: 1; }
  74%  { opacity: 1; }
  77%  { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes hero-crossfade-8 {
  0%   { opacity: 0; }
  74%  { opacity: 0; }
  77%  { opacity: 1; }
  85%  { opacity: 1; }
  88%  { opacity: 0; }
  100% { opacity: 0; }
}

@keyframes hero-crossfade-9 {
  0%   { opacity: 0; }
  85%  { opacity: 0; }
  88%  { opacity: 1; }
  97%  { opacity: 1; }
  100% { opacity: 0; }
}

.hero-bg-image:nth-child(1)  { opacity: 1; animation: hero-crossfade-1 100s infinite; }
.hero-bg-image:nth-child(2)  { animation: hero-crossfade-2 100s infinite; }
.hero-bg-image:nth-child(3)  { animation: hero-crossfade-3 100s infinite; }
.hero-bg-image:nth-child(4)  { animation: hero-crossfade-4 100s infinite; }
.hero-bg-image:nth-child(5)  { animation: hero-crossfade-5 100s infinite; }
.hero-bg-image:nth-child(6)  { animation: hero-crossfade-6 100s infinite; }
.hero-bg-image:nth-child(7)  { animation: hero-crossfade-7 100s infinite; }
.hero-bg-image:nth-child(8)  { animation: hero-crossfade-8 100s infinite; }
.hero-bg-image:nth-child(9)  { animation: hero-crossfade-9 100s infinite; }

/* アクセシビリティ: reduce-motion対応 */
@media (prefers-reduced-motion: reduce) {
  .hero-bg-image {
    animation: none !important; /* アクセシビリティ: アニメーション無効化に必須 */
  }

  .hero-bg-image:nth-child(1) {
    opacity: 1;
  }

  .hero-bg-image:nth-child(n+2) {
    opacity: 0;
  }
}

/* 黒の半透明オーバーレイ */
.hero_single.version_2::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.4);
  z-index: 1;
  pointer-events: none;
}

/* コンテンツのz-index確保 */
.hero_single.version_2 .wrapper {
  position: relative;
  z-index: 2;
  background-color: transparent;
}

.hero_single.version_2 .container {
  max-width: 1032px;
}

/* ==========================================================================
   トップページ - バナースライダー
   ========================================================================== */
.swiper-banner-section {
  margin-bottom: 0;
}

.swiper-banner-section .container {
  max-width: 1032px;
  padding: 0;
}

.swiper-banner-section .swiper-slide {
  width: 100%;
  height: auto;
}

.swiper-banner-section .swiper-slide img {
  width: 100%;
  height: auto;
  object-fit: contain;
  border-radius: 10px;
}

@media (max-width: 1032px) {
  .swiper-banner-section .container {
    padding: 0 0.75rem;
  }
}

/* ==========================================================================
   トップページ - セクション見出し
   ========================================================================== */
.container.container-custom.margin_30_95 {
  padding-top: 20px;
}

.container-custom .main_title_3 h2 {
  margin: 0 0 25px 0;
  font-size: 24px;
}

@media (max-width: 991px) {
  .container-custom .main_title_3 h2 {
    font-size: 20px;
  }
}

/* ==========================================================================
   トップページ - カードグリッドコンポーネント
   共通: ショップ一覧・エリア一覧で使用
   ========================================================================== */
.hb-card-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 25px 20px;
}

.hb-card-grid__link {
  display: block;
  text-decoration: none;
  color: inherit;
}

.hb-card-grid__link figure {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  margin: 0;
  border-radius: 10px;
}

.hb-card-grid__link figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ==========================================================================
   トップページ - モバイル対応（991px以下）
   ========================================================================== */
@media (max-width: 991px) {
  /* ヒーローセクション */
  .hero_single.version_2 {
    height: 200px;
    padding-bottom: 10px;
  }

  .hero_single.version_2 .wrapper {
    display: flex;
    flex-direction: column;
    height: 100%;
    justify-content: end;
  }

  /* カードグリッド */
  .hb-card-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem;
  }

  /* ショップ詳細 - モバイル文字サイズ */
  .secondary_nav ul li,
  .hb-show-gallery-btn {
    font-size: 14px;
  }
}

/* ==========================================================================
   検索結果 - ダイブショップ一覧
   ========================================================================== */
.hb-shop-list-item {
  position: relative;
  border-top: 1px solid #eeeeee;
  border-bottom: 1px solid #eeeeee;
  margin-bottom: -1px;
  padding: 20px 0;
  transition: background-color 0.2s;
}

.hb-shop-list-item__link {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
}

.hb-shop-list-item__image-wrapper {
  position: relative;
}

.hb-shop-list-item .favorite-button-container {
  position: absolute;
  top: 15px;
  right: 15px;
  z-index: 2;
  padding: 0;
  background-color: transparent;
  color: #fff;
}

.hb-shop-list-item .favorite-button-container .favorite-button-inner {
  display: block;
}

.hb-shop-list-item .favorite-button-container .favorite-button-inner button,
.hb-shop-list-item .favorite-button-container .favorite-button-inner a {
  padding: 0;
  background: none;
  background-color: transparent;
  color: inherit;
}

.hb-shop-list-item .favorite-button-container .favorite-button-inner i {
  font-size: 24px;
  width: 24px;
  height: auto;
  color: #fff;
}

.hb-shop-list-item:hover {
  background-color: #f9f9f9;
}

.hb-shop-list-item figure {
  margin-bottom: 0;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  border-radius: 10px;
  position: relative;
}

.hb-shop-list-item figure::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  width: 50%;
  height: 50%;
  background: radial-gradient(ellipse at top right, rgba(0, 0, 0, 0.25) 0%, transparent 70%);
  pointer-events: none;
  border-radius: 0 10px 0 0;
}

.hb-shop-list-item figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hb-shop-list-item .wrapper {
  padding: 0 0 0 24px;
  min-height: 245px;
  position: relative;
}

.hb-shop-list-item .wrapper h3 {
  font-size: 20px;
  font-weight: 900;
  margin-top: 0;
}

.hb-shop-list-item .wrapper h3 .bi-patch-check-fill {
  color: #0030AB;
}

.hb-shop-list-item__tagline {
  background-color: #E3EBFF;
  padding: 7px;
  font-size: 12px;
  font-weight: bold;
  border-radius: 3px;
}

@media (max-width: 767.98px) {
  .hb-shop-list-item__tagline {
    margin-top: 8px;
  }
}

.hb-shop-list-item .btn-detail {
  font-weight: bold;
  background-color: #0030AB;
  color: #fff;
  border: 1px solid #0030AB;
  height: 44px;
  line-height: 44px;
  padding-top: 0;
  padding-bottom: 0;
}

.hb-shop-list-item__labels {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 15px;
  margin-bottom: 8px;
}

.hb-shop-list-item__label {
  display: inline-block;
  border: none;
  color: #191E3B;
  background: linear-gradient(90deg, #b39855 0%, #fff9e6 50%, #b39855 100%);
  font-size: 12px;
  font-weight: bold;
  line-height: 1;
  padding: 4px 8px;
  border-radius: 3px;
}

@media (max-width: 991px) {
  .hb-shop-list-item figure {
    aspect-ratio: 16 / 9;
  }

  .hb-shop-list-item .wrapper {
    min-height: inherit;
    padding: 14px 0 0 0;
  }
}