@charset "UTF-8";
/*
Theme Name: conan0916
Description: 名探偵コナンダイナー 本番運用テーマ（9/16版）。
Version: 1.0
Author: BEENOS.
Requires at least: 6.0
Requires PHP: 7.4
*/

/* -----------------------------------------
   デザインシステム（CSS変数）
----------------------------------------- */
:root {
    /* フォント設定 */
    --font-main: 'Noto Serif JP', serif;
    --font-en: serif;

    /* ブランドカラー（文字・背景） */
    --color-text-main: #3d2a1d;
    --color-text-muted: #8e7668;
    --color-bg-navy: #221e2a;
    --color-bg-light: #fcf9f2;
    --color-bg-dark: #1a1008;

    /* アクセントカラー */
    --color-accent-brown: #8b5a2b;
    --color-accent-gold: #dfb743;
    --color-light-gold: #ebdcb9;
    --color-accent-red: #612529;
    --color-accent-red-dark: #6f2229;
    --color-card-bg: #f6edd8;   /* メニュー・グッズ枠、本のページで共通使用 */

    /* レンガ・木目 */
    --brick-base: #c9a396;
    --brick-mortar: #b48d80;
    --brick-dark-base: #7c5a4e;
    --brick-dark-mortar: #6a4b40;
    --wood-dark: #4a2e1a;
    --wood-light: #6f4726;

    /* セクション固有カラー */
    --color-bg-marquee: #907666;
    --color-copyright: #c9bb9c;

    /* 共通アニメーション */
    --transition-smooth: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
}

/* -----------------------------------------
   Reset & Base Styles
----------------------------------------- */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
    /* スマホの「読みやすさのための自動文字拡大」を無効化。
       これが原因で、同じfont-sizeでも一部の文字だけ勝手に大きく表示されることがある */
    -webkit-text-size-adjust: 100%;
    text-size-adjust: 100%;
}

.br-sp {
    display: none;
}

body {
    font-family: var(--font-main);
    font-weight: 300;
    color: var(--color-text-main);
    background-color: var(--color-bg-light);
    line-height: 1.8;
    letter-spacing: 0.05em;
    /* コンテンツが少ないページでも、フッターが画面下部にくっつくようにする */
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* 何らかの要素が横にはみ出た場合でも、横スクロール・右側の余白が
   発生しないようにする保険。html/bodyに付けるとヘッダーのposition:stickyが
   効かなくなってしまうため、コンテンツ側(main)にだけ付ける */
main {
    flex: 1 0 auto;
    overflow-x: hidden;
}

/* 専用テンプレートがなく中身が無い時のフォールバックページ（index.php）の背景。
   ヘッダー・フッター以外の全面（main全体）をメニュー枠と同じベージュで覆う */
main:has(> .section-inner:only-child) {
    background-color: var(--color-card-bg);
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 中央より少しだけ下にずらす（margin-topだけ付けて中央より下側に寄せる） 
main:has(> .section-inner:only-child) > .section-inner {
    margin-top: 60px;
}*/

img {
    max-width: 100%;
    height: auto;
    vertical-align: middle;
}

a {
    color: var(--color-accent-brown);
    text-decoration: none;
    transition: var(--transition-smooth);
}

a:hover {
    opacity: .8;
    transition: .3s;
}

ul {
    list-style: none;
}

.screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

/* -----------------------------------------
   レンガ背景（元イメージのレンガ調を再現）
----------------------------------------- */
/* SVGタイルによるレンガ（サイトイメージ準拠：レンガ#cba695＋継ぎ目の線#b28b7a） */
.bg-brick {
    background-color: #c4a38b;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='256' viewBox='0 0 512 256'%3E%3Crect width='512' height='256' fill='%23c4a38b'/%3E%3Cpath d='M0 0h512M0 128h512M0 0v128M256 0v128M128 128v128M384 128v128' stroke='%23af8d7b' stroke-width='12' fill='none'/%3E%3C/svg%3E");
    background-size: 128px 64px;
}

/* 予約特典セクション専用の背景。テストテーマから画像を同期済み。 */
.bg-novelty {
    background-color: #cfae91;
    background-image:
        url("images/backgrounds/bg_novelty.jpg"),
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='256' viewBox='0 0 512 256'%3E%3Crect width='512' height='256' fill='%23cfae91'/%3E%3Cpath d='M0 0h512M0 128h512M0 0v128M256 0v128M128 128v128M384 128v128' stroke='%23bb9478' stroke-width='12' fill='none'/%3E%3C/svg%3E");
    background-repeat: no-repeat, repeat;
    background-position: center, center;
    background-size: cover, 128px 64px;
}

/* 紙・クリーム背景（bg_light.jpg テクスチャ） */
.bg-paper {
    background-color: #f4ecd9;
    background-image: url("images/backgrounds/bg_light.jpg");
    background-size: 700px;
}

/* Menu用：bg-paperを少し濃くしたベージュ茶（後で画像に差し替え予定） */
.bg-paper-dark {
    background-color: #e2cfb2;
    background-image:url("images/backgrounds/bg_dark.jpg");
    background-size: 700px;
}

/* Topics用：ベージュの古新聞風（後で画像に差し替え予定） */
.bg-paper-news {
    background-color: #e9dfc9;
    background-image:url("images/backgrounds/bg_papernews.png");
    background-size: 1300px;
}

/* -----------------------------------------
   Loading（扉が開いてTOPが見える演出）
----------------------------------------- */
.loading {
    position: fixed;
    inset: 0;
    z-index: 999;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 36px;
    /* スライドバナー裏と完全に同じレンガ背景（.bg-brickと値を揃えている） */
    background-color: #c4a38b;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='256' viewBox='0 0 512 256'%3E%3Crect width='512' height='256' fill='%23c4a38b'/%3E%3Cpath d='M0 0h512M0 128h512M0 0v128M256 0v128M128 128v128M384 128v128' stroke='%23af8d7b' stroke-width='12' fill='none'/%3E%3C/svg%3E");
    background-size: 128px 64px;
    /* 光(.loading__flash)が広がり始めるのと同時に背景も一緒に薄くなっていき、
       光越しにTOPページがふんわり透けて見えるようにする */
    transition: opacity 1.3s ease 1.0s, visibility 0s linear 2.3s;
}

/* 扉が開ききってからオーバーレイ全体をフェードアウト */
.loading.is-open {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* 扉の中央から画面全体に広がる光。
   扉が開ききる少し前(1.0s〜)から明るくなり始め、
   扉が開き終わる頃(1.7s)に画面全体まで広がりきる。
   薄い半透明にして、光越しにTOPページが見えるようにしている */
.loading__flash {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 60px;
    height: 60px;
    margin: -30px 0 0 -30px;
    background: radial-gradient(circle, #FFF6DE 0%, #FFE293 55%, rgba(255, 226, 150, 0) 100%);
    border-radius: 50%;
    transform: scale(0);
    opacity: 0;
    transition: transform 0.7s ease 1.0s, opacity 0.4s ease 1.0s;
    z-index: 10;
}

.loading.is-open .loading__flash {
    transform: scale(60);
    opacity: 0.45;
}

/* door_arch.png(1128x1410)の比率に合わせたステージ。
   画像を差し替えたら、この比率と下記.loading__doorの位置・サイズ(%)も
   新しい画像のサイズに合わせて調整する。 */
.loading__stage {
    position: relative;
    width: 240px;
    aspect-ratio: 1129 / 1427;
    perspective: 1400px;
}

/* 外枠（動かないパーツ）。ドアの開閉に関わらずずっと同じ位置に表示される */
.loading__arch {
    position: absolute;
    inset: 0;
    background-image: url("images/loading/door_arch.png");
    background-size: 100% 100%;
    background-repeat: no-repeat;
}

/* 扉の絵柄（door_left.png/door_right.png）そのものをマスクにして、
   扉の形とぴったり同じ範囲だけ金色に光らせる（透明部分＝扉の外は光らない）。
   左右2枚のマスクを1つの要素にまとめて指定することで、
   中央の合わせ目が二重ににじんで明るくなるのを防いでいる。 */
.loading__arch::before {
    content: '';
    position: absolute;
    top: 8.48%;
    left: 11.38%;
    right: 11.38%;
    height: 91.52%;
    background-color: #FFF1CA;
    -webkit-mask-image: url("images/loading/door_left.png"), url("images/loading/door_right.png");
    mask-image: url("images/loading/door_left.png"), url("images/loading/door_right.png");
    -webkit-mask-repeat: no-repeat, no-repeat;
    mask-repeat: no-repeat, no-repeat;
    /* 中央の合わせ目に暗い線が残らないよう、ちょうど半分よりわずかに広くして重ねる */
    -webkit-mask-size: 54% 100%, 54% 100%;
    mask-size: 54% 100%, 54% 100%;
    -webkit-mask-position: left top, right top;
    mask-position: left top, right top;
    /* 扉の形の縁をぼかして、アーチ内側との境目に少しだけ光が漏れ出すようにする */
    filter: blur(15px);
    box-shadow: 0 0 16px rgba(255, 226, 150, .5);
    transition: box-shadow 1.2s ease .4s;
}

.loading.is-open .loading__arch::before {
    box-shadow: 0 0 28px rgba(255, 226, 150, .85);
}

/* 動く扉（左右）。door_left.png/door_right.pngの実サイズ(436x1306)が
   ステージ(1129x1427)内で占める位置・比率に合わせている */
.loading__door {
    position: absolute;
    top: 8.48%;
    width: 38.62%;
    height: 91.52%;
    background: none;
    transition: transform 1.4s cubic-bezier(0.65, 0, 0.35, 1) .3s;
    backface-visibility: hidden;
}

.loading__door--left {
    left: 11.38%;
    transform-origin: left center;
}

.loading__door--right {
    right: 11.38%;
    transform-origin: right center;
}

.loading__door::before {
    content: '';
    position: absolute;
    inset: 0;
    background-size: 100% 100%;
    background-repeat: no-repeat;
}

.loading__door--left::before {
    background-image: url("images/loading/door_left.png");
}

.loading__door--right::before {
    background-image: url("images/loading/door_right.png");
}

.loading.is-open .loading__door--left {
    transform: rotateY(-110deg);
}

.loading.is-open .loading__door--right {
    transform: rotateY(110deg);
}

.loading__text {
    display: block;
    width: 160px;
    height: auto;
    animation: loadingPulse 1.6s ease infinite;
}

@keyframes loadingPulse {
    50% { opacity: 0.35; }
}

/* -----------------------------------------
   Header（グローバルナビ）
----------------------------------------- */
.site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background-color: var(--color-accent-red);
}

/* ヘッダー下の線・ひさしは無し(9/16版)。
   ただしこの::afterは見た目上は使わず、ヘッダーと同じ赤で塗った透明な板として残す。
   HELP&GUIDEのサブ項目(.gnav__sub)がヘッダーの高さ分だけ少しかぶる位置に出るため、
   このマスク(z-index:5、.gnav__subのz-index:1より上)でかぶった部分だけを隠している。
   （ヘッダー自身の背景はz-indexに関係なく常に子要素の下に描画されるため、この板が無いと
   　サブ項目の上端がヘッダーに浮いて重なって見えてしまう） */
.site-header::after {
    content: '';
    position: absolute;
    inset: 0;
    background-color: var(--color-accent-red);
    z-index: 5;
    pointer-events: none;
}

.site-header__inner {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 12px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.site-logo {
    position: relative;
    z-index: 6;
}

.site-logo img {
    width: 120px;
    height: 44px;
    object-fit: contain;
}

.gnav__list {
    display: flex;
    align-items: center;
    gap: 4px;
}

/* スマホのロゴメニューにだけ出す「TOP」項目。PCでは非表示 */
.gnav__top-only {
    display: none;
}

/* スマホでメニューを開いた時にだけ出す閉じるボタン。PCでは非表示。
   ×は文字ではなく細い線2本(::before/::after)で描画し、太さを正確に調整できるようにしている */
.gnav__close {
    display: none;
    border: none;
    background: none;
    padding: 0;
    cursor: pointer;
}

.gnav__close::before,
.gnav__close::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 1px;
    background: var(--color-light-gold);
}

.gnav__close::before {
    transform: translate(-50%, -50%) rotate(45deg);
}

.gnav__close::after {
    transform: translate(-50%, -50%) rotate(-45deg);
}

/* スマホでロゴの左に出すハンバーガーボタン。PCでは非表示 */
.gnav__hamburger {
    display: none;
    border: none;
    background: none;
    padding: 0;
    cursor: pointer;
}

.gnav__hamburger span {
    display: block;
    width: 22px;
    height: 1px;
    margin: 5px 0;
    background: var(--color-light-gold);
}

/* 下部固定バー(MENU/GOODSへのショートカット)。PCでは非表示、スマホでのみ表示。
   背景はヘッダーと同じ色、文字色は#f6edd8で統一する */
/* アバウトのセクションを通り過ぎるまでは隠しておき、通り過ぎたらスライドイン表示する。
   translateZ(0)はposition:fixedがどのページでも確実に効くようGPU合成レイヤーにする指定 */
.bottom-bar {
    display: none;
    background-color: var(--color-accent-red);
    transform: translateY(100%) translateZ(0);
    transition: transform .4s ease;
}

.bottom-bar.is-visible {
    transform: translateY(0) translateZ(0);
}

.bottom-bar__item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 8px 4px;
    color: #f6edd8;
}

.bottom-bar__icon {
    width: 22px;
    height: 22px;
    object-fit: contain;
}

.bottom-bar__label {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: .06em;
}

.bottom-bar__reserve {
    flex: 1.4;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #f6edd8;
    font-family: var(--font-en);
    font-size: 13px;
    font-weight: bold;
    letter-spacing: .06em;
}


.gnav__list a,
.gnav__list .gnav__link-static {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    font-family: var(--font-en);
    font-size: 12px;
    letter-spacing: 0.16em;
    color: var(--color-light-gold);
    position: relative;
    z-index: 6;
}

/* 各ナビ項目の左側のアイコン
   （デフォルトは虫めがね。<img class="gnav__icon" src="..."> に差し替え可能） */
.gnav__icon {
    display: inline-block;
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    background-color: var(--color-accent-gold);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* 画像アイコンに差し替えた場合はマスクを解除してそのまま表示 */
img.gnav__icon {
    background: none;
    -webkit-mask: none;
    mask: none;
    object-fit: contain;
}

/* 公式Xアイコン（一番最後の項目）。文字色(currentColor)に合わせて塗るので、hover時の色変化にも追従する */
.gnav__icon--x {
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.gnav__list a::after {
    content: '';
    position: absolute;
    left: 14px;
    right: 14px;
    bottom: 4px;
    height: 1px;
    background-color: #c2a45f;   /* 上品な金色（強すぎる--color-accent-goldより落ち着いたトーン） */
    transform: scaleX(0);
    transform-origin: left;
    transition: transform .3s ease;
}

.gnav__list a:hover {
    color: #c2a45f;   /* 上品な金色（強すぎる--color-accent-goldより落ち着いたトーン） */
    opacity: 1;
}

.gnav__list a:hover::after {
    transform: scaleX(1);
}

/* サブメニュー付き項目（RESERVATION・HELP&GUIDE）。
   PCではホバーで下にドロップダウン表示、スマホは項目ごとに挙動が異なる
   （RESERVATION=タップで開閉／HELP&GUIDEは常に非表示。下のメディアクエリで制御） */
.gnav__item.has-sub {
    position: relative;
}

/* <details>(RESERVATION)のsummaryを、他の<a>と同じ見た目にする */
.gnav__details summary {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    font-family: var(--font-en);
    font-size: 12px;
    letter-spacing: 0.16em;
    color: var(--color-light-gold);
    position: relative;
    z-index: 6;
    cursor: pointer;
    list-style: none;
}

.gnav__details summary::-webkit-details-marker {
    display: none;
}

.gnav__details summary:hover {
    color: #c2a45f;
}

.gnav__sub {
    display: none;
    position: absolute;
    /* ヘッダー本体(.site-header)より上には出さない(topを負にしない)。
       ヘッダー自身の背景はz-indexに関係なく常に子要素の下に描画されるため、
       箱の上端がヘッダーの下端より上に出ると、箱がヘッダーに覆いかぶさって
       浮いて見えてしまう。ひさし(.site-header::after、z-index:5)とは
       この位置なら重なってもz-indexで正しく背面に回る */
    top: 100%;
    left: 0;
    min-width: 180px;
    /* 上端がヘッダーに少しかぶって見える場合でも境目が目立たないよう、
       上側はヘッダーと同じ色→下側は今の暗いトーンへのグラデーションにしている */
    background: #25090a;
    z-index: 1;
    padding: 12px 0 4px;
    /* box-shadowは付けない：ぼかしが箱の上端よりさらに上まで滲み、
       ヘッダーの背景の上に影がはみ出て「つきでて見える」原因になるため */
}

/* LINK（一番右の項目）は左寄せで開くと右端が画面外に見切れるため、右寄せで開く */
.gnav__item--link .gnav__sub {
    left: auto;
    right: 0;
}

/* PCはホバーの間だけ表示。マウスが項目から箱へ移動する途中で一瞬外れても
   消えないよう、箱自体をホバーしている間も表示を維持する
   （スマホはこのルールは効かないため、下のメディアクエリで別途制御） */
.gnav__item.has-sub:hover .gnav__sub,
.gnav__sub:hover {
    display: block;
}

.gnav__sub a {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 10px 16px;
    font-size: 12px;
    white-space: nowrap;
}

/* スマホメニューの一番下に表示する、よくある質問・プライバシーポリシー・お問い合わせ。
   PCでは非表示（下部のメディアクエリでスマホの時だけ表示する） */
.gnav__utility {
    display: none;
}

/* -----------------------------------------
   Main Layout & Sections
----------------------------------------- */
.section-inner {
    max-width: 1000px;
    margin: 0 auto;
    padding: 80px 20px;
    text-align: center;
}

/* スライダーを全幅で挟むセクション用（見出し部・ボタン部） */
.section-inner--slim {
    padding-bottom: 0;
}

/* Topics用：広めのコンテンツ幅 */
.section-inner--wide {
    max-width: 1240px;
}

.section-inner--foot {
    padding-top: 40px;
    padding-bottom: 40px;
}

/* メニュー・グッズ一覧ページの一番下に置く「and more」画像 */
.section-andmore {
    display: block;
    margin: 40px auto 0px;
    max-width: 250px;
    width: 100%;
    height: auto;
}

/* トピックス・お知らせの「もっと見る」下の余白を、上の余白（カード/パネルのmargin-bottom）と揃える */
#topics .section-inner--wide {
    padding-bottom: 48px;
}

#news .section-inner {
    padding-bottom: 40px;
}

/* 木目リボンのセクション見出し（元イメージの看板風） */
.sec-ribbon {
    display: inline-block;
    position: relative;
    min-width: 260px;
    margin: 0 auto 12px;
    padding: 12px 48px;
    background:
        repeating-linear-gradient(90deg,
            rgba(0, 0, 0, .12) 0 2px, transparent 2px 22px),
        linear-gradient(170deg, var(--wood-light), var(--wood-dark));
    border-radius: 50% / 100% 100% 0 0;
    border-radius: 16px;
    box-shadow: 0 6px 16px rgba(46, 26, 12, .35), inset 0 0 0 2px rgba(223, 183, 67, .45);
    color: var(--color-accent-gold);
    font-family: var(--font-en);
    font-style: italic;
    font-size: clamp(24px, 3vw, 32px);
    letter-spacing: 0.14em;
    line-height: 1.3;
}

.sec-jp {
    display: block;
    margin-bottom: 40px;
    font-size: 12px;
    letter-spacing: 0.3em;
    color: var(--color-text-main);
}

/* 見出しを1枚画像（英字＋日本語セット）に差し替える場合のスタイル */
.sec-head-img {
    display: block;
    max-width: 320px;
    height: auto;
    margin: 0 auto 40px;
}

.section--dark .sec-jp,
.bg-brick .sec-jp {
    color: #fff;
    text-shadow: 0 1px 3px rgba(61, 42, 29, .5);
}

/* -----------------------------------------
   ボタン
----------------------------------------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    position: relative;
    min-width: 240px;
    padding: 14px 36px;
    font-family: var(--font-main);
    font-size: 14px;
    letter-spacing: 0.18em;
    border-radius: 0;
    border: 1px solid transparent;
    cursor: pointer;
    transition: var(--transition-smooth);
}

/* 鍵アイコン付きボタン（ホバーで鍵が右へ動く） */
.btn--key {
    padding-right: 60px;
}

.btn--key::after {
    content: '';
    position: absolute;
    right: 14px;
    top: 50%;
    width: 36px;
    height: 18px;
    transform: translateY(-50%);
    background-color: currentColor;
    /* アンティークな飾り穴付きの鍵（左に丸いボウ・右に歯） */
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 24' fill-rule='evenodd'%3E%3Cpath d='M11 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm0 5a4 4 0 1 0 0 8 4 4 0 0 0 0-8z'/%3E%3Cpath d='M19 10.4h24v3.2H19z'/%3E%3Cpath d='M40.5 13.6h2.6v5.2h-2.6zM35 13.6h2.4v4.1H35z'/%3E%3Ccircle cx='46' cy='12' r='2'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 24' fill-rule='evenodd'%3E%3Cpath d='M11 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm0 5a4 4 0 1 0 0 8 4 4 0 0 0 0-8z'/%3E%3Cpath d='M19 10.4h24v3.2H19z'/%3E%3Cpath d='M40.5 13.6h2.6v5.2h-2.6zM35 13.6h2.4v4.1H35z'/%3E%3Ccircle cx='46' cy='12' r='2'/%3E%3C/svg%3E") center / contain no-repeat;
    transition: transform .3s ease;
}

.btn--key:hover::after {
    transform: translateY(-50%) translateX(5px);
}

/* 文字の左側のアイコン（用途別） */
.btn--icon-schedule::before,
.btn--icon-menu::before,
.btn--icon-search::before {
    content: '';
    width: 17px;
    height: 17px;
    flex: 0 0 auto;
    background-color: currentColor;
    -webkit-mask: var(--btn-icon) center / contain no-repeat;
    mask: var(--btn-icon) center / contain no-repeat;
}

/* スケジュール（カレンダー） */
.btn--icon-schedule {
    --btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V9h14v10zM5 7V5h14v2H5zm2 6h5v5H7z'/%3E%3C/svg%3E");
}

/* 開いたメニューブック */
.btn--icon-menu {
    --btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M21 5c-1.11-.35-2.33-.5-3.5-.5-1.95 0-4.05.4-5.5 1.5-1.45-1.1-3.55-1.5-5.5-1.5S2.45 4.9 1 6v14.65c0 .25.25.5.5.5.1 0 .15-.05.25-.05C3.1 20.45 5.05 20 6.5 20c1.95 0 4.05.4 5.5 1.5 1.35-.85 3.8-1.5 5.5-1.5 1.65 0 3.35.3 4.75 1.05.1.05.15.05.25.05.25 0 .5-.25.5-.5V6c-.6-.45-1.25-.75-2-1zm0 13.5c-1.1-.35-2.3-.5-3.5-.5-1.7 0-4.15.65-5.5 1.5V8c1.35-.85 3.8-1.5 5.5-1.5 1.2 0 2.4.15 3.5.5v11.5z'/%3E%3C/svg%3E");
}

/* 虫眼鏡 */
.btn--icon-search {
    --btn-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/%3E%3C/svg%3E");
}

.btn--red {
    background: linear-gradient(170deg, #a03a42, var(--color-accent-red));
    color: #fff;
    box-shadow: 0 6px 16px rgba(142, 47, 54, .35), inset 0 0 0 1px rgba(223, 183, 67, .5);
}

.btn--red:hover {
    background: var(--color-accent-red-dark);
    transform: translateY(-3px);
    opacity: 1;
}

/* 茶色の標準ボタン（詳細はこちら・もっと見る 等） */
.btn--ghost {
    border-color: var(--wood-dark);
    color: var(--color-bg-light);
    background: var(--wood-dark);
}

.btn--ghost:hover {
    background: var(--color-accent-brown);
    border-color: var(--color-accent-brown);
    color: #fff;
    opacity: 1;
}

/* 角がえぐれたプレート型ボタン（clip-pathで八角形に切り抜き→角の外に余白が出ない）
   外周ゴールド（要素背景）＋赤地（::before）の二層で内側の金ラインを表現 */
.btn--plaque {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 320px;
    padding: 15px 40px;
    font-family: var(--font-main);
    font-size: 15px;
    letter-spacing: 0.18em;
    color: #fff;
    background: #dfcba7;              /* ゴールドの外枠 */
    border: none;
    border-radius: 0;
    box-shadow: none;
    -webkit-clip-path: polygon(13px 0, calc(100% - 13px) 0, 100% 13px, 100% calc(100% - 13px), calc(100% - 13px) 100%, 13px 100%, 0 calc(100% - 13px), 0 13px);
    clip-path: polygon(13px 0, calc(100% - 13px) 0, 100% 13px, 100% calc(100% - 13px), calc(100% - 13px) 100%, 13px 100%, 0 calc(100% - 13px), 0 13px);
}

.btn--plaque::before {
    content: '';
    position: absolute;
    inset: 3px;
    background: linear-gradient(170deg, #a03a42, #8e2f36);   /* 赤地 */
    -webkit-clip-path: polygon(11px 0, calc(100% - 11px) 0, 100% 11px, 100% calc(100% - 11px), calc(100% - 11px) 100%, 11px 100%, 0 calc(100% - 11px), 0 11px);
    clip-path: polygon(11px 0, calc(100% - 11px) 0, 100% 11px, 100% calc(100% - 11px), calc(100% - 11px) 100%, 11px 100%, 0 calc(100% - 11px), 0 11px);
    z-index: 0;
}

.btn--plaque .btn__label { position: relative; z-index: 1; }
.btn--plaque.btn--key { padding-right: 58px; }
.btn--plaque.btn--key::after { z-index: 2; }

.btn--plaque:hover {
    filter: brightness(1.1);
}

/* 謎解きのヒントを見る：背景色入り・文字とアイコンは白 */
.btn--gold {
    border-color: transparent;
    color: #fff;
    background: #be9756;
}

.btn--gold:hover {
    background: #a17f47;
    color: #fff;
    opacity: 1;
}

.btn--small {
    min-width: 180px;
    padding: 10px 28px;
    font-size: 12px;
}

.btn--small.btn--key {
    padding-right: 54px;
}

.btn--small.btn--key::after {
    width: 29px;
    height: 17px;
    right: 12px;
}

/* -----------------------------------------
   TOP Banner Area（ヒーローKV）
----------------------------------------- */
.top-banner-section {
    width: 100%;
}

.top-banner-container {
    position: relative;
}

.kv-slider {
    position: relative;
}

/* KVスライドバナー（ふんわりクロスフェード）。
   上下左右の余白は無し、画像は幅いっぱいに表示する。
   高さはheight:0+padding-bottomで確保する昔ながらの方法（バナー画像の
   実際の比率760/1100=69.09%）にしており、JSでの幅計算・クローン生成・
   translateXでの位置合わせを一切行わないため、時間が経っても崩れない */
.kv-viewport {
    width: 100%;
}

.kv-slides {
    position: relative;
    width: 100%;
    height: 0;
    padding-bottom: 70.74%;   /* 実際のバナー画像の縦横比に合わせる（下部が見切れる問題の修正） */
    overflow: hidden;
}

.kv-slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    z-index: 0;
    transition: opacity 1.4s ease;
}

/* 直前のスライドは、次の画像がフェードインし終わるまで不透明のまま一段下に残す。
   切り替え中に一瞬どちらの画像も薄くなって背景が見える瞬間が無くなる */
.kv-slide.is-prev {
    opacity: 1;
    z-index: 1;
    transition: none;
}

.kv-slide.is-active {
    opacity: 1;
    z-index: 2;
}

.kv-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* スライド位置表示は、バナー画像に被らないよう画像の下に、
   枚数に応じて等分した細い横線で表示する。
   通常は茶色みのあるグレー、表示中のスライドの区間だけ白くする */
.kv-bars {
    position: static;
    display: flex;
    width: 100%;
    gap: 4px;
    padding: 0;
    box-sizing: border-box;
}

.kv-bar {
    flex: 1;
    height: 2px;
    border-radius: 2px;
    border: none;
    background: #9e9e9e;
    padding: 0;
    opacity: .8;
    cursor: pointer;
    transition: background .3s ease;
}

.kv-bar.is-active {
    background: #f6edd8;
}

/* -----------------------------------------
   About（緞帳・カーテンの看板エリア）
----------------------------------------- */
.about-section {
    position: relative;
    background-color: var(--color-bg-navy);
    padding: 30px 15px;
    overflow: hidden;
}

/* 背景の内観写真スロット（imgを入れると全面に表示。暗幕を重ねて文字を読みやすく） */
.about-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.about-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.about-bg::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgb(60 35 24 / 53%);
}

/* 左右のカーテン（画像パターン：試験導入。
   以前のグラデーション+マスク版は old フォルダのバックアップに残してあるので、
   戻す場合はそちらのstyle.cssから該当ブロックを復元すればOK）。
   画像(about_curtain.png)は左側の絵柄のみ用意されているため、
   右側は .curtain-img 側でscaleX(-1)して反転して使う。
   ※ミラーは中の.curtain-imgだけにかけ、開閉アニメ(translate/scale)は
   　外側の.curtain自体にかけることで、transform同士の合成順の問題を避けている */
.curtain {
    position: absolute;
    top: 0;
    bottom: -6%;
    /* 閉じている時に中央で重ならないよう、左右の内側の縁がちょうど突き合う幅にしている
       (左右とも-2%はみ出す配置なので、52%でぴったり中央合わせになる) */
    width: 52%;
    z-index: 3;
    overflow: visible;
    opacity: 1;
    transition: transform 1.5s cubic-bezier(.5, 0, .2, 1) 0.4s, opacity 1s ease 1.1s;
    will-change: transform, opacity;
}

.curtain-img {
    position: absolute;
    inset: 0;
    background-image: url("images/about/about_curtain.png");
    background-repeat: no-repeat;
    background-size: 100% 100%;
}

.curtain--left {
    left: -2%;
    transform-origin: left center;
}

.curtain--right {
    right: -2%;
    transform-origin: right center;
}

.curtain--right .curtain-img {
    transform: scaleX(-1);
}

/* 開いた時：サイズはそのまま、両サイドへ移動してフェードアウト */
.about-section.is-open .curtain--left {
    transform: translateX(-45%);
    opacity: 0;
}

.about-section.is-open .curtain--right {
    transform: translateX(45%);
    opacity: 0;
}

.about-board {
    position: relative;
    z-index: 1;
    max-width: 720px;
    margin: 0 auto;
    padding: 20px 20px 30px;
    text-align: center;
    background: none;   /* 画像の裏の枠は消す */
    border: none;
    outline: none;
    color: var(--color-light-gold);
}

.about-board__site {
    font-size: 12px;
    letter-spacing: 0.3em;
    color: var(--color-accent-gold);
}

.about-board__copy {
    margin-top: 16px;
    font-size: clamp(20px, 3vw, 28px);
    font-weight: 600;
    letter-spacing: 0.14em;
    line-height: 2;
    color: #fff;
}

/* コピー部分を画像に差し替える場合のスタイル */
.about-lead-img {
    display: block;
    max-width: 480px;
    width: 100%;
    height: auto;
    margin: 0 auto;
    opacity: 0;
    transform: translateY(60px) scaleY(1.2);
}

/* カーテンが開ききる(1.5s)のを待ってから、トピックと同じ動き(bounceInUp)で登場させる */
.about-section.is-open .about-lead-img {
    animation: bounceInUp 0.7s cubic-bezier(0.25, 1, 0.5, 1) 0.45s forwards;
}

.about-board__notice {
    margin-top: 20px;
    color: #fff;
    font-weight: bold;
    font-size: 20px;
    line-height: 1.5;
    letter-spacing: 0.05em;
}

@media (max-width: 600px) {
    .about-board__notice {
        font-size: 14px;
    }
}

/* ボタン3つは金枠ボードの外（下）に横並びで配置 */
.about-board__actions {
    position: relative;
    z-index: 4;
    margin: 36px auto 0;
    display: flex;
    justify-content: center;
    gap: 16px;
    flex-wrap: wrap;
}

/* 謎解きと美食のボタンはホバーで浮き上がらせない */
.about-board__actions .btn:hover {
    transform: none;
}

/* ご予約はこちらの金色の内枠線を消す。
   グラデーション→単色だと切替時に点滅するため、単色ベースにして背景色だけ変える。
   ヘッダーの暗い赤とは別に、明るい赤にしている */
.about-board__actions .btn--red {
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);
    background: #8e252a;
}

.about-board__actions .btn--red:hover {
    background: #761e22;
    color: #fff;
    opacity: 1;
    transform: none;
}

/* メニューを見るボタンを紺色に */
.about-board__actions .btn--ghost {
    background: #30314d;
    border-color: #30314d;
    color: #fff;
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);
}

.about-board__actions .btn--gold {
    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);
}

.about-board__actions .btn--ghost:hover {
    background: #2c2737;
    border-color: #2c2737;
    color: #fff;
}

.about-board__hint {
    margin-top: 16px;
}

/* -----------------------------------------
   Logo Marquee Section
----------------------------------------- */
.logo-marquee-section {
    width: 100%;
    overflow: hidden;
    background-color: #705147;
    padding: 5px 0;
}

.marquee-track {
    display: flex;
    width: max-content;
    animation: marquee-right 55s linear infinite;
}

.marquee-group {
    display: flex;
    justify-content: space-around;
    gap: 70px;
    padding-right: 70px;
    flex-shrink: 0;
}

.marquee-img {
    height: 27px;
    width: auto;
    object-fit: contain;
    opacity: 0.8;
}

@keyframes marquee-right {
    0% { transform: translateX(-50%); }
    100% { transform: translateX(0); }
}

/* -----------------------------------------
   Movie
----------------------------------------- */
/* レンガ背景の中に、枠付きの動画フレームを浮かせる */
.movie-section {
    padding: 80px 20px;
    background-color: #c4a38b;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='256' viewBox='0 0 512 256'%3E%3Crect width='512' height='256' fill='%23c4a38b'/%3E%3Cpath d='M0 0h512M0 128h512M0 0v128M256 0v128M128 128v128M384 128v128' stroke='%23af8d7b' stroke-width='12' fill='none'/%3E%3C/svg%3E");
    background-size: 128px 64px;
}

.movie-frame {
    position: relative;
    max-width: 900px;
    width: 100%;
    margin: 0 auto;
    aspect-ratio: 16 / 9;
    max-height: 640px;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #a9a9a9;
    border: 2px solid #ead4af;
}

/* 動画フレームの四隅の装飾（movie_corner.pngを別途格納予定。40px角） */
.movie-frame .card-corner {
    width: 45px;
    height: 45px;
}
.movie-frame .card-corner--tl { top: -6px; left: -6px; }
.movie-frame .card-corner--tr { top: -6px; right: -6px; }
.movie-frame .card-corner--bl { bottom: -6px; left: -6px; }
.movie-frame .card-corner--br { bottom: -6px; right: -6px; }

/* 再生ボタン（about_moviebtn.png）。ホバーで拡大、クリックで動画再生してボタンは消える */
.movie-play {
    width: 150px;
    height: 150px;
    padding: 0;
    border: none;
    background: url("images/about/about_moviebtn.png") center / contain no-repeat;
    cursor: pointer;
    transition: transform .3s ease;
    font-size: 0;
}

.movie-play:hover {
    transform: scale(1.12);
    opacity: 1;
}

/* 再生中はボタンを消す */
.movie-section.is-playing .movie-play {
    display: none;
}

/* -----------------------------------------
   Access
----------------------------------------- */
/* アーチの扉（初期＝石枠の中に閉じた木扉。開くと左右に開いた扉が残る観音開き） */
.access-arch {
    position: relative;
    max-width: 640px;
    margin: 0 auto 40px;
    perspective: 1600px;
}

.access-panel {
    position: relative;
    padding: 110px 40px 48px;
    background-color: #f6efdf;
    border: 2px solid #c1a18b;
    border-radius: 330px 330px 0 0;
}

/* ベージュがかったゴールド単色のシンプルな扉 */
.arch-door {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 50%;
    z-index: 5;
    background: #c8b09a;
    border: 2px solid #ae947b;
    transition: transform 1.4s cubic-bezier(.65, 0, .35, 1) .15s;
    /* 開閉時にフッター等がガタつく現象の対策：回転前に合成レイヤーを
       確保しておき、開いた瞬間の再描画によるチラつきを防ぐ
       （backface-visibility:hiddenは90度以上回転した扉が消えてしまうため使わない） */
    will-change: transform;
}

.arch-door--left {
    left: 1px;
    border-radius: 320px 0 0 0;
    border-right: 3px solid #ae947b;
    transform-origin: left center;   /* 外側のちょうつがいを軸に回転 */
}

.arch-door--right {
    right: 1px;
    border-radius: 0 320px 0 0;
    border-left: 3px solid #ae947b;
    transform-origin: right center;
}

/* 縦長のクラシカルな取っ手（上下の楕円マウント＋緩やかに湾曲したグリップ） */
.arch-door::after {
    content: '';
    position: absolute;
    top: 44%;
    width: 22px;
    height: 65px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 80'%3E%3Cg fill='%23ab8d55'%3E%3Cellipse cx='12' cy='8' rx='7' ry='6.5'/%3E%3Cellipse cx='12' cy='72' rx='6' ry='5.5'/%3E%3C/g%3E%3Cpath d='M12 9v62' fill='none' stroke='%23ab8d55' stroke-width='6.5' stroke-linecap='round'/%3E%3C/svg%3E");
    background-size: contain;
    background-repeat: no-repeat;
}

.arch-door--left::after { right: 12px; }
.arch-door--right::after { left: 12px; transform: scaleX(-1); }

/* 開いた状態：90度以上回転して、アーチ枠の左右に開いた扉が残る */
.access-arch.is-open .arch-door--left { transform: rotateY(-115deg); }
.access-arch.is-open .arch-door--right { transform: rotateY(115deg); }

.access-arch.is-open .access-panel {
    opacity: 1;
    visibility: visible;
    transition: opacity .8s ease .2s, visibility 0s linear .2s;
}

.access-venue {
    font-size: 26px;
    letter-spacing: 0.3em;
    color: var(--color-text-main);
}

.access-venue small {
    display: block;
    font-family: var(--font-en);
    font-size: 12px;
    letter-spacing: 0.4em;
    color: var(--color-accent-brown);
}

/* -----------------------------------------
   きらきら区切り線（両端にスパークル）
----------------------------------------- */
.deco-divider {
    position: relative;
    width: min(260px, 80%);
    height: 15px;
    margin: 18px auto;
    background: linear-gradient(#dfcba7 0 0) center / calc(100% - 50px) 1px no-repeat;
}

.deco-divider::before,
.deco-divider::after {
    content: '';
    position: absolute;
    top: 50%;
    width: 15px;
    height: 15px;
    transform: translateY(-50%);
    background-color: #dfcba7;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0l2.6 9.4L24 12l-9.4 2.6L12 24l-2.6-9.4L0 12l9.4-2.6z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0l2.6 9.4L24 12l-9.4 2.6L12 24l-2.6-9.4L0 12l9.4-2.6z'/%3E%3C/svg%3E") center / contain no-repeat;
}

.deco-divider::before { left: 0; }
.deco-divider::after { right: 0; }

.deco-divider--small {
    width: 150px;
    margin: 12px auto;
}

/* メニュー・グッズのカード内は名前の端に合わせて伸ばす(トピックスと同じ幅) */
.card--fancy .deco-divider--small,
.card--arch .deco-divider--small {
    width: 100%;
}

/* キャラ一覧：紹介文の端に合わせて線を伸ばす。画像上の余白も少し広げる */
.card--character .deco-divider--small {
    width: 100%;
}

/* 予約特典：どの画面幅でも確実に表示されるよう、装飾（両端のきらきら）は
   無しにして、シンプルな1pxの横線だけにする */
.book-page .deco-divider,
.book-page .deco-divider--small {
    width: 100%;
    height: 1px;
    background: #dfcba7;
}

.book-page .deco-divider::before,
.book-page .deco-divider::after {
    display: none;
}

.card--character .card-pic {
    margin-top: 16px;
}

.access-panel dl {
    margin: 28px auto 0;
    max-width: 480px;
    display: grid;
    grid-template-columns: 100px 1fr;
    row-gap: 12px;
    font-size: 14px;
    text-align: left;
}

/* 項目名は中抜きの外枠付き */
.access-panel dt {
    font-size: 11px;
    letter-spacing: 0.24em;
    color: var(--color-accent-brown);
    border: 1px solid var(--color-accent-brown);
    border-radius: 2px;
    text-align: center;
    padding: 3px 0;
    align-self: start;
}

.access-panel dd {
    padding-left: 18px;
}

/* MAP＋キャラ画像の横並び */
.access-map-row {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    max-width: 640px;
    margin: 28px auto 0;
}

/* キャラ画像：裏の金枠・背景をなくし、画像を切らずそのまま表示 */
.access-char {
    flex: 0 0 110px;
    align-self: flex-end;
    display: block;
    overflow: visible;
}

.access-char img {
    width: 100%;
    height: auto;
    display: block;
}

/* マップ：裏の金枠をなくし、枠内で少し大きめに（スマホでは縦長に。600px以下のメディアクエリ参照） */
.access-map {
    flex: 1;
    aspect-ratio: 16 / 11;
    border: none;
    border-radius: 6px;
    overflow: hidden;
    background: none;
}

.access-map iframe {
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

.access-panel .btn {
    margin-top: 32px;
}

/* -----------------------------------------
   Novelty（スクロールで本が開くアニメ）
----------------------------------------- */
.novelty-lead {
    max-width: 640px;
    margin: 0 auto 48px;
    font-size: 14px;
}

.novelty-lead strong {
    color: var(--color-accent-red);
}

/* section-innerの外（<section>の直下）にマークアップを移動したことで、
   幅いっぱいに広がるようにした（vw指定はスクロールバー分のズレで
   横スクロールバーが出る原因になっていたため使わない） */
.book-section {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 20px 0 40px;
    perspective: 2000px;
    overflow-x: clip;
}

/* スマホ：横300px × 縦420px */
/* 表紙の色（外枠）を常に敷いておき、開いた後もページの外側に少しだけ見えるようにする */
.book {
    position: relative;
    width: 300px;
    height: 420px;
    background-color: #2f2a3a;
    border-radius: 4px 12px 12px 4px;
    transform-style: preserve-3d;
    transition: transform 1.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.book.is-open {
    transform: none;
}

/* .book-coverは回転すると.book自体の背景と重ならなくなるため、
   左ページ(.cover-back)の外側にも表紙色が見えるよう、ここにも同じ色を敷いておく */
.book-cover {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    background-color: #2f2a3a;
    border-radius: 4px 12px 12px 4px;
    transform-style: preserve-3d;
    transform-origin: left center;
    transition: transform 1.2s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 2;
}

.book.is-open .book-cover {
    transform: rotateY(-180deg);
}

/* ページ側は表紙よりひと回り小さくして、外側（上下と外側の縦辺）にだけ
   表紙の色が見えるようにする。中央の綴じ目側は0にして、両ページがぴったり
   くっつくようにする。影は無し（開いた瞬間に影が急に出るのを防ぐため） */
.book-page {
    position: absolute;
    inset: 12px 12px 12px 0;
    border-radius: 4px 12px 12px 4px;
    box-shadow: none;
}

/* 表紙のオモテ面 */
.cover-front {
    position: absolute;
    width: 100%;
    height: 100%;
    backface-visibility: hidden;
    background-color: #2f2a3a;
    color: #e1c798;
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
}

.cover-front::before {
    content: '';
    position: absolute;
    top: 10px; left: 10px; right: 10px; bottom: 10px;
    border: 2px solid #e1c798;
    border-radius: 4px;
}

.cover-decor {
    width: 90px;
    height: 90px;
    margin-bottom: 20px;
    opacity: 0.9;
    object-fit: contain;
}

.cover-title {
    font-family: var(--font-en);
    font-style: italic;
    font-size: 20px;
    letter-spacing: 0.15em;
    border-top: 1px solid #e1c798;
    border-bottom: 1px solid #e1c798;
    padding: 10px 0;
    width: 85%;
    font-weight: normal;
}

/* 開いた時の左側（スマホ＝表紙と同じ紺色）。表紙よりひと回り小さくして、
   外側（上下と外側の縦辺）にだけ表紙の色が見えるようにする。
   180deg回転で左右が反転するため、綴じ目側になるのは(見た目の左右とは逆の)
   ローカル座標の左端。そちらを0にして、右ページとぴったりくっつくようにする */
.cover-back {
    position: absolute;
    inset: 12px 12px 12px 0;
    backface-visibility: hidden;
    background-color: #2f2a3a;
    transform: rotateY(180deg);
    border-radius: 12px 4px 4px 12px;
}

/* 内側の金のボーダーは不要 */
.cover-back::before {
    display: none;
    content: '';
    position: absolute;
    top: 10px; left: 10px; right: 10px; bottom: 10px;
    border: 1px solid rgba(212, 175, 55, 0.2);
    border-radius: 4px;
}

/* 右側のページ */
.book-page {
    background: var(--color-card-bg);
    z-index: 1;
    border-left: 2px solid #e8d6ac;
    overflow: hidden;
}

.page-content {
    padding: 25px;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    color: #3d2403;
    text-align: left;
}

.page-content h3 {
    margin: 0 0 12px 0;
    font-size: 18px;
    font-weight: bold;
    border-bottom: 1px solid rgba(61, 36, 3, 0.2);
    padding-bottom: 6px;
    letter-spacing: 0.05em;
}

.page-content p {
    margin: 0 0 10px;
    font-size: 13px;
    line-height: 1.7;
    text-align: justify;
}

.page-period {
    margin-top: 4px;
    font-size: 12px;
    letter-spacing: 0.1em;
}

/* 右ページ：中央寄せレイアウト */
.page-content--center {
    align-items: center;
    justify-content: center;
    text-align: center;
}

/* 見出し「予約特典」（東京会場と同じ大きめ中央表示） */
.book-heading {
    font-size: 26px;
    font-weight: 600;
    letter-spacing: 0.3em;
    color: var(--color-text-main);
    border-bottom: none !important;
}

.book-heading small {
    display: block;
    margin-top: 8px;
    font-size: 20px;
    letter-spacing: 0.12em;
    color: var(--color-accent-brown);
}

.book-note {
    font-size: 11px;
    color: rgba(61, 36, 3, .75);
}

/* 左ページ：画像をそのまま入れるスロット */
.page-content--photo {
    padding: 24px;
}

.page-photo {
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
    border-radius: 0;
    font-size: 12px;
    letter-spacing: 0.15em;
    color: var(--color-accent-brown);
}

/* どんな画像サイズでも見切れないよう全体表示 */
.page-content--photo img,
.page-photo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 0;
}

/* スマホ右ページ内の画像（高さは画像なりに） */
.page-photo--sp {
    width: 100%;
    height: auto;
    margin-bottom: 14px;
}

.page-photo--sp img {
    height: auto;
}

.page-period strong {
    font-family: var(--font-en);
    font-size: 17px;
    color: inherit;   /* 配布期間の日時を本文と同じ文字色に */
}

.novelty-badge {
    display: inline-block;
    align-self: flex-start;
    margin-bottom: 12px;
    padding: 4px 16px;
    font-size: 11px;
    letter-spacing: 0.2em;
    color: #fff;
    background: var(--color-accent-red);
    border-radius: 999px;
}

/* コースターのプレースホルダー（12種グリッド） */
.coaster-grid {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 15px;
}

.coaster-grid span {
    aspect-ratio: 1;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, #f0e2c0, #cbb389);
    border: 1px solid #b49c72;
    display: grid;
    place-items: center;
    font-size: 10px;
    color: #7a6034;
}

/* 表示切り替えの初期設定（スマホ優先） */
.sp-content { display: flex; }
.pc-content { display: none; }

/* PC向け：480px以上 */
@media (min-width: 480px) {
    .sp-content { display: none; }
    .pc-content { display: flex; }

    /* 開いた見開き（幅×2）が960px以下でも必ず画面内に収まるよう、
       固定460pxではなく画面幅に応じて縮む可変サイズにする（見切れ防止）。
       高さは幅に比例させつつ、文章が収まる600pxを下回らないようにする */
    .book {
        --book-w: min(460px, 42vw);
        width: var(--book-w);
        height: max(600px, calc(var(--book-w) * 640 / 460));
    }

    /* 開いた時、本の合わせ目が画面の水平中央に来るよう右へ半分スライド */
    .book.is-open {
        transform: translateX(calc(var(--book-w) / 2));
    }

    .cover-front { padding: 60px; }
    .cover-front::before {
        top: 20px; left: 20px; right: 20px; bottom: 20px;
        border: 4px solid #e1c798;
    }
    .cover-decor { width: 150px; height: 150px; margin-bottom: 40px; }
    .cover-title { font-size: 30px; padding: 20px 0; }

    /* 左側を右ページと同じ古紙色に(フラット) */
    .cover-back {
        background: var(--color-card-bg);
        border-right: 2px solid #e8d6ac;
        border-left: none;
    }
    .cover-back::before { display: none; }

    .page-content { padding: 50px; }

    .page-content h3 {
        font-size: 28px;
        margin-bottom: 20px;
        padding-bottom: 12px;
    }

    .book-page .pc-content p {
        font-size: 16px;
        line-height: 1.9;
    }

    .coaster-grid { gap: 14px; margin-bottom: 0; }
    .coaster-grid span { font-size: 13px; }
}

/* -----------------------------------------
   キャラクター別ページ（taxonomy-character.php）
----------------------------------------- */
.chara-hero { text-align: center; padding: 64px 20px 24px; }
.chara-hero__en {
    font-family: var(--font-en);
    font-style: italic;
    letter-spacing: .22em;
    color: var(--color-accent-brown);
}
.chara-hero__name {
    font-size: clamp(24px, 4vw, 34px);
    letter-spacing: .2em;
    color: var(--color-text-main);
    margin-top: 10px;
}
.chara-hero__notice {
    margin-top: -16px;
    margin-bottom: 6px;
    font-size: 16px;
    line-height: 1.5;
    color: #705147;
    font-weight: bold;
}
.chara-grid { max-width: 1040px; margin: 0 auto; padding: 0 20px; }
.chara-grid .card-grid { margin-bottom: 8px; }

/* メニューカテゴリのアンカーナビ・見出し */
.menu-cat-nav {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    max-width: 1040px;
    margin: 0 auto 40px;
    padding: 0 20px;
}

.menu-cat-pill {
    display: block;
    box-sizing: border-box;
    padding: 8px 40px 8px 16px;
    border: 1px solid var(--wood-dark);
    background-color: var(--wood-dark);
    color: var(--color-bg-light);
    font-size: 14px;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-decoration: none;
    text-align: center;
    position: relative;
}

.menu-cat-pill::after {
    content: '';
    position: absolute;
    right: 18px;
    top: 50%;
    width: 6px;
    height: 6px;
    border-right: 1px solid var(--color-bg-light);
    border-bottom: 1px solid var(--color-bg-light);
    transform: translateY(-65%) rotate(45deg);
}

.menu-cat-pill:hover {
    background-color: var(--color-accent-brown);
    border-color: var(--color-accent-brown);
    opacity: 1;
}

@media (max-width: 600px) {
    .menu-cat-nav {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
    }
}

@media (max-width: 390px) {
    .menu-cat-nav {
        grid-template-columns: 1fr;
    }
}

.menu-cat-group {
    scroll-margin-top: 100px;
}

.menu-cat-heading {
    max-width: 1040px;
    margin: 64px auto 20px;
    padding: 0 20px;
    font-size: 28px;
    letter-spacing: 0.1em;
    color: var(--wood-dark);
    text-align: center;
}

@media (max-width: 600px) {
    .menu-cat-heading {
        font-size: 20px;
    }
}
.chara-empty {
    grid-column: 1 / -1;
    text-align: center;
    color: var(--color-text-main);
    padding: 24px;
}
.chara-back { text-align: center; padding: 72px 20px; }

/* トピックス一覧・お知らせ一覧：見出し下とTOPへ戻るボタン上の余白を詰める */
#news-archive-page .sec-head-img,
#topics-archive-page .sec-head-img {
    margin-bottom: 4px;
}

#news-archive-page .chara-back,
#topics-archive-page .chara-back {
    padding-top: 8px;
}

/* 本体の.section-innerは上下80pxの余白があり、これが余白の主因だったので詰める */
#news-archive-page .section-inner,
#topics-archive-page .section-inner {
    padding-top: 24px;
    padding-bottom: 24px;
}

/* キャラ別ページ：見出し下の余白を詰める */
#character-single-page .chara-hero {
    padding-bottom: 8px;
}

/* -----------------------------------------
   投稿詳細ページ（single.php：トピックス・お知らせ個別記事）
----------------------------------------- */
.single-inner {
    max-width: 760px;
}

/* タイトル～TOPへ戻るまでをまとめて囲む枠（Menuカードと同じ色・枠線） */
.single-panel {
    background-color: var(--color-card-bg);
    border: 2px solid #c1a18b;
    border-radius: 0;
    padding: 48px 20px;
}

.single-panel__title {
    text-align: left;
    font-size: clamp(22px, 4vw, 30px);
    letter-spacing: .15em;
    color: var(--color-text-main);
    margin-bottom: 20px;
}

.single-meta {
    justify-content: flex-start;
    margin-bottom: 28px;
}

/* カテゴリバッジと日付のサイズを揃える */
.single-meta .card-meta__cat,
.single-meta .card-meta__date {
    font-family: var(--font-en);
    font-size: 11px;
    padding: 3px 14px;
}

.single-back {
    padding: 40px 0 0;
}

.single-thumb {
    margin-bottom: 32px;
    border-radius: 0;
    overflow: hidden;
}

.single-thumb img {
    width: 100%;
    height: auto;
    display: block;
}

.single-content {
    text-align: left;
    line-height: 1.9;
    color: var(--color-text-main);
}

.single-content p {
    margin-bottom: 1.4em;
}

/* -----------------------------------------
   FAQページ（キーワード検索・カテゴリ選択・カテゴリ別アコーディオン）
----------------------------------------- */
.faq-page .single-panel__title {
    text-align: center;
}

.faq-page .single-panel__notice {
    text-align: center;
    font-size: 13px;
    line-height: 1.8;
    color: var(--color-text-muted);
    margin-bottom: 30px;
}

.faq-group {
    margin-bottom: 40px;
}

.faq-item {
    margin-bottom: 10px;
}

/* 質問と「詳細を見る」の部分＝茶色の枠（塗り）にベージュ文字。回答側は変更しない */
.faq-item summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px 18px;
    text-align: left;
    cursor: pointer;
    list-style: none;
    font-size: 14px;
    border: 1px solid #705147;
    background: #705147;
    color: var(--color-light-gold);
}

.faq-item summary::-webkit-details-marker {
    display: none;
}

.faq-item__q-label {
    color: var(--color-light-gold);
    font-weight: bold;
    margin-right: 6px;
}

/* 「詳細を見る」の文字とアイコン(＋/－)を別要素にし、スマホでは文字だけ消せるようにする */
.faq-item__toggle {
    display: flex;
    align-items: center;
    gap: 4px;
    flex: 0 0 auto;
    font-size: 12px;
    white-space: nowrap;
}

.faq-item__toggle-text--open,
.faq-item__toggle-icon--open {
    display: none;
}

.faq-item[open] .faq-item__toggle-text--closed,
.faq-item[open] .faq-item__toggle-icon--closed {
    display: none;
}

.faq-item[open] .faq-item__toggle-text--open,
.faq-item[open] .faq-item__toggle-icon--open {
    display: inline;
}

.faq-item__a {
    padding: 10px 4px 20px;
    text-align: left;
    line-height: 1.8;
}

/* 回答をリッチエディタ(wp_editor)で入力するようになったため、
   <p>タグの余白を詰めてこれまでの見た目に近づける。リンクには下線を付ける */
.faq-item__a p {
    margin: 0 0 0.8em;
}

.faq-item__a p:last-child {
    margin-bottom: 0;
}

.faq-item__a a {
    text-decoration: underline;
}

.faq-item__a-label {
    color: var(--color-accent-red);
    font-weight: bold;
    margin-right: 6px;
}

.single-content img {
    max-width: 100%;
    height: auto;
    border-radius: 0;
    margin: 24px 0;
}

.single-content h2,
.single-content h3 {
    margin: 1.6em 0 .8em;
    color: var(--color-accent-brown);
    letter-spacing: .05em;
}

.single-content a {
    text-decoration: underline;
}

/* -----------------------------------------
   無限ループスライダー（Character / Menu / Goods 共通）
----------------------------------------- */
/* 画面幅いっぱいに表示し、両端のアイテムは見切れる */
.slider {
    position: relative;
    width: 100%;
    padding: 0;
}

.slider-viewport {
    overflow: hidden;
}

.slider-track {
    display: flex;
    align-items: flex-end;   /* 各アイテムは下端揃え */
    transition: transform .55s cubic-bezier(.45, 0, .3, 1);
}

/* 中央かどうかで明るさだけ変える（拡大縮小の動きは無し） */
.slider-item {
    flex: 0 0 auto;
    padding: 8px 14px;
    filter: brightness(.93);   /* 中央以外は少し暗く */
    transition: filter .55s ease;
}

.slider-item.is-center {
    filter: none;   /* 中央だけ通常の明るさ */
}

/* キャラクターは写真の色が薄く、標準の暗さでは分かりにくいのでもう少し暗く */
#character .slider-item {
    filter: brightness(.85);
}

#character .slider-item.is-center {
    filter: none;
}

.slider-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 46px;
    height: 46px;
    border-radius: 50%;
    border: 1px solid #fff;
    background: var(--wood-dark);
    color: #fff;
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
    z-index: 2;
    transition: var(--transition-smooth);
}

.slider-arrow:hover {
    opacity: .65;
}

/* 矢印は「見切れアイテムと中央側アイテムの間の隙間」に配置
   （隙間位置 = 見切れ0.25個ぶん = 0.25 / (表示枚数 + 0.5)） */
.slider-arrow--prev {
    left: 7.1%;
    transform: translate(-50%, -50%);
}

.slider-arrow--next {
    right: 7.1%;
    transform: translate(50%, -50%);
}

/* -----------------------------------------
   Character
----------------------------------------- */
.char-item {
    text-align: center;
}

/* 円の枠・背景をなくし、背景の上に画像がそのまま表示される */
.char-pic {
    aspect-ratio: 1;
    display: grid;
    place-items: center;
    color: var(--color-accent-brown);
    font-size: 11px;
    letter-spacing: 0.1em;
    transition: transform .3s ease;
}

.char-pic img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

/* 9/16時点はリンクを無効化しているため、ホバー時の演出も無し */

.char-name {
    margin-top: 14px;
    font-size: 13px;
    letter-spacing: 0.14em;
    color: var(--color-text-main);
}

/* -----------------------------------------
   カード（Menu / Goods / Topics 共通）
----------------------------------------- */
.card-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
    margin-bottom: 48px;
}

.card-grid--4 {
    grid-template-columns: repeat(4, 1fr);
}

.card {
    background-color: var(--color-bg-light);
    border: 2px solid #c1a18b;
    overflow: hidden;
    box-shadow: 0 8px 20px rgba(46, 26, 12, .15);
    transition: transform .3s ease, box-shadow .3s ease;
    text-align: center;
}

/* hover:hover（マウスのある端末）でのみ適用。スマホ等のタップ操作では
   タップ後に:hoverが残り続けて浮き上がった見た目のままになってしまうため */
@media (hover: hover) {
    .card:hover {
        transform: translateY(-6px);
        box-shadow: 0 16px 32px rgba(46, 26, 12, .25);
    }
}

/* メニュー・グッズは、アイキャッチの有無にかかわらず全項目でポップアップ・ホバー演出を統一している
   （画像が無い項目はNOW PRINTINGを表示） */

.card-pic {
    aspect-ratio: 8 / 5;
    display: grid;
    place-items: center;
    color: var(--color-accent-brown);
    font-size: 12px;
    letter-spacing: 0.15em;
	padding: 10px;
}

/* トピックでアイキャッチ画像が未設定の時のデフォルト表示（thumbnail.png） */
.card-pic.is-default img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* メニュー・グッズに追加画像（ギャラリー）が複数登録されている場合のスライド表示。
   ドットは画像に重ねず、画像の下に別要素として並べる */
.card-pic--slider {
    aspect-ratio: auto;
    display: block;
}

/* aspect-ratioだと中身が全てposition:absoluteのスライドだけの場合に
   高さが確保されないことがあるため、古くからある確実な方法
   （height:0 + padding-bottomで比率を作る）に変更 */
.card-pic__slides {
    position: relative;
    width: 100%;
    height: 0;
    padding-bottom: 62.5%;   /* 8:5 */
    overflow: hidden;
}

/* すべてのスライドを重ねておき、opacityだけで切り替えることでふんわりクロスフェードさせる */
.card-pic__slide {
    position: absolute !important;
    inset: 0;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    opacity: 0;
    transition: opacity 1.4s ease;
}

.card-pic__slide.is-active {
    opacity: 1;
    z-index: 1;
}

.card-pic__dots {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 4px;
    padding: 6px 0 0;
}

.card-pic__dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #d8c6a8;
}

.card-pic__dot.is-active {
    background: var(--color-accent-brown);
}

.card-body {
    padding: 20px 18px 26px;
}

.card-tag {
    display: inline-block;
    font-size: 10px;
    letter-spacing: 0.24em;
    color: var(--color-accent-brown);
}

.card-title {
    margin-top: 20px;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.06em;
    line-height: 1.7;
    white-space: pre-line;   /* 管理画面で入力した改行(\n)をそのまま反映する */
}

/* メニュー・グッズ：名称の長さに関わらず必ず同じ高さに揃える（PC3行/スマホ4行）。
   行数を超える場合は「…」で省略し、それより溢れて枠の高さが変わらないようにする */
/* -webkit-box-packは複数行に省略されたテキスト自体には効かないため、
   高さを確保する役目はラッパー側(.card-title-wrap)に移し、
   flexのalign-itemsで縦中央寄せしている */
.card--fancy .card-title-wrap,
.card--arch .card-title-wrap {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 5.1em;
}

.card--fancy .card-title,
.card--arch .card-title {
    margin-top: 0;
    font-size: 14px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
}

/* キャラクター一覧ページ（page-characters.php）専用 */
/* Menuと同じ薄い黄色＋外枠だけを使う（四隅の飾り・内側の線は無し） */
.card--character {
    background-color: var(--color-card-bg);
}

/* 9/16時点はリンクを無効化しているため、一覧ページのホバー演出（浮き上がり）も無し */
.card--character:hover {
    transform: none;
    box-shadow: 0 8px 20px rgba(46, 26, 12, .15);
}

#character-list .card-pic img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.card-desc {
    font-size: 13px;
    line-height: 1.5;
    color: var(--color-text-muted);
    text-align: left;
    white-space: pre-line;   /* 説明文の改行(\n)をそのまま反映する */
}

@media (max-width: 600px) {
    .card-desc {
        font-size: 11px;
        margin-bottom: 10px;
    }
    .card--fancy .card-title,
    .card--arch .card-title {
        font-size: 12px;
        -webkit-line-clamp: 4;
        line-clamp: 4;
    }
    .card--fancy .card-title-wrap,
    .card--arch .card-title-wrap {
        min-height: 6.8em;
    }
}

/* メニューの説明文は3行までにして、はみ出す分は…で省略する（ブラウザ標準の省略記号を使用） */
.card--fancy .card-desc {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-pack: start;
    -webkit-line-clamp: 3;
    overflow: hidden;
    flex-shrink: 0;
}

.card--fancy .card-title-wrap {
    flex-shrink: 0;
}

/* 説明文の有無・長さに関わらず、カードの高さを必ず揃える。
   文章が短い/無い場合の余白は下部にだけ残るようにする（上詰めのまま） */
.card--fancy .card-body {
    min-height: 260px;
    flex: 1;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}

/* 説明文の長さに関わらず、価格の上の線と価格の位置を全カードで揃える。
   line-clampは文字数が少ないと余白を詰めてしまうため、区切り線を
   flexの下端に固定(margin-top:auto)して吸収させる */
.card--fancy .card-body .deco-divider--small {
    margin-top: auto;
    margin-bottom: 12px;
    flex-shrink: 0;
}

/* 画像を掲載しないメニュー(ソフトドリンク等)は、画像分の余白ができるので
   説明文を7行まで表示できるようにし、枠の高さもそのぶん広げる */
.card--fancy.card--no-image .card-desc {
    -webkit-line-clamp: 8;
}

.card-price {
    margin-top: 10px;
    font-family: var(--font-en);
    font-size: 18px;
    color: var(--color-text-main);   /* 価格を他の文字と同じ色に */
}

.card-price small {
    font-size: 11px;
    color: var(--color-text-muted);
    margin-left: 4px;
}

/* 購入制限は0916テーマでは非表示（表示スペースも含めて無し） */
.card-goods-limit {
    display: none;
}

.card-goods-supplement {
    /* margin-top: 6px; */
    font-size: 12px;
    line-height: 1.2;
    min-height: 1.6em;
    color: var(--color-text-muted);
}

.card-date {
    margin-top: 10px;
    font-family: var(--font-en);
    font-size: 13px;
    letter-spacing: 0.1em;
    color: var(--color-accent-brown);
}

/* Menu用：内側の線＋四隅の装飾スロット付きカード */
.card--fancy {
    background-color: var(--color-card-bg);
    overflow: visible;
    border-radius: 0;
    box-shadow: none;
    display: flex;
    flex-direction: column;
}

@media (hover: hover) {
    .card--fancy:hover {
        box-shadow: none;
        transform: translateY(-6px);
    }
}

.card--fancy::before {
    content: '';
    position: absolute;
    inset: 8px;
    border: 1px solid rgba(139, 90, 43, 23%);
    border-radius: 3px;
    pointer-events: none;
    z-index: 2;
}

.card--fancy { position: relative; }

/* メニュー写真の裏（周囲）の濃い金枠は消す（カード自体の枠と内側の線は残す） */
.card--fancy .card-pic {
    margin: 16px 16px 0;
    border-radius: 4px;
    border: none;
    /* card--fancyがflexコンテナになったことで、写真(img)の実サイズ(縦横px)が
       flexアイテムの自動最小サイズとして扱われ、枠より画像が大きい場合に
       枠からはみ出てしまうため、縮んでよいことを明示する */
    min-width: 0;
    min-height: 0;
}

/* アイキャッチの有無・元画像のサイズに関わらず、表示サイズを揃える */
.card--fancy .card-pic img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 四隅の装飾（デフォルトはスパークル。<img class="card-corner ..."> に差し替え可） */
.card-corner {
    position: absolute;
    width: 22px;
    height: 22px;
    z-index: 3;
    background-color: var(--color-accent-gold);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0l2.6 9.4L24 12l-9.4 2.6L12 24l-2.6-9.4L0 12l9.4-2.6z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0l2.6 9.4L24 12l-9.4 2.6L12 24l-2.6-9.4L0 12l9.4-2.6z'/%3E%3C/svg%3E") center / contain no-repeat;
}

img.card-corner {
    background: none;
    -webkit-mask: none;
    mask: none;
    object-fit: contain;
}

/* 内側の線の角にはまるよう少し内側へ配置 */
.card-corner--tl { top: 6px; left: 6px; }
.card-corner--tr { top: 6px; right: 6px; }
.card-corner--bl { bottom: 6px; left: 6px; }
.card-corner--br { bottom: 6px; right: 6px; }

/* menu_corner.png は右上向き。各角に合わせて回転・反転 */
img.card-corner--tr { transform: none; }
img.card-corner--tl { transform: scaleX(-1); }
img.card-corner--br { transform: scaleY(-1); }
img.card-corner--bl { transform: scale(-1, -1); }

/* Goods用：アーチ形のベージュ枠
   横方向の半径を50%にすることで、カードがどんなに幅広くなっても
   （大きいモニターでも）アーチの丸みが必ずカード中央できれいに合わさる。
   縦方向の半径は固定値。画像側のmargin-topと必ず同じ値にして、
   画像がアーチの丸みで見切れないようにする。 */
.card--arch {
    background-color: var(--color-card-bg);
    border-radius: 400px 400px 8px 8px;
    box-shadow: none;
}

@media (hover: hover) {
    .card--arch:hover {
        box-shadow: none;
        transform: translateY(-6px);
    }
}

/* 画像は白背景の枠内に contain で収め、左右・上の余白は白で埋める（見切れを目立たせない） */
.card--arch .card-pic {
    aspect-ratio: 1 / 1;
    margin: 15% 24px 0;
    padding: 12px;
    border-radius: 4px;
    border: none;
    height: auto;
}

/* グッズの画像は正方形で納品されるため、スライド枠も正方形にする */
.card--arch .card-pic__slides {
    padding-bottom: 100%;
}

.card--arch .card-pic img {
    width: 90%;
    height: auto;
    display: block;
}

/* NOW PRINTING画像(SVG)は元の比率が正方形でないため、グッズでは明示的に正方形にする */
.card--arch .card-pic.is-default img {
    aspect-ratio: 1 / 1;
}

/* Topics用：ベージュ枠カード */
.card--topic {
    background-color: var(--color-card-bg);
}

.card--topic .card-title {
    text-align: left;
    font-size: 14px;
    font-weight: 300;
    letter-spacing: 0.05em;
    color: var(--color-text-main);
    margin-bottom: 36px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* サムネ画像とその下の日付の間の余白を詰める */
.card--topic .card-body {
    padding-top: 2px;
}

/* Topics用：カテゴリ＋日付の横並びメタ（左寄せ） */
.card-meta {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 8px;
}

/* Topicsの区切り線は枠内90%まで */
.card--topic .deco-divider--small {
    width: 100%;
}

.card-meta__cat,
.card-meta__date {
    display: inline-block;
    padding: 2px 12px;
    font-size: 10px;
    letter-spacing: 0.2em;
    border: 1px solid var(--color-accent-brown);
    border-radius: 0;
    color: var(--color-accent-brown);
}

.card-meta__date {
    font-family: var(--font-en);
    font-size: 12px;
    letter-spacing: 0.08em;
}

/* -----------------------------------------
   News（WPループ）
----------------------------------------- */
/* お知らせ背後の枠（額装パネル） */
/* ベージュの角丸なしパネル */
.news-panel {
    max-width: 820px;
    margin: 0 auto 40px;
    padding: 36px 28px;
    background-color: #f6edd8;
    border: 2px solid #c1a18b;
    border-radius: 0;
    box-shadow: 0 14px 32px rgba(46, 26, 12, .18);
}

.news-list {
    max-width: 760px;
    margin: 0 auto;
    text-align: left;
}

.news-list li {
    border-bottom: 1px solid rgba(139, 90, 43, .25);
}

.news-list li:first-child {
    border-top: 1px solid rgba(139, 90, 43, .25);
}

.news-list a {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 8px 8px;
    color: var(--color-text-main);
}

.news-list a:hover {
    background: rgba(223, 183, 67, .12);
    opacity: 1;
}

/* 日付とカテゴリをひとまとめにして、タイトルと横並びにする */
.news-meta {
    display: flex;
    align-items: center;
    gap: 20px;
    flex: 0 0 auto;
}

.news-date {
    flex: 0 0 100px;
    font-family: var(--font-en);
    font-size: 14px;
    color: var(--color-accent-brown);
}

.news-cat {
    flex: 0 0 64px;
    font-size: 10px;
    letter-spacing: 0.2em;
    text-align: center;
    padding: 3px 0;
    border: 1px solid #cdb183;
    background: #cdb183;
    color: #fff;
    border-radius: 0;
}

.news-title {
    flex: 1 1 auto;
    font-size: 14px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* -----------------------------------------
   予約CTA
----------------------------------------- */
/* フッターと同じ紺色の背景 */
.cta-reserve {
    text-align: center;
    padding: 72px 20px;
    background-color: var(--color-bg-navy);
}

.cta-reserve .btn {
    min-width: 300px;
    font-size: 16px;
    padding: 18px 48px;
}

/* -----------------------------------------
   Footer & Footer Logo
----------------------------------------- */
.site-footer {
    background-color: var(--color-bg-navy);
    color: var(--color-text-muted);
    padding: 60px 20px 40px;
}

.footer-inner {
    max-width: 1000px;
    margin: 0 auto;
    text-align: center;
}

.footer-logo-area {
    margin-bottom: 30px;
}

.footer-logo-link {
    display: inline-block;
    transition: transform 0.3s ease;
}

.footer-logo-link:hover {
    transform: scale(1.08) rotate(-1deg);
    opacity: 1;
}

.footer-logo-img {
    max-width: 120px;
    height: auto;
}

.footer-links, .footer-ltr {
    list-style: none;
    display: flex;
    justify-content: center;
    gap: 40px;
    margin-bottom: 30px;
    font-size: 0.9rem;
    color: var(--color-light-gold);
}

.footer-links a {
    color: var(--color-light-gold);
    position: relative;
    padding-bottom: 4px;
}

.footer-links a::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 0;
    height: 1px;
    background-color: #c2a45f;
    transition: width 0.3s ease, left 0.3s ease;
}

.footer-links a:hover {
    color: #c2a45f;
}

.footer-links a:hover::after {
    width: 100%;
    left: 0;
}

.copyright {
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--color-copyright);
}

/* -----------------------------------------
   下部追従の予約ボタン（ムービー到達後に表示）
----------------------------------------- */
/* 追従の予約ボタン。見た目は .btn--plaque と共通（同じ高さ・幅）。
   ここでは固定配置と表示アニメだけを担当する */
.float-reserve {
    position: fixed;
    left: 50%;
    bottom: 16px;
    transform: translate(-50%, 130%);
    z-index: 45;
    opacity: 0;
    visibility: hidden;
    filter: drop-shadow(0 8px 16px rgba(26, 16, 8, .4));
    transition: transform .5s ease, opacity .5s ease, visibility .5s;
}

.float-reserve.is-visible {
    transform: translate(-50%, 0);
    opacity: 1;
    visibility: visible;
}

.float-reserve:hover {
    opacity: 1;
    filter: drop-shadow(0 8px 16px rgba(26, 16, 8, .4)) brightness(1.08);
}

/* -----------------------------------------
   ページトップへ戻る
----------------------------------------- */
.to-top {
    position: fixed;
    right: 18px;
    bottom: 16px;
    z-index: 40;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--wood-dark);
    color: var(--color-accent-gold);
    font-family: var(--font-en);
    font-size: 11px;
    letter-spacing: 0.1em;
    box-shadow: 0 6px 16px rgba(46, 26, 12, .4), inset 0 0 0 1px rgba(223, 183, 67, .5);
    opacity: 0;
    visibility: hidden;
    transition: opacity .4s ease, visibility .4s ease, transform .3s ease;
}

.to-top.is-visible {
    opacity: 1;
    visibility: visible;
}

.to-top:hover {
    transform: translateY(-4px);
    opacity: 1;
}

/* ボタンを画像にする場合（<img class="to-top__img"> を入れ、aに to-top--img を付与）
   totop.png(約200×156、縦長寄り)に合わせた枠 */
.to-top--img {
    background: none;
    box-shadow: none;
    border-radius: 0;
    width: 70px;
    height: 55px;
    overflow: visible;
}

.to-top--img .to-top__label {
    display: contents;
}

.to-top__img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    display: block;
}

/* クリック時：少し上にしゅっと動いて元に戻る */
.to-top.is-jump {
    animation: toTopJump .45s cubic-bezier(.3, 0, .3, 1);
}

@keyframes toTopJump {
    30% { transform: translateY(-14px); }
    100% { transform: translateY(0); }
}

/* -----------------------------------------
   レスポンシブ (スマホ対応)
----------------------------------------- */
@media screen and (max-width: 1100px) {
    /* スマホのハンバーガーメニュー(.gnav)は自前の赤背景を持つ別パネルなので、
       PC用のマスク(.site-header::after)は不要。付けたままだとメニュー全体が
       マスクの下に隠れて見えなくなってしまうため、ここで無効化する */
    .site-header::after {
        content: none;
    }
    /* ロゴを中央寄せにし、ナビはロゴタップで開くドロップダウンに切り替える */
    .site-header__inner {
        justify-content: center;
        position: relative;
    }
    .gnav {
        display: block;
        position: absolute;
        top: calc(100% - 6px);
        left: 0;
        right: 0;
        max-height: 0;
        overflow: hidden;
        background: var(--color-accent-red);
        transition: max-height .3s ease;
    }
    .gnav.is-open {
        max-height: 600px;
    }
    .gnav__list {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
    }
    /* 仕切り線は画面端まで届かせず、少し内側で切れるようにする */
    .gnav__list li {
        position: relative;
    }
    .gnav__list li::before {
        content: '';
        position: absolute;
        top: 0;
        left: 20px;
        right: 20px;
        height: 1px;
        background: rgba(255, 255, 255, .15);
    }
    /* 一番下の項目（HELP&GUIDE）の下にも同じ仕切り線を引く */
    .gnav__list li:last-child::after {
        content: '';
        position: absolute;
        bottom: 0;
        left: 20px;
        right: 20px;
        height: 1px;
        background: rgba(255, 255, 255, .15);
    }
    .gnav__list a,
    .gnav__list .gnav__link-static,
    .gnav__details summary {
        padding: 16px 24px;
        font-size: 12px;
    }
    /* メニューを開いた時にだけ表示する、画面右上・ロゴと同じ行の×閉じるボタン。
       .site-header__innerを基準に配置するため、.gnavの中ではなくロゴの隣に置いている。
       表示・非表示はJSが付け外しする.is-openで切り替える（メニューの開閉と連動） */
    .gnav__close {
        position: absolute;
        top: 50%;
        right: 16px;
        transform: translateY(-50%);
        width: 32px;
        height: 32px;
        z-index: 60;
    }
    .gnav__close.is-open {
        display: block;
    }
    /* ハンバーガーボタンはロゴの左・×ボタン(.gnav__close)と対称の位置に置く。
       メニューが開いている間は×ボタンに役目を譲り、ハンバーガー自体は隠す */
    .gnav__hamburger {
        display: block;
        position: absolute;
        top: 50%;
        left: 16px;
        transform: translateY(-50%);
        width: 32px;
        z-index: 60;
    }
    .gnav__hamburger.is-open {
        display: none;
    }
    /* 下部固定バー。TOPへ戻るボタンが被らないよう、ボタン分の余白を上に空ける */
    .bottom-bar {
        display: flex;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 55;
        min-height: 60px;
        box-shadow: 0 -2px 8px rgba(26, 16, 8, .12);
    }
    .to-top {
        bottom: 76px;
    }
    .site-footer {
        padding-bottom: 76px;
    }
    .gnav__top-only {
        display: list-item;
    }
    /* スマホはタップでも:hoverが反応してしまうため、下線演出を止める */
    .gnav__list a::after {
        display: none;
    }
    /* スマホ：RESERVATION(has-sub--tap)は<details>のタップ開閉に任せ、常時表示にはしない。
       HELP&GUIDE(has-sub--pc-only)は、下部に同じ内容の項目が常にあるため出さない */
    .gnav__sub {
        position: static;
        min-width: 0;
        background: rgba(0, 0, 0, .15);
        box-shadow: none;
        padding: 0;
    }
    .gnav__sub a {
        padding: 12px 24px 12px 52px;
    }
    /* スマホではホバーが無いため、タップで<details>が開いた時だけ表示する。
       .gnav__subは<details>のきょうだい要素なので、隣接兄弟結合子(~)で指定する
       （PC側にはこのルールを置かないことで、PCは常にホバーのみで開閉するようにしている） */
    .gnav__details[open] ~ .gnav__sub {
        display: block;
    }
    .has-sub--pc-only .gnav__sub {
        display: none !important;
    }
    /* よくある質問・プライバシーポリシー・お問い合わせ（スマホのみ表示） */
    .gnav__utility {
        display: block;
        padding: 18px 24px 24px;
    }
    .gnav__utility-list {
        display: flex;
        justify-content: space-between;
        list-style: none;
    }
    .gnav__utility-list a {
        font-family: var(--font-en);
        font-size: 11px;
        letter-spacing: 0.1em;
        color: rgba(255, 255, 255, .7);
    }
}

@media screen and (max-width: 960px) {
    .card-grid,
    .card-grid--4 {
        grid-template-columns: 1fr 1fr;
    }
    .slider-arrow { width: 40px; height: 40px; font-size: 14px; }
    /* タブレット：表示2枚 → 隙間位置 0.25/2.5 = 10% */
    .slider-arrow--prev { left: 10%; }
    .slider-arrow--next { right: 10%; }

    /* アクセスの扉が画面外にはみ出しても横スクロールさせない(見切れたまま)。
       960px以下ではみ出すため、600px専用だった対応をここまで広げる */
    .access-section {
        overflow: hidden;
    }
}

@media screen and (max-width: 600px) {
    .chara-hero__notice {
        margin-top: 0;
        margin-bottom: 0;
    }
    /* スマホ：中央アイテムに被らないよう、見切れ部分の中間あたりに配置 */
    .slider-arrow--prev { left: 8%; }
    .slider-arrow--next { right: 8%; }

    /* FAQ：スマホでは「詳細を見る／隠す」の文字を消し、＋／－だけ残す */
    .faq-item__toggle-text {
        display: none !important;
    }
    /* 特典タイトルを「予約特典」と同じくらいの大きさに縮める。
       他の特典テキストも合わせて少し小さくする */
    .book-heading small {
        font-size: 15px;
    }
    .page-content p {
        font-size: 11px;
    }
    .page-period {
        font-size: 11px;
    }
    .page-period strong {
        font-size: 15px;
    }
    .book-note {
        font-size: 10px;
    }

    /* 見出し画像（Access等）をスマホでは少し小さく、下の余白も詰める */
    .sec-head-img {
        max-width: 220px;
        margin-bottom: 8px;
    }

    /* トピックス・ニュースの見出し画像の上下余白を揃える（上=セクションのpadding-top 56pxと同じくらいに） */
    #topics .sec-head-img,
    #news .sec-head-img {
        margin-bottom: 56px;
    }

    /* アクセスのキャラ画像をスマホでは小さく（マップを大きく見せる） */
    .access-char {
        flex: 0 0 70px;
    }

    /* マップはスマホだけ正方形に(PCは元のまま) */
    .access-map {
        aspect-ratio: 4 / 4;
    }

    /* 「東京会場」上の余白を詰め、住所・営業時間の項目名を狭く、値を広く */
    .access-panel {
        padding: 56px 20px 48px;
    }
    .access-panel dl {
        grid-template-columns: 68px 1fr;
    }

    /* Aboutの3ボタンを縦並び＆同じ幅に揃える */
    .about-board__actions .btn {
        width: 280px;
        max-width: 88%;
        min-width: 0;
    }

    .sp-content.page-content {
        padding: 10px;
        justify-content: flex-start;
    }
}

/* sp-content(1カラム表示)が使われる479px以下の全域で、必ず本の高さを
   確保する */
@media screen and (max-width: 479px) {
    .book {
        height: 600px;
    }
}

@media screen and (max-width: 480px) {
	.deco-divider{
		margin: 10px auto;
		background: linear-gradient(#dfcba7 0 0) center / calc(100% - 30px) 1px no-repeat;
	}
	.deco-divider::before,
	.deco-divider::after {
		width: 10px;
		height: 10px;
	}
    .chara-hero__notice {
        font-size: 14px;
    }
    .kv-bar {
        height: 2px;
    }
    /* カーテン画像が縦長になりすぎるのを緩和。スマホでは丈がセクションより
       短くなって下部に隙間ができてもよいので、大きめに詰めている。
       ※幅を広げる形にすると、中央で左右のカーテンの絵柄(不透明部分)が
       　重なって見えてしまうため、幅はデスクトップと同じ58%のままにしている */
    .curtain {
        bottom: 28%;
    }
    /* カード内枠を細く、四隅の飾りもそれに合わせて内側へ・小さく */
    .card--fancy::before {
        inset: 3px;
    }
    .card-corner--tl { top: 1px; left: 1px; }
    .card-corner--tr { top: 1px; right: 1px; }
    .card-corner--bl { bottom: 1px; left: 1px; }
    .card-corner--br { bottom: 1px; right: 1px; }
    .card-corner {
        width: 12px;
        height: 12px;
    }
    .movie-frame .card-corner {
        width: 30px;
        height: 30px;
    }
    .card-body {
        padding: 0px 10px 26px;
    }
    /* スマホは説明文のフォントが小さくなる分、最低限の高さを詰める。
       ただしタイトル・説明文3行分が収まらない場合はflexで自動的に伸びる */
    .card--fancy .card-body {
        min-height: 200px;
    }
    .card-price {
        font-size: 12px;
    }
    .card-goods-limit {
        font-size: 12px;
    }
    .card-goods-supplement {
        font-size: 11px;
    }
    .marquee-img { height: 16px; }
    .footer-links a { font-size: 12px; }
    /* プライバシーポリシー〜お問い合わせを縦並びに */
    .footer-links {
        flex-direction: column;
        align-items: center;
        gap: 14px;
    }
    .footer-logo-img { max-width: 100px; }
    .bg-paper { background-size: 500px; }
    .bg-paper-dark { background-size: 500px; }
    .bg-paper-news { background-size: 450px; }
    .marquee-group {
        gap: 48px;
        padding-right: 48px;
    }
    .card-grid,
    .card-grid--4 {
        grid-template-columns: 1fr;
        max-width: 340px;
        margin-left: auto;
        margin-right: auto;
    }

    /* メニュー・グッズ一覧ページはスマホでも横2枠のまま */
    #menu-archive .card-grid,
    #goods-archive .card-grid {
        grid-template-columns: 1fr 1fr;
        max-width: 100%;
        gap: 12px;
    }
    /* 2枠になって写真が小さく見えるので、余白を削って写真を大きく見せる */
    #menu-archive .card--fancy .card-pic {
        margin: 10px 10px 0;
        padding: 4px;
    }
    /* アーチの形は変えず、2枠で幅が狭くなるぶん、画像側の上余白を増やして
       画像を少し小さめにすることで見切れを防ぐ */
    #goods-archive .card--arch .card-pic {
        margin: 20% 10px 0;
        padding: 6px;
    }
    #goods-archive .card--arch .card-pic img {
        width: 85%;
    }
    /* 日付とお知らせカテゴリを縦並びにして、タイトルの幅を確保する */
    .news-list a {
        gap: 10px;
        padding: 6px 8px;
    }
    .news-meta {
        flex-direction: column;
        align-items: stretch;
        gap: 2px;
    }
    .news-date {
        flex: none;
        font-size: 10px;
        line-height: 1.1;
    }
    .news-cat {
        flex: none;
        font-size: 9px;
        padding: 0;
        line-height: 1.5;
    }
    .news-panel { padding: 24px 14px; }
    .section-inner { padding: 56px 16px; }
    .br-sp { display: block; }
    .slider-item { padding: 6px 8px; }
    .float-reserve {
        min-width: 0;
        width: calc(100% - 32px);
    }
    .to-top {
        right: 12px;
        bottom: 76px;
    }
    .to-top--img {
        width: 52px;
        height: 41px;
    }
}

/* -----------------------------------------
   メニュー・グッズ画像ポップアップ
----------------------------------------- */
.img-modal {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: grid;
    place-items: center;
    padding: 24px;
    background: rgba(26, 16, 8, .82);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s ease, visibility 0s linear .25s;
}

.img-modal.is-open {
    opacity: 1;
    visibility: visible;
    transition: opacity .25s ease, visibility 0s;
}

.img-modal__inner {
    max-width: min(600px, 90vw);
    max-height: 85vh;
    /* 画像・タイトル・説明文をまとめて1つの枠としてスクロールさせる
       （説明文の欄だけを個別にスクロールさせない） */
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--wood-dark) transparent;
}

.img-modal__inner::-webkit-scrollbar {
    width: 6px;
}

.img-modal__inner::-webkit-scrollbar-track {
    background: transparent;
}

.img-modal__inner::-webkit-scrollbar-thumb {
    background-color: var(--wood-dark);
    border-radius: 3px;
}

.img-modal__inner::-webkit-scrollbar-button {
    display: none;
    width: 0;
    height: 0;
}

/* 画像はベージュの枠（名前欄・説明文と同じ幅）の中央に収める。
   画像が枠より小さい比率の場合は、枠の余白（ベージュ）がそのまま見える */
.img-modal__pic {
    position: relative;
    width: 100%;
    aspect-ratio: 8 / 5;
    box-sizing: border-box;
    padding: 16px;
    background-color: var(--color-card-bg);
    display: flex;
    align-items: center;
    justify-content: center;
}

.img-modal__pic img {
    display: block;
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    object-fit: contain;
    transition: opacity .25s ease;
}

/* グッズはNOW PRINTING画像だけ正方形で見せる（枠自体は変えない） */
.img-modal__pic img.is-square-placeholder {
    aspect-ratio: 1 / 1;
    width: auto;
    height: 100%;
}

/* 追加画像（ギャラリー）が複数あるときだけJSで表示する前後矢印 */
.img-modal__prev,
.img-modal__next {
    display: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    border: none;
    background: none;
    padding: 4px;
    color: #dfcba7;
    font-size: 30px;
    line-height: 1;
    cursor: pointer;
    z-index: 3;
}

.img-modal__prev:hover,
.img-modal__next:hover {
    opacity: .7;
}

.img-modal__prev {
    left: 8px;
}

.img-modal__next {
    right: 8px;
}

/* ポップアップ内、画像の下に出すドット（追加画像が複数あるときだけJSで生成） */
.img-modal__dots {
    display: flex;
    justify-content: center;
    gap: 6px;
    padding: 10px 0;
    background-color: var(--color-card-bg);
}

.img-modal__dots:empty {
    display: none;
}

.img-modal__dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #d8c6a8;
    cursor: pointer;
}

.img-modal__dot.is-active {
    background: var(--color-accent-brown);
}

/* 画像の下に、メニュー・グッズ名を名前の長さに関わらず省略せず表示する枠 */
.img-modal__title {
    width: 100%;
    margin: 0px auto 0;
    padding: 12px 16px;
    background-color: var(--color-card-bg);
    color: var(--color-text-main);
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.06em;
    line-height: 1.6;
    text-align: center;
    white-space: pre-line;   /* メニュー・グッズ名の改行(\n)をそのまま反映する */
}

.img-modal__title:empty {
    display: none;
}

.img-modal__goods-limit {
    width: 100%;
    margin: 0 auto;
    padding: 0 16px 12px;
    background-color: var(--color-card-bg);
    color: var(--color-accent-red-dark);
    font-size: 15px;
    font-weight: 600;
    text-align: center;
}

.img-modal__goods-limit:empty {
    display: none;
}

.img-modal__goods-supplement {
    width: 100%;
    margin: 0 auto;
    padding: 0 16px 12px;
    background-color: var(--color-card-bg);
    color: var(--color-text-muted);
    font-size: 13px;
    line-height: 1.6;
    text-align: center;
}

.img-modal__goods-supplement:empty {
    display: none;
}

.img-modal__desc {
    width: 100%;
    margin: 0 auto;
    padding: 0 16px 16px;
    background-color: var(--color-card-bg);
    color: var(--color-text-main);
    font-size: 13px;
    line-height: 1.8;
    text-align: left;
    white-space: pre-wrap;
}

.img-modal__desc:empty {
    display: none;
}

.img-modal__close {
    position: absolute;
    top: 20px;
    right: 24px;
    width: 40px;
    height: 40px;
    border: none;
    border-radius: 50%;
    background: rgba(255, 255, 255, .12);
    color: #fff;
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
}

.img-modal__close:hover {
    opacity: .7;
}

/* クリックできる画像であることが分かるように */
.js-img-popup {
    cursor: pointer;
}

/* -----------------------------------------
   JavaScript Animation Styles (動きの仕掛け)
----------------------------------------- */
.js-fade {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 1.0s cubic-bezier(0.25, 1, 0.5, 1),
                transform 1.0s cubic-bezier(0.25, 1, 0.5, 1);
}

.js-fade.is-show {
    opacity: 1;
    transform: translateY(0);
}

.js-bounce {
    opacity: 0;
    transform: translateY(60px);
}

.js-bounce.is-show {
    animation: bounceInUp 0.7s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

@keyframes bounceInUp {
    0% {
        opacity: 0;
        transform: translateY(60px) scaleY(1.2);
    }
    50% {
        opacity: 1;
        transform: translateY(-15px) scaleY(0.9);
    }
    70% {
        transform: translateY(7px) scaleY(1.05);
    }
    85% {
        transform: translateY(-3px) scaleY(0.98);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scaleY(1);
    }
}

/* メニュー・グッズの登場演出（左からスライドイン） */
/* 位置は動かさず、小さい状態から等倍に大きくなりながらフェードインする。
   弾む動きにならないよう、イージングはオーバーシュートのない ease にしている */
.js-slide-left {
    opacity: 0;
    transform: scale(0.85);
    transition: opacity 0.9s ease, transform 0.9s ease;
}

.js-slide-left.is-show {
    opacity: 1;
    transform: scale(1);
}

