@charset "UTF-8";
body,
html {
    margin: 0;
    padding: 0;
    font-family: "Noto Serif JP", serif;
    overflow-x: hidden;
    font-weight: 400;
}

html {
    scroll-behavior: smooth;
}

[id] {
    scroll-margin-top: 120px;
    /* ヘッダーの高さ + 余裕分 */
}

body.loading {
    overflow: hidden;
    height: 100%;
}

img {
    width: 100%;
    height: auto;
    vertical-align: bottom;
}

figure {
    margin: 0
}

picture img {
    width: 100%;
    height: auto;
    vertical-align: top;
}

li {
    display: inline;
    margin: 0 auto;
}

p {
    margin: 0
}

nav {
    margin: 0 0 0 auto
}

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

#footer {
    background-color: #d8c592;
    padding: 40px 5px;
    text-align: center;
    color: #2a2b2b;
    line-height: 2em;
    font-size: 1em;
    font-weight: 300;
    letter-spacing: 0.1em;
}

a {
    display: inline-block;
    /* transform が効くように */
    transition: transform 0.25s ease, color 0.25s ease;
    text-decoration: none;
    cursor: pointer;
}

a:focus {
    outline: none;
    /* マウスクリック時には枠を出さない */
}

a:hover {
    transform: scale(1.05);
    /* 少し拡大 */
    /* ブランドカラーなどに変更 */
}

#header {
    position: fixed;
    top: -160px;
    left: 0;
    width: 100%;
    background: #fff;
    z-index: 1000;
    transition: top 0.8s ease-in-out, opacity 0.8s ease, transform 0.8s ease;
    padding: 30px 0;
}

#header.show {
    top: 0;
    opacity: 1;
    transform: translateY(0);
}


/* ヘッダー内ナビゲーション配置 */

.header-navi {
    width: 100%;
    max-width: 750px;
    margin: 0 auto;
    display: flex;
    align-items: left;
    /* ←縦方向中央揃え */
    box-sizing: border-box;
    height: 25px;
    /* ヘッダー高さ */
    background-color: #fff;
    /* 必要なら背景色 */
}

.header-logo img {
    display: block;
    width: 250px;
    margin: 0;
    /* 微調整：少し上にずらす */
    transform: translateY(-10px);
}


/* ハンバーガー本体 */

#hamburger {
    position: fixed;
    top: 13px;
    right: calc((100vw - 750px)/2 + 15px);
    /* 750px幅基準で右端から15px */
    width: 60px;
    height: 60px;
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 8px;
    cursor: pointer;
    opacity: 0;
    transform: translateY(-20px);
    transition: opacity 0.8s ease, transform 0.8s ease;
    z-index: 1002;
}

#hamburger.show {
    opacity: 1;
    transform: translateY(0);
}


/* 3本線 */

#hamburger span {
    display: block;
    width: 35px;
    height: 2px;
    background-color: #2a2b2b;
    transition: all 0.3s ease;
    transform-origin: center center;
    /* ← これで中央回転 */
}

#hamburger span:nth-child(2) {
    margin: 0;
    /* gapは親flexで管理 */
}


/* クリックで × に変形 */

#hamburger.active span:nth-child(1) {
    transform: translateY(10px) rotate(-45deg);
}

#hamburger.active span:nth-child(2) {
    opacity: 0;
    /* 中央線非表示 */
}

#hamburger.active span:nth-child(3) {
    transform: translateY(-10px) rotate(45deg);
}


/* ロゴ画像 */

.header-webp {
    display: block;
    width: 100%;
    max-width: 350px;
    height: auto;
    margin: 0 auto;
    /* 上下中央は親flexで調整済み */
}


/* =========================================
   SPナビゲーション：ベース設定
========================================= */

.sp-nav {
    z-index: 30;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    background: #FFF;
    display: flex;
    flex-direction: column;
    transform: translateY(-100%);
    overflow-y: auto;
    overflow-x: hidden;
    transition: transform .9s ease-in-out, opacity .9s ease-in-out;
    box-sizing: border-box;
    padding: 2em 0;
}

.sp-nav.toggle {
    transform: translateY(0);
}


/* ロゴエリア */

.sp-nav-header {
    padding: 2em;
    text-align: center;
}


/* =========================================
   リスト（メニュー項目）の設定
========================================= */

.sp-nav ul {
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.sp-nav li {
    width: 350px;
    text-align: center;
    box-sizing: border-box;
    font-size: 1em;
    font-weight: 500;
    letter-spacing: .1em;
    position: relative;
    padding: 2.0em 0 0.2em;
    /* 上に余白、下は詰め */
}

.sp-nav li a {
    display: block;
    color: #2a2b2b;
    text-decoration: none;
    transition: all 0.3s ease;
}


/* --- 特定の場所だけに線を引く --- */


/* 一旦すべての線の要素をリセット */

.sp-nav li::after {
    content: "";
    display: none;
    /* 基本は非表示 */
    height: 1px;
    background-color: #999;
    margin: 1.5em auto 0;
}


/* 2番目（宿泊施設）と5番目（参加方法）の後ろだけ線を表示 */

.sp-nav li:nth-child(2)::after,
.navi li:nth-child(2)::after,
.sp-nav li:nth-child(3)::after,
.navi li:nth-child(3)::after,
.sp-nav li:nth-child(6)::after,
.navi li:nth-child(6)::after,
.sp-nav li:nth-child(7)::after,
.navi li:nth-child(7)::after {
    display: block;
    width: 150px;
    /* ← ここの数値で線の長さを一括調整できます */
}


/* =========================================
   ボタンデザイン（カラーバリエーション）
========================================= */


/* ボタン共通 */

.sp-nav li a.color-gold,
.sp-nav li a.color-blue,
.sp-nav li a.color-pink {
    display: inline-block;
    width: 280px;
    padding: 1em 0;
    border-radius: 30px;
    font-weight: bold;
    color: #fff;
    border: 2px solid transparent;
}


/* 各カラーの設定 */

.sp-nav li a.color-gold {
    background: #d0b685;
    border-color: #d0b685;
}

.sp-nav li a.color-pink {
    background: #f2a1af;
    border-color: #f2a1af;
}

.sp-nav li a.color-blue {
    background: #498ecc;
    border-color: #498ecc;
}


/* ホバー設定：共通（背景白、文字と枠に色） */

.sp-nav li a.color-gold:hover {
    background: transparent;
    color: #d0b685;
}

.sp-nav li a.color-pink:hover {
    background: transparent;
    color: #f2a1af;
}

.sp-nav li a.color-blue:hover {
    background: transparent;
    color: #498ecc;
}


/* --- 友だち追加・閉じるボタンの特殊設定 --- */

.sp-nav li a.btn {
    display: inline-block;
    width: 300px;
    padding: 1.3rem 0;
    border-radius: 30px;
    background-color: #d0b685;
    color: #fff;
    margin: 1.5em 0;
}


/* ▼ 閉じるボタン（元のサイズを維持して上を広げる） ▼ */

.sp-nav li.close {
    width: 80%;
    /* 親要素の幅を確保 */
    margin-top: 4.0em;
    /* 【ここ】で上の項目との距離を調整 */
    padding-top: 0;
    /* 余計な余白をリセット */
    padding-bottom: 0;
    padding: 1.3rem 0;
}

.sp-nav .close {
    display: inline-block;
    /* ブロック要素にしてサイズを安定させる */
    width: 300px;
    /* 元の横幅に戻す */
    padding: 1.2em 0;
    /* 他のボタンと高さを合わせる */
    border: 1px solid #999;
    border-radius: 30px;
    color: #2a2b2b;
    cursor: pointer;
    text-align: center;
    box-sizing: border-box;
    margin: 0 auto;
    /* 中央配置 */
}


/* ホバー時の挙動 */

.sp-nav .close:hover {
    background: #2a2b2b;
    color: #fff;
}

.first-view {
    width: 100%;
}

.first-view picture,
.first-view img {
    width: 100%;
    height: auto;
    display: block;
}


/* ───────────────
   備考文
──────────────── */

.note {
    font-weight: 400;
    line-height: 1.8;
    letter-spacing: 0.1em;
    text-align: justify;
}

.main-text {
    font-weight: 500;
    text-decoration: none;
    letter-spacing: .08em;
    line-height: 1.5em;
    align-items: center;
}

.letter-spacing-xs {
    letter-spacing: 0.02em;
}

.letter-spacing-s {
    letter-spacing: 0.05em;
}

.letter-spacing-m {
    letter-spacing: 0.18em;
}

.custom-slider {
    width: 100%;
    margin: 0 auto;
}

.custom-slider img {
    width: 100%;
    /* --- 修正：縦幅を出すための設定 --- */
    aspect-ratio: 4 / 3;
    /* 例：4:3の比率にして縦にボリュームを出す（16:9より縦長） */
    object-fit: cover;
    /* 枠いっぱいに表示しつつ、アスペクト比を維持（切れない設定の究極版） */
    display: block;
}


/* 画像間の隙間をほぼゼロに */

.custom-slider .slick-slide {
    margin: 0;
    /* 左右の隙間をなくす */
}

.features {
    display: flex;
    justify-content: space-between;
    /* 横並びで余白調整 */
    gap: 20px;
    /* 横方向の隙間 */
    flex-wrap: wrap;
    /* 狭い画面で折り返し */
}

.feature-item {
    flex: 1 1 calc(50% - 20px);
    /* 2カラムになるよう幅調整 */
    min-width: 250px;
    box-sizing: border-box;
    text-align: center;
}

.with-underline {
    position: relative;
    padding-bottom: 10px;
    /* 下余白で線との間隔を調整 */
}

.with-underline::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 40px;
    /* 線の長さ（調整可） */
    height: 1px;
    /* 線の太さ */
    background-color: #bbaa7b;
    border-radius: 2px;
    /* 丸みをつけると柔らかい印象に */
}

.with-underline-p {
    position: relative;
    padding-bottom: 10px;
    /* 下余白で線との間隔を調整 */
}

.with-underline-p::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 40px;
    height: 1px;
    background-color: #f2a1af;
    border-radius: 2px;
}

.color-red {
    color: #c72358;
}

.color-black {
    color: #2a2b2b;
}

.color-gold {
    color: #bbaa7b;
}

.color-green {
    color: #51cdc1;
}

.color-pink {
    color: #f2a1af;
}

.size-xl {
    font-size: 3.5rem;
}

.size-lg {
    font-size: 2.5rem;
}

.size-l {
    font-size: 1.8rem;
}

.size-ml {
    font-size: 1.65rem;
    position: relative;
    /* 擬似要素を相対配置するため必要 */
}

.size-m {
    font-size: 1.5em;
}

.size-ms {
    font-size: 1.4rem;
}

.size-s {
    font-size: 1.4rem;
}

.size-ss {
    font-size: 1.27rem;
}

.size-xs {
    font-size: 1.15rem;
}

.size-xxs {
    font-size: 1rem;
}
.size-4xs {
    font-size: 1rem;
}

.size-3xs {
    font-size: .65rem;
}

.font-bold {
    font-weight: 700;
    font-size: 110%;
}

.font-small {
    font-size: 90%;
}

.size-4xs {
    font-size: 1rem;
}
.align-left {
    text-align: justify;
}

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

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

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

.footer-logo {
    max-width: 300px;
    height: auto;
    margin: 0 auto 30px;
    /* 下に余白 */
    display: block;
}

.navi-box {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    /* 【修正】3列並びに変更 */
    gap: 20px 30px;
    justify-content: center;
    text-align: center;
    margin: 30px auto;
    max-width: 1000px;
    /* 3列にするため少し広めに設定 */
    width: 95%;
}


/* 各列内のリンクを縦に並べる */

.nav-group {
    display: flex;
    flex-direction: column;
    gap: 15px;
    /* 各行の縦の隙間 */
    align-items: center;
    /* 中央揃えを維持 */
}

.nav-item a {
    color: #2a2b2b;
    font-size: 0.9em;
    /* 文字量に合わせて微調整 */
    text-decoration: none;
    font-weight: 500;
    transition: opacity 0.3s;
}


/* 各カラムの見出し（キャンペーン名） */

.nav-item.title a {
    font-weight: 700;
    font-size: 1.1em;
    border-bottom: 1px solid rgba(42, 43, 43, 0.4);
    padding-bottom: 8px;
    margin-bottom: 5px;
    display: inline-block;
}

.nav-item a:hover {
    opacity: 0.7;
}

.sub-heading {
    font-weight: 300;
    letter-spacing: .01em;
}

.line-height-xl {
    line-height: 3em;
}

.line-height-lg {
    line-height: 2.3em;
}

.line-height-m {
    line-height: 2em;
}

.line-height-ml {
    line-height: 1.5em;
}

.line-height-s {
    line-height: 1.5em;
}

.close:hover {
    opacity: 0.5;
}


/* マウス操作では非表示 */

a:focus:not(:focus-visible) {
    outline: none !important;
}


/* キーボード操作(Tab移動)では表示 */

a:focus-visible {
    outline: 2px dashed var(--green);
    outline-offset: 4px;
}


/* =========================================
   ボタン汎用（共通）
========================================= */

.btn {
    /* 元の記述を維持 */
    display: block;
    text-align: center;
    text-decoration: none;
    width: 350px;
    max-width: 100%;
    /* 親より大きくならないように追加 */
    padding: 1.4rem 0 1.3rem;
    line-height: 1.2;
    font-weight: 600;
    border-radius: 20px;
    transition: all 0.3s ease;
    font-size: 1em;
    letter-spacing: 0.1em;
    box-sizing: border-box;
    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.1);
    position: relative;
    color: #FFF;
    background: #d0b685;
    border: 2px solid #d0b685;
    /* 単体使用時のためのセンター寄せ */
    margin: 0 auto;
}


/* 矢印（currentColorで色指定を省略） */

.btn::after {
    content: '';
    position: absolute;
    top: 52%;
    right: 25px;
    width: 10px;
    height: 10px;
    border-top: 2px solid currentColor;
    border-right: 2px solid currentColor;
    transform: translateY(-50%) rotate(45deg);
}


/* --- 色のバリエーション --- */

.btn.--pink {
    background: #f2a1af;
    border-color: #f2a1af;
}

.btn.--green {
    background: #51cdc1;
    border-color: #51cdc1;
}

.btn.--navy {
    background: #498ecc;
    border-color: #498ecc;
}


/* ホバー：背景白、文字と枠を元の色にする */

.btn:hover {
    background: #FFF !important;
    color: inherit;
    /* 各クラスの色を引き継ぐ */
}


/* 個別ホバー色（ここだけ個別に指定が必要） */

.btn:hover {
    color: #d0b685;
}

.btn.--pink:hover {
    color: #f2a1af;
    border-color: #f2a1af;
}

.btn.--green:hover {
    color: #51cdc1;
    border-color: #51cdc1;
}

.btn.--navy:hover {
    color: #498ecc;
    border-color: #498ecc;
}


/* --- 共通：一度すべての罫線をリセットする場合（念のため） --- */

.btn-wrap,
section,
div {
    border: none !important;
}


/* --- 指定された2箇所だけに線を引く --- */


/* 1. 宿泊施設一覧と応募方法の間 */


/* 「応募方法」セクションの上、または「宿泊施設一覧」の下に引きます */

.section-application {
    border-top: 1px solid #d0b685;
    /* 線の色と太さはデザインに合わせて調整してください */
    padding-top: 40px;
    /* 線とコンテンツの間の余白 */
    margin-top: 40px;
    /* 前のセクションとの余白 */
}


/* 2. スタンプラリー参加方法と対象施設一覧の間 */

.section-facility-list {
    border-top: 1px solid #d0b685;
    padding-top: 40px;
    margin-top: 40px;
}


/* PC用右端縦バナー */

.floating-banners-fixed {
    position: fixed;
    top: 50%;
    right: 0px;
    display: flex;
    flex-direction: column;
    transform: translateY(-50%);
    z-index: 900;
    gap: 10px;
}

.floating-banner-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-bottom-left-radius: 15px;
    border-top-left-radius: 15px;
    width: 50px;
    padding: 30px 10px;
    text-align: center;
    font-weight: 400;
    /* 必要に応じて bold に変更 */
    transition: opacity 0.6s ease, transform 0.6s ease;
    opacity: 0;
    transform: translateX(30px);
}

.floating-banner-btn.show {
    opacity: 1;
    transform: translateX(0);
}

.fade-scroll {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.megutte-btn {
    background-color: #f2a1af;
    color: #fff;
    font-size: .9em;
    letter-spacing: 0.05em;
    border: 2px solid #f2a1af;
}

.megutte-btn:hover {
    background: #FFF;
    color: #f2a1af;
}

.megutte-btn-sp {
    background-color: #f2a1af;
    color: #fff;
}

.tomatte-btn {
    background-color: #d8c592;
    color: #fff;
    font-size: .9em;
    letter-spacing: 0.05em;
    border: 2px solid #d8c592;
}

.tomatte-btn:hover {
    background: #FFF;
    color: #d8c592;
}

.tomatte-btn-sp {
    background-color: #d8c592;
    color: #fff;
}

.floating-banner-btn.show {
    opacity: 1;
    transform: translateX(0);
}

.vertical-text {
    letter-spacing: 0.1em;
    line-height: 1.35em
}

.floating-banner-btn .vertical-text {
    writing-mode: horizontal-tb;
    /* 横書きに戻す */
    transform: none;
    /* 回転なし */
    margin-bottom: 10px;
    text-align: center;
}

.floating-banner-btn img {
    width: 20px;
    height: 20px;
}


/* SP用下部横並びバナー */

.floating-banners-sp {
    display: none;
    /* 初期は非表示 */
}

.floating-banners-sp .floating-banner-btn {
    flex-direction: row;
    width: 48%;
    justify-content: center;
    padding: 10px 0;
}

.floating-banners-sp .floating-banner-btn .vertical-text {
    writing-mode: horizontal-tb;
    transform: none;
    margin-bottom: 0;
}


/* 共通アイコンスタイル */

.floating-banner-btn i {
    transition: color 0.3s;
    margin-top: 6px;
    /* PC縦並び用の余白 */
}

.floating-banners-sp .floating-banner-btn i {
    font-size: 18px;
    margin: 0;
    /* SP横並びは余白リセット */
}

.font-w-bold {
    font-weight: 500;
}

.top-btn:hover i {
    color: #8bcdc1;
}

.line-btn:hover i {
    color: #f2a1af;
}

.container {
    max-width: 750px;
    margin: 0 auto;
    padding: 40px;
}

.background {
    background-color: #FFF;
    width: 100%;
    min-height: 100vh;
    position: relative;
}

.p-background {
    background-color: #fef9fb;
    width: 100%;
    min-height: 100vh;
    position: relative;
}

.g-background {
    background-color: #f9f6ef;
    /* 画面全体の背景色 */
    width: 100%;
    min-height: 100vh;
    position: relative;
}

.illust-img {
    display: block;
    margin: 0 auto;
    width: 100%;
    max-width: 750px;
    height: auto;
}

.illust-img-2 {
    display: block;
    margin: 0 auto;
    width: 90%;
    max-width: 750px;
    height: auto;
}

.illust-img-3 {
    display: block;
    margin: 0 auto;
    width: 100%;
    max-width: 750px;
    height: auto;
}

.accordion-item {
    width: 100%;
    margin-bottom: 15px;
    overflow: hidden;
    border-radius: 10px;
}


/* ヘッダー部分 */

.accordion-header {
    list-style: none;
    padding: 20px 20px;
    color: #ffffff;
    cursor: pointer;
    display: flex;
    align-items: center;
    position: relative;
    font-size: 1.2em;
}

.accordion-header::-webkit-details-marker {
    display: none;
}

.header-title {
    width: 100%;
    text-align: center;
    letter-spacing: 0.5em;
	font-weight: 500;
}


/* 背景色設定 */

.murayama .accordion-header {
    background-color: #d0b730;
}

.mogami .accordion-header {
    background-color: #51cdc1;
}

.okitama .accordion-header {
    background-color: #f2a1af;
}

.shonai .accordion-header {
    background-color: #498ecc;
}

.murayama-font {
    color: #d0b730;
}

.mogami-font {
    color: #51cdc1;
}

.okitama-font {
    color: #f2a1af;
}

.shonai-font {
    color: #498ecc;
}


/* 矢印アイコン */

.icon {
    position: absolute;
    right: 20px;
    /* ※もしPC版でtopが未指定であれば、基準となるtopの値を設定しておくことをおすすめします */
    /* top: 20px; */ 
    width: 10px;
    height: 10px;
    border-top: 2px solid #ffffff;
    border-right: 2px solid #ffffff;
    transform: rotate(135deg);
    transition: transform 0.3s ease;
}

.accordion-item[open] .icon {
    transform: rotate(-45deg) translateY(2px);
}


/* リストの中身 */

.accordion-content {
    background-color: #ffffff;
    border: 1px solid #eeeeee;
    border-top: none;
    border-bottom-left-radius: 10px;
    border-bottom-right-radius: 10px;
}


/* PC版の整列設定（1行で縦ラインを揃える） */

/* PC版の各行（リスト）の下線設定 */
.list-item {
    padding: 20px 0;   /* 上下の余白 */
    margin: 0 20px;    /* 左右に余白を作り、線を端まで行かせない（お洒落な印象になります） */
    color: #2a2b2b;
    
    /* 【ここがポイント】境界線を少しハッキリさせました */
    border-bottom: 1px solid #e0e0e0; 
    
    display: grid;
    grid-template-columns: 220px 1fr 160px; /* 名称・住所・電話の幅を調整 */
    gap: 15px;
    align-items: center;
    letter-spacing: 0.1em;
    font-size: 0.9em;
}

/* 最後の項目の下線だけ消す（枠線と重ならないように） */
.list-item:last-child {
    border-bottom: none;
}

/* もしもっと「点線」や「さらに薄い線」にしたい場合 */
/* border-bottom: 1px dashed #eeeeee; (点線にする場合) */

/* アコーディオン内側のコンテナ */

.grid-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    /* PC版は2列 */
    gap: 20px;
    padding: 20px;
}


/* 施設カード単体 */

.card-item {
    background: #ffffff;
    /* 枠線が不要な場合は削除してください */
    border-bottom: 1px solid #eeeeee;
    padding-bottom: 15px;
}


/* カード画像 */

.card-image {
    width: 100%;
    margin-bottom: 15px;
}

.card-image img {
    width: 100%;
    height: auto;
    border-radius: 5px;
    object-fit: cover;
    aspect-ratio: 3 / 2;
    /* 画像の比率を統一 */
}


/* カードテキスト部分 */

.card-body {
    color: #2a2b2b;
    text-align: left;
    /* PC版は基本左揃え */
}

.item-name {
    font-size: 1.1rem;
    margin-bottom: 10px;
    letter-spacing: 0.15em;
	font-weight: bold;
}
.item-name-2 {
    font-size: 0.95rem;
    margin-bottom: 10px;
    letter-spacing: 0.03em;
	font-weight: bold;
}

.item-address,
.item-tel {
    font-size: 0.9rem;
    margin-bottom: 5px;
    letter-spacing: 0.05em;
    display: flex;
    align-items: center;
    gap: 8px;
    /* アイコンと文字の間隔 */
}

.icon-phone,
.item-tel, 
.tel-link {
    color: inherit;          /* 親要素の文字色を引き継ぐ */
    text-decoration: none;   /* 下線を消す */
}

/* タップした時に色が変わるのを防ぐ、または指定する */
.icon-phone:hover,
.item-tel:hover,
.tel-link:hover {
    color: inherit; 
    opacity: 0.8;            /* 少し薄くするなど、反応は残すと親切です */
}

.footer-content {
    max-width: 900px;
    margin: 60px auto 0;
    padding: 0 20px;
    color: #2a2b2b;
    /* 文字色はナビと同じ紺色に。背景が濃いなら#fffに変更してください */
    text-align: center;
}

.organizer-info {
    margin-bottom: 40px;
    padding-bottom: 20px;
    border-bottom: 1px solid #ddd;
    font-size: 1.05em;
    line-height: 1.6;
}

.contact-info-wrapper {
    display: flex;
    justify-content: space-between;
    gap: 40px;
    text-align: left;
    margin-bottom: 60px;
}

.contact-block {
    flex: 1;
}

.contact-title {
    font-size: 1.05em;
    border-left: 4px solid #2a2b2b;
    font-weight: 500;
    padding-left: 10px;
    margin-bottom: 15px;
}

.contact-detail {
    font-size: 0.95em;
    line-height: 1.8;
}

.tel-link {
    font-weight: bold;
    font-size: 1.1em;
}

.small-note {
    font-size: 0.8em;
    display: block;
    margin-top: 5px;
}

.system-notes {
    margin-top: 15px;
    font-size: 0.75em;
    line-height: 1.5;
    color: #2a2b2b;
}

.copyright {
    font-size: 0.7em;
    margin: 40px 0 100px;
    color: #2a2b2b;
    line-height: 2em;
}


/* アイコンのスタイル（画像アイコンにする場合はここをimgに調整） */

.icon-phone,
.icon-marker {
    font-size: 1rem;
}

.privacy-box {
    max-width: 600px;
    /* 読みやすい幅に制限（任意） */
    margin: 0 auto;
    /* 中央寄せ */
    height: 240px;
    /* ボックスの高さ（ここで高さを固定します） */
    overflow-y: auto;
    /* 縦スクロールを有効に */
    padding: 24px;
    background-color: rgba(255, 255, 255, 0.6);
    /* ほんのり透ける白 */
    border: 1px solid #e0e0e0;
    /* 薄いグレーの線 */
    border-radius: 8px;
    /* 角を少し丸くして柔らかい印象に */
    text-align: left;
}


/* スクロールバーのカスタマイズ（ブラウザによって表示が変わります） */

.privacy-box::-webkit-scrollbar {
    width: 6px;
}

.privacy-box::-webkit-scrollbar-track {
    background: transparent;
}

.privacy-box::-webkit-scrollbar-thumb {
    background: #ccc;
    /* バーの色を薄いグレーに */
    border-radius: 10px;
}


/* テキストの微調整 */

.privacy-box .main-text {
    font-weight: bold;
    color: #2B2B2B;
    /* 墨色（チャコール） */
    margin-bottom: 8px;
}

.privacy-box .note {
    color: #444444;
    /* ソフトグレー */
    line-height: 1.6;
    margin-bottom: 24px;
}

.mbottom-15 {
    margin-bottom: 15px
}

.mbottom-30 {
    margin-bottom: 30px
}

.mbottom-50 {
    margin-bottom: 50px
}

.mbottom-70 {
    margin-bottom: 70px
}

.mbottom-100 {
    margin-bottom: 100px
}

.mbottom-150 {
    margin-bottom: 150px
}

.mbottom-200 {
    margin-bottom: 200px
}

.mtop-200 {
    margin-top: 200px
}

.mtop-150 {
    margin-top: 150px
}

.mtop-100 {
    margin-top: 100px
}

.mtop-50 {
    margin-top: 50px
}

.mtop-70 {
    margin-top: 70px
}

.mtop-30 {
    margin-top: 30px
}

.mtop-15 {
    margin-top: 15px
}

.mtop-10 {
    margin-top: 10px
}

.mtop-5 {
    margin-top: 5px
}

.pbottom-200 {
    padding-bottom: 200px
}

.pbottom-100 {
    padding-bottom: 100px
}

.pbottom-70 {
    padding-bottom: 70px
}

.pbottom-50 {
    padding-bottom: 50px
}

.pbottom-30 {
    padding-bottom: 30px
}

.pbottom-15 {
    padding-bottom: 15px
}

.pbottom-10 {
    padding-bottom: 10px
}

.pbottom-5 {
    padding-bottom: 5px
}

.ptop-200 {
    padding-top: 200px
}

.ptop-150 {
    padding-top: 150px
}

.ptop-100 {
    padding-top: 100px
}

.ptop-70 {
    padding-top: 70px
}

.ptop-50 {
    padding-top: 50px
}

.ptop-30 {
    padding-top: 30px
}

.ptop-15 {
    padding-top: 15px
}

.ptop-10 {
    padding-top: 10px
}

.ptop-5 {
    padding-top: 5px
}

.pright-5 {
    padding-right: 5px
}

.sp-br {
    display: none
}

.xsp-br {
    display: none
}

.br-sp {
    display: block
}

.pc-br {
    display: none;
}


/* SNSアイコンの基本色を白に設定 */

.sns-icon {
    color: #2a2b2b !important;
    /* 強制的に白に指定 */
    font-size: 1.8em;
    /* アイコンのサイズ（既存のものを継承） */
    transition: opacity 0.3s ease;
    text-decoration: none;
}


/* ホバー時に少し透明にして反応を出す */

.sns-icon:hover {
    opacity: 0.6;
    color: #2a2b2b;
    /* ホバーしても白を維持 */
}


/* 念のため、中の i タグも白に指定 */

.sns-icon i {
    color: #2a2b2b;
}


/* ========================================
   スマートフォン（481px～767px）
   ======================================== */

@media screen and (max-width: 768px) {
    .container {
        padding: 18px;
    }
    [id] {
        scroll-margin-top: 100px;
        /* ヘッダーの高さ + 余裕分 */
    }
    .first-view img {
        object-fit: contain;
        background-color: #FEF4DD;
    }
    .illust-img-3 {
        width: 85%;
    }
    .align-center-left {
        text-align: left;
    }
	.header-logo {
        margin-left: 20px; /* ← ここで左側の余白を調整してください */
    }
    .header-logo img {
        transform: translateY(-8px);
        width: 200px;
    }
    #hamburger {
        top: 18px;
        right: 18px;
        width: 60px;
        height: 40px;
        gap: 5px;
        /* 線の間隔をさらに調整 */
    }
    #hamburger span {
        width: 33px;
        height: 1.5px;
    }
    #hamburger span:nth-child(2) {
        margin: 3px 0;
    }
    /* クリックで × に変形 */
    #hamburger.active span:nth-child(1) {
        transform: translateY(9px) rotate(-45deg);
    }
    #hamburger.active span:nth-child(3) {
        transform: translateY(-9px) rotate(45deg);
    }
    .illust-img-2 {
        max-width: 420px;
    }
    .sp-nav {
        padding-top: 1em;
        padding-bottom: 1em;
    }
    .sp-nav li {
        /* 【修正】上の余白を減らして、文字の位置を引き上げます */
        padding-bottom: 0.2em;
        /* ここは最小限でOK */
        width: 100%;
    }
    .sp-nav li:not(:last-child):not(.no-line)::after {
        /* 【修正】文字と線の間の距離を広げます */
        /* これにより、文字の下側に空間ができて「上に上がった」ように見えます */
        margin: 1.8em auto 0 auto;
        /* 0.8emから1.8emに増加 */
        width: 280px;
    }
    .sp-nav li a.btn {
        margin: 1em 0;
        width: 280px;
        padding: 1rem 0;
        /* 高さを少し抑えるとスマートです */
    }
    .sp-nav .close {
        margin-top: 1.5em;
        /* ボタンとの間隔を少し確保 */
        width: 280px;
        padding: 0.8em 0;
    }
    .header-navi {
        padding: 0 0;
        height: 10px;
        /* ヘッダー高さ */
    }
    .custom-slider img {
        aspect-ratio: 16 / 9;
        /* スマホでは少し横長にすると画面に収まりが良いです */
    }
    .slick-prev,
    .slick-next {
        width: 40px;
        height: 40px;
    }
    .slick-prev::before,
    .slick-next::before {
        font-size: 16px;
    }
    .slick-dots {
        bottom: 10px;
        gap: 8px;
    }
    .accordion-header {
        font-size: 1em;
    }
    .slick-dots li button {
        width: 10px;
        height: 10px;
    }
    .highlight-box {
        font-size: 1.3em;
        letter-spacing: 0.1em;
    }
    .main-text {
        line-height: 1.9em;
    }
    .text {
        line-height: 1.8em;
    }
    .line-height-m {
        line-height: 1.8em;
    }
    .line-height-ml {
        line-height: 1.5em;
    }
    /* 画像 */
    .event-img {
        max-width: 350px;
    }
    .block-image {
        width: 10%;
        height: 10%;
    }
    .event-img-2 {
        width: 90%;
        height: 90%;
    }
    .svg-title {
        max-width: 200px;
    }
    .contact-info-wrapper {
        flex-direction: column;
        gap: 30px;
    }
    .footer-logo-sns {
        flex-direction: column;
        gap: 30px;
    }
    .free-badge {
        padding: 10px 25px;
        font-size: 1.5em;
    }
    .free-badge-cam,
    .free-badge-event {
        font-size: 1.1em;
        letter-spacing: 0.1em;
        padding: 10px 30px;
    }
    .navi-box {
        grid-template-columns: 1fr;
        /* 1列に変更 */
        gap: 40px;
    }
    .nav-item.title a {
        font-size: 1.1em;
        /* スマホでは少し大きく */
    }
    .nav-item a {
        font-size: 1em;
    }
    .icon {
        margin-bottom: 10px;
    }
    .btn {
        width: 90%;
        /* 横幅いっぱいに近くする（お好みで） */
        max-width: 320px;
        padding: 1.2rem 0;
        font-size: 1.1em;
    }
    .floating-banners-fixed {
        display: none !important;
    }
    .floating-banners-sp {
        display: flex !important;
        position: fixed;
        bottom: 0;
        left: 0;
        width: 100%;
        z-index: 800;
        overflow: hidden;
    }
    .floating-banners-sp .floating-banner-btn {
        flex: 1;
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: center;
        gap: 6px;
        padding: 18px 0;
        font-size: 1em;
        letter-spacing: 0.2em;
        border-radius: 12px 12px 0 0;
    }
    .floating-banners-sp .floating-banner-btn img {
        width: 15px;
        height: auto;
        display: inline-block;
    }
    thead th,
    tbody td {
        font-size: 13px;
        /* 少し大きくして読みやすく */
        padding: 10px 12px;
        letter-spacing: 0.1em;
        vertical-align: middle;
        /* 改行が入っても中央揃え */
        word-break: break-word;
        /* 改行も自然に */
    }
    tbody td {
        line-height: 1.5em;
        /* 行間調整 */
        letter-spacing: 0.1em;
    }
    table {
        border-spacing: 0 5px;
        /* 行間の余白調整 */
    }
    /* ヘッダーの区切り線もスマホ用に少し長め */
    thead th:first-child::after {
        height: 40%;
    }
    .note {
        font-size: 0.8em;
        letter-spacing: 0.01em;
    }
    .offices {
        flex-direction: column;
        /* ✅ 縦並び */
        align-items: center;
        /* ✅ センター寄せ */
        gap: 10px;
        /* ✅ コンテンツ間をやや詰める（5px→10pxが見栄え良） */
        margin: 20px 0;
        /* ✅ 全体の上下マージンも縮める */
    }
    .office {
        margin: 0;
        /* ✅ 各office間の余白リセット */
    }
    .office p {
        margin: 4px 0;
        /* ✅ 各行の上下余白を最小限に */
    }
    .features {
        flex-direction: column;
        gap: 10px;
        margin: 30px 0;
        /* ✅ features全体も余白削減 */
    }
    .icon-after::after {
        top: 0.15em;
    }
    .icon-after::after {
        top: 0.15em;
        /* 文字の中央にくるように微調整 */
    }
    .feature-item {
        flex: 1 1 100%;
        width: 100%;
        margin-bottom: 30px;
        /* 各アイテム間に均等な下余白 */
    }
    .feature-item:last-child {
        margin-bottom: 0;
        /* 最後の要素のみ余白なし */
    }
    .office-info-wrapper {
        flex-direction: column;
        /* 縦並びに */
        align-items: center;
        /* 中央寄せ */
        text-align: center;
        /* 文章も中央 */
        gap: 40px;
        /* ✅ 2つのオフィス間の余白を設定 */
        margin-top: 40px;
        /* ✅ 上方向のマージンも少し調整 */
        padding: 0;
        /* ✅ 左右パディングを削除してスッキリ */
    }
    .office-info {
        width: auto;
        /* ✅ 幅を自動にして中央寄せ */
        text-align: center;
        margin: 0;
        /* ✅ 余白リセット */
    }
    .office-title {
        margin-bottom: 8px;
        /* ✅ タイトル下の余白を少し広げて見やすく */
    }
    .footer-logo-sns {
        flex-direction: column;
        /* 縦並び */
        align-items: center;
        /* 中央寄せ */
        gap: 20px;
        /* ロゴとSNSの間隔 */
    }
    .footer-logo-area {
        justify-content: center;
        /* ロゴを中央寄せ */
    }
    .footer-sns-area {
        justify-content: center;
        /* SNSアイコンも中央寄せ */
    }
    .footer-sns-area {
        justify-content: center;
        font-size: 1.6em;
    }
    .sub-heading-2::before {
        width: 1.15em;
        /* チェックボックスのサイズ */
        height: 1.15em;
        margin-right: .5em;
        margin-bottom: 0.2em;
        /* 文字との間隔 */
    }
.item-name-2 {
    font-size: 1rem;
    letter-spacing: 0.15em;
}
.icon {
        /* 方法1：topプロパティを上書きして下げる（おすすめ） */
        top: 22px; /* PC版より数値を大きくして下げる（値は調整してください） */
    }

    /* レイアウト */
    .size-xl {
        font-size: 2.8rem;
    }
    .size-lg {
        font-size: 1.9rem;
    }
    .size-ml {
        font-size: 1.4rem;
    }
    .size-m {
        font-size: 1.12rem;
    }
    .size-ms {
        font-size: 1.2rem;
    }
    .size-s {
        font-size: 1.1rem;
    }
    .size-ss {
        font-size: 1.05rem;
    }
    .size-xxs {
        font-size: 0.9rem;
    }
    .size-4xs {
        font-size: 0.9rem;
    }
    .size-3xs {
        font-size: 0.7rem;
    }
    .navi {
        grid-template-columns: repeat(2, auto);
        justify-content: center;
    }
    .footer-logo {
        max-width: 280px;
    }
    /* マージン・パディング（スマホではvw単位を使用） */
    .mbottom-15 {
        margin-bottom: 2.5vw;
    }
    .mbottom-30 {
        margin-bottom: 4vw;
    }
    .mbottom-50 {
        margin-bottom: 5vw;
    }
    .mbottom-70 {
        margin-bottom: 7vw;
    }
    .mbottom-100 {
        margin-bottom: 10vw;
    }
    .mbottom-150 {
        margin-bottom: 15vw;
    }
    .mbottom-200 {
        margin-bottom: 20vw;
    }
    .mtop-15 {
        margin-top: 1.8vw;
    }
    .mtop-30 {
        margin-top: 2vw;
    }
    .mtop-50 {
        margin-top: 5vw;
    }
    .mtop-70 {
        margin-top: 7vw;
    }
    .mtop-100 {
        margin-top: 10vw;
    }
    .mtop-150 {
        margin-top: 15vw;
    }
    .mtop-200 {
        margin-top: 20vw;
    }
    .pbottom-15 {
        padding-bottom: 1.5vw;
    }
    .pbottom-30 {
        padding-bottom: 3vw;
    }
    .pbottom-50 {
        padding-bottom: 5vw;
    }
    .pbottom-70 {
        padding-bottom: 7vw;
    }
    .pbottom-100 {
        padding-bottom: 10vw;
    }
    .pbottom-200 {
        padding-bottom: 20vw;
    }
    .ptop-15 {
        padding-top: 1.5vw;
    }
    .ptop-30 {
        padding-top: 3vw;
    }
    .ptop-50 {
        padding-top: 5vw;
    }
    .ptop-70 {
        padding-top: 7vw;
    }
    .ptop-100 {
        padding-top: 10vw;
    }
    .ptop-150 {
        padding-top: 15vw;
    }
    .ptop-200 {
        padding-top: 20vw;
    }
    .sp-br {
        display: block;
    }
    .list-item {
        display: block;
        /* グリッドを解除して縦並びに */
        text-align: center;
        /* 全ての項目をセンター揃えに */
        font-size: .9em;
grid-template-columns: none;
        padding: 30px 0;
    }
    .item-name,
	.item-name-2,
    .item-address,
    .item-tel {
        display: block;
        width: 100%;
        margin-bottom: 15px;
        letter-spacing: 0.15em;
    }
    .item-tel {
        margin-bottom: 0;
    }
    .grid-container {
        grid-template-columns: 1fr;
        /* スマホ版は1列 */
        padding: 15px;
    }
    .card-body {
        text-align: center;
        /* ご要望通りセンター揃え */
    }
    .item-address,
    .item-tel {
        justify-content: center;
        /* アイコン含めて中央寄せ */
    }
    .icon-phone,
    .icon-marker {
        margin-right: 5px;
    }
    .sns-icon {
        font-size: 1.3em;
        /* アイコンのサイズ（既存のものを継承） */
    }
    .organizer-info {
        font-size: 1em;
        text-align: left;
    }
    /* SP版のフローティングボタン内アイコンの調整 */
    .floating-banners-sp .floating-banner-btn i {
        display: inline-block;
        /* 位置調整を有効にするために必要 */
        transform: translateY(3px);
        /* 数値を大きくするとさらに下がります */
        margin-left: 4px;
        /* テキストとの間隔が狭い場合はここも調整 */
    }
    .size-xs {
        font-size: 1rem;
    }
	.size-xxs {
    font-size: 0.9rem;
}
}


/* ========================================
   小型スマートフォン（401px～480px）
   ======================================== */

@media screen and (max-width: 490px) {
    .illust-img-2 {
        max-width: 360px;
    }
    .xsp-br {
        display: block;
    }
    .size-l {
        font-size: 1.4rem;
    }
    .size-ms {
        font-size: .91rem;
    }
    .size-m {
        font-size: 1rem;
    }
    .size-s {
        font-size: 0.92rem;
        letter-spacing: 0.01em;
    }
    .size-xs {
        font-size: 0.88rem;
    }
	    .size-xxs {
        font-size: 0.7rem;
    }
		    .size-4xs {
        font-size: 0.8rem;
    }
    .highlight-box {
        font-size: 1.14em;
    }
    .sp-nav ul {
        margin-top: 0.25em;
        padding-bottom: 1em;
    }
    .header-logo {
        margin-right: 20px;
        /* ← SP超小画面用に余白を増やす */
    }
    .header-logo img {
        transform: translateY(-7px);
        width: 200px;
    }
    .sp-nav-header .header-svg {
        width: 100%;
        /* 画面幅に合わせて縮小はするが極端には縮まらない */
        max-width: 250px;
        /* 最小限の横幅を確保 */
        height: auto;
        /* 高さは自動で比率維持 */
        /* 中央寄せ */
    }
}

@media screen and (min-width: 768px) {
    .pc-br {
        display: inline;
    }
}


/* ========================================
   タブレット以上（1080px以上）
   ======================================== */

@media screen and (min-width: 1080px) {
    .event-top {
        margin: 20px;
    }
}


/* ========================================
   PC（1220px以上）
   ======================================== */

@media screen and (min-width: 1220px) {
    .sub-heading-2 {
        font-size: 1.2rem;
    }
    .align-right {
        text-align: center;
    }
    /* マージン・パディング（PC版は固定値） */
    .mbottom-15 {
        margin-bottom: 9px;
    }
    .mbottom-30 {
        margin-bottom: 15px;
    }
    .mbottom-50 {
        margin-bottom: 25px;
    }
    .mbottom-70 {
        margin-bottom: 35px;
    }
    .mbottom-100 {
        margin-bottom: 50px;
    }
    .mbottom-150 {
        margin-bottom: 75px;
    }
    .mbottom-200 {
        margin-bottom: 100px;
    }
    .mtop-5 {
        margin-top: 3px;
    }
    .mtop-10 {
        margin-top: 5px;
    }
    .mtop-15 {
        margin-top: 7px;
    }
    .mtop-30 {
        margin-top: 15px;
    }
    .mtop-50 {
        margin-top: 25px;
    }
    .mtop-70 {
        margin-top: 35px;
    }
    .mtop-100 {
        margin-top: 50px;
    }
    .mtop-150 {
        margin-top: 75px;
    }
    .mtop-200 {
        margin-top: 100px;
    }
    .pbottom-5 {
        padding-bottom: 3px;
    }
    .pbottom-10 {
        padding-bottom: 5px;
    }
    .pbottom-15 {
        padding-bottom: 7px;
    }
    .pbottom-30 {
        padding-bottom: 15px;
    }
    .pbottom-50 {
        padding-bottom: 25px;
    }
    .pbottom-70 {
        padding-bottom: 35px;
    }
    .pbottom-100 {
        padding-bottom: 50px;
    }
    .pbottom-200 {
        padding-bottom: 100px;
    }
    .ptop-5 {
        padding-top: 3px;
    }
    .ptop-10 {
        padding-top: 5px;
    }
    .ptop-15 {
        padding-top: 7px;
    }
    .ptop-30 {
        padding-top: 15px;
    }
    .ptop-50 {
        padding-top: 25px;
    }
    .ptop-70 {
        padding-top: 35px;
    }
    .ptop-100 {
        padding-top: 50px;
    }
    .ptop-150 {
        padding-top: 75px;
    }
    .ptop-200 {
        padding-top: 100px;
    }
}

#footer a[href^="tel"],
#footer a[href^="mailto"],
#footer a[href^="maps"] {
    color: inherit !important;
    text-decoration: none !important;
    border: none !important;
    outline: none !important;
}