@charset "UTF-8";

:root {
      /* 🎨 色の設定 */
      --font-color: rgba(0, 0, 0, 1);
      --roma-font-color: rgba(6, 172, 93, 1);
      --title-font-color: rgba(6, 172, 93, 1);
      --text-link-font-color: rgba(6, 172, 93, 1);
      --link-font-color: rgba(0, 0, 0, 1);
      --area-hover-font-color: rgba(6, 172, 93, 1);

      --bg-color-main: #fff;
      --bg-color-sub: rgba(246, 255, 239, 1);
      --bg-color-special: #e5eef7;
      --bg-color-featured-experiences: rgba(246, 255, 239, 1);

      --btn-color: rgba(6, 172, 93, 1);
      --btn-font-color: rgba(255, 255, 255, 1);
      --btn-hover-color: rgba(255,255,255,1);
      --btn-hover-font-color: rgba(6, 172, 93, 1);
      --btn-hover-border-color: rgba(6, 172, 93, 1);

      --maincopy-color: rgba(246, 255, 239, 1);
      --border-color: rgba(6, 172, 93, 1);
      --border-color-light-gray: rgba(230, 230, 230,1);
      --border-color-gray: rgba(200, 200, 200,1);

      /* フォントサイズ */
      --font-size-xxs: 0.7rem;
      --font-size-xs: 0.8rem;
      --font-size-sm: 0.9rem;
      --font-size-base: 1rem;
      --font-size-md: 1.25rem;
      --font-size-lg: 1.5rem;
      --font-size-xl: 1.75rem;
      --font-size-xxl: 2rem;
      --font-size-xxxl: 3rem;

      /* スペーシング */
      --spacing-xs: 4px;
      --spacing-sm: 8px;
      --spacing-md: 16px;
      --spacing-lg: 24px;
      --spacing-xl: 32px;
      --spacing-xxl: 64px;
      --spacing-xxxl: 80px;

      /* レイアウト */
      --navbar-height: 4.5rem;
      --navbar-sp-color: rgba(6, 172, 93, 1);
      --navbar-sp-font-color: rgba(255,255,255,1);
      --navbar-sp-border-color: rgba(255,255,255,1);
      --footer-color: rgba(6, 172, 93, 1);
      --footer-font-color: rgba(255,255,255,1);
      --footer-border-color: rgba(255,255,255,1);
      --corner-md-duplicate: 8px;
      --container-max-width: 1000px;
      --img-zoom-transition: 0.5s;
      --img-zoom-transform: scale(1.1, 1.1);
    }

body {
  overflow-x: hidden;
}

/* ========================================
   CSS変数定義（しらはまコンシェルジュ対応）
   ======================================== */

/* レスポンシブ対応：タブレット */
@media screen and (max-width: 1024px) {
  :root {
    --font-size-xxs: 0.6rem;
    --font-size-xs: 0.7rem;
    --font-size-sm: 0.85rem;
    --font-size-base: 1rem;
    --font-size-md: 1rem;
    --font-size-lg: 1.25rem;
    --font-size-xl: 1.5rem;
    --font-size-xxl: 1.75rem;
    --font-size-xxxl: 2.5rem;
  }
}

/* レスポンシブ対応：モバイル */
@media screen and (max-width: 480px) {
  :root {
    --font-size-xxs: 0.6rem;
    --font-size-xs: 0.7rem;
    --font-size-sm: 0.85rem;
    --font-size-base: 1rem;
    --font-size-md: 1rem;
    --font-size-lg: 1.15rem;
    --font-size-xl: 1.3rem;
    --font-size-xxl: 1.45rem;
    --font-size-xxxl: 1.6rem;
  }
}

html,
body {
  background-color: white;
  color: var(--font-color);
  font-size: var(--font-size-base);
  margin: 0;
  /* 🚨 本文フォント: Noto Sans JP（Webフォント・Windows/Mac/Android全環境で統一）→ BIZ UDPGothic（Win標準・読みやすさ向上）→ Hiragino Sans（Mac標準）→ Yu Gothic UI（Win標準）→ generic */
  font-family: "Noto Sans JP", "BIZ UDPGothic", "Hiragino Sans", "Hiragino Sans-W4",
    "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo",
    "-apple-system", "Segoe UI", "Roboto", "Helvetica Neue", sans-serif,
    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  /* 🚨 文字レンダリング品質（Windows Chrome 等での可読性向上） */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: "palt" 1; /* プロポーショナルメトリクス（句読点・括弧の詰め） */
}

/* 丸みのある見出し用フォント（オプトイン: 必要な箇所に .font-rounded を付与） */
.font-rounded,
h1, h2, h3,
.section-title-text,
.hero-main-title,
.activity-card-title,
.course-title,
.act-area-name {
  font-family: "Zen Maru Gothic", "Noto Sans JP", "BIZ UDPGothic",
    "Hiragino Sans", "Yu Gothic UI", "Meiryo", sans-serif;
  font-feature-settings: "palt" 1;
}

a {
  text-decoration: none;
  color: var(--link-font-color);
  cursor: pointer;
}

.main {
  margin-top: 0;
}

.container {
  padding: var(--spacing-xl) var(--spacing-xxl);
  max-width: var(--container-max-width);
  margin: 0 auto;

  @media screen and (max-width: 1024px) {
    padding: var(--spacing-xl) var(--spacing-xl);
  }

  @media screen and (max-width: 480px) {
    padding: var(--spacing-xl) var(--spacing-md);
  }
}

.font-xxs {
  font-size: var(--font-size-xxs);
}
.font-xs {
  font-size: var(--font-size-xs);
}
.font-sm {
  font-size: var(--font-size-sm);
}
.font-md {
  font-size: var(--font-size-md);
}
.font-lg {
  font-size: var(--font-size-lg);
}
.font-xl {
  font-size: var(--font-size-xl);
}
.font-xxl {
  font-size: var(--font-size-xxl);
}
.font-xxxl {
  font-size: var(--font-size-xxxl);
}

.button-link {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--btn-color);
  border-radius: var(--corner-md-duplicate);
  color: var(--btn-font-color);
  gap: var(--spacing-sm);
  font-size: var(--font-size-sm);
  height: 40px;
  font-weight: bold;
  border: solid var(--btn-color);
}

.button-link:hover {
  background-color: var(--btn-hover-color);
  color: var(--btn-hover-font-color);
  border-color: var(--btn-hover-border-color);
  border: solid;
}

.button-large {
  width: 380px;
}
.button-medium {
  width: 320px;
}

.text {
  line-height: 32px;
  letter-spacing: 1.6px;
}

.text-center {
  text-align: center;
}

@media screen and (max-width: 480px) {
  .text-sp-start {
    text-align: start !important;
  }
}

.d-none {
  display: none !important;
}

@media screen and (max-width: 480px) {
  .d-sp-none {
    display: none !important;
  }
}

@media screen and (min-width: 481px) {
  .d-pc-none {
    display: none !important;
  }
}

.bg-black {
  background-color: rgba(0, 0, 0, 1) !important;
}
.d-flex {
  display: flex;
}

.external-link-group {
  width: 100%;
  justify-content: start;
  display: flex;
  flex-wrap: wrap;
  padding: var(--spacing-md) 0 var(--spacing-xl) 0;
  margin: 0 auto;

  .external-link {
    flex: 0 0 auto;
  }
}

/* ナビバー */
header {
  .header {
    z-index: 1000;
    height: inherit;
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background-color: white;
    box-shadow: 1px 1px 10px gray;

    nav {
      height: var(--navbar-height);
      display: flex;
      justify-content: space-between;
      gap: var(--spacing-xl);
      margin: 0 2.5%;
    }

    .site-logo {
      flex: 1;
      max-width: 320px;
      align-content: center;

      img {
        max-width: 100%;
        max-height: 100%;
      }

      a {
        text-decoration: none;
        display: flex;
        flex-direction: row !important;
        align-items: center !important;
        gap: 0.5rem !important;
      }

      .site-name {
        font-size: 0.65rem;
        color: #333333 !important;
        letter-spacing: 0.05em;
        white-space: nowrap !important;
        padding: 0.4rem 0.6rem !important;
        line-height: 1.4;
        position: relative !important;
      }

      .site-name::before {
        content: '' !important;
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        width: 10px !important;
        height: 10px !important;
        border-top: 1px solid #999999 !important;
        border-left: 1px solid #999999 !important;
      }

      .site-name::after {
        content: '' !important;
        position: absolute !important;
        bottom: 0 !important;
        right: 0 !important;
        width: 10px !important;
        height: 10px !important;
        border-bottom: 1px solid #999999 !important;
        border-right: 1px solid #999999 !important;
      }

      .logo-text {
        display: flex;
        align-items: baseline;
        gap: 0.3rem;
        white-space: nowrap !important;
      }

      .logo-discover {
        font-family: "Brush Script MT", "Segoe Script", cursive;
        font-size: 1rem;
        color: #333333 !important;
        font-style: italic;
      }

      .logo-region {
        font-family: "Brush Script MT", "Segoe Script", cursive;
        font-size: 1.8rem;
        color: #333333 !important;
        font-weight: normal;
      }
    }

    input#nav-menu-is-display {
      display: none;
    }

    .hamburger {
      display: flex;
      justify-content: center;
      align-items: center;
      margin: 0.5rem;
      padding: 0.25rem;
      cursor: pointer;

      img {
        width: 100%;
      }
    }

    /* SP版 メニュー表示 */
    @media screen and (max-width: 1319px), (hover: none) {
      nav {
        margin: 0 var(--spacing-md) 0 var(--spacing-xs);
      }

      .site-logo {
        min-width: 0;
        overflow: hidden;
        max-width: none; /* タッチ/狭幅では320px頭打ちを解除し、余白がある限りロゴ全体を表示 */
      }

      .hamburger {
        flex-shrink: 0;
      }

      .nav-container {
        display: flex;
        justify-content: end;
        position: fixed;
        top: var(--navbar-height);
        right: -100%;
        width: 100%;
        height: 100vh;
        transition: 0.5s all;
      }

      .nav-container:has(input#nav-menu-is-display:checked) {
        right: 0;
        transition: 0.5s all;
      }

      .nav-menu {
        width: 85%;
        height: fit-content;
        background-color: var(--navbar-sp-color);
        padding: var(--spacing-md);

        .nav-menu-controller {
          text-align: right;
        }

        ul {
          padding: 0;
          margin: 0;
          list-style: none;

          li {
            line-height: 3rem;
          }
        }

        a {
          color: var(--footer-font-color);
        }
      }

      .nav-menu > ul > li {
        border-top: 1px solid var(--footer-border-color);
      }

      .nav-menu > ul > li:first-child {
        border-top: 0;
      }

      .nav-menu > ul > li > ul > li a::before {
        content: ">";
        display: inline-block;
        width: 1.25rem;
      }

      /* 言語選択 */
      .nav-menu > ul > li.select-language {
        border-top: 0;
      }

      .nav-menu > ul > li.select-language > .nav-link {
        display: none;
      }

      .nav-menu > ul > li.select-language > ul {
        display: flex;
        flex-wrap: wrap;
      }

      .nav-menu > ul > li.select-language > ul > li {
        margin-top: var(--spacing-md);
        margin-right: var(--spacing-md);
      }

      .nav-menu > ul > li.select-language > ul > li a {
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: var(--corner-md-duplicate);
        font-weight: bold;
        border: solid 1px var(--btn-font-color);
        padding: 0 var(--spacing-md);
      }

      .nav-menu > ul > li.select-language > ul > li a.active {
        background-color: var(--btn-hover-color);
        color: var(--btn-hover-font-color);
        border: solid 1px var(--btn-hover-border-color);
      }

      .nav-menu > ul > li.select-language > ul > li a::before {
        content: "";
        width: 0;
      }
    }

    /* PC版 メニュー表示 */
    @media screen and (min-width: 1320px) and (hover) {
      .nav-menu-open,
      .nav-menu-close {
        display: none;
      }

      .nav-menu,
      .nav-menu ul {
        height: 100%;
      }

      .nav-menu > ul li,
      .nav-menu > ul li img {
        vertical-align: middle;
      }

      .nav-menu > ul {
        display: flex;
        margin: 0;
        padding: 0;
        width: 80%;
        text-align: center;
      }

      .nav-menu > ul > li {
        margin: 0.25rem 0.75rem;
      }

      .nav-menu ul > li {
        display: block;
        text-wrap: nowrap;
        position: relative;
      }

      .nav-menu ul > li > a {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;
        width: 100%;
      }

      .nav-menu ul > li:hover > a {
        color: var(--title-font-color);
      }

      .nav-menu > ul > li > ul {
        display: none;
        background-color: white;
      }

      .nav-menu > ul > li:hover > ul {
        display: table;
        position: absolute;
        top: 100%;
        right: 0;
        border-top: 4px solid green;
        width: 100%;
        padding: 0 1rem;
        margin: 0 -1rem;
      }

      .nav-menu > ul > li > ul > li {
        height: 3.5rem;
        border-top: rgba(230, 230, 230, 1) solid 1px;
      }

      .nav-menu > ul > li > ul > li:first-child {
        border-top: 0;
      }
    }
  }
}

@media screen and (min-width: 1320px) and (hover) {
  header .header .nav-menu > ul > li:not(.select-language):hover > ul {
    left: 0;
    margin: 0 -200px;
  }
}

/* ヘッダー: 親サイト（旅館組合公式HP）戻り動線 ロゴ右ボタン */
.header-parent-link {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.45rem 0.85rem;
  margin: auto 0;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--primary-color);
  background-color: var(--bg-white);
  border: 1px solid var(--primary-color);
  border-radius: var(--border-radius-sm);
  text-decoration: none;
  white-space: nowrap;
  transition: var(--transition-fast);
  flex-shrink: 0;
}

.header-parent-link:hover {
  background-color: var(--primary-color);
  color: var(--bg-white);
}

/* SP: ロゴ右ボタンは非表示にしてレイアウト崩れ防止（ナビ末尾リンクで代替） */
@media screen and (max-width: 1319px), (hover: none) {
  .header-parent-link {
    display: none;
  }
}

/* ヘッダー: ナビ末尾の親サイトリンク（強調表示） */
header .header .nav-menu .nav-link-external {
  color: var(--primary-color);
  font-weight: 600;
}

header .header .nav-menu .nav-link-external:hover {
  color: var(--primary-dark);
}

/* フッター: 親サイト（旅館組合公式HP）戻り動線CTA（フッター最上部・常時表示） */
.footer-back-to-parent {
  width: 100%;
  background-color: var(--bg-light);
  border-top: 1px solid var(--bg-gray);
  border-bottom: 1px solid var(--bg-gray);
  padding: var(--spacing-md) 0;
}

.footer-back-to-parent .container {
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
  text-align: center;
}

.btn-back-to-parent {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1.75rem;
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--bg-white);
  background-color: var(--primary-color);
  border: 2px solid var(--primary-color);
  border-radius: var(--border-radius-md);
  text-decoration: none;
  transition: var(--transition-fast);
}

.btn-back-to-parent:hover {
  background-color: var(--primary-dark);
  border-color: var(--primary-dark);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

/* フッター */
footer {
  width: 100%;
  background-color: var(--footer-color);
  color: var(--footer-font-color);

  .footer {
    display: flex;
    flex-wrap: wrap;
    margin: 0 auto;
    max-width: var(--container-max-width);
    justify-content: space-between;
    gap: var(--spacing-xl);
    text-wrap: nowrap;

    .company-info,
    .site-map {
      flex: 1 0 0%;
    }

    .company-info {
      flex-grow: 6;
      max-width: 100%;

      .footer-logo-text {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        padding-bottom: 1.5rem;

        .site-name {
          font-size: 0.65rem;
          color: var(--footer-font-color) !important;
          letter-spacing: 0.05em;
          padding: 0.3rem 0.5rem;
          border: none !important;
          position: relative !important;
        }

        .site-name::before {
          content: '' !important;
          position: absolute !important;
          top: 0 !important;
          left: 0 !important;
          width: 8px !important;
          height: 8px !important;
          border-top: 1px solid rgba(255, 255, 255, 0.5) !important;
          border-left: 1px solid rgba(255, 255, 255, 0.5) !important;
        }

        .site-name::after {
          content: '' !important;
          position: absolute !important;
          bottom: 0 !important;
          right: 0 !important;
          width: 8px !important;
          height: 8px !important;
          border-bottom: 1px solid rgba(255, 255, 255, 0.5) !important;
          border-right: 1px solid rgba(255, 255, 255, 0.5) !important;
        }

        .logo-text {
          display: flex;
          align-items: baseline;
          gap: 0.3rem;
          white-space: nowrap;
        }

        .logo-discover {
          font-family: "Brush Script MT", "Segoe Script", cursive;
          font-size: 1rem;
          color: var(--footer-font-color) !important;
          font-style: italic;
        }

        .logo-region {
          font-family: "Brush Script MT", "Segoe Script", cursive;
          font-size: 1.8rem;
          color: var(--footer-font-color) !important;
          line-height: 1;
        }
      }

      .company-name,
      .company-contact {
        padding-bottom: 1rem;
      }

      .company-contact {
        display: flex;
      }

      .company-contact::before {
        display: block;
        width: 2em;
        text-align: center;
      }
    }

    .site-map {
      flex-grow: 4;
      max-width: 100%;

      ul {
        padding: 0;
        margin: 0;
        list-style: none;

        li {
          line-height: 3rem;
        }
      }

      a {
        color: var(--footer-font-color);
      }
    }

    .site-map > ul > li {
      border-top: 1px solid var(--footer-border-color);
    }

    .site-map > ul > li:first-child {
      border-top: 0;
    }

    .site-map > ul > li > ul > li a::before {
      content: ">";
      display: inline-block;
      width: 1.25rem;
    }

    @media screen and (max-width: 480px) {
      flex-wrap: column;
      text-wrap: wrap;

      .company-info {
        display: contents;
      }

      .company-detail,
      .site-map,
      .external-link-group {
        width: 100%;
      }

      .company-detail {
        order: 1;
      }
      .site-map {
        order: 2;
      }
      .external-link-group {
        order: 3;
      }
    }
  }

  .copyright {
    text-align: right;

    .copyright-text {
      padding-right: 1rem;
      padding-bottom: 1.5rem;
    }
  }
}

.fw-normal {
  font-weight: normal;
}
.fw-400 {
  font-weight: 400;
}
.font-bold {
  font-weight: 750;
}

/* 画像ズーム */
.img-zoom-wrapper {
  line-height: 0;
  width: 100%;
  margin: 0 auto;
  overflow: hidden;
}

.img-zoom-wrapper img {
  transition: var(--img-zoom-transition) all;
  width: 100%;
}

.img-zoom-wrapper img:hover {
  transition: var(--img-zoom-transition) all;
  transform: var(--img-zoom-transform);
}

.img-zoom-wrapper.img-zoom-rounded {
  border-radius: 24px;
}

.img-zoom-wrapper.img-zoom-sm-rounded {
  border-radius: 8px;
}

@media screen and (max-width: 480px) {
  .img-zoom-wrapper img:hover {
    transform: scale(1, 1);
  }
}

.any-position-break > span {
  display: inline-block;
}

/* タブ切り替え */
.tab-container {
  justify-content: center;
  display: flex;
  flex-wrap: wrap;
}

.tab-container .tab-label {
  border: solid 2px var(--btn-color);
  color: var(--btn-hover-font-color);
  order: -1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--spacing-sm);
  width: 9rem;
  cursor: pointer;
  text-align: center;
}

.tab-container .tab-content {
  width: 100%;
  display: none;
  margin-top: var(--spacing-md);
}

.tab-container .tab-description {
  margin-top: var(--spacing-sm);
  margin-bottom: var(--spacing-md);
}

.tab-container .tab-switch:checked + .tab-label {
  background: var(--btn-color);
  color: var(--btn-font-color);
}

.tab-container .tab-switch:checked + .tab-label + .tab-content {
  display: block;
}

.tab-container .tab-switch {
  display: none;
}

.text-link {
  color: var(--text-link-font-color);
}

.link-underline {
  text-decoration: underline;
}

.title {
  justify-content: center;
  display: flex;
  color: var(--title-font-color);
  letter-spacing: 2.28px;
  gap: 16px;
  margin: var(--spacing-xl) 0 var(--spacing-md) 0;
}

.section {
  padding: var(--spacing-xl) 0 var(--spacing-xl) 0;
}

.section-header {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* エリアタブコンテナ内のセクションヘッダー中央揃え */
.area-tab-container .section-header,
.area-tab-container .section-header-decorated {
  width: 100%;
}

/* セクションリード文 */
.section-lead {
  text-align: center !important;
  font-size: var(--font-size-sm) !important;
  color: #555555 !important;
  line-height: 1.8 !important;
  margin-top: var(--spacing-md) !important;
  margin-bottom: var(--spacing-lg) !important;
  max-width: 700px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* テキストセクション（背景画像付き） */
.whats-doto-area-section {
  display: flex;
  margin: auto;
  width: 100%;
  padding-bottom: 0;

  .content {
    display: flex;
    gap: 16px;
    width: 400px;
    flex-direction: column;
    letter-spacing: 1.28px;
    margin: 5rem 55% 5rem auto;
  }

  .whats-doto-title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--font-color);
    line-height: 1.6;
  }

  .whats-doto-title .accent {
    color: var(--title-font-color);
  }

  .simple {
    display: none;
  }
}

@media screen and (max-width: 900px) {
  .whats-doto-area-section {
    display: block;
  }

  .whats-doto-area-section .content {
    width: auto;
    padding: 0 var(--spacing-lg);
    margin: 0 auto;
  }

  .whats-doto-area-section .simple {
    display: block;
    text-align: center;

    img {
      width: 100%;
    }
  }
}

@media screen and (min-width: 901px) {
  .whats-doto-area-section {
    background-origin: content-box;
    background-image: url(img/dotomap.svg);
    background-size: auto 95%;
    background-repeat: no-repeat;
    background-position: bottom 0 left 35vw;
  }
}

@media screen and (max-width: 1024px) {
  .whats-doto-area-section {
    background-position: bottom 0 left 25vw;
  }
}

/* エリア紹介 */
.area-introduction {
  margin: 0 auto;
  max-width: var(--container-max-width);
  padding-top: 0;

  .select-area#origin-select-area {
    padding-bottom: var(--spacing-xl);
  }

  .select-area#duplicate-select-area {
    padding-top: var(--spacing-xl);
  }

  .select-area {
    justify-content: center;
    display: flex;
    flex-wrap: wrap;
    margin: 0 auto;
    max-width: var(--container-max-width);

    .area {
      flex: 0 0 auto;
      width: 20%;
      min-width: 175px;

      .area-body {
        padding: var(--spacing-md);

        .area-img {
          position: relative;
          display: inline-block;
          margin: 0 var(--spacing-sm) 0 var(--spacing-sm);

          img {
            width: 100%;
            display: block;
          }

          img:nth-child(1) {
            border-radius: 50%;
          }

          img:nth-child(2) {
            border-radius: 8px;
            position: absolute;
            top: 0;
            left: 0;
            transition: 0.5s all;
          }
        }

        .name {
          font-size: var(--font-size-sm);
          font-weight: 750;
        }
      }

      .area-body:hover,
      .area-body:has(.area-img.selected) {
        .name {
          color: var(--area-hover-font-color);
        }

        .area-img {
          img:nth-child(2) {
            transition: 0.5s all;
            opacity: 0;
          }
        }
      }
    }

    .area:has(.area-body .area-img.selected) {
      pointer-events: none;
    }
  }

  .area-description {
    align-items: center;
    gap: 32px;
    padding: 64px var(--spacing-xxl) 64px var(--spacing-xxl);
    display: flex;
    flex-direction: column;
    position: relative;

    .area-header {
      display: flex;
      align-items: center;
      gap: var(--spacing-xxl);
      text-align: justify;
      letter-spacing: 1.6px;

      .area-logo img {
        width: 240px;
      }
    }

    .bar-area {
      width: 100%;

      .bar {
        height: 4px;
        background-color: var(--border-color);
      }
    }

    .area-body {
      width: 100%;
      display: flex;
      flex-direction: column;
      gap: 48px;
    }

    .spot {
      display: flex;
      align-items: center;
      gap: var(--spacing-xxl);
      text-align: justify;

      .spot-roma {
        color: var(--roma-font-color);
      }
    }

    .button-group {
      width: 100%;
      justify-content: center;
      display: flex;
      flex-wrap: wrap;
      gap: var(--spacing-md);
    }

    .button-link {
      width: auto;
    }

    .button-large {
      width: 400px;
      height: auto;
      padding: var(--spacing-sm);
    }
  }
}

@media screen and (max-width: 900px) {
  .area-introduction {
    margin-top: -96px;
  }
}

@media screen and (max-width: 834px) {
  .area-introduction .area-description .area-header {
    display: contents;
  }

  .area-introduction .area-description .area-header .area-logo img {
    width: 100%;
    max-width: 220px;
  }

  .area-introduction .area-description .spot {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }

  .area-introduction .area-description .spot-sp-reverse {
    width: 100%;
    display: flex;
    flex-direction: column-reverse;
    align-items: flex-start;
  }

  .area-introduction .area-description .spot .spot-img,
  .area-introduction .area-description .spot .spot-img img {
    width: 100%;
  }
}

@media screen and (max-width: 480px) {
  .area-introduction .area-description {
    padding: 64px var(--spacing-sm) 64px var(--spacing-sm);
  }

  .area-introduction .select-area .area .area-body .name {
    font-weight: normal;
  }
}

@media screen and (max-width: 570px) {
  .area-introduction {
    .select-area {
      .area {
        width: 33.3%;
        min-width: auto;

        .area-body {
          padding: var(--spacing-sm);

          .area-img.selected {
            img:nth-child(1) {
              border: 5px solid var(--border-color);
              box-sizing: border-box;
            }

            img:nth-child(2) {
              transition: 0 all;
              opacity: 0;
            }
          }
        }
      }
    }
  }

  .area-introduction .area-description .button-large {
    width: auto;
    max-width: 400px;
  }
}

/* 記事リスト */
.article-list {
  justify-content: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-md);
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
  margin: 0 auto;
  max-width: var(--container-max-width);

  .article {
    flex: 1 0 0%;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);

    @media screen and (max-width: 480px) {
      flex: 100%;
    }

    .article-img {
      margin: var(--spacing-sm) 0;
      aspect-ratio: 3 / 2;
      display: flex;

      img {
        align-self: center;
      }
    }
  }
}

/* 装飾ラベル（セクション上部のおしゃれな英字テキスト） */
.section-label-decorated {
  text-align: center;
  margin-bottom: var(--spacing-sm);
}

.section-label-decorated .label-icon {
  display: block;
  font-size: 1.5rem;
  margin-bottom: 4px;
}

.section-label-decorated .label-text {
  font-family: 'Georgia', 'Times New Roman', serif;
  font-size: 1.1rem;
  font-style: italic;
  font-weight: 400;
  color: var(--title-font-color);
  letter-spacing: 2px;
  opacity: 0.8;
}

/* 旅の特集セクション背景色（薄い緑 - ハードコード） */
.featured-section {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

/* おすすめ商品セクション背景色（薄い青 - ハードコード） */
.product-section {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.travel-fetured {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;

  .article-list {
    .article {
      min-width: 280px;
      max-width: 330px;
    }
  }

  .button-area {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
}

/* バス・商品エリアセクション（おすすめ商品と同じ薄い青 - ハードコード） */
.bus-area-section {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.featured-experiences {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.bus-area-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  max-width: 1000px;
  margin: 0 auto;
}

.bus-area-card {
  text-align: center;
}

.bus-area-label {
  font-size: var(--font-size-sm);
  color: var(--font-color);
  margin-bottom: var(--spacing-sm);
}

.bus-area-link {
  text-decoration: none;
  color: inherit;
  display: block;
}

.bus-area-img {
  position: relative;
  border-radius: var(--corner-md-duplicate);
  overflow: hidden;
  aspect-ratio: 4 / 3;
}

.bus-area-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.bus-area-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  padding: var(--spacing-md);
  gap: var(--spacing-xs);
}

.bus-area-tag {
  background: rgba(51, 51, 51, 0.85);
  color: #ffffff;
  padding: 4px 12px;
  font-size: var(--font-size-sm);
  font-weight: 700;
  border-radius: 4px;
}

.bus-area-name {
  font-size: var(--font-size-sm);
  font-weight: 700;
  color: var(--font-color);
  margin-top: var(--spacing-sm);
}

@media screen and (max-width: 768px) {
  .bus-area-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 480px) {
  .bus-area-grid {
    grid-template-columns: 1fr;
    max-width: 320px;
  }
}

/* スライダー */

.swiper {
  width: 100%;
}

.swiper-slide img {
  width: 100%;
  align-self: center;
}

.swiper.swiper.top-slider {
  --swiper-pagination-color: rgba(255, 255, 255, 1);
  --swiper-navigation-color: rgba(255, 255, 255, 0.75);
  --swiper-pagination-bullet-inactive-color: var(--swiper-pagination-color);
  --swiper-pagination-bullet-inactive-opacity: 0.5;
  --swiper-navigation-size: 32px;
}

.swiper.top-slider .swiper-slide {
  display: flex;
  justify-content: center;
  max-height: calc(100vh - var(--navbar-height));
}

.swiper-wrapper {
  line-height: 0;
}

.swiper.swiper-rounded {
  border-radius: 8px;
}

.swiper-button-prev.swiper-button-bottom,
.swiper-button-next.swiper-button-bottom {
  top: initial;
  bottom: 5%;
}

.swiper-button-prev.swiper-button-bottom {
  left: calc(50% - var(--swiper-customize-arrow-size) * 2);
}

.swiper-button-next.swiper-button-bottom {
  right: calc(50% - var(--swiper-customize-arrow-size) * 2);
}

.swiper-logo {
  position: absolute;
  z-index: 10;
  width: 485px;
  max-width: 70%;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
}

/* スライダー中央のテキストロゴ */
.swiper-logo-text {
  position: absolute;
  z-index: 10;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);

  .logo-discover {
    font-family: "Brush Script MT", "Segoe Script", cursive;
    font-size: 2rem;
    color: #fff;
    font-style: italic;
    letter-spacing: 0.1em;
  }

  .logo-region {
    font-family: "Brush Script MT", "Segoe Script", cursive;
    font-size: 4rem;
    color: #fff;
    font-weight: normal;
    letter-spacing: 0.05em;
  }

  @media screen and (max-width: 900px) {
    .logo-discover {
      font-size: 1.5rem;
    }
    .logo-region {
      font-size: 3rem;
    }
  }

  @media screen and (max-width: 480px) {
    .logo-discover {
      font-size: 1.2rem;
    }
    .logo-region {
      font-size: 2.5rem;
    }
  }
}

.swiper-catchphrase {
  position: absolute;
  top: 50%;
  left: 4rem;
  transform: translateY(-50%);
  z-index: 10;

  @media screen and (max-width: 1024px) {
    left: 2rem;
  }

  @media screen and (max-width: 480px) {
    left: 0.5rem;
  }
}

.catchphrase-body {
  display: inline-flex;
}

.catchphrase-body .catchphrase-text {
  writing-mode: vertical-rl;
  position: relative;
  color: white;
  font-size: var(--font-size-xl);
  letter-spacing: 3.2px;
  line-height: 3.5rem;
}

.bar-wrapper .bar-top,
.bar-wrapper .bar-bottom {
  width: 50%;
  height: 100%;
  background-color: white;
  margin-bottom: 1rem;
  margin-top: 1rem;
}

.bar-wrapper .bar-top {
  float: right;
}

.bar-wrapper .bar-bottom {
  float: left;
}

.bar-wrapper {
  width: 100%;
  height: 4px;
}

@media screen and (max-width: 1024px) {
  .catchphrase-body .catchphrase-text {
    font-size: var(--font-size-md);
    line-height: 2.5rem;
  }
}

@media screen and (max-width: 900px) {
  .swiper-logo {
    max-width: 35%;
  }
}

@media screen and (max-width: 480px) {
  .swiper-logo {
    max-width: 75%;
  }

  .swiper.top-slider {
    height: 85vh;
    width: 100%;
  }

  .swiper.top-slider .swiper-slide img {
    height: 100%;
    width: auto;
  }

  .swiper-catchphrase {
    top: 0.5rem;
    transform: translateY(0%);
  }

  .catchphrase-body .catchphrase-text {
    font-size: var(--font-size-md);
    letter-spacing: 6.4px;
    line-height: 3rem;
  }
}

/* タブ切り替え */
.area-tab-container {
  display: flex;
  flex-wrap: wrap;
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}

.area-tab-container .tab-header,
.area-tab-container .tab-footer {
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-xs);
  padding-left: var(--spacing-sm);
  padding-right: var(--spacing-sm);
  justify-content: center;
  width: 100%;
}

/* モバイルでの7タブ横スクロール対応 */
@media screen and (max-width: 720px) {
  .area-tab-container .tab-header,
  .area-tab-container .tab-footer {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    justify-content: flex-start;
    scrollbar-width: thin;
    padding-bottom: var(--spacing-sm);
  }

  .area-tab-container .tab-header .tab,
  .area-tab-container .tab-footer .tab {
    flex: 0 0 auto;
    min-width: 70px;
  }
}

.area-tab-container .tab-header .tab,
.area-tab-container .tab-footer .tab {
  flex: 1;
  min-width: 100px;
  max-width: 190px;
  text-align: center;
  cursor: pointer;
  padding: var(--spacing-sm);
  box-sizing: border-box;
  background: var(--btn-color);
  color: var(--btn-font-color);
  opacity: 0.5;
  transition: opacity 0.5s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

.area-tab-container .tab-header .tab {
  margin-bottom: 0;
}

.area-tab-container .tab-footer .tab {
  margin-top: 0;
}

.area-tab-container .tab-header .tab:hover,
.area-tab-container .tab-footer .tab:hover {
  opacity: 0.75;
}

.area-tab-container .tab-header .tab.active,
.area-tab-container .tab-footer .tab.active {
  cursor: default;
  opacity: 1;
}

.area-tab-container .tab-content {
  border: 4px solid var(--border-color);
  background-color: var(--bg-color-sub);
}

.area-tab-container .tab-content .content {
  display: none;
  box-sizing: border-box;
}

.area-tab-container .tab-content .content.active {
  display: block;
}

.area-tab-container .content {
  display: none;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.area-tab-container .content.active {
  display: block;
  opacity: 1;
}

/* エリアタブコンテナ内のエリア詳細スタイル */
.area-tab-container .area-description {
  align-items: center;
  gap: 32px;
  padding: 64px var(--spacing-xxl) 64px var(--spacing-xxl);
  display: flex;
  flex-direction: column;
  position: relative;
}

.area-tab-container .area-description .area-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-xxl);
  text-align: justify;
  letter-spacing: 1.6px;
}

.area-tab-container .area-description .area-header .area-logo img {
  width: 240px;
  border-radius: 8px;
}

.area-tab-container .area-description .bar-area {
  width: 100%;
}

.area-tab-container .area-description .bar-area .bar {
  height: 4px;
  background-color: var(--border-color);
}

.area-tab-container .area-description .area-body {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 48px;
}

.area-tab-container .area-description .spot {
  display: flex;
  align-items: center;
  gap: var(--spacing-xxl);
  text-align: justify;
}

.area-tab-container .area-description .spot .spot-roma {
  color: var(--roma-font-color);
}

.area-tab-container .area-description .spot .spot-content {
  flex: 1;
}

/* 体験カテゴリタグ */
.spot-category-tag {
  display: inline-block;
  background-color: var(--btn-color);
  color: var(--btn-font-color);
  padding: 2px 10px;
  border-radius: 3px;
  font-weight: 750;
  margin-bottom: var(--spacing-xs);
  letter-spacing: 0.05em;
}

/* 料金表示（統一フォーマット） */
.spot-price {
  color: var(--font-color);
  font-weight: 750;
  margin-top: var(--spacing-xs);
  padding: var(--spacing-xs) 0;
  border-top: 1px dashed var(--border-color-light-gray);
}

.area-tab-container .area-description .spot .spot-img {
  width: 320px;
  flex-shrink: 0;
  position: relative;
}

.area-tab-container .area-description .spot .spot-img img {
  width: 100%;
  height: auto;
}

/* 画像サムネイル右上の矢印アイコン */
.area-tab-container .area-description .spot .spot-img::after {
  content: '→';
  position: absolute;
  top: 8px;
  right: 8px;
  width: 28px;
  height: 28px;
  background: var(--btn-color);
  color: var(--btn-font-color);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.area-tab-container .area-description .spot:hover .spot-img::after {
  opacity: 1;
}

/* スポット画像の形状バリエーション（円形） */
.area-tab-container .area-description .spot .spot-img.spot-img-circle {
  width: 280px !important;
  height: 280px !important;
  border-radius: 50% !important;
  overflow: hidden !important;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12) !important;
  flex-shrink: 0 !important;
}

.area-tab-container .area-description .spot .spot-img.spot-img-circle img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  transition: 0.3s ease !important;
}

/* スポット画像の形状バリエーション（角丸） */
.area-tab-container .area-description .spot .spot-img.spot-img-rounded {
  width: 100% !important;
  max-width: 400px !important;
  border-radius: 24px !important;
  overflow: hidden !important;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12) !important;
  flex-shrink: 0 !important;
}

.area-tab-container .area-description .spot .spot-img.spot-img-rounded img {
  width: 100% !important;
  height: 280px !important;
  object-fit: cover !important;
  transition: 0.3s ease !important;
}

/* スポット画像ホバーエフェクト */
.area-tab-container .area-description .spot:hover .spot-img-circle img,
.area-tab-container .area-description .spot:hover .spot-img-rounded img {
  transform: scale(1.05) !important;
}

/* カードのクリッカブル表現強化 */
.area-tab-container .area-description .spot {
  cursor: pointer;
  transition: box-shadow 0.3s ease, transform 0.2s ease;
  border-radius: var(--corner-md-duplicate);
  padding: var(--spacing-md);
}

.area-tab-container .area-description .spot:hover {
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
  transform: translateY(-2px);
}

/* 「詳細をみる」リンク */
.spot-detail-link {
  margin-top: var(--spacing-sm);
}

.spot-detail-link a {
  color: var(--text-link-font-color);
  font-size: var(--font-size-sm);
  font-weight: 750;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-xs);
  transition: gap 0.2s ease;
}

.spot-detail-link a:hover {
  text-decoration: underline;
  gap: var(--spacing-sm);
}

.spot-detail-link .arrow {
  font-size: var(--font-size-base);
  transition: transform 0.2s ease;
}

.spot:hover .spot-detail-link .arrow {
  transform: translateX(4px);
}

.area-tab-container .area-description .button-group {
  width: 100%;
  justify-content: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-md);
}

.area-tab-container .area-description .button-link {
  width: auto;
}

.area-tab-container .area-description .button-large {
  width: 400px;
  height: auto;
  padding: var(--spacing-sm);
}

/* エリアタブコンテナ レスポンシブ対応 */
@media screen and (max-width: 834px) {
  .area-tab-container .area-description .area-header {
    display: contents;
  }

  .area-tab-container .area-description .area-header .area-logo img {
    width: 100%;
    max-width: 220px;
    border-radius: 8px;
  }

  .area-tab-container .area-description .spot {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }

  .area-tab-container .area-description .spot-sp-reverse {
    width: 100%;
    display: flex;
    flex-direction: column-reverse;
    align-items: flex-start;
  }

  .area-tab-container .area-description .spot .spot-img,
  .area-tab-container .area-description .spot .spot-img img {
    width: 100%;
  }

  .area-tab-container .area-description .spot .spot-img.spot-img-circle {
    width: 220px !important;
    height: 220px !important;
    margin: 0 auto !important;
  }

  .area-tab-container .area-description .spot .spot-img.spot-img-rounded {
    max-width: 100% !important;
  }

  .area-tab-container .area-description .spot .spot-img.spot-img-rounded img {
    height: 220px !important;
  }
}

@media screen and (max-width: 480px) {
  .area-tab-container .area-description {
    padding: 64px var(--spacing-sm) 64px var(--spacing-sm);
  }

  .area-tab-container .area-description .button-large {
    width: 100%;
    max-width: 400px;
  }
}

/* おすすめ商品セクション（本番サイト準拠：3列グリッド） */
.product-section {
  background-color: var(--bg-color-sub);
}

.product-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  padding: var(--spacing-xl) 0;
  max-width: var(--container-max-width);
  margin: 0 auto;
}

@media screen and (max-width: 900px) {
  .product-list {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 600px) {
  .product-list {
    grid-template-columns: 1fr;
  }
}

.product {
  display: flex;
  flex-direction: column;
  background-color: white;
  border-radius: var(--corner-md-duplicate);
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.product:hover {
  transform: translateY(-4px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
}

.product .product-img {
  aspect-ratio: 16 / 9;
  overflow: hidden;
}

.product .product-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.product .product-content {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
  padding: var(--spacing-md);
  flex: 1;
}

.product .product-name {
  color: var(--title-font-color);
  line-height: 1.4;
}

.product .product-desc {
  color: var(--font-color);
  line-height: 1.6;
  flex: 1;
}

.product .button-link {
  margin-top: auto;
  width: 100%;
}

/* 観光情報バナーセクション */
.tourism-info-section {
  background-color: #ffffff !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.tourism-info-banner {
  max-width: 800px;
  margin: var(--spacing-lg) auto 0;
  text-align: center;
}

.tourism-info-banner img {
  width: 100%;
  height: auto;
  border-radius: var(--corner-md-duplicate);
}

.tourism-info-banner a {
  display: block;
  text-decoration: none;
}

/* 予約サイトセクション（不要 - 生成禁止） */

/* ========================================
   セクションヘッダー（装飾付き）
   ======================================== */
/* ja-JPテンプレ準拠: セクションヘッダー装飾（エリア紹介・アクティビティ・モデルコース共通） */
.section-header-decorated {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px; /* ja-JP: --spacing-md = 16px */
  margin: var(--spacing-xl) 0 var(--spacing-md) 0 !important;
  letter-spacing: 2.28px;
  color: rgba(6, 172, 93, 1);
}

.decoration-left,
.decoration-right {
  font-size: 2rem !important; /* ja-JP: --font-size-xxl = 2rem */
  color: rgba(6, 172, 93, 1) !important;
  font-weight: 750;
  letter-spacing: 2.28px;
}

.section-title-text {
  font-size: 2rem !important; /* ja-JP: --font-size-xxl = 2rem */
  font-weight: 750; /* ja-JP準拠 */
  color: rgba(6, 172, 93, 1) !important;
  letter-spacing: 2.28px;
  margin: 0;
}

@media screen and (max-width: 1024px) {
  .section-title-text,
  .decoration-left,
  .decoration-right {
    font-size: 1.75rem !important; /* ja-JP tablet: --font-size-xxl = 1.75rem */
  }
}

/* ========================================
   モデルコースセクション
   既存の変数名を使用：
   --btn-color (グリーン), --bg-color-main (白), --bg-color-sub (薄グリーン)
   --font-color (黒), --title-font-color (グリーン), --border-color (グリーン)
   ======================================== */
.courses-section {
  padding: var(--spacing-xxxl) 0;
  background: #ffffff !important;
}

.courses-intro {
  text-align: center;
  font-size: var(--font-size-sm);
  line-height: 2;
  color: #666666;
  margin-bottom: var(--spacing-xl) !important;
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}

.course-tabs {
  display: flex;
  justify-content: center;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-xxl);
  flex-wrap: wrap;
}

.course-tab {
  display: flex;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-items: baseline !important;
  padding: var(--spacing-xl) var(--spacing-xxl) !important;
  background: rgba(246, 255, 239, 1) !important;
  border: 2px solid rgba(6, 172, 93, 1) !important;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
  min-width: 280px !important;
  flex: 1 !important;
  max-width: 320px !important;
  color: rgba(6, 172, 93, 1) !important;
}

.course-tab:hover,
.course-tab.active {
  background: rgba(246, 255, 239, 1) !important;
  color: rgba(6, 172, 93, 1) !important;
}

.course-tab-label {
  font-size: var(--font-size-sm) !important;
  letter-spacing: 0.15em;
}

.course-tab-name {
  font-size: 3rem !important;
  font-weight: 700;
  line-height: 1.2 !important;
  margin-left: 0.2em !important;
}

.course-tab-desc {
  font-size: var(--font-size-sm) !important;
  text-align: center;
  margin-top: var(--spacing-sm);
  color: #333333 !important;
  font-weight: 700 !important;
  line-height: 1.6 !important;
  width: 100% !important;
}

.course-panels {
  background: #ffffff !important;
  border-radius: 16px;
  padding: var(--spacing-xxl);
}

.course-panel {
  display: none;
}

.course-panel.active {
  display: block;
}

.course-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-lg);
  padding-bottom: var(--spacing-lg) !important;
  border-bottom: 1px solid rgba(200, 200, 200, 1) !important;
}

.course-badge {
  width: 40px;
  height: 40px;
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: var(--font-size-lg);
}

.course-title {
  font-size: var(--font-size-xl);
  font-weight: 700;
  color: var(--font-color);
  line-height: 1.3;
}

.course-meta {
  display: flex;
  gap: var(--spacing-lg);
  margin-bottom: var(--spacing-xl);
  font-size: var(--font-size-sm);
  color: #666666;
}

.course-duration {
  font-weight: 500;
  color: rgba(6, 172, 93, 1) !important;
}

.course-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--spacing-xxl);
}

.course-map {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
}

.course-map img {
  width: 100%;
  height: 300px;
  object-fit: cover;
}

/* route-points / route-point は不要（使用しない） */

.course-schedule {
  background: #ffffff !important;
  border-radius: 8px;
  padding: var(--spacing-lg);
}

.schedule-summary {
  margin-bottom: var(--spacing-lg);
  padding-bottom: var(--spacing-lg);
  border-bottom: 1px solid #333333 !important;
}

/* 旅程概要 h4（.schedule-summary の外） */
.course-schedule > h4 {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: var(--font-color);
  padding-bottom: var(--spacing-sm) !important;
  border-bottom: 1px solid #333333 !important;
  margin-bottom: var(--spacing-lg) !important;
}

.schedule-summary h4 {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: var(--font-color);
  margin-bottom: var(--spacing-sm);
  padding-bottom: var(--spacing-sm) !important;
  border-bottom: 1px solid #333333 !important;
}

/* スクロールなし - 全日程を表示 */
.schedule-days {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-lg);
}

.schedule-day {
  border-left: none !important;
  padding-left: 0 !important;
}

.day-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-sm);
}

.day-label {
  font-weight: 700;
  color: rgba(6, 172, 93, 1) !important;
  font-size: var(--font-size-sm);
}

.day-time {
  font-size: var(--font-size-xs);
  color: #666666;
}

.day-spots {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}

.day-spots li {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  font-size: var(--font-size-sm);
}

.spot-icon {
  width: 20px;
  height: 20px;
  background: #EEEEEE;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.spot-icon.bus::before { content: '🚌'; font-size: 12px; }
.spot-icon.stay::before { content: '🏨'; font-size: 12px; }
.spot-icon.lunch::before { content: '🍽️'; font-size: 12px; }
.spot-icon.sightseeing::before { content: '📍'; font-size: 12px; }

.spot-reserve {
  margin-left: auto;
  padding: var(--spacing-xs) var(--spacing-sm);
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
  border-radius: 4px;
  font-size: var(--font-size-xs);
  text-decoration: none;
}

.spot-reserve:hover {
  opacity: 0.8;
}

.course-image {
  margin-top: var(--spacing-xl);
  border-radius: 16px;
  overflow: hidden;
}

.course-image img {
  width: 100%;
  height: 300px;
  object-fit: cover;
}

.course-placeholder {
  text-align: center;
  padding: var(--spacing-xxl);
  color: #666666;
}

/* コースビジュアル（マップ+写真の左カラム） */
.course-visual {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-lg);
}

.course-photo {
  border-radius: 16px;
  overflow: hidden;
}

.course-photo img {
  width: 100%;
  height: 250px;
  object-fit: cover;
}

/* 日時情報 */
.day-time-info {
  font-size: var(--font-size-xs);
  color: #666666;
  margin-bottom: var(--spacing-sm);
}

/* 詳細をみるボタン */
.btn-detail {
  display: inline-block;
  margin-top: var(--spacing-xl);
  padding: var(--spacing-sm) var(--spacing-xl);
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
  border-radius: 8px;
  text-decoration: none;
  font-weight: 700;
  text-align: center;
}

.btn-detail:hover {
  opacity: 0.8;
}

/* スクロールヒント（コースタブ下） */
.course-scroll-hint {
  color: #999;
  margin: var(--spacing-sm) 0;
  animation: bounce-hint 2s ease-in-out infinite;
}

@keyframes bounce-hint {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(4px); }
}

/* モデルコースCTAボタン統一（公式HP ↗） */
.course-cta-area {
  text-align: center;
  margin-top: var(--spacing-lg);
  padding-top: var(--spacing-md);
}

.btn-course-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 240px;
  height: 48px;
  padding: 0 24px;
  font-size: var(--font-size-base);
  font-weight: 700;
  border-radius: 8px;
  text-decoration: none;
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
}

.btn-course-cta:hover {
  opacity: 0.8;
}

/* モデルコース レスポンシブ対応 */
@media screen and (max-width: 900px) {
  .course-content {
    grid-template-columns: 1fr;
  }

  .course-tabs {
    flex-direction: column;
    align-items: center;
  }

  .course-tab {
    width: 100%;
    max-width: 300px;
  }
}

@media screen and (max-width: 480px) {
  .courses-section {
    padding: var(--spacing-xl) 0;
  }

  .course-tab {
    min-width: unset !important;
    max-width: 100% !important;
    width: 100% !important;
    padding: var(--spacing-md) var(--spacing-lg) !important;
    box-sizing: border-box;
  }

  .course-panels {
    padding: var(--spacing-lg);
  }

  .course-meta {
    flex-direction: column;
    gap: var(--spacing-sm);
  }
}

/* ========================================
   しらはまコンシェルジュ固有スタイル
   ======================================== */

/* トップタイトル画像セクション - ヘッダー固定分のオフセット */
.top-slider-area {
  margin-top: var(--navbar-height);
}

/* トップタイトル画像 */
.top-title-image {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.top-title-image img {
  width: 100%;
  height: auto;
  display: block;
}

/* コンシェルジュ説明文セクション */
.concierge-description {
  background-color: var(--bg-color-main);
  padding: var(--spacing-xl) var(--spacing-md);
}

.concierge-description .description-content {
  max-width: 800px;
  margin: 0 auto;
}

.concierge-description p {
  font-size: var(--font-size-base);
  line-height: 2;
  color: var(--font-color);
}

/* 🚨 Facebook誘導文のリンクスタイル: 一目でリンクとわかるよう青文字＋下線で明示 */
.concierge-facebook-link {
  margin-top: var(--spacing-md);
  font-size: var(--font-size-base);
}

.concierge-facebook-link a {
  color: #1976d2; /* Material Blue 700: アクセシビリティ基準 (WCAG AA) を満たすコントラスト */
  text-decoration: underline;
  text-underline-offset: 0.15em;
  font-weight: 500;
}

.concierge-facebook-link a:hover,
.concierge-facebook-link a:focus {
  color: #0d47a1; /* Material Blue 900: hover時にさらに濃く */
  text-decoration-thickness: 2px;
}

@media screen and (max-width: 480px) {
  .concierge-description p {
    font-size: var(--font-size-sm);
    line-height: 1.8;
  }

  .concierge-description p br {
    display: none;
  }

  .concierge-facebook-link {
    font-size: var(--font-size-sm);
  }
}

/* エリア・観光スポット セクションの中央揃え修正 */
.area-tab-container .section-header {
  width: 100%;
}

/* セクションタイトルのレイアウト修正 - テキストを上に配置 */
.section-header .title {
  flex-wrap: wrap;
  justify-content: center;
}

.section-header .title > div.text-center {
  order: -1;
  width: 100%;
  margin-bottom: var(--spacing-sm);
}

/* 装飾画像を非表示（コンテンツ画像があるため不要） */
.section-header .title > div:not(.text-center) {
  display: none;
}

/* セクション説明文（本番サイト準拠） */
.section-header .section-description {
  text-align: center;
  font-size: var(--font-size-sm);
  color: var(--font-color);
  line-height: 1.8;
  margin-top: var(--spacing-sm);
  max-width: 700px;
  margin-left: auto;
  margin-right: auto;
}

/* ============================================
   LP改善 追加CSS（2026-04-16）
   ============================================ */

/* --- フォントファミリー: Noto Sans JP（Webフォント）統一 ---
   🚨 本文の見た目はNoto Sans JPを軸に、見出しのみ Zen Maru Gothic（丸み）を許容。
   フォントのオーバーライドは body と上記ヘッディング系セレクタのみ。
   見た目の差は font-weight / font-size / letter-spacing / color で表現する。 */
body {
  font-family: "Noto Sans JP", "BIZ UDPGothic", "Hiragino Sans", "Hiragino Sans-W4",
    "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo",
    "-apple-system", "Segoe UI", "Roboto", "Helvetica Neue", sans-serif,
    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* --- ヒーローカルーセル --- */
.hero-carousel {
  width: 100%;
  overflow: hidden;
}

/* 🚨 Swiper初期化前のFOUC（3スライドのキャプションが瞬間的に重なる）を防止
   未初期化時は1枚目のスライドのみ表示し、それ以外は非表示にする */
.hero-carousel:not(.swiper-initialized) .swiper-wrapper {
  display: block;
}
.hero-carousel:not(.swiper-initialized) .swiper-slide {
  display: none;
}
.hero-carousel:not(.swiper-initialized) .swiper-slide:first-child {
  display: block;
}

.hero-slide {
  position: relative;
  width: 100%;
}

.hero-slide img {
  width: 100%;
  height: 60vh;
  object-fit: cover;
  display: block;
}

.hero-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.5));
  padding: var(--spacing-lg) var(--spacing-md);
}

.hero-caption-text {
  color: #fff;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
  margin: 0;
  line-height: 1.4;
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* 🚨 モバイルでヒーロー画像が縮む際の文字重なり対策: キャプション文字をさらに圧縮 */
@media screen and (max-width: 480px) {
  .hero-caption {
    padding: var(--spacing-md) var(--spacing-sm);
  }
  .hero-caption-text.font-lg {
    font-size: 1.05rem;
    line-height: 1.35;
  }
}

.hero-title-section {
  text-align: center;
  padding: var(--spacing-xl) var(--spacing-md);
  background-color: var(--bg-color-main);
}

.hero-main-title {
  color: var(--title-font-color);
  margin-bottom: var(--spacing-sm);
}

.hero-subtitle {
  color: var(--font-color);
}

/* --- AI生成免責文言（ヒーロー直下・固定文言） --- */
.hero-ai-disclaimer {
  max-width: 720px;
  margin: var(--spacing-md) auto 0;
  padding: 14px 18px;
  color: #7a4a12;
  line-height: 1.7;
  text-align: center;
  background: #fff7ed;
  border: 1px solid #f6ce96;
  border-radius: 10px;
}

/* --- アクセス・交通情報セクション（固定文言） --- */
/* --- パンフレットダウンロードセクション (#brochure) --- */
.brochure-section {
  background-color: var(--bg-color-sub);
}

.brochure-intro {
  color: var(--font-color);
  line-height: 1.8;
  margin: 0 auto var(--spacing-lg);
  max-width: 720px;
}

.brochure-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--spacing-lg);
  max-width: 900px;
  margin: 0 auto var(--spacing-lg);
}

@media screen and (max-width: 768px) {
  .brochure-grid {
    grid-template-columns: 1fr;
  }
}

.brochure-card {
  display: flex;
  flex-direction: column;
  background: var(--bg-color-main);
  border: 1px solid var(--border-color-light-gray);
  border-radius: 12px;
  overflow: hidden;
  text-decoration: none;
  color: var(--font-color);
  transition: transform 0.2s cubic-bezier(.22,1,.36,1), box-shadow 0.2s;
}

.brochure-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.11);
}

.brochure-thumb {
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--border-color-light-gray);
}

.brochure-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.brochure-info {
  padding: var(--spacing-md);
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}

.brochure-title {
  margin: 0;
  color: var(--title-font-color);
  line-height: 1.4;
}

.brochure-desc {
  margin: 0;
  color: var(--font-color);
  line-height: 1.6;
}

.brochure-download-btn {
  display: inline-block;
  padding: 8px 16px;
  background: var(--btn-color);
  color: var(--btn-font-color);
  border-radius: 6px;
  font-size: var(--font-size-sm);
  font-weight: 700;
  text-align: center;
  align-self: flex-start;
  transition: background 0.2s;
}

.brochure-card:hover .brochure-download-btn {
  background: var(--btn-hover-font-color);
  opacity: 0.9;
}

.brochure-source {
  text-align: center;
  margin-top: var(--spacing-md);
  color: #6b7f8a;
}

.brochure-source a {
  color: var(--text-link-font-color);
  text-decoration: underline;
}

.access-section {
  background-color: var(--bg-color-main);
}

.access-list {
  max-width: 860px;
  margin: var(--spacing-lg) auto 0;
  display: flex;
  flex-direction: column;
  gap: var(--spacing-xl);
}

.access-item {
  padding: var(--spacing-md) 0;
  border-bottom: 1px solid var(--border-color-light-gray);
}

.access-item:last-child {
  border-bottom: none;
}

.access-item-title {
  color: var(--title-font-color);
  margin: 0 0 var(--spacing-sm) 0;
  letter-spacing: 0.04em;
}

.access-item-text {
  color: var(--font-color);
  line-height: 1.9;
  letter-spacing: 0.02em;
  margin: 0;
}

.access-detail-link {
  display: flex;
  justify-content: center;
  margin-top: var(--spacing-xl);
}

/* --- フッター: 2ブロック構成の連絡先 --- */
.footer-contact-block {
  margin-bottom: var(--spacing-lg);
}

.footer-contact-heading {
  margin-bottom: var(--spacing-sm);
  color: var(--footer-font-color);
  letter-spacing: 0.08em;
}

.footer-contact-block:not(:last-child) {
  padding-bottom: var(--spacing-md);
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

/* --- コンシェルジュ紹介（統合版・1セクションのみ）の補助スタイル --- */
/* 🚫 .site-introduction / .area-map-pins / .area-pin は使用しない（2セクション併置とピン列はデザイン変更で廃止） */
.concierge-description .section-header {
  margin-bottom: var(--spacing-md);
}

.concierge-description .description-content {
  max-width: 800px;
  margin: 0 auto var(--spacing-lg);
  text-align: center;
}

/* --- エリアマップ（コンシェルジュセクション内に配置） --- */
.area-map-section {
  margin-top: var(--spacing-lg);
  text-align: center;
}

.area-map-image {
  max-width: 700px;
  margin: var(--spacing-md) auto;
}

.area-map-image img {
  width: 100%;
  border-radius: 12px;
}

.area-map-description {
  max-width: 700px;
  margin: var(--spacing-md) auto 0;
  text-align: center;
  line-height: 1.8;
}

/* --- 代表スポットグリッド --- */
.area-featured-spots {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  margin: var(--spacing-lg) 0;
}

.featured-spot {
  text-align: center;
}

.featured-spot-img img {
  width: 100%;
  height: 180px;
  object-fit: cover;
  border-radius: 8px;
}

.featured-spot-credit {
  margin-top: 0.25rem;
  font-size: var(--font-size-xs);
  color: var(--font-color-muted, #777);
  text-align: right;
  line-height: 1.4;
}

/* 🚨 クレジットが省略されている featured-spot の info 開始位置を、クレジット有のものと揃えるための補正
   セレクタは「.featured-spot-img の直後に .featured-spot-info が来る」場合のみマッチ（=クレジット非表示時）
   padding-top を使う理由: 内側 h4 の margin-top と margin collapse しないようにするため */
.featured-spot-img + .featured-spot-info {
  padding-top: calc(var(--font-size-xs) * 1.4 + 0.25rem);
}

/* 🚨 ヒーローカルーセル直下の出典表示（3スライド共通） */
.hero-carousel-credit {
  margin: 0.4rem 1rem 0;
  font-size: var(--font-size-xs);
  color: var(--font-color-muted, #777);
  text-align: right;
  line-height: 1.4;
}

/* 🚨 各エリアの area-logo 画像直下の出典表示 */
.area-logo-credit {
  margin: 0.25rem 0 0;
  font-size: var(--font-size-xs);
  color: var(--font-color-muted, #777);
  text-align: right;
  line-height: 1.4;
}

.featured-spot-info h4 {
  margin-top: var(--spacing-sm);
  color: var(--title-font-color);
}

.featured-spot-info p {
  margin-top: var(--spacing-xs);
  line-height: 1.6;
}

.area-activities-link {
  text-align: center;
  margin: var(--spacing-lg) 0;
}

/* --- アクティビティセクション（リッチカード形式） --- */
.activities-section {
  background-color: var(--bg-color-sub);
  padding: 36px 0 80px;
}

.activities-area-tabs {
  display: flex;
  justify-content: center;
  gap: var(--spacing-sm);
  margin-bottom: var(--spacing-xl);
  flex-wrap: wrap;
}

.activities-tab {
  padding: 8px 20px;
  border: 2px solid var(--border-color);
  border-radius: 24px;
  cursor: pointer;
  font-size: var(--font-size-sm);
  font-weight: 700;
  transition: all 0.2s ease;
  color: var(--title-font-color);
  background: transparent;
}

.activities-tab.active,
.activities-tab:hover {
  background-color: var(--btn-color);
  color: var(--btn-font-color);
  border-color: var(--btn-color);
}

.activities-area-content {
  display: none;
}

.activities-area-content.active {
  display: block;
}

/* エリアヘッダー（Area 01 / 白浜エリア / --- / 10件） */
.act-area-heading {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}

.act-area-label {
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #6b7f8a;
}

.act-area-name {
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 20px;
  font-weight: 600;
}

.act-area-line {
  flex: 1;
  height: 1px;
  background: var(--border-color-light-gray);
}

.act-area-count {
  font-size: 12px;
  color: #6b7f8a;
}

/* カードグリッド: 3列固定、カード高さ独立 */
.activity-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  align-items: start;
}

/* カード本体 */
.activity-card {
  background: #fff;
  border-radius: 12px;
  border: 1px solid var(--border-color-light-gray);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  transition: transform 0.2s cubic-bezier(.22,1,.36,1), box-shadow 0.2s;
  animation: actFadeUp 0.35s both;
}

.activity-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.11);
}

@keyframes actFadeUp {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

.activity-card-grid .activity-card:nth-child(1) { animation-delay: .04s; }
.activity-card-grid .activity-card:nth-child(2) { animation-delay: .08s; }
.activity-card-grid .activity-card:nth-child(3) { animation-delay: .12s; }
.activity-card-grid .activity-card:nth-child(4) { animation-delay: .16s; }
.activity-card-grid .activity-card:nth-child(5) { animation-delay: .20s; }
.activity-card-grid .activity-card:nth-child(6) { animation-delay: .24s; }

/* カード画像エリア */
.activity-card-img {
  position: relative;
  width: 100%;
  height: 170px;
  overflow: hidden;
  flex-shrink: 0;
}

.activity-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 画像プレースホルダー（写真がない場合） */
.card-img-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

.card-img-icon {
  font-size: 32px;
  opacity: 0.4;
}

.card-img-hint {
  font-size: 10px;
  color: #6b7f8a;
  opacity: 0.65;
}

/* バッジ（予約方法） */
.badge-wrap {
  position: absolute;
  top: 9px;
  left: 9px;
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
}

.badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 100px;
}

.badge-today {
  background: var(--btn-color);
  color: #fff;
}

.badge-prev {
  background: rgba(0, 0, 0, 0.52);
  color: #fff;
}

/* 🎁 特典バッジ（★特典 の体験に付与） */
.badge-coupon {
  background: #f59e0b;
  color: #fff;
}

/* 通し番号 */
.card-num {
  position: absolute;
  bottom: 8px;
  right: 10px;
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 32px;
  font-weight: 750;
  color: rgba(255, 255, 255, 0.88);
  line-height: 1;
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.28);
}

/* カードボディ */
.activity-card-body {
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.activity-card-provider {
  font-size: 14px;
  color: #6b7f8a;
  font-weight: 500;
}

.activity-card-title {
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--font-color);
  margin: 0;
}

/* 🎯 PR（キャッチコピー）— タイトル直下の副題 */
.activity-card-subtitle {
  font-size: 14px;
  color: #6b7f8a;
  line-height: 1.5;
  margin: 2px 0 4px;
  font-weight: 400;
}

/* カテゴリタグ */
.activity-card-tags {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.act-tag {
  font-size: 13px;
  padding: 2px 7px;
  border-radius: 4px;
  font-weight: 500;
}

.act-tag-marine {
  background: rgba(6, 172, 93, 0.1);
  color: var(--title-font-color);
}

.act-tag-craft {
  background: rgba(74, 124, 89, 0.1);
  color: #4a7c59;
}

.act-tag-food {
  background: #fff4e5;
  color: #9a5a00;
}

.act-tag-nature {
  background: rgba(6, 172, 93, 0.08);
  color: #2e6b47;
}

.act-tag-culture {
  background: #f0ecf8;
  color: #5a3a8a;
}

.act-tag-animal {
  background: #e8f4f8;
  color: #1a6b8a;
}

.act-tag-harvest {
  background: #fff4e5;
  color: #9a5a00;
}

/* 料金表示 */
.card-price-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  column-gap: 6px;
  row-gap: 2px;
}

/* 価格ペア（price-main + price-unit）を atomic にしてレイアウト崩れを防止 */
.price-group {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  white-space: nowrap;
}

.price-separator {
  color: #b0b0b0;
  font-weight: 600;
}

.price-main {
  /* font-family は body から継承 */
  font-size: 20px;
  font-weight: 750;
  color: #E8927C;
  white-space: nowrap;
}

.price-unit {
  font-size: 13px;
  color: #6b7f8a;
  white-space: nowrap;
}

.price-child {
  font-size: 13px;
  color: #6b7f8a;
}

/* メタ情報 */
.activity-card-meta {
  border-top: 1px solid var(--border-color-light-gray);
  padding-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.activity-card-meta .meta-item {
  display: flex;
  align-items: flex-start;
  gap: 5px;
}

.activity-card-meta .meta-icon {
  font-size: 14px;
  opacity: 0.55;
  margin-top: 2px;
  flex-shrink: 0;
}

.activity-card-meta .meta-text {
  font-size: 14px;
  color: var(--font-color);
  line-height: 1.35;
}

.activity-card-meta .meta-text small {
  display: block;
  font-size: 13px;
  color: #6b7f8a;
}

/* 予約方法チップ */
.booking-chip {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  padding: 1px 7px;
  border-radius: 4px;
  font-weight: 600;
}

.booking-today {
  background: rgba(6, 172, 93, 0.1);
  color: var(--title-font-color);
  border: 1px solid rgba(6, 172, 93, 0.3);
}

.booking-prev {
  background: rgba(0, 0, 0, 0.05);
  color: #555;
  border: 1px solid rgba(0, 0, 0, 0.15);
}

/* 注意事項 */
.activity-card-note {
  font-size: 14px;
  color: #6b7f8a;
  line-height: 1.55;
  padding: 5px 7px;
  background: var(--bg-color-sub);
  border-radius: 5px;
}

/* カードフッター */
.activity-card-footer {
  margin-top: auto;
  padding: 8px 14px;
  background: var(--bg-color-sub);
  border-top: 1px solid var(--border-color-light-gray);
  display: flex;
  align-items: center;
  gap: 8px;
}

.activity-card-footer .footer-access {
  font-size: 14px;
  color: #6b7f8a;
  flex: 1;
  line-height: 1.45;
}

.activity-card-footer .footer-access strong {
  color: var(--font-color);
}

.btn-official {
  font-size: 13px;
  font-weight: 700;
  padding: 6px 12px;
  background: var(--btn-color);
  color: #fff;
  border: none;
  border-radius: 7px;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background 0.15s;
}

.btn-official:hover {
  opacity: 0.8;
}

.btn-official::after {
  content: ' →';
}

/* --- CTA外部リンクボタン統一 --- */
.cta-external {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 200px;
  padding: 12px 24px;
  font-size: var(--font-size-sm);
  text-decoration: none;
}

/* 外部リンク矢印アイコン（SVGマスク方式・currentColorを継承） */
.external-icon {
  display: inline-block;
  width: 0.95em;
  height: 0.95em;
  background-color: currentColor;
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M7 17 17 7'/><path d='M9 7h8v8'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M7 17 17 7'/><path d='M9 7h8v8'/></svg>");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  vertical-align: -0.12em;
  margin-left: 0.2em;
  flex-shrink: 0;
}

/* --- フッター法的情報 --- */
.footer-legal {
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  padding: var(--spacing-md) 0;
  text-align: center;
}

.legal-links {
  margin-bottom: var(--spacing-xs);
}

.legal-links a {
  color: var(--footer-font-color);
  text-decoration: underline;
}

.legal-separator {
  margin: 0 var(--spacing-sm);
  color: var(--footer-font-color);
  opacity: 0.5;
}

.disclaimer-note {
  color: var(--footer-font-color);
  opacity: 0.7;
}

.footer-logo img {
  max-height: 48px;
  width: auto;
  margin-bottom: var(--spacing-sm);
}

/* --- サイトロゴアイコン --- */
.site-logo-icon {
  vertical-align: middle;
  margin-right: 4px;
}

/* --- セクションサブタイトル --- */
.section-subtitle {
  color: var(--font-color);
  opacity: 0.6;
  margin-top: var(--spacing-xs);
  margin-bottom: var(--spacing-lg);
}

/* --- レスポンシブ対応 --- */
@media screen and (max-width: 900px) {
  .activity-card-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 560px) {
  .activity-card-grid {
    grid-template-columns: 1fr;
  }

  .activities-section {
    padding: 20px 0 60px;
  }
}

@media screen and (max-width: 720px) {
  .area-featured-spots {
    grid-template-columns: 1fr;
    gap: var(--spacing-md);
  }

  .featured-spot-img img {
    height: 200px;
  }
}

@media screen and (max-width: 480px) {
  .hero-slide img {
    height: 40vh;
  }

  .activities-area-tabs {
    gap: var(--spacing-xs);
  }

  .activities-tab {
    padding: 6px 14px;
    font-size: var(--font-size-xs);
  }
}

/* LLM追加スタイル */

body {
  overflow-x: hidden;
}

/* ========================================
   CSS変数定義（しらはまコンシェルジュ対応）
   ======================================== */

/* レスポンシブ対応：タブレット */
@media screen and (max-width: 1024px) {
  :root {
    --font-size-xxs: 0.6rem;
    --font-size-xs: 0.7rem;
    --font-size-sm: 0.85rem;
    --font-size-base: 1rem;
    --font-size-md: 1rem;
    --font-size-lg: 1.25rem;
    --font-size-xl: 1.5rem;
    --font-size-xxl: 1.75rem;
    --font-size-xxxl: 2.5rem;
  }
}

/* レスポンシブ対応：モバイル */
@media screen and (max-width: 480px) {
  :root {
    --font-size-xxs: 0.6rem;
    --font-size-xs: 0.7rem;
    --font-size-sm: 0.85rem;
    --font-size-base: 1rem;
    --font-size-md: 1rem;
    --font-size-lg: 1.15rem;
    --font-size-xl: 1.3rem;
    --font-size-xxl: 1.45rem;
    --font-size-xxxl: 1.6rem;
  }
}

html,
body {
  background-color: white;
  color: var(--font-color);
  font-size: var(--font-size-base);
  margin: 0;
  /* 🚨 本文フォント: Noto Sans JP（Webフォント・Windows/Mac/Android全環境で統一）→ BIZ UDPGothic（Win標準・読みやすさ向上）→ Hiragino Sans（Mac標準）→ Yu Gothic UI（Win標準）→ generic */
  font-family: "Noto Sans JP", "BIZ UDPGothic", "Hiragino Sans", "Hiragino Sans-W4",
    "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo",
    "-apple-system", "Segoe UI", "Roboto", "Helvetica Neue", sans-serif,
    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  /* 🚨 文字レンダリング品質（Windows Chrome 等での可読性向上） */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: "palt" 1; /* プロポーショナルメトリクス（句読点・括弧の詰め） */
}

/* 丸みのある見出し用フォント（オプトイン: 必要な箇所に .font-rounded を付与） */
.font-rounded,
h1, h2, h3,
.section-title-text,
.hero-main-title,
.activity-card-title,
.course-title,
.act-area-name {
  font-family: "Zen Maru Gothic", "Noto Sans JP", "BIZ UDPGothic",
    "Hiragino Sans", "Yu Gothic UI", "Meiryo", sans-serif;
  font-feature-settings: "palt" 1;
}

a {
  text-decoration: none;
  color: var(--link-font-color);
  cursor: pointer;
}

.main {
  margin-top: 0;
}

.container {
  padding: var(--spacing-xl) var(--spacing-xxl);
  max-width: var(--container-max-width);
  margin: 0 auto;

  @media screen and (max-width: 1024px) {
    padding: var(--spacing-xl) var(--spacing-xl);
  }

  @media screen and (max-width: 480px) {
    padding: var(--spacing-xl) var(--spacing-md);
  }
}

.font-xxs {
  font-size: var(--font-size-xxs);
}
.font-xs {
  font-size: var(--font-size-xs);
}
.font-sm {
  font-size: var(--font-size-sm);
}
.font-md {
  font-size: var(--font-size-md);
}
.font-lg {
  font-size: var(--font-size-lg);
}
.font-xl {
  font-size: var(--font-size-xl);
}
.font-xxl {
  font-size: var(--font-size-xxl);
}
.font-xxxl {
  font-size: var(--font-size-xxxl);
}

.button-link {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--btn-color);
  border-radius: var(--corner-md-duplicate);
  color: var(--btn-font-color);
  gap: var(--spacing-sm);
  font-size: var(--font-size-sm);
  height: 40px;
  font-weight: bold;
  border: solid var(--btn-color);
}

.button-link:hover {
  background-color: var(--btn-hover-color);
  color: var(--btn-hover-font-color);
  border-color: var(--btn-hover-border-color);
  border: solid;
}

.button-large {
  width: 380px;
}
.button-medium {
  width: 320px;
}

.text {
  line-height: 32px;
  letter-spacing: 1.6px;
}

.text-center {
  text-align: center;
}

@media screen and (max-width: 480px) {
  .text-sp-start {
    text-align: start !important;
  }
}

.d-none {
  display: none !important;
}

@media screen and (max-width: 480px) {
  .d-sp-none {
    display: none !important;
  }
}

@media screen and (min-width: 481px) {
  .d-pc-none {
    display: none !important;
  }
}

.bg-black {
  background-color: rgba(0, 0, 0, 1) !important;
}
.d-flex {
  display: flex;
}

.external-link-group {
  width: 100%;
  justify-content: start;
  display: flex;
  flex-wrap: wrap;
  padding: var(--spacing-md) 0 var(--spacing-xl) 0;
  margin: 0 auto;

  .external-link {
    flex: 0 0 auto;
  }
}

/* ナビバー */
header {
  .header {
    z-index: 1000;
    height: inherit;
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background-color: white;
    box-shadow: 1px 1px 10px gray;

    nav {
      height: var(--navbar-height);
      display: flex;
      justify-content: space-between;
      gap: var(--spacing-xl);
      margin: 0 2.5%;
    }

    .site-logo {
      flex: 1;
      max-width: 320px;
      align-content: center;

      img {
        max-width: 100%;
        max-height: 100%;
      }

      a {
        text-decoration: none;
        display: flex;
        flex-direction: row !important;
        align-items: center !important;
        gap: 0.5rem !important;
      }

      .site-name {
        font-size: 0.65rem;
        color: #333333 !important;
        letter-spacing: 0.05em;
        white-space: nowrap !important;
        padding: 0.4rem 0.6rem !important;
        line-height: 1.4;
        position: relative !important;
      }

      .site-name::before {
        content: '' !important;
        position: absolute !important;
        top: 0 !important;
        left: 0 !important;
        width: 10px !important;
        height: 10px !important;
        border-top: 1px solid #999999 !important;
        border-left: 1px solid #999999 !important;
      }

      .site-name::after {
        content: '' !important;
        position: absolute !important;
        bottom: 0 !important;
        right: 0 !important;
        width: 10px !important;
        height: 10px !important;
        border-bottom: 1px solid #999999 !important;
        border-right: 1px solid #999999 !important;
      }

      .logo-text {
        display: flex;
        align-items: baseline;
        gap: 0.3rem;
        white-space: nowrap !important;
      }

      .logo-discover {
        font-family: "Brush Script MT", "Segoe Script", cursive;
        font-size: 1rem;
        color: #333333 !important;
        font-style: italic;
      }

      .logo-region {
        font-family: "Brush Script MT", "Segoe Script", cursive;
        font-size: 1.8rem;
        color: #333333 !important;
        font-weight: normal;
      }
    }

    input#nav-menu-is-display {
      display: none;
    }

    .hamburger {
      display: flex;
      justify-content: center;
      align-items: center;
      margin: 0.5rem;
      padding: 0.25rem;
      cursor: pointer;

      img {
        width: 100%;
      }
    }

    /* SP版 メニュー表示 */
    @media screen and (max-width: 1319px), (hover: none) {
      nav {
        margin: 0 var(--spacing-md) 0 var(--spacing-xs);
      }

      .site-logo {
        min-width: 0;
        overflow: hidden;
        max-width: none; /* タッチ/狭幅では320px頭打ちを解除し、余白がある限りロゴ全体を表示 */
      }

      .hamburger {
        flex-shrink: 0;
      }

      .nav-container {
        display: flex;
        justify-content: end;
        position: fixed;
        top: var(--navbar-height);
        right: -100%;
        width: 100%;
        height: 100vh;
        transition: 0.5s all;
      }

      .nav-container:has(input#nav-menu-is-display:checked) {
        right: 0;
        transition: 0.5s all;
      }

      .nav-menu {
        width: 85%;
        height: fit-content;
        background-color: var(--navbar-sp-color);
        padding: var(--spacing-md);

        .nav-menu-controller {
          text-align: right;
        }

        ul {
          padding: 0;
          margin: 0;
          list-style: none;

          li {
            line-height: 3rem;
          }
        }

        a {
          color: var(--footer-font-color);
        }
      }

      .nav-menu > ul > li {
        border-top: 1px solid var(--footer-border-color);
      }

      .nav-menu > ul > li:first-child {
        border-top: 0;
      }

      .nav-menu > ul > li > ul > li a::before {
        content: ">";
        display: inline-block;
        width: 1.25rem;
      }

      /* 言語選択 */
      .nav-menu > ul > li.select-language {
        border-top: 0;
      }

      .nav-menu > ul > li.select-language > .nav-link {
        display: none;
      }

      .nav-menu > ul > li.select-language > ul {
        display: flex;
        flex-wrap: wrap;
      }

      .nav-menu > ul > li.select-language > ul > li {
        margin-top: var(--spacing-md);
        margin-right: var(--spacing-md);
      }

      .nav-menu > ul > li.select-language > ul > li a {
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: var(--corner-md-duplicate);
        font-weight: bold;
        border: solid 1px var(--btn-font-color);
        padding: 0 var(--spacing-md);
      }

      .nav-menu > ul > li.select-language > ul > li a.active {
        background-color: var(--btn-hover-color);
        color: var(--btn-hover-font-color);
        border: solid 1px var(--btn-hover-border-color);
      }

      .nav-menu > ul > li.select-language > ul > li a::before {
        content: "";
        width: 0;
      }
    }

    /* PC版 メニュー表示 */
    @media screen and (min-width: 1320px) and (hover) {
      .nav-menu-open,
      .nav-menu-close {
        display: none;
      }

      .nav-menu,
      .nav-menu ul {
        height: 100%;
      }

      .nav-menu > ul li,
      .nav-menu > ul li img {
        vertical-align: middle;
      }

      .nav-menu > ul {
        display: flex;
        margin: 0;
        padding: 0;
        width: 80%;
        text-align: center;
      }

      .nav-menu > ul > li {
        margin: 0.25rem 0.75rem;
      }

      .nav-menu ul > li {
        display: block;
        text-wrap: nowrap;
        position: relative;
      }

      .nav-menu ul > li > a {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 100%;
        width: 100%;
      }

      .nav-menu ul > li:hover > a {
        color: var(--title-font-color);
      }

      .nav-menu > ul > li > ul {
        display: none;
        background-color: white;
      }

      .nav-menu > ul > li:hover > ul {
        display: table;
        position: absolute;
        top: 100%;
        right: 0;
        border-top: 4px solid green;
        width: 100%;
        padding: 0 1rem;
        margin: 0 -1rem;
      }

      .nav-menu > ul > li > ul > li {
        height: 3.5rem;
        border-top: rgba(230, 230, 230, 1) solid 1px;
      }

      .nav-menu > ul > li > ul > li:first-child {
        border-top: 0;
      }
    }
  }
}

@media screen and (min-width: 1320px) and (hover) {
  header .header .nav-menu > ul > li:not(.select-language):hover > ul {
    left: 0;
    margin: 0 -200px;
  }
}

/* ヘッダー: 親サイト（旅館組合公式HP）戻り動線 ロゴ右ボタン */
.header-parent-link {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.45rem 0.85rem;
  margin: auto 0;
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--primary-color);
  background-color: var(--bg-white);
  border: 1px solid var(--primary-color);
  border-radius: var(--border-radius-sm);
  text-decoration: none;
  white-space: nowrap;
  transition: var(--transition-fast);
  flex-shrink: 0;
}

.header-parent-link:hover {
  background-color: var(--primary-color);
  color: var(--bg-white);
}

/* SP: ロゴ右ボタンは非表示にしてレイアウト崩れ防止（ナビ末尾リンクで代替） */
@media screen and (max-width: 1319px), (hover: none) {
  .header-parent-link {
    display: none;
  }
}

/* ヘッダー: ナビ末尾の親サイトリンク（強調表示） */
header .header .nav-menu .nav-link-external {
  color: var(--primary-color);
  font-weight: 600;
}

header .header .nav-menu .nav-link-external:hover {
  color: var(--primary-dark);
}

/* フッター: 親サイト（旅館組合公式HP）戻り動線CTA（フッター最上部・常時表示） */
.footer-back-to-parent {
  width: 100%;
  background-color: var(--bg-light);
  border-top: 1px solid var(--bg-gray);
  border-bottom: 1px solid var(--bg-gray);
  padding: var(--spacing-md) 0;
}

.footer-back-to-parent .container {
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
  text-align: center;
}

.btn-back-to-parent {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1.75rem;
  font-size: var(--font-size-sm);
  font-weight: 600;
  color: var(--bg-white);
  background-color: var(--primary-color);
  border: 2px solid var(--primary-color);
  border-radius: var(--border-radius-md);
  text-decoration: none;
  transition: var(--transition-fast);
}

.btn-back-to-parent:hover {
  background-color: var(--primary-dark);
  border-color: var(--primary-dark);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

/* フッター */
footer {
  width: 100%;
  background-color: var(--footer-color);
  color: var(--footer-font-color);

  .footer {
    display: flex;
    flex-wrap: wrap;
    margin: 0 auto;
    max-width: var(--container-max-width);
    justify-content: space-between;
    gap: var(--spacing-xl);
    text-wrap: nowrap;

    .company-info,
    .site-map {
      flex: 1 0 0%;
    }

    .company-info {
      flex-grow: 6;
      max-width: 100%;

      .footer-logo-text {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        padding-bottom: 1.5rem;

        .site-name {
          font-size: 0.65rem;
          color: var(--footer-font-color) !important;
          letter-spacing: 0.05em;
          padding: 0.3rem 0.5rem;
          border: none !important;
          position: relative !important;
        }

        .site-name::before {
          content: '' !important;
          position: absolute !important;
          top: 0 !important;
          left: 0 !important;
          width: 8px !important;
          height: 8px !important;
          border-top: 1px solid rgba(255, 255, 255, 0.5) !important;
          border-left: 1px solid rgba(255, 255, 255, 0.5) !important;
        }

        .site-name::after {
          content: '' !important;
          position: absolute !important;
          bottom: 0 !important;
          right: 0 !important;
          width: 8px !important;
          height: 8px !important;
          border-bottom: 1px solid rgba(255, 255, 255, 0.5) !important;
          border-right: 1px solid rgba(255, 255, 255, 0.5) !important;
        }

        .logo-text {
          display: flex;
          align-items: baseline;
          gap: 0.3rem;
          white-space: nowrap;
        }

        .logo-discover {
          font-family: "Brush Script MT", "Segoe Script", cursive;
          font-size: 1rem;
          color: var(--footer-font-color) !important;
          font-style: italic;
        }

        .logo-region {
          font-family: "Brush Script MT", "Segoe Script", cursive;
          font-size: 1.8rem;
          color: var(--footer-font-color) !important;
          line-height: 1;
        }
      }

      .company-name,
      .company-contact {
        padding-bottom: 1rem;
      }

      .company-contact {
        display: flex;
      }

      .company-contact::before {
        display: block;
        width: 2em;
        text-align: center;
      }
    }

    .site-map {
      flex-grow: 4;
      max-width: 100%;

      ul {
        padding: 0;
        margin: 0;
        list-style: none;

        li {
          line-height: 3rem;
        }
      }

      a {
        color: var(--footer-font-color);
      }
    }

    .site-map > ul > li {
      border-top: 1px solid var(--footer-border-color);
    }

    .site-map > ul > li:first-child {
      border-top: 0;
    }

    .site-map > ul > li > ul > li a::before {
      content: ">";
      display: inline-block;
      width: 1.25rem;
    }

    @media screen and (max-width: 480px) {
      flex-wrap: column;
      text-wrap: wrap;

      .company-info {
        display: contents;
      }

      .company-detail,
      .site-map,
      .external-link-group {
        width: 100%;
      }

      .company-detail {
        order: 1;
      }
      .site-map {
        order: 2;
      }
      .external-link-group {
        order: 3;
      }
    }
  }

  .copyright {
    text-align: right;

    .copyright-text {
      padding-right: 1rem;
      padding-bottom: 1.5rem;
    }
  }
}

.fw-normal {
  font-weight: normal;
}
.fw-400 {
  font-weight: 400;
}
.font-bold {
  font-weight: 750;
}

/* 画像ズーム */
.img-zoom-wrapper {
  line-height: 0;
  width: 100%;
  margin: 0 auto;
  overflow: hidden;
}

.img-zoom-wrapper img {
  transition: var(--img-zoom-transition) all;
  width: 100%;
}

.img-zoom-wrapper img:hover {
  transition: var(--img-zoom-transition) all;
  transform: var(--img-zoom-transform);
}

.img-zoom-wrapper.img-zoom-rounded {
  border-radius: 24px;
}

.img-zoom-wrapper.img-zoom-sm-rounded {
  border-radius: 8px;
}

@media screen and (max-width: 480px) {
  .img-zoom-wrapper img:hover {
    transform: scale(1, 1);
  }
}

.any-position-break > span {
  display: inline-block;
}

/* タブ切り替え */
.tab-container {
  justify-content: center;
  display: flex;
  flex-wrap: wrap;
}

.tab-container .tab-label {
  border: solid 2px var(--btn-color);
  color: var(--btn-hover-font-color);
  order: -1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--spacing-sm);
  width: 9rem;
  cursor: pointer;
  text-align: center;
}

.tab-container .tab-content {
  width: 100%;
  display: none;
  margin-top: var(--spacing-md);
}

.tab-container .tab-description {
  margin-top: var(--spacing-sm);
  margin-bottom: var(--spacing-md);
}

.tab-container .tab-switch:checked + .tab-label {
  background: var(--btn-color);
  color: var(--btn-font-color);
}

.tab-container .tab-switch:checked + .tab-label + .tab-content {
  display: block;
}

.tab-container .tab-switch {
  display: none;
}

.text-link {
  color: var(--text-link-font-color);
}

.link-underline {
  text-decoration: underline;
}

.title {
  justify-content: center;
  display: flex;
  color: var(--title-font-color);
  letter-spacing: 2.28px;
  gap: 16px;
  margin: var(--spacing-xl) 0 var(--spacing-md) 0;
}

.section {
  padding: var(--spacing-xl) 0 var(--spacing-xl) 0;
}

.section-header {
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* エリアタブコンテナ内のセクションヘッダー中央揃え */
.area-tab-container .section-header,
.area-tab-container .section-header-decorated {
  width: 100%;
}

/* セクションリード文 */
.section-lead {
  text-align: center !important;
  font-size: var(--font-size-sm) !important;
  color: #555555 !important;
  line-height: 1.8 !important;
  margin-top: var(--spacing-md) !important;
  margin-bottom: var(--spacing-lg) !important;
  max-width: 700px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* テキストセクション（背景画像付き） */
.whats-doto-area-section {
  display: flex;
  margin: auto;
  width: 100%;
  padding-bottom: 0;

  .content {
    display: flex;
    gap: 16px;
    width: 400px;
    flex-direction: column;
    letter-spacing: 1.28px;
    margin: 5rem 55% 5rem auto;
  }

  .whats-doto-title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--font-color);
    line-height: 1.6;
  }

  .whats-doto-title .accent {
    color: var(--title-font-color);
  }

  .simple {
    display: none;
  }
}

@media screen and (max-width: 900px) {
  .whats-doto-area-section {
    display: block;
  }

  .whats-doto-area-section .content {
    width: auto;
    padding: 0 var(--spacing-lg);
    margin: 0 auto;
  }

  .whats-doto-area-section .simple {
    display: block;
    text-align: center;

    img {
      width: 100%;
    }
  }
}

@media screen and (min-width: 901px) {
  .whats-doto-area-section {
    background-origin: content-box;
    background-image: url(img/dotomap.svg);
    background-size: auto 95%;
    background-repeat: no-repeat;
    background-position: bottom 0 left 35vw;
  }
}

@media screen and (max-width: 1024px) {
  .whats-doto-area-section {
    background-position: bottom 0 left 25vw;
  }
}

/* エリア紹介 */
.area-introduction {
  margin: 0 auto;
  max-width: var(--container-max-width);
  padding-top: 0;

  .select-area#origin-select-area {
    padding-bottom: var(--spacing-xl);
  }

  .select-area#duplicate-select-area {
    padding-top: var(--spacing-xl);
  }

  .select-area {
    justify-content: center;
    display: flex;
    flex-wrap: wrap;
    margin: 0 auto;
    max-width: var(--container-max-width);

    .area {
      flex: 0 0 auto;
      width: 20%;
      min-width: 175px;

      .area-body {
        padding: var(--spacing-md);

        .area-img {
          position: relative;
          display: inline-block;
          margin: 0 var(--spacing-sm) 0 var(--spacing-sm);

          img {
            width: 100%;
            display: block;
          }

          img:nth-child(1) {
            border-radius: 50%;
          }

          img:nth-child(2) {
            border-radius: 8px;
            position: absolute;
            top: 0;
            left: 0;
            transition: 0.5s all;
          }
        }

        .name {
          font-size: var(--font-size-sm);
          font-weight: 750;
        }
      }

      .area-body:hover,
      .area-body:has(.area-img.selected) {
        .name {
          color: var(--area-hover-font-color);
        }

        .area-img {
          img:nth-child(2) {
            transition: 0.5s all;
            opacity: 0;
          }
        }
      }
    }

    .area:has(.area-body .area-img.selected) {
      pointer-events: none;
    }
  }

  .area-description {
    align-items: center;
    gap: 32px;
    padding: 64px var(--spacing-xxl) 64px var(--spacing-xxl);
    display: flex;
    flex-direction: column;
    position: relative;

    .area-header {
      display: flex;
      align-items: center;
      gap: var(--spacing-xxl);
      text-align: justify;
      letter-spacing: 1.6px;

      .area-logo img {
        width: 240px;
      }
    }

    .bar-area {
      width: 100%;

      .bar {
        height: 4px;
        background-color: var(--border-color);
      }
    }

    .area-body {
      width: 100%;
      display: flex;
      flex-direction: column;
      gap: 48px;
    }

    .spot {
      display: flex;
      align-items: center;
      gap: var(--spacing-xxl);
      text-align: justify;

      .spot-roma {
        color: var(--roma-font-color);
      }
    }

    .button-group {
      width: 100%;
      justify-content: center;
      display: flex;
      flex-wrap: wrap;
      gap: var(--spacing-md);
    }

    .button-link {
      width: auto;
    }

    .button-large {
      width: 400px;
      height: auto;
      padding: var(--spacing-sm);
    }
  }
}

@media screen and (max-width: 900px) {
  .area-introduction {
    margin-top: -96px;
  }
}

@media screen and (max-width: 834px) {
  .area-introduction .area-description .area-header {
    display: contents;
  }

  .area-introduction .area-description .area-header .area-logo img {
    width: 100%;
    max-width: 220px;
  }

  .area-introduction .area-description .spot {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }

  .area-introduction .area-description .spot-sp-reverse {
    width: 100%;
    display: flex;
    flex-direction: column-reverse;
    align-items: flex-start;
  }

  .area-introduction .area-description .spot .spot-img,
  .area-introduction .area-description .spot .spot-img img {
    width: 100%;
  }
}

@media screen and (max-width: 480px) {
  .area-introduction .area-description {
    padding: 64px var(--spacing-sm) 64px var(--spacing-sm);
  }

  .area-introduction .select-area .area .area-body .name {
    font-weight: normal;
  }
}

@media screen and (max-width: 570px) {
  .area-introduction {
    .select-area {
      .area {
        width: 33.3%;
        min-width: auto;

        .area-body {
          padding: var(--spacing-sm);

          .area-img.selected {
            img:nth-child(1) {
              border: 5px solid var(--border-color);
              box-sizing: border-box;
            }

            img:nth-child(2) {
              transition: 0 all;
              opacity: 0;
            }
          }
        }
      }
    }
  }

  .area-introduction .area-description .button-large {
    width: auto;
    max-width: 400px;
  }
}

/* 記事リスト */
.article-list {
  justify-content: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-md);
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
  margin: 0 auto;
  max-width: var(--container-max-width);

  .article {
    flex: 1 0 0%;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-xs);

    @media screen and (max-width: 480px) {
      flex: 100%;
    }

    .article-img {
      margin: var(--spacing-sm) 0;
      aspect-ratio: 3 / 2;
      display: flex;

      img {
        align-self: center;
      }
    }
  }
}

/* 装飾ラベル（セクション上部のおしゃれな英字テキスト） */
.section-label-decorated {
  text-align: center;
  margin-bottom: var(--spacing-sm);
}

.section-label-decorated .label-icon {
  display: block;
  font-size: 1.5rem;
  margin-bottom: 4px;
}

.section-label-decorated .label-text {
  font-family: 'Georgia', 'Times New Roman', serif;
  font-size: 1.1rem;
  font-style: italic;
  font-weight: 400;
  color: var(--title-font-color);
  letter-spacing: 2px;
  opacity: 0.8;
}

/* 旅の特集セクション背景色（薄い緑 - ハードコード） */
.featured-section {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

/* おすすめ商品セクション背景色（薄い青 - ハードコード） */
.product-section {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.travel-fetured {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;

  .article-list {
    .article {
      min-width: 280px;
      max-width: 330px;
    }
  }

  .button-area {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
}

/* バス・商品エリアセクション（おすすめ商品と同じ薄い青 - ハードコード） */
.bus-area-section {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.featured-experiences {
  background-color: rgba(246, 255, 239, 1) !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.bus-area-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  max-width: 1000px;
  margin: 0 auto;
}

.bus-area-card {
  text-align: center;
}

.bus-area-label {
  font-size: var(--font-size-sm);
  color: var(--font-color);
  margin-bottom: var(--spacing-sm);
}

.bus-area-link {
  text-decoration: none;
  color: inherit;
  display: block;
}

.bus-area-img {
  position: relative;
  border-radius: var(--corner-md-duplicate);
  overflow: hidden;
  aspect-ratio: 4 / 3;
}

.bus-area-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.bus-area-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  justify-content: center;
  padding: var(--spacing-md);
  gap: var(--spacing-xs);
}

.bus-area-tag {
  background: rgba(51, 51, 51, 0.85);
  color: #ffffff;
  padding: 4px 12px;
  font-size: var(--font-size-sm);
  font-weight: 700;
  border-radius: 4px;
}

.bus-area-name {
  font-size: var(--font-size-sm);
  font-weight: 700;
  color: var(--font-color);
  margin-top: var(--spacing-sm);
}

@media screen and (max-width: 768px) {
  .bus-area-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 480px) {
  .bus-area-grid {
    grid-template-columns: 1fr;
    max-width: 320px;
  }
}

/* スライダー */

.swiper {
  width: 100%;
}

.swiper-slide img {
  width: 100%;
  align-self: center;
}

.swiper.swiper.top-slider {
  --swiper-pagination-color: rgba(255, 255, 255, 1);
  --swiper-navigation-color: rgba(255, 255, 255, 0.75);
  --swiper-pagination-bullet-inactive-color: var(--swiper-pagination-color);
  --swiper-pagination-bullet-inactive-opacity: 0.5;
  --swiper-navigation-size: 32px;
}

.swiper.top-slider .swiper-slide {
  display: flex;
  justify-content: center;
  max-height: calc(100vh - var(--navbar-height));
}

.swiper-wrapper {
  line-height: 0;
}

.swiper.swiper-rounded {
  border-radius: 8px;
}

.swiper-button-prev.swiper-button-bottom,
.swiper-button-next.swiper-button-bottom {
  top: initial;
  bottom: 5%;
}

.swiper-button-prev.swiper-button-bottom {
  left: calc(50% - var(--swiper-customize-arrow-size) * 2);
}

.swiper-button-next.swiper-button-bottom {
  right: calc(50% - var(--swiper-customize-arrow-size) * 2);
}

.swiper-logo {
  position: absolute;
  z-index: 10;
  width: 485px;
  max-width: 70%;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
}

/* スライダー中央のテキストロゴ */
.swiper-logo-text {
  position: absolute;
  z-index: 10;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);

  .logo-discover {
    font-family: "Brush Script MT", "Segoe Script", cursive;
    font-size: 2rem;
    color: #fff;
    font-style: italic;
    letter-spacing: 0.1em;
  }

  .logo-region {
    font-family: "Brush Script MT", "Segoe Script", cursive;
    font-size: 4rem;
    color: #fff;
    font-weight: normal;
    letter-spacing: 0.05em;
  }

  @media screen and (max-width: 900px) {
    .logo-discover {
      font-size: 1.5rem;
    }
    .logo-region {
      font-size: 3rem;
    }
  }

  @media screen and (max-width: 480px) {
    .logo-discover {
      font-size: 1.2rem;
    }
    .logo-region {
      font-size: 2.5rem;
    }
  }
}

.swiper-catchphrase {
  position: absolute;
  top: 50%;
  left: 4rem;
  transform: translateY(-50%);
  z-index: 10;

  @media screen and (max-width: 1024px) {
    left: 2rem;
  }

  @media screen and (max-width: 480px) {
    left: 0.5rem;
  }
}

.catchphrase-body {
  display: inline-flex;
}

.catchphrase-body .catchphrase-text {
  writing-mode: vertical-rl;
  position: relative;
  color: white;
  font-size: var(--font-size-xl);
  letter-spacing: 3.2px;
  line-height: 3.5rem;
}

.bar-wrapper .bar-top,
.bar-wrapper .bar-bottom {
  width: 50%;
  height: 100%;
  background-color: white;
  margin-bottom: 1rem;
  margin-top: 1rem;
}

.bar-wrapper .bar-top {
  float: right;
}

.bar-wrapper .bar-bottom {
  float: left;
}

.bar-wrapper {
  width: 100%;
  height: 4px;
}

@media screen and (max-width: 1024px) {
  .catchphrase-body .catchphrase-text {
    font-size: var(--font-size-md);
    line-height: 2.5rem;
  }
}

@media screen and (max-width: 900px) {
  .swiper-logo {
    max-width: 35%;
  }
}

@media screen and (max-width: 480px) {
  .swiper-logo {
    max-width: 75%;
  }

  .swiper.top-slider {
    height: 85vh;
    width: 100%;
  }

  .swiper.top-slider .swiper-slide img {
    height: 100%;
    width: auto;
  }

  .swiper-catchphrase {
    top: 0.5rem;
    transform: translateY(0%);
  }

  .catchphrase-body .catchphrase-text {
    font-size: var(--font-size-md);
    letter-spacing: 6.4px;
    line-height: 3rem;
  }
}

/* タブ切り替え */
.area-tab-container {
  display: flex;
  flex-wrap: wrap;
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: 0 var(--spacing-md);
}

.area-tab-container .tab-header,
.area-tab-container .tab-footer {
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-xs);
  padding-left: var(--spacing-sm);
  padding-right: var(--spacing-sm);
  justify-content: center;
  width: 100%;
}

/* モバイルでの7タブ横スクロール対応 */
@media screen and (max-width: 720px) {
  .area-tab-container .tab-header,
  .area-tab-container .tab-footer {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    justify-content: flex-start;
    scrollbar-width: thin;
    padding-bottom: var(--spacing-sm);
  }

  .area-tab-container .tab-header .tab,
  .area-tab-container .tab-footer .tab {
    flex: 0 0 auto;
    min-width: 70px;
  }
}

.area-tab-container .tab-header .tab,
.area-tab-container .tab-footer .tab {
  flex: 1;
  min-width: 100px;
  max-width: 190px;
  text-align: center;
  cursor: pointer;
  padding: var(--spacing-sm);
  box-sizing: border-box;
  background: var(--btn-color);
  color: var(--btn-font-color);
  opacity: 0.5;
  transition: opacity 0.5s ease;
  display: flex;
  align-items: center;
  justify-content: center;
}

.area-tab-container .tab-header .tab {
  margin-bottom: 0;
}

.area-tab-container .tab-footer .tab {
  margin-top: 0;
}

.area-tab-container .tab-header .tab:hover,
.area-tab-container .tab-footer .tab:hover {
  opacity: 0.75;
}

.area-tab-container .tab-header .tab.active,
.area-tab-container .tab-footer .tab.active {
  cursor: default;
  opacity: 1;
}

.area-tab-container .tab-content {
  border: 4px solid var(--border-color);
  background-color: var(--bg-color-sub);
}

.area-tab-container .tab-content .content {
  display: none;
  box-sizing: border-box;
}

.area-tab-container .tab-content .content.active {
  display: block;
}

.area-tab-container .content {
  display: none;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.area-tab-container .content.active {
  display: block;
  opacity: 1;
}

/* エリアタブコンテナ内のエリア詳細スタイル */
.area-tab-container .area-description {
  align-items: center;
  gap: 32px;
  padding: 64px var(--spacing-xxl) 64px var(--spacing-xxl);
  display: flex;
  flex-direction: column;
  position: relative;
}

.area-tab-container .area-description .area-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-xxl);
  text-align: justify;
  letter-spacing: 1.6px;
}

.area-tab-container .area-description .area-header .area-logo img {
  width: 240px;
  border-radius: 8px;
}

.area-tab-container .area-description .bar-area {
  width: 100%;
}

.area-tab-container .area-description .bar-area .bar {
  height: 4px;
  background-color: var(--border-color);
}

.area-tab-container .area-description .area-body {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 48px;
}

.area-tab-container .area-description .spot {
  display: flex;
  align-items: center;
  gap: var(--spacing-xxl);
  text-align: justify;
}

.area-tab-container .area-description .spot .spot-roma {
  color: var(--roma-font-color);
}

.area-tab-container .area-description .spot .spot-content {
  flex: 1;
}

/* 体験カテゴリタグ */
.spot-category-tag {
  display: inline-block;
  background-color: var(--btn-color);
  color: var(--btn-font-color);
  padding: 2px 10px;
  border-radius: 3px;
  font-weight: 750;
  margin-bottom: var(--spacing-xs);
  letter-spacing: 0.05em;
}

/* 料金表示（統一フォーマット） */
.spot-price {
  color: var(--font-color);
  font-weight: 750;
  margin-top: var(--spacing-xs);
  padding: var(--spacing-xs) 0;
  border-top: 1px dashed var(--border-color-light-gray);
}

.area-tab-container .area-description .spot .spot-img {
  width: 320px;
  flex-shrink: 0;
  position: relative;
}

.area-tab-container .area-description .spot .spot-img img {
  width: 100%;
  height: auto;
}

/* 画像サムネイル右上の矢印アイコン */
.area-tab-container .area-description .spot .spot-img::after {
  content: '→';
  position: absolute;
  top: 8px;
  right: 8px;
  width: 28px;
  height: 28px;
  background: var(--btn-color);
  color: var(--btn-font-color);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.area-tab-container .area-description .spot:hover .spot-img::after {
  opacity: 1;
}

/* スポット画像の形状バリエーション（円形） */
.area-tab-container .area-description .spot .spot-img.spot-img-circle {
  width: 280px !important;
  height: 280px !important;
  border-radius: 50% !important;
  overflow: hidden !important;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12) !important;
  flex-shrink: 0 !important;
}

.area-tab-container .area-description .spot .spot-img.spot-img-circle img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  transition: 0.3s ease !important;
}

/* スポット画像の形状バリエーション（角丸） */
.area-tab-container .area-description .spot .spot-img.spot-img-rounded {
  width: 100% !important;
  max-width: 400px !important;
  border-radius: 24px !important;
  overflow: hidden !important;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12) !important;
  flex-shrink: 0 !important;
}

.area-tab-container .area-description .spot .spot-img.spot-img-rounded img {
  width: 100% !important;
  height: 280px !important;
  object-fit: cover !important;
  transition: 0.3s ease !important;
}

/* スポット画像ホバーエフェクト */
.area-tab-container .area-description .spot:hover .spot-img-circle img,
.area-tab-container .area-description .spot:hover .spot-img-rounded img {
  transform: scale(1.05) !important;
}

/* カードのクリッカブル表現強化 */
.area-tab-container .area-description .spot {
  cursor: pointer;
  transition: box-shadow 0.3s ease, transform 0.2s ease;
  border-radius: var(--corner-md-duplicate);
  padding: var(--spacing-md);
}

.area-tab-container .area-description .spot:hover {
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
  transform: translateY(-2px);
}

/* 「詳細をみる」リンク */
.spot-detail-link {
  margin-top: var(--spacing-sm);
}

.spot-detail-link a {
  color: var(--text-link-font-color);
  font-size: var(--font-size-sm);
  font-weight: 750;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-xs);
  transition: gap 0.2s ease;
}

.spot-detail-link a:hover {
  text-decoration: underline;
  gap: var(--spacing-sm);
}

.spot-detail-link .arrow {
  font-size: var(--font-size-base);
  transition: transform 0.2s ease;
}

.spot:hover .spot-detail-link .arrow {
  transform: translateX(4px);
}

.area-tab-container .area-description .button-group {
  width: 100%;
  justify-content: center;
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-md);
}

.area-tab-container .area-description .button-link {
  width: auto;
}

.area-tab-container .area-description .button-large {
  width: 400px;
  height: auto;
  padding: var(--spacing-sm);
}

/* エリアタブコンテナ レスポンシブ対応 */
@media screen and (max-width: 834px) {
  .area-tab-container .area-description .area-header {
    display: contents;
  }

  .area-tab-container .area-description .area-header .area-logo img {
    width: 100%;
    max-width: 220px;
    border-radius: 8px;
  }

  .area-tab-container .area-description .spot {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
  }

  .area-tab-container .area-description .spot-sp-reverse {
    width: 100%;
    display: flex;
    flex-direction: column-reverse;
    align-items: flex-start;
  }

  .area-tab-container .area-description .spot .spot-img,
  .area-tab-container .area-description .spot .spot-img img {
    width: 100%;
  }

  .area-tab-container .area-description .spot .spot-img.spot-img-circle {
    width: 220px !important;
    height: 220px !important;
    margin: 0 auto !important;
  }

  .area-tab-container .area-description .spot .spot-img.spot-img-rounded {
    max-width: 100% !important;
  }

  .area-tab-container .area-description .spot .spot-img.spot-img-rounded img {
    height: 220px !important;
  }
}

@media screen and (max-width: 480px) {
  .area-tab-container .area-description {
    padding: 64px var(--spacing-sm) 64px var(--spacing-sm);
  }

  .area-tab-container .area-description .button-large {
    width: 100%;
    max-width: 400px;
  }
}

/* おすすめ商品セクション（本番サイト準拠：3列グリッド） */
.product-section {
  background-color: var(--bg-color-sub);
}

.product-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  padding: var(--spacing-xl) 0;
  max-width: var(--container-max-width);
  margin: 0 auto;
}

@media screen and (max-width: 900px) {
  .product-list {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 600px) {
  .product-list {
    grid-template-columns: 1fr;
  }
}

.product {
  display: flex;
  flex-direction: column;
  background-color: white;
  border-radius: var(--corner-md-duplicate);
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.product:hover {
  transform: translateY(-4px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15);
}

.product .product-img {
  aspect-ratio: 16 / 9;
  overflow: hidden;
}

.product .product-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.product .product-content {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
  padding: var(--spacing-md);
  flex: 1;
}

.product .product-name {
  color: var(--title-font-color);
  line-height: 1.4;
}

.product .product-desc {
  color: var(--font-color);
  line-height: 1.6;
  flex: 1;
}

.product .button-link {
  margin-top: auto;
  width: 100%;
}

/* 観光情報バナーセクション */
.tourism-info-section {
  background-color: #ffffff !important;
  padding: var(--spacing-xl) 0px var(--spacing-xl) 0px;
}

.tourism-info-banner {
  max-width: 800px;
  margin: var(--spacing-lg) auto 0;
  text-align: center;
}

.tourism-info-banner img {
  width: 100%;
  height: auto;
  border-radius: var(--corner-md-duplicate);
}

.tourism-info-banner a {
  display: block;
  text-decoration: none;
}

/* 予約サイトセクション（不要 - 生成禁止） */

/* ========================================
   セクションヘッダー（装飾付き）
   ======================================== */
/* ja-JPテンプレ準拠: セクションヘッダー装飾（エリア紹介・アクティビティ・モデルコース共通） */
.section-header-decorated {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px; /* ja-JP: --spacing-md = 16px */
  margin: var(--spacing-xl) 0 var(--spacing-md) 0 !important;
  letter-spacing: 2.28px;
  color: rgba(6, 172, 93, 1);
}

.decoration-left,
.decoration-right {
  font-size: 2rem !important; /* ja-JP: --font-size-xxl = 2rem */
  color: rgba(6, 172, 93, 1) !important;
  font-weight: 750;
  letter-spacing: 2.28px;
}

.section-title-text {
  font-size: 2rem !important; /* ja-JP: --font-size-xxl = 2rem */
  font-weight: 750; /* ja-JP準拠 */
  color: rgba(6, 172, 93, 1) !important;
  letter-spacing: 2.28px;
  margin: 0;
}

@media screen and (max-width: 1024px) {
  .section-title-text,
  .decoration-left,
  .decoration-right {
    font-size: 1.75rem !important; /* ja-JP tablet: --font-size-xxl = 1.75rem */
  }
}

/* ========================================
   モデルコースセクション
   既存の変数名を使用：
   --btn-color (グリーン), --bg-color-main (白), --bg-color-sub (薄グリーン)
   --font-color (黒), --title-font-color (グリーン), --border-color (グリーン)
   ======================================== */
.courses-section {
  padding: var(--spacing-xxxl) 0;
  background: #ffffff !important;
}

.courses-intro {
  text-align: center;
  font-size: var(--font-size-sm);
  line-height: 2;
  color: #666666;
  margin-bottom: var(--spacing-xl) !important;
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}

.course-tabs {
  display: flex;
  justify-content: center;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-xxl);
  flex-wrap: wrap;
}

.course-tab {
  display: flex;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-items: baseline !important;
  padding: var(--spacing-xl) var(--spacing-xxl) !important;
  background: rgba(246, 255, 239, 1) !important;
  border: 2px solid rgba(6, 172, 93, 1) !important;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.2s ease;
  min-width: 280px !important;
  flex: 1 !important;
  max-width: 320px !important;
  color: rgba(6, 172, 93, 1) !important;
}

.course-tab:hover,
.course-tab.active {
  background: rgba(246, 255, 239, 1) !important;
  color: rgba(6, 172, 93, 1) !important;
}

.course-tab-label {
  font-size: var(--font-size-sm) !important;
  letter-spacing: 0.15em;
}

.course-tab-name {
  font-size: 3rem !important;
  font-weight: 700;
  line-height: 1.2 !important;
  margin-left: 0.2em !important;
}

.course-tab-desc {
  font-size: var(--font-size-sm) !important;
  text-align: center;
  margin-top: var(--spacing-sm);
  color: #333333 !important;
  font-weight: 700 !important;
  line-height: 1.6 !important;
  width: 100% !important;
}

.course-panels {
  background: #ffffff !important;
  border-radius: 16px;
  padding: var(--spacing-xxl);
}

.course-panel {
  display: none;
}

.course-panel.active {
  display: block;
}

.course-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-lg);
  padding-bottom: var(--spacing-lg) !important;
  border-bottom: 1px solid rgba(200, 200, 200, 1) !important;
}

.course-badge {
  width: 40px;
  height: 40px;
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: var(--font-size-lg);
}

.course-title {
  font-size: var(--font-size-xl);
  font-weight: 700;
  color: var(--font-color);
  line-height: 1.3;
}

.course-meta {
  display: flex;
  gap: var(--spacing-lg);
  margin-bottom: var(--spacing-xl);
  font-size: var(--font-size-sm);
  color: #666666;
}

.course-duration {
  font-weight: 500;
  color: rgba(6, 172, 93, 1) !important;
}

.course-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--spacing-xxl);
}

.course-map {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
}

.course-map img {
  width: 100%;
  height: 300px;
  object-fit: cover;
}

/* route-points / route-point は不要（使用しない） */

.course-schedule {
  background: #ffffff !important;
  border-radius: 8px;
  padding: var(--spacing-lg);
}

.schedule-summary {
  margin-bottom: var(--spacing-lg);
  padding-bottom: var(--spacing-lg);
  border-bottom: 1px solid #333333 !important;
}

/* 旅程概要 h4（.schedule-summary の外） */
.course-schedule > h4 {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: var(--font-color);
  padding-bottom: var(--spacing-sm) !important;
  border-bottom: 1px solid #333333 !important;
  margin-bottom: var(--spacing-lg) !important;
}

.schedule-summary h4 {
  font-size: var(--font-size-md);
  font-weight: 700;
  color: var(--font-color);
  margin-bottom: var(--spacing-sm);
  padding-bottom: var(--spacing-sm) !important;
  border-bottom: 1px solid #333333 !important;
}

/* スクロールなし - 全日程を表示 */
.schedule-days {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-lg);
}

.schedule-day {
  border-left: none !important;
  padding-left: 0 !important;
}

.day-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  margin-bottom: var(--spacing-sm);
}

.day-label {
  font-weight: 700;
  color: rgba(6, 172, 93, 1) !important;
  font-size: var(--font-size-sm);
}

.day-time {
  font-size: var(--font-size-xs);
  color: #666666;
}

.day-spots {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}

.day-spots li {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  font-size: var(--font-size-sm);
}

.spot-icon {
  width: 20px;
  height: 20px;
  background: #EEEEEE;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.spot-icon.bus::before { content: '🚌'; font-size: 12px; }
.spot-icon.stay::before { content: '🏨'; font-size: 12px; }
.spot-icon.lunch::before { content: '🍽️'; font-size: 12px; }
.spot-icon.sightseeing::before { content: '📍'; font-size: 12px; }

.spot-reserve {
  margin-left: auto;
  padding: var(--spacing-xs) var(--spacing-sm);
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
  border-radius: 4px;
  font-size: var(--font-size-xs);
  text-decoration: none;
}

.spot-reserve:hover {
  opacity: 0.8;
}

.course-image {
  margin-top: var(--spacing-xl);
  border-radius: 16px;
  overflow: hidden;
}

.course-image img {
  width: 100%;
  height: 300px;
  object-fit: cover;
}

.course-placeholder {
  text-align: center;
  padding: var(--spacing-xxl);
  color: #666666;
}

/* コースビジュアル（マップ+写真の左カラム） */
.course-visual {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-lg);
}

.course-photo {
  border-radius: 16px;
  overflow: hidden;
}

.course-photo img {
  width: 100%;
  height: 250px;
  object-fit: cover;
}

/* 日時情報 */
.day-time-info {
  font-size: var(--font-size-xs);
  color: #666666;
  margin-bottom: var(--spacing-sm);
}

/* 詳細をみるボタン */
.btn-detail {
  display: inline-block;
  margin-top: var(--spacing-xl);
  padding: var(--spacing-sm) var(--spacing-xl);
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
  border-radius: 8px;
  text-decoration: none;
  font-weight: 700;
  text-align: center;
}

.btn-detail:hover {
  opacity: 0.8;
}

/* スクロールヒント（コースタブ下） */
.course-scroll-hint {
  color: #999;
  margin: var(--spacing-sm) 0;
  animation: bounce-hint 2s ease-in-out infinite;
}

@keyframes bounce-hint {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(4px); }
}

/* モデルコースCTAボタン統一（公式HP ↗） */
.course-cta-area {
  text-align: center;
  margin-top: var(--spacing-lg);
  padding-top: var(--spacing-md);
}

.btn-course-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 240px;
  height: 48px;
  padding: 0 24px;
  font-size: var(--font-size-base);
  font-weight: 700;
  border-radius: 8px;
  text-decoration: none;
  background: rgba(6, 172, 93, 1) !important;
  color: #ffffff !important;
}

.btn-course-cta:hover {
  opacity: 0.8;
}

/* モデルコース レスポンシブ対応 */
@media screen and (max-width: 900px) {
  .course-content {
    grid-template-columns: 1fr;
  }

  .course-tabs {
    flex-direction: column;
    align-items: center;
  }

  .course-tab {
    width: 100%;
    max-width: 300px;
  }
}

@media screen and (max-width: 480px) {
  .courses-section {
    padding: var(--spacing-xl) 0;
  }

  .course-tab {
    min-width: unset !important;
    max-width: 100% !important;
    width: 100% !important;
    padding: var(--spacing-md) var(--spacing-lg) !important;
    box-sizing: border-box;
  }

  .course-panels {
    padding: var(--spacing-lg);
  }

  .course-meta {
    flex-direction: column;
    gap: var(--spacing-sm);
  }
}

/* ========================================
   しらはまコンシェルジュ固有スタイル
   ======================================== */

/* トップタイトル画像セクション - ヘッダー固定分のオフセット */
.top-slider-area {
  margin-top: var(--navbar-height);
}

/* トップタイトル画像 */
.top-title-image {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.top-title-image img {
  width: 100%;
  height: auto;
  display: block;
}

/* コンシェルジュ説明文セクション */
.concierge-description {
  background-color: var(--bg-color-main);
  padding: var(--spacing-xl) var(--spacing-md);
}

.concierge-description .description-content {
  max-width: 800px;
  margin: 0 auto;
}

.concierge-description p {
  font-size: var(--font-size-base);
  line-height: 2;
  color: var(--font-color);
}

/* 🚨 Facebook誘導文のリンクスタイル: 一目でリンクとわかるよう青文字＋下線で明示 */
.concierge-facebook-link {
  margin-top: var(--spacing-md);
  font-size: var(--font-size-base);
}

.concierge-facebook-link a {
  color: #1976d2; /* Material Blue 700: アクセシビリティ基準 (WCAG AA) を満たすコントラスト */
  text-decoration: underline;
  text-underline-offset: 0.15em;
  font-weight: 500;
}

.concierge-facebook-link a:hover,
.concierge-facebook-link a:focus {
  color: #0d47a1; /* Material Blue 900: hover時にさらに濃く */
  text-decoration-thickness: 2px;
}

@media screen and (max-width: 480px) {
  .concierge-description p {
    font-size: var(--font-size-sm);
    line-height: 1.8;
  }

  .concierge-description p br {
    display: none;
  }

  .concierge-facebook-link {
    font-size: var(--font-size-sm);
  }
}

/* エリア・観光スポット セクションの中央揃え修正 */
.area-tab-container .section-header {
  width: 100%;
}

/* セクションタイトルのレイアウト修正 - テキストを上に配置 */
.section-header .title {
  flex-wrap: wrap;
  justify-content: center;
}

.section-header .title > div.text-center {
  order: -1;
  width: 100%;
  margin-bottom: var(--spacing-sm);
}

/* 装飾画像を非表示（コンテンツ画像があるため不要） */
.section-header .title > div:not(.text-center) {
  display: none;
}

/* セクション説明文（本番サイト準拠） */
.section-header .section-description {
  text-align: center;
  font-size: var(--font-size-sm);
  color: var(--font-color);
  line-height: 1.8;
  margin-top: var(--spacing-sm);
  max-width: 700px;
  margin-left: auto;
  margin-right: auto;
}

/* ============================================
   LP改善 追加CSS（2026-04-16）
   ============================================ */

/* --- フォントファミリー: Noto Sans JP（Webフォント）統一 ---
   🚨 本文の見た目はNoto Sans JPを軸に、見出しのみ Zen Maru Gothic（丸み）を許容。
   フォントのオーバーライドは body と上記ヘッディング系セレクタのみ。
   見た目の差は font-weight / font-size / letter-spacing / color で表現する。 */
body {
  font-family: "Noto Sans JP", "BIZ UDPGothic", "Hiragino Sans", "Hiragino Sans-W4",
    "Hiragino Kaku Gothic ProN", "Yu Gothic UI", "Yu Gothic", "Meiryo",
    "-apple-system", "Segoe UI", "Roboto", "Helvetica Neue", sans-serif,
    "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* --- ヒーローカルーセル --- */
.hero-carousel {
  width: 100%;
  overflow: hidden;
}

/* 🚨 Swiper初期化前のFOUC（3スライドのキャプションが瞬間的に重なる）を防止
   未初期化時は1枚目のスライドのみ表示し、それ以外は非表示にする */
.hero-carousel:not(.swiper-initialized) .swiper-wrapper {
  display: block;
}
.hero-carousel:not(.swiper-initialized) .swiper-slide {
  display: none;
}
.hero-carousel:not(.swiper-initialized) .swiper-slide:first-child {
  display: block;
}

.hero-slide {
  position: relative;
  width: 100%;
}

.hero-slide img {
  width: 100%;
  height: 60vh;
  object-fit: cover;
  display: block;
}

.hero-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(transparent, rgba(0, 0, 0, 0.5));
  padding: var(--spacing-lg) var(--spacing-md);
}

.hero-caption-text {
  color: #fff;
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
  margin: 0;
  line-height: 1.4;
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* 🚨 モバイルでヒーロー画像が縮む際の文字重なり対策: キャプション文字をさらに圧縮 */
@media screen and (max-width: 480px) {
  .hero-caption {
    padding: var(--spacing-md) var(--spacing-sm);
  }
  .hero-caption-text.font-lg {
    font-size: 1.05rem;
    line-height: 1.35;
  }
}

.hero-title-section {
  text-align: center;
  padding: var(--spacing-xl) var(--spacing-md);
  background-color: var(--bg-color-main);
}

.hero-main-title {
  color: var(--title-font-color);
  margin-bottom: var(--spacing-sm);
}

.hero-subtitle {
  color: var(--font-color);
}

/* --- AI生成免責文言（ヒーロー直下・固定文言） --- */
.hero-ai-disclaimer {
  max-width: 720px;
  margin: var(--spacing-md) auto 0;
  padding: 14px 18px;
  color: #7a4a12;
  line-height: 1.7;
  text-align: center;
  background: #fff7ed;
  border: 1px solid #f6ce96;
  border-radius: 10px;
}

/* --- アクセス・交通情報セクション（固定文言） --- */
/* --- パンフレットダウンロードセクション (#brochure) --- */
.brochure-section {
  background-color: var(--bg-color-sub);
}

.brochure-intro {
  color: var(--font-color);
  line-height: 1.8;
  margin: 0 auto var(--spacing-lg);
  max-width: 720px;
}

.brochure-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--spacing-lg);
  max-width: 900px;
  margin: 0 auto var(--spacing-lg);
}

@media screen and (max-width: 768px) {
  .brochure-grid {
    grid-template-columns: 1fr;
  }
}

.brochure-card {
  display: flex;
  flex-direction: column;
  background: var(--bg-color-main);
  border: 1px solid var(--border-color-light-gray);
  border-radius: 12px;
  overflow: hidden;
  text-decoration: none;
  color: var(--font-color);
  transition: transform 0.2s cubic-bezier(.22,1,.36,1), box-shadow 0.2s;
}

.brochure-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.11);
}

.brochure-thumb {
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--border-color-light-gray);
}

.brochure-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.brochure-info {
  padding: var(--spacing-md);
  display: flex;
  flex-direction: column;
  gap: var(--spacing-sm);
}

.brochure-title {
  margin: 0;
  color: var(--title-font-color);
  line-height: 1.4;
}

.brochure-desc {
  margin: 0;
  color: var(--font-color);
  line-height: 1.6;
}

.brochure-download-btn {
  display: inline-block;
  padding: 8px 16px;
  background: var(--btn-color);
  color: var(--btn-font-color);
  border-radius: 6px;
  font-size: var(--font-size-sm);
  font-weight: 700;
  text-align: center;
  align-self: flex-start;
  transition: background 0.2s;
}

.brochure-card:hover .brochure-download-btn {
  background: var(--btn-hover-font-color);
  opacity: 0.9;
}

.brochure-source {
  text-align: center;
  margin-top: var(--spacing-md);
  color: #6b7f8a;
}

.brochure-source a {
  color: var(--text-link-font-color);
  text-decoration: underline;
}

.access-section {
  background-color: var(--bg-color-main);
}

.access-list {
  max-width: 860px;
  margin: var(--spacing-lg) auto 0;
  display: flex;
  flex-direction: column;
  gap: var(--spacing-xl);
}

.access-item {
  padding: var(--spacing-md) 0;
  border-bottom: 1px solid var(--border-color-light-gray);
}

.access-item:last-child {
  border-bottom: none;
}

.access-item-title {
  color: var(--title-font-color);
  margin: 0 0 var(--spacing-sm) 0;
  letter-spacing: 0.04em;
}

.access-item-text {
  color: var(--font-color);
  line-height: 1.9;
  letter-spacing: 0.02em;
  margin: 0;
}

.access-detail-link {
  display: flex;
  justify-content: center;
  margin-top: var(--spacing-xl);
}

/* --- フッター: 2ブロック構成の連絡先 --- */
.footer-contact-block {
  margin-bottom: var(--spacing-lg);
}

.footer-contact-heading {
  margin-bottom: var(--spacing-sm);
  color: var(--footer-font-color);
  letter-spacing: 0.08em;
}

.footer-contact-block:not(:last-child) {
  padding-bottom: var(--spacing-md);
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

/* --- コンシェルジュ紹介（統合版・1セクションのみ）の補助スタイル --- */
/* 🚫 .site-introduction / .area-map-pins / .area-pin は使用しない（2セクション併置とピン列はデザイン変更で廃止） */
.concierge-description .section-header {
  margin-bottom: var(--spacing-md);
}

.concierge-description .description-content {
  max-width: 800px;
  margin: 0 auto var(--spacing-lg);
  text-align: center;
}

/* --- エリアマップ（コンシェルジュセクション内に配置） --- */
.area-map-section {
  margin-top: var(--spacing-lg);
  text-align: center;
}

.area-map-image {
  max-width: 700px;
  margin: var(--spacing-md) auto;
}

.area-map-image img {
  width: 100%;
  border-radius: 12px;
}

.area-map-description {
  max-width: 700px;
  margin: var(--spacing-md) auto 0;
  text-align: center;
  line-height: 1.8;
}

/* --- 代表スポットグリッド --- */
.area-featured-spots {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--spacing-lg);
  margin: var(--spacing-lg) 0;
}

.featured-spot {
  text-align: center;
}

.featured-spot-img img {
  width: 100%;
  height: 180px;
  object-fit: cover;
  border-radius: 8px;
}

.featured-spot-credit {
  margin-top: 0.25rem;
  font-size: var(--font-size-xs);
  color: var(--font-color-muted, #777);
  text-align: right;
  line-height: 1.4;
}

/* 🚨 クレジットが省略されている featured-spot の info 開始位置を、クレジット有のものと揃えるための補正
   セレクタは「.featured-spot-img の直後に .featured-spot-info が来る」場合のみマッチ（=クレジット非表示時）
   padding-top を使う理由: 内側 h4 の margin-top と margin collapse しないようにするため */
.featured-spot-img + .featured-spot-info {
  padding-top: calc(var(--font-size-xs) * 1.4 + 0.25rem);
}

/* 🚨 ヒーローカルーセル直下の出典表示（3スライド共通） */
.hero-carousel-credit {
  margin: 0.4rem 1rem 0;
  font-size: var(--font-size-xs);
  color: var(--font-color-muted, #777);
  text-align: right;
  line-height: 1.4;
}

/* 🚨 各エリアの area-logo 画像直下の出典表示 */
.area-logo-credit {
  margin: 0.25rem 0 0;
  font-size: var(--font-size-xs);
  color: var(--font-color-muted, #777);
  text-align: right;
  line-height: 1.4;
}

.featured-spot-info h4 {
  margin-top: var(--spacing-sm);
  color: var(--title-font-color);
}

.featured-spot-info p {
  margin-top: var(--spacing-xs);
  line-height: 1.6;
}

.area-activities-link {
  text-align: center;
  margin: var(--spacing-lg) 0;
}

/* --- アクティビティセクション（リッチカード形式） --- */
.activities-section {
  background-color: var(--bg-color-sub);
  padding: 36px 0 80px;
}

.activities-area-tabs {
  display: flex;
  justify-content: center;
  gap: var(--spacing-sm);
  margin-bottom: var(--spacing-xl);
  flex-wrap: wrap;
}

.activities-tab {
  padding: 8px 20px;
  border: 2px solid var(--border-color);
  border-radius: 24px;
  cursor: pointer;
  font-size: var(--font-size-sm);
  font-weight: 700;
  transition: all 0.2s ease;
  color: var(--title-font-color);
  background: transparent;
}

.activities-tab.active,
.activities-tab:hover {
  background-color: var(--btn-color);
  color: var(--btn-font-color);
  border-color: var(--btn-color);
}

.activities-area-content {
  display: none;
}

.activities-area-content.active {
  display: block;
}

/* エリアヘッダー（Area 01 / 白浜エリア / --- / 10件） */
.act-area-heading {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}

.act-area-label {
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #6b7f8a;
}

.act-area-name {
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 20px;
  font-weight: 600;
}

.act-area-line {
  flex: 1;
  height: 1px;
  background: var(--border-color-light-gray);
}

.act-area-count {
  font-size: 12px;
  color: #6b7f8a;
}

/* カードグリッド: 3列固定、カード高さ独立 */
.activity-card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  align-items: start;
}

/* カード本体 */
.activity-card {
  background: #fff;
  border-radius: 12px;
  border: 1px solid var(--border-color-light-gray);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  cursor: pointer;
  transition: transform 0.2s cubic-bezier(.22,1,.36,1), box-shadow 0.2s;
  animation: actFadeUp 0.35s both;
}

.activity-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.11);
}

@keyframes actFadeUp {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

.activity-card-grid .activity-card:nth-child(1) { animation-delay: .04s; }
.activity-card-grid .activity-card:nth-child(2) { animation-delay: .08s; }
.activity-card-grid .activity-card:nth-child(3) { animation-delay: .12s; }
.activity-card-grid .activity-card:nth-child(4) { animation-delay: .16s; }
.activity-card-grid .activity-card:nth-child(5) { animation-delay: .20s; }
.activity-card-grid .activity-card:nth-child(6) { animation-delay: .24s; }

/* カード画像エリア */
.activity-card-img {
  position: relative;
  width: 100%;
  height: 170px;
  overflow: hidden;
  flex-shrink: 0;
}

.activity-card-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 画像プレースホルダー（写真がない場合） */
.card-img-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
}

.card-img-icon {
  font-size: 32px;
  opacity: 0.4;
}

.card-img-hint {
  font-size: 10px;
  color: #6b7f8a;
  opacity: 0.65;
}

/* バッジ（予約方法） */
.badge-wrap {
  position: absolute;
  top: 9px;
  left: 9px;
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
}

.badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 100px;
}

.badge-today {
  background: var(--btn-color);
  color: #fff;
}

.badge-prev {
  background: rgba(0, 0, 0, 0.52);
  color: #fff;
}

/* 🎁 特典バッジ（★特典 の体験に付与） */
.badge-coupon {
  background: #f59e0b;
  color: #fff;
}

/* 通し番号 */
.card-num {
  position: absolute;
  bottom: 8px;
  right: 10px;
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 32px;
  font-weight: 750;
  color: rgba(255, 255, 255, 0.88);
  line-height: 1;
  text-shadow: 0 2px 6px rgba(0, 0, 0, 0.28);
}

/* カードボディ */
.activity-card-body {
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.activity-card-provider {
  font-size: 14px;
  color: #6b7f8a;
  font-weight: 500;
}

.activity-card-title {
  /* font-family は body から継承（Hiragino Sans統一） */
  font-size: 15px;
  font-weight: 700;
  line-height: 1.4;
  color: var(--font-color);
  margin: 0;
}

/* 🎯 PR（キャッチコピー）— タイトル直下の副題 */
.activity-card-subtitle {
  font-size: 14px;
  color: #6b7f8a;
  line-height: 1.5;
  margin: 2px 0 4px;
  font-weight: 400;
}

/* カテゴリタグ */
.activity-card-tags {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.act-tag {
  font-size: 13px;
  padding: 2px 7px;
  border-radius: 4px;
  font-weight: 500;
}

.act-tag-marine {
  background: rgba(6, 172, 93, 0.1);
  color: var(--title-font-color);
}

.act-tag-craft {
  background: rgba(74, 124, 89, 0.1);
  color: #4a7c59;
}

.act-tag-food {
  background: #fff4e5;
  color: #9a5a00;
}

.act-tag-nature {
  background: rgba(6, 172, 93, 0.08);
  color: #2e6b47;
}

.act-tag-culture {
  background: #f0ecf8;
  color: #5a3a8a;
}

.act-tag-animal {
  background: #e8f4f8;
  color: #1a6b8a;
}

.act-tag-harvest {
  background: #fff4e5;
  color: #9a5a00;
}

/* 料金表示 */
.card-price-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  column-gap: 6px;
  row-gap: 2px;
}

/* 価格ペア（price-main + price-unit）を atomic にしてレイアウト崩れを防止 */
.price-group {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  white-space: nowrap;
}

.price-separator {
  color: #b0b0b0;
  font-weight: 600;
}

.price-main {
  /* font-family は body から継承 */
  font-size: 20px;
  font-weight: 750;
  color: #E8927C;
  white-space: nowrap;
}

.price-unit {
  font-size: 13px;
  color: #6b7f8a;
  white-space: nowrap;
}

.price-child {
  font-size: 13px;
  color: #6b7f8a;
}

/* メタ情報 */
.activity-card-meta {
  border-top: 1px solid var(--border-color-light-gray);
  padding-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.activity-card-meta .meta-item {
  display: flex;
  align-items: flex-start;
  gap: 5px;
}

.activity-card-meta .meta-icon {
  font-size: 14px;
  opacity: 0.55;
  margin-top: 2px;
  flex-shrink: 0;
}

.activity-card-meta .meta-text {
  font-size: 14px;
  color: var(--font-color);
  line-height: 1.35;
}

.activity-card-meta .meta-text small {
  display: block;
  font-size: 13px;
  color: #6b7f8a;
}

/* 予約方法チップ */
.booking-chip {
  display: inline-flex;
  align-items: center;
  font-size: 12px;
  padding: 1px 7px;
  border-radius: 4px;
  font-weight: 600;
}

.booking-today {
  background: rgba(6, 172, 93, 0.1);
  color: var(--title-font-color);
  border: 1px solid rgba(6, 172, 93, 0.3);
}

.booking-prev {
  background: rgba(0, 0, 0, 0.05);
  color: #555;
  border: 1px solid rgba(0, 0, 0, 0.15);
}

/* 注意事項 */
.activity-card-note {
  font-size: 14px;
  color: #6b7f8a;
  line-height: 1.55;
  padding: 5px 7px;
  background: var(--bg-color-sub);
  border-radius: 5px;
}

/* カードフッター */
.activity-card-footer {
  margin-top: auto;
  padding: 8px 14px;
  background: var(--bg-color-sub);
  border-top: 1px solid var(--border-color-light-gray);
  display: flex;
  align-items: center;
  gap: 8px;
}

.activity-card-footer .footer-access {
  font-size: 14px;
  color: #6b7f8a;
  flex: 1;
  line-height: 1.45;
}

.activity-card-footer .footer-access strong {
  color: var(--font-color);
}

.btn-official {
  font-size: 13px;
  font-weight: 700;
  padding: 6px 12px;
  background: var(--btn-color);
  color: #fff;
  border: none;
  border-radius: 7px;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background 0.15s;
}

.btn-official:hover {
  opacity: 0.8;
}

.btn-official::after {
  content: ' →';
}

/* --- CTA外部リンクボタン統一 --- */
.cta-external {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 200px;
  padding: 12px 24px;
  font-size: var(--font-size-sm);
  text-decoration: none;
}

/* 外部リンク矢印アイコン（SVGマスク方式・currentColorを継承） */
.external-icon {
  display: inline-block;
  width: 0.95em;
  height: 0.95em;
  background-color: currentColor;
  -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M7 17 17 7'/><path d='M9 7h8v8'/></svg>");
  mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><path d='M7 17 17 7'/><path d='M9 7h8v8'/></svg>");
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  vertical-align: -0.12em;
  margin-left: 0.2em;
  flex-shrink: 0;
}

/* --- フッター法的情報 --- */
.footer-legal {
  border-top: 1px solid rgba(255, 255, 255, 0.3);
  padding: var(--spacing-md) 0;
  text-align: center;
}

.legal-links {
  margin-bottom: var(--spacing-xs);
}

.legal-links a {
  color: var(--footer-font-color);
  text-decoration: underline;
}

.legal-separator {
  margin: 0 var(--spacing-sm);
  color: var(--footer-font-color);
  opacity: 0.5;
}

.disclaimer-note {
  color: var(--footer-font-color);
  opacity: 0.7;
}

.footer-logo img {
  max-height: 48px;
  width: auto;
  margin-bottom: var(--spacing-sm);
}

/* --- サイトロゴアイコン --- */
.site-logo-icon {
  vertical-align: middle;
  margin-right: 4px;
}

/* --- セクションサブタイトル --- */
.section-subtitle {
  color: var(--font-color);
  opacity: 0.6;
  margin-top: var(--spacing-xs);
  margin-bottom: var(--spacing-lg);
}

/* --- レスポンシブ対応 --- */
@media screen and (max-width: 900px) {
  .activity-card-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media screen and (max-width: 560px) {
  .activity-card-grid {
    grid-template-columns: 1fr;
  }

  .activities-section {
    padding: 20px 0 60px;
  }
}

@media screen and (max-width: 720px) {
  .area-featured-spots {
    grid-template-columns: 1fr;
    gap: var(--spacing-md);
  }

  .featured-spot-img img {
    height: 200px;
  }
}

@media screen and (max-width: 480px) {
  .hero-slide img {
    height: 40vh;
  }

  .activities-area-tabs {
    gap: var(--spacing-xs);
  }

  .activities-tab {
    padding: 6px 14px;
    font-size: var(--font-size-xs);
  }
}

/* LLM追加スタイル */

@media screen and (max-width: 1024px) {
      :root {
        --font-size-xxs: 0.6rem;
        --font-size-xs: 0.7rem;
        --font-size-sm: 0.85rem;
        --font-size-base: 1rem;
        --font-size-md: 1rem;
        --font-size-lg: 1.25rem;
        --font-size-xl: 1.5rem;
        --font-size-xxl: 1.75rem;
        --font-size-xxxl: 2.5rem;
      }
    }

    @media screen and (max-width: 480px) {
      :root {
        --font-size-xxs: 0.6rem;
        --font-size-xs: 0.7rem;
        --font-size-sm: 0.85rem;
        --font-size-base: 1rem;
        --font-size-md: 1rem;
        --font-size-lg: 1.15rem;
        --font-size-xl: 1.3rem;
        --font-size-xxl: 1.45rem;
        --font-size-xxxl: 1.6rem;
      }
    }
/* 🎯 縦長画像はトリミングせず全体を表示（横長枠での中央クロップによる「何の写真か分からない」問題の対策） */
/* 対象: featured-spot / activity-card / course-photo 内の縦長写真（HTML側で .img-fit-contain を付与） */
.img-fit-contain {
  object-fit: contain !important;
  background-color: #f2f4f5;
}

/* 🕑 前日予約 AM/PM 区分（紙版しらはまコンシェルジュ準拠: 前日午前中=ピンク / 前日午後=オレンジ） */
/* 画像オーバーレイバッジ */
.badge-prev-pm { background: #e8852f; color: #fff; }
.badge-prev-am { background: #db5f95; color: #fff; }
/* メタ情報チップ */
.booking-prev-pm { background: rgba(232, 133, 47, 0.12); color: #b9621a; border: 1px solid rgba(232, 133, 47, 0.45); }
.booking-prev-am { background: rgba(219, 95, 149, 0.12); color: #b03268; border: 1px solid rgba(219, 95, 149, 0.45); }

/* 🏷️ アクティビティ凡例（バッジの意味） */
.activities-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 18px;
  justify-content: center;
  align-items: center;
  max-width: 920px;
  margin: 4px auto 24px;
  padding: 12px 18px;
  background: var(--bg-color-sub);
  border-radius: 10px;
  font-size: 13px;
  color: var(--font-color);
}
.activities-legend .leg-item { display: inline-flex; align-items: center; gap: 6px; }

/* 🎁 特典の受け取り方法（脚注） */
.activities-coupon-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  max-width: 920px;
  margin: 24px auto 0;
  padding: 14px 18px;
  background: #fff7ed;
  border: 1px solid #f6ce96;
  border-radius: 10px;
  font-size: 13px;
  line-height: 1.7;
  color: #7a4a12;
}
.activities-coupon-note .badge { flex-shrink: 0; margin-top: 1px; }

/* 📄 パンフレット: 1冊統合カード（中央寄せ） */
.brochure-grid { grid-template-columns: 1fr; max-width: 460px; }

/* 🪄 エリア紹介の紹介文: 字余り（最終行の孤立文字）対策＋日本語の自然な改行
   ※ word-break:auto-phrase … 文節（自然な意味の区切り）で折返し、語中での分断を回避
   ※ text-wrap:pretty … 最終行の孤立を抑制
   レスポンシブでも崩れず、未対応ブラウザは通常折返しにフォールバック */
.area-header .text,
.featured-spot-info p {
  word-break: auto-phrase;
  text-wrap: pretty;
}
