/* SOLARIS BREATH — Event LP Stylesheet | v20260601n */

:root {
  --bg-pure:    #FDFCFF;            /* 純白にごく微かな紫みがけ */
  --bg-base:    #FAF8FD;            /* メインベース: 白＋ほんのりラベンダー */
  --bg-warm:    #F5F2FA;            /* ウォームラベンダー: 少し紫みのクリーム */
  --bg-soft:    #EEE9F5;            /* ソフトモーブ: セクション境界 */
  --bg-mist:    #E8E2F0;            /* ミストバイオレット: 深め */

  --bg-dark:    #101426;
  --bg-dark-2:  #0C0F1E;   /* より深い宇宙色 */
  --bg-dark-3:  #080A14;

  /* Text */
  --text-main:    #1C1C1E;  /* 少し柔らかいブラック */
  --text-heading: #0D0F1C;
  --text-sub:     #6B6F78;
  --text-muted:   #9EA0A8;
  --text-inverse: #FFFFFF;

  /* Accent */
  --pink:   #E65AA8;
  --violet: #6C4DFF;
  --cyan:   #4EC7E8;
  --gold:   #C9A66B;        /* ゴールドアクセント */

  /* Glow */
  --glow-pink:   rgba(230,90,168,0.25);
  --glow-violet: rgba(108,77,255,0.22);
  --glow-cyan:   rgba(78,199,232,0.20);
  --glow-gold:   rgba(201,166,107,0.20);

  /* Gradients — 白から星のラベンダーへ：宇宙の夜明けグラデーション */
  --grad-page:    linear-gradient(
                    180deg,
                    #FDFCFF   0%,
                    #FAF8FD   15%,
                    #F7F4FB   35%,
                    #F2EEF8   60%,
                    #EDE6F4   80%,
                    #E8E0F0   100%
                  );
  --grad-hero:    linear-gradient(180deg,rgba(8,10,20,.40) 0%,rgba(8,10,20,.55) 100%);
  --grad-dark:    linear-gradient(135deg,#101426 0%,#0C0F1E 100%);
  --grad-accent:  linear-gradient(135deg,#E65AA8 0%,#6C4DFF 100%);

  /* Spacing — 8px base */
  --sp1:  8px;
  --sp2:  16px;
  --sp3:  24px;
  --sp4:  32px;
  --sp5:  48px;
  --sp6:  64px;
  --sp7:  96px;
  --sp8:  128px;
  --sp9:  160px;

  /* Section padding — 上部を詰めてセクション間の隙間を軽減 */
  --section-pad: clamp(20px, 3.5vw, 44px);

  /* Typography */
  --font-mincho: 'Shippori Mincho', 'Noto Serif JP', Georgia, serif;
  --font-en: 'Inter', sans-serif;
  --font-ui: 'Noto Sans JP', sans-serif;

  /* Accent color 差し色 */
  --accent: #C9A66B;        /* 金膸びたピンクゴールド */
  --accent-2: #E65AA8;      /* ピンク(元存) */
  --grad-accent-cta: linear-gradient(135deg, #E65AA8 0%, #C9A66B 50%, #6C4DFF 100%);

  /* Container */
  --cw-xl: 1280px;
  --cw-lg: 1120px;
  --cw-md: 960px;
  --cw-sm: 720px;
  --cw-xs: 640px;

  /* Radius */
  --r-sm:   8px;
  --r-md:   16px;
  --r-lg:   28px;
  --r-xl:   40px;
  --r-full: 999px;

  /* Diagonal cut */
  --cut-sm:  10px;
  --cut-md:  16px;
  --cut-lg:  24px;

  /* Shadow */
  --sh-sm: 0 2px 12px rgba(16,20,38,.08);
  --sh-md: 0 8px 32px rgba(16,20,38,.12);
  --sh-lg: 0 20px 60px rgba(16,20,38,.16);
  --sh-xl: 0 32px 80px rgba(16,20,38,.22);

  /* Easing */
  --ease:    cubic-bezier(0.22,1,0.36,1);
  --ease-io: cubic-bezier(0.4,0,0.2,1);

  /* Transition speeds */
  --t-fast:   220ms;
  --t-base:   320ms;
  --t-slow:   600ms;
  --t-slower: 900ms;
}


/* RESET & BASE */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }

html {
  font-size: 18px; /* 視認性重視：やや大きめベースサイズ */
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  overflow-x: hidden; /* スマホ横スクロール防止 */
}

body {
  font-family: var(--font-mincho);
  font-weight: 400;
  line-height: 2.0;
  color: var(--text-main);
  background-color: #F2EEF8;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: 'palt' 1, 'kern' 1;
  text-rendering: optimizeLegibility;
  overflow-wrap: anywhere;    /* 英単語途中での不要な分断を防ぎつつ溢れ防止 */
}

/* ============================================================
   TEXT WRAP GLOBAL RULES
   - 見出し: text-wrap:balance で均等な改行
   - 本文:  text-wrap:pretty  で孤立語（1文字残り）を防ぐ
   - 左寄せ本文: text-align:left を明示
============================================================= */

/* 見出し類 */
h1, h2, h3, h4, h5, h6,
.section-heading-ja,
.concept-heading,
.concept-en-title,
.venue-why-heading,
.venue-title,
.artist-name-ja,
.purchase-cta-title,
.bridge-event-date {
  overflow-wrap: anywhere;
}

/* キャッチコピー・リード文 */
.intro-tagline,
.section-desc,
.sns-lead,
.venue-map-desc,
.venue-eyebrow,
.cancel-policy-lead {
  overflow-wrap: anywhere;
}

/* 本文段落：左寄せ */
.concept-body p,
.artist-bio,
.artist-quote-text,
.faq-a p,
.cancel-policy p,
.cancel-policy li,
.info-notes-list li,
.concept-breath-body p,
.detail-summary-text,
.detail-summary-lead,
.perk-desc,
.purchase-cta-trust .trust-item {
  text-align: left;
  overflow-wrap: anywhere;
}

/* venue-why-body / venue-split-desc は text-wrap / word-break を干渉させない */
.venue-why-body,
.venue-split-desc {
  text-align: left;
  text-wrap: unset;
  word-break: normal;
  overflow-wrap: normal;
}

/* カード内・バッジ等の短いテキスト：中央＋balance */
.ticket-name,
.venue-why-cap-title,
.venue-why-cap-desc,
.venue-why-cap-num,
.artist-role,
.artist-comment-label,
.purchase-cta-eyebrow,
.purchase-cta-price-tax,
.perk-title {
  text-wrap: balance;
}

img { max-width:100%; height:auto; display:block; }
a { color:inherit; text-decoration:none; }
ul,ol { list-style:none; }
button { cursor:pointer; border:none; background:none; font-family:inherit; }

/* 英単語・ブランド名を途中で折り返さないユーティリティ */
.nowrap { white-space: nowrap; }
.nowrap-pc { white-space: nowrap; } /* スマホでは @media 内で normal に */





/* LAYOUT */
.container {
  width: min(var(--cw-xl), 100% - 2 * clamp(16px, 5vw, 48px));
  margin-inline: auto;
}

.container-narrow {
  width: min(var(--cw-sm), 100% - 2 * clamp(16px, 5vw, 48px)); /* xs→sm: 読みやすい行長に */
  margin-inline: auto;
}

/* Utility classes */
.sp-only, br.sp-only { display: none; }      /* SP専用要素：PCでは非表示 */
br.pc-only-br        { display: inline; }    /* PC専用改行：SPでは @media 内で none */

.section {
  position: relative;
  z-index: 5;  /* section-breakの素材(z1〜4)より上、見出しwrap(z10)より下 */
  padding-block: var(--section-pad);
  overflow: hidden;
  isolation: isolate; /* #sb-fixed-bg(position:fixed)が各セクション内に透けないよう封じる */
}

.section-header {
  text-align: center;
  margin-bottom: var(--sp5);
}

.section-eyebrow {
  font-family: var(--font-en);
  font-size: .72rem;
  font-weight: 400;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--accent);
  display: block;
  margin-bottom: var(--sp3);
}

.section-title {
  font-family: var(--font-en);
  font-size: clamp(1.75rem, 3.5vw, 2.75rem);
  font-weight: 700;
  color: var(--text-heading);
  line-height: 1.15;
  letter-spacing: -.025em;
}

/* ===== 日本語大型見出し（40〜50代女性向け・明朝体） ===== */
.section-title-ja {
  font-family: var(--font-mincho);
  font-size: clamp(2.6rem, 6vw, 5.5rem);
  font-weight: 600;
  color: var(--text-heading);
  line-height: 1.25;
  letter-spacing: .06em;
  /* 縦書き感・余白を大きく取った上質なバランス */
}

/* 細いウェイト部分（グラデーションなし・淡く） */
.title-thin {
  font-weight: 400;
  color: var(--text-sub);
  display: inline-block;
}

/* 区切り線（eyebrowとtitleの間） */
.section-header .section-eyebrow {
  position: relative;
  display: inline-block;
  padding-bottom: var(--sp2);
  margin-bottom: var(--sp3);
}
.section-header .section-eyebrow::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 40px;
  height: 1px;
  background: linear-gradient(90deg, var(--accent), var(--pink));
}

.section-desc {
  margin-top: var(--sp3);
  font-size: clamp(1rem, 1.8vw, 1.125rem); /* MESSAGE基準: min=1rem */
  color: var(--text-sub);
  line-height: 2.0;
  max-width: 560px;
  margin-inline: auto;
}


/* ============================
   BUTTONS
=============================== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp2);
  padding: 0 var(--sp4);
  height: 56px;
  min-width: 200px;
  border-radius: var(--r-full);
  font-family: var(--font-mincho);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .1em;
  white-space: nowrap; /* スマホ用上書きは下記 @media 内 */
  transition: transform var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease),
              background var(--t-fast);
}
.btn:hover  { transform: translateY(-3px); }
.btn:active { transform: translateY(0); }

/* ===== 差し色ボタン: 今すぐ参加する ===== */
.btn-accent-glow {
  background: var(--grad-accent-cta);
  color: #fff;
  border: none;
  position: relative;
  overflow: hidden;
  box-shadow: 0 4px 30px rgba(230,90,168,.40),
              0 0 0 0 rgba(201,166,107,.0);
  letter-spacing: .14em;
  font-weight: 600;
}
.btn-accent-glow::before {
  content:'';
  position:absolute;
  inset:0;
  background: linear-gradient(135deg, rgba(255,255,255,.18) 0%, transparent 60%);
  border-radius:inherit;
  pointer-events:none;
}
/* glow ボタンにもシマー */
.btn-accent-glow::after {
  content:'';
  position:absolute;
  top:0; left:-80%;
  width:50%;
  height:100%;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.22) 50%, transparent 100%);
  animation: shimmerSlide 4s ease-in-out infinite;
  pointer-events:none;
  border-radius: inherit;
}
.btn-accent-glow:hover {
  box-shadow: 0 8px 48px rgba(230,90,168,.55),
              0 0 40px rgba(201,166,107,.25);
  transform: translateY(-3px);
}

/* Solid accent for dark bg */
.btn-accent-solid {
  background: var(--grad-accent-cta);
  color: #fff;
  border: none;
  letter-spacing: .14em;
  font-weight: 600;
  box-shadow: 0 4px 32px rgba(230,90,168,.5);
}
.btn-accent-solid:hover {
  box-shadow: 0 10px 56px rgba(230,90,168,.65);
  transform: translateY(-3px);
}

/* Pulse animation — メインCTAの呼吸光 */
.btn-accent-pulse {
  background: var(--grad-accent-cta);
  color: #fff;
  border: none;
  letter-spacing: .16em;
  font-weight: 700;
  animation: accentPulse 2.8s ease-in-out infinite;
  position: relative;
  overflow: hidden;
}
/* シマー（光沢流れ）エフェクト */
.btn-accent-pulse::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 60%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255,255,255,.28) 50%,
    transparent 100%
  );
  animation: shimmerSlide 3.5s ease-in-out infinite;
  pointer-events: none;
}
.btn-accent-pulse:hover { animation-play-state: paused; }
.btn-accent-pulse:hover::after { animation-play-state: paused; }

@keyframes shimmerSlide {
  0%   { left: -80%; }
  60%  { left: 140%; }
  100% { left: 140%; }
}

@keyframes accentPulse {
  0%,100% {
    box-shadow: 0 6px 40px rgba(230,90,168,.45),
                0 0  0   0   rgba(230,90,168,.0);
  }
  50% {
    box-shadow: 0 10px 56px rgba(230,90,168,.65),
                0 0  60px 12px rgba(201,166,107,.18);
    transform: translateY(-2px);
  }
}

/* Primary */
.btn-primary {
  background: var(--bg-dark);
  color: var(--text-inverse);
  box-shadow: 0 4px 24px rgba(16,20,38,.25);
}
.btn-primary:hover {
  box-shadow: 0 8px 32px rgba(16,20,38,.35),
              0 0 24px var(--glow-violet);
}

/* Outline (transparent, dark border) */
.btn-outline {
  background: transparent;
  color: var(--text-heading);
  border: 1.5px solid rgba(16,20,38,.2);
}
.btn-outline:hover {
  background: var(--bg-dark);
  color: var(--text-inverse);
  border-color: var(--bg-dark);
}

/* Ghost light (transparent, white border — for dark bg) */
.btn-ghost-light {
  background: transparent;
  color: var(--text-inverse);
  border: 1.5px solid rgba(255,255,255,.4);
}
.btn-ghost-light:hover {
  background: rgba(255,255,255,.1);
  border-color: rgba(255,255,255,.75);
}

/* Large variant */
.btn-large { height:64px; font-size:1rem; min-width:240px; }




/* ============================
   HEADER
=============================== */
.site-header {
  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: 1000;
  padding-block: var(--sp3);
  transition: background var(--t-base) var(--ease-io),
              box-shadow var(--t-base) var(--ease-io),
              padding var(--t-base) var(--ease-io);
  /* GPU合成レイヤー */
  transform: translateZ(0);
  will-change: transform;
}
.site-header.scrolled {
  background: rgba(255,255,255,.95);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 2px 20px rgba(16,20,38,.08);
  padding-block: var(--sp2);
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: min(var(--cw-xl), 100% - 2 * var(--sp4));
  margin-inline: auto;
}

/* Logo */
.site-logo { display:block; }
.logo-text {
  font-family: var(--font-en);
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--text-inverse);
  transition: color var(--t-fast);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  line-height: 1.1;
}
.logo-kana {
  font-family: var(--font-mincho);
  font-size: .6rem;
  font-weight: 400;
  letter-spacing: .25em;
  text-transform: none;
  color: rgba(255,255,255,.55);
  transition: color var(--t-fast);
}
.site-header.scrolled .logo-text { color: var(--text-heading); }
.site-header.scrolled .logo-kana { color: var(--text-muted); }

/* Footer kana */
.footer-logo-kana {
  font-family: var(--font-mincho);
  font-size: .8125rem; /* .75→.8125rem */
  letter-spacing: .2em;
  color: rgba(255,255,255,.65); /* .3→.65 */
  margin-bottom: var(--sp1);
}

/* Nav list */
.site-nav { display:flex; align-items:center; gap:var(--sp4); }
.nav-list {
  display: flex;
  align-items: center;
  gap: var(--sp4);
}
.nav-list a {
  font-family: var(--font-mincho); /* 日本語表記に合わせ明朝体 */
  font-size: .875rem; /* .8→.875rem */
  font-weight: 500;
  letter-spacing: .06em; /* 日本語は文字間雔を紞める */
  color: rgba(255,255,255,.92); /* .8→.92 */
  position: relative;
  transition: color var(--t-fast);
}
.nav-list a::after {
  content:'';
  position:absolute;
  bottom:-4px; left:0;
  width:0; height:1px;
  background: var(--accent);
  transition: width var(--t-base) var(--ease);
}
.nav-list a:hover { color:#fff; }
.nav-list a:hover::after { width:100%; }
.nav-list a.active { color:#fff; }
.nav-list a.active::after { width:100%; }
.site-header.scrolled .nav-list a       { color:var(--text-main); } /* sub→mainでコントラスト向上 */
.site-header.scrolled .nav-list a:hover { color:var(--text-heading); }
.site-header.scrolled .nav-list a.active { color:var(--text-heading); }

/* Nav CTA button */
.nav-cta {
  background: var(--grad-accent-cta);
  color: #fff;
  padding: 10px 24px;
  border-radius: var(--r-full);
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .1em;
  box-shadow: 0 2px 16px rgba(230,90,168,.35);
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
  position: relative;
  overflow: hidden;
  animation: navCtaShimmer 3.5s ease-in-out infinite;
}
.nav-cta::after {
  content: '';
  display: block;
  position: absolute;
  top: 0; left: -80%;
  width: 50%; height: 100%;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.25) 50%, transparent 100%);
  animation: shimmerSlide 3.5s ease-in-out infinite;
  border-radius: inherit;
}
.nav-cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 28px rgba(230,90,168,.55);
}

/* ============================================================
   ハンバーガーボタン — スマホ常時固定
============================================================= */
.nav-toggle {
  display: none; /* デフォルト非表示（スマホのみ表示） */
  position: relative;
  top: auto;
  right: auto;
  z-index: 10000;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(10,5,25,.75);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.15);
  box-shadow: 0 4px 20px rgba(0,0,0,.35);
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 0;
  cursor: pointer;
  transition: background var(--t-fast), transform var(--t-fast);
}
.nav-toggle:hover {
  background: rgba(230,90,168,.5);
  transform: scale(1.05);
}
.nav-toggle span {
  display: block;
  width: 20px;
  height: 1.5px;
  background: #fff;
  border-radius: 2px;
  transition: transform var(--t-base) var(--ease), opacity var(--t-fast);
}
.nav-toggle[aria-expanded="true"] {
  background: rgba(230,90,168,.7);
}
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

/* ============================================================
   モバイルナビ — 全画面オーバーレイ
============================================================= */
.mobile-nav {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: linear-gradient(160deg, rgba(10,5,25,.97) 0%, rgba(26,10,46,.97) 60%, rgba(10,3,20,.97) 100%);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  padding: 100px clamp(32px, 8vw, 64px) 60px;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateX(100%);
  transition: opacity .35s var(--ease), transform .35s var(--ease), visibility .35s var(--ease);
  overflow-y: auto;
  /* PC幅では完全に非表示 */
  display: none;
}
/* スマホのみ有効化 */
@media (max-width: 767px) {
  .mobile-nav {
    display: block;
  }
}
.mobile-nav.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateX(0);
  pointer-events: auto;
}

/* メニューリスト */
.mobile-nav ul {
  display: flex;
  flex-direction: column;
  gap: 0;
  list-style: none;
}
.mobile-nav a {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 18px 0;
  font-family: var(--font-mincho);
  font-size: clamp(1.1rem, 5vw, 1.35rem);
  font-weight: 500;
  letter-spacing: .1em;
  color: rgba(255,255,255,.85);
  border-bottom: 1px solid rgba(255,255,255,.08);
  transition: color var(--t-fast), padding-left var(--t-fast) var(--ease);
  position: relative;
}
.mobile-nav a::before {
  content: '';
  display: block;
  width: 4px;
  height: 0;
  background: linear-gradient(180deg, #E65AA8, #6C4DFF);
  border-radius: 2px;
  flex-shrink: 0;
  transition: height var(--t-fast) var(--ease);
}
.mobile-nav a:hover {
  color: #fff;
  padding-left: 4px;
}
.mobile-nav a:hover::before { height: 24px; }

/* モバイルナビ内CTAボタン */
.mobile-nav .mobile-cta {
  display: block;
  margin-top: 32px;
  padding: 16px 32px;
  background: linear-gradient(135deg, #E65AA8, #6C4DFF);
  color: #fff;
  text-align: center;
  border-radius: var(--r-full);
  font-family: var(--font-mincho);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: .1em;
  box-shadow: 0 4px 24px rgba(230,90,168,.4);
  border-bottom: none !important;
  transition: transform var(--t-fast), box-shadow var(--t-fast);
}
.mobile-nav .mobile-cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 32px rgba(230,90,168,.6);
}
.mobile-nav .mobile-cta::before { display: none !important; }

/* モバイルナビ内ロゴ */
.mobile-nav-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 40px;
  padding-bottom: 28px;
  border-bottom: 1px solid rgba(255,255,255,.1);
}
.mobile-nav-logo img {
  height: 32px;
  width: auto;
}
.mobile-nav-logo-text {
  font-family: var(--font-en);
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255,255,255,.7);
}
.mobile-cta {
  background: var(--grad-accent-cta) !important;
  color: #fff !important;
  text-align: center;
  border-radius: var(--r-full) !important;
  margin-top: var(--sp2);
  padding: var(--sp2) var(--sp4) !important;
  border-bottom: none !important;
  box-shadow: 0 2px 16px rgba(230,90,168,.35) !important;
}


/* ============================
   S1: HERO
=============================== */
.hero {
  position: relative;
  width: 100%;
  height: 100svh;
  min-height: 500px;
  overflow: hidden;
  background: var(--bg-dark-2);
  isolation: isolate;
}

@media (max-width: 767px) {
  .hero { height: 110svh; min-height: 600px; }
}

/* ロゴエリア — 動画中央・スマホ対応 */
.hero-logo-area {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -52%);
  z-index: 10;
  text-align: center;
  width: clamp(280px, 50vw, 640px);
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
}

.hero-logo-area img,
.hero-logo-img {
  width: 100%;
  height: auto;
  display: block;
  mix-blend-mode: screen;
  animation: logoFadeIn 1.8s ease 0.3s forwards;
  opacity: 0;
}


@keyframes logoFadeIn {
  0%   { opacity: 0; transform: translateY(8px); }
  100% { opacity: 1; transform: translateY(0); }
}

.hero-video-wrap {
  position: absolute;
  inset: 0;
  z-index: 1;
  /* 動画なし時は純黒背景（ロゴの mix-blend-mode:screen が正確に機能するよう黒を確保） */
  background: var(--bg-dark-2);
}
/* 動画読み込み完了後: wrap のポスター背景を暗くフェード */
.hero-video-wrap.video-loaded {
  background-color: var(--bg-dark-2);
}

.hero-video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  opacity: 1;
  display: block;
  position: relative;
  z-index: 1;
  /* GPU合成レイヤー */
  transform: translateZ(0);
  will-change: transform;
  transition: opacity 1.4s ease;
  /* 動画なし時（ファイル未配置）はposter属性の画像がvideoタグ内に表示される */
}

.hero-overlay {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      180deg,
      rgba(9,11,24,0.20) 0%,
      rgba(9,11,24,0.30) 40%,
      rgba(9,11,24,0.50) 70%,
      rgba(9,11,24,0.92) 90%,
      rgba(9,11,24,1.00) 100%
    );
  pointer-events: none;
  z-index: 2;
}

@media (max-width: 767px) {
  .hero-overlay {
    background: linear-gradient(180deg,rgba(9,11,24,.35) 0%,rgba(9,11,24,.20) 15%,rgba(9,11,24,.15) 35%,rgba(9,11,24,.20) 55%,rgba(9,11,24,.40) 72%,rgba(9,11,24,.75) 88%,rgba(9,11,24,1) 100%);
  }
}

/* Scroll indicator */
.scroll-indicator {
  position: absolute;
  bottom: calc(var(--sp5) - 32px);
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp2);
  animation: scrollBounce 2.4s ease-in-out infinite;
}
.scroll-line {
  display:block; width:1px; height:48px;
  background: linear-gradient(to bottom, rgba(255,255,255,.8), transparent);
}
.scroll-label {
  font-family: var(--font-en);
  font-size: .6rem;
  font-weight: 500;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: rgba(255,255,255,.85);
  text-shadow: 0 0 12px rgba(0,0,0,.8);
}
@keyframes scrollBounce {
  0%,100% { opacity:1; transform:translateX(-50%) translateY(0); }
  50%      { opacity:.4; transform:translateX(-50%) translateY(8px); }
}


/* ============================
   SECTION BREAK — 波型なし・グラデーションフェード+背景画像「窓抜き」
   
   構造: .section-break > .sb-gap のみ
   動作原理:
   - #sb-fixed-bg (position:fixed) が常時ビューポートを埋める（iOS含む全デバイス対応）
   - .sb-gap は透明な「窓」→ 固定背景が透けて見える
   - ::before / ::after 擬似要素で上下をセクション色にフェード
   - CSS変数 --sb-color-top / --sb-color-btm で各境界ごとに色指定
   - JS (initSbGapParallax) が表示切り替えを制御
=============================== */
.section-break {
  position: relative;
  pointer-events: none;
  line-height: 0;
  font-size: 0;
  margin-top: -2px;
  margin-bottom: -2px;
  z-index: 10;
  overflow: hidden; /* はみ出しを完全に封じ込める */
  /* CSS変数デフォルト（白→白） */
  --sb-color-top: #FAF8FD;
  --sb-color-btm: #FAF8FD;
}

/* ==================================================
   共有固定背景レイヤー
   スマホ・デスクトップ両方で「背景固定・上物スクロール」を実現
   iOS Safariで background-attachment:fixed が効かない問題を
   position:fixed の div 1枚で解決
================================================== */
#sb-fixed-bg {
  position: fixed;
  inset: 0;
  background-image: url('../assets/gallery/new/gallery-new-6.jpg');
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  z-index: 0;
  opacity: 0;
  pointer-events: none;
  transition: none;
  /* GPU合成レイヤーに昇格 */
  will-change: opacity;
  transform: translateZ(0);
}
#sb-fixed-bg.is-visible {
  opacity: 1;
}
/* 固定背景の上に黒20%オーバーレイ */
#sb-fixed-bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.10);
  pointer-events: none;
}


.sb-gap {
  position: relative;
  height: 320px;
  background: transparent;
  --sb-skew: clamp(40px, 5vw, 80px);
  --sb-band: 34%;
}


.sb-gap--odd::before,
.sb-gap--even::before,
.sb-gap--odd::after,
.sb-gap--even::after {
  content: none;
}


.sb-fade-top,
.sb-fade-btm {
  position: absolute;
  left: 0; right: 0;
  pointer-events: none;
  z-index: 4;
}
.sb-fade-top {
  top: 0;
  height: 50%;          /* ちょうど中央で終わる → 中央はグラデ0 */
  background: linear-gradient(
    to bottom,
    var(--sb-color-top) 0%,
    var(--sb-color-top) 45%,
    transparent         100%
  );
}
.sb-fade-btm {
  bottom: 0;
  height: 50%;          /* ちょうど中央で終わる → 中央はグラデ0 */
  background: linear-gradient(
    to top,
    var(--sb-color-btm) 0%,
    var(--sb-color-btm) 45%,
    transparent         100%
  );
}

/* Artists → Venue: 上下の色差が小さいためフェードを広げて自然につなぐ */
.sb-gap--artists-venue {
  height: 260px;
}
.sb-gap--artists-venue .sb-fade-top {
  height: 60%;
  background: linear-gradient(
    to bottom,
    #FAF8FD 0%,
    #FAF8FD 30%,
    transparent 100%
  );
}
.sb-gap--artists-venue .sb-fade-btm {
  height: 60%;
  background: linear-gradient(
    to top,
    #FAF8FD 0%,
    #FAF8FD 30%,
    transparent 100%
  );
}

/* サイズバリエーション */
.sb-gap--sm { height: 80px; }
/* ギャラリーエリア開始の窓 */
.sb-gap--intro { height: 400px; }
.sb-gap--lg { height: 180px; }
/* Gallery終端 → Concept 区切り窓 */
.sb-gap--gallery-end { height: 360px; }

/* 暗セクション間 */
.sb-gap--dark { background: transparent; }

/* ============================================================
   モバイル
   ============================================================ */
@media (max-width: 767px) {
  .sb-gap      { height: 220px; --sb-skew: 40px; --sb-band: 34%; }
  .sb-gap--sm  { height: 80px; }
  .sb-gap--lg  { height: 160px; }
  .sb-gap--dark.sb-gap--sm { height: 30px; }
  .sb-gap--dark.sb-gap--lg { height: 70px; }
}


/* ============================
   S2: INTRO: HERO直下・暗宇宙背景で一体化
=============================== */
.section-intro {
  /* HEROの暗色と連続する深宇宙グラデーション（HEROポスター画像と同トーン） */
  background: linear-gradient(
    180deg,
    #090b18 0%,
    #0d1020 30%,
    #131530 60%,
    #0c0e22 80%,
    #080a14 100%
  );
  padding-block: clamp(56px, 8vw, 96px) clamp(48px, 7vw, 80px);
  position: relative;
  overflow: hidden;
  margin-top: -2px;
  margin-bottom: -1px;
}
.section-intro .container { position:relative; z-index:2; }

/* ============================================================
   NEWS SECTION
============================================================= */
.news-section {
  width: 100%;
  padding: clamp(20px, 4vw, 44px) clamp(16px, 5vw, 40px) clamp(48px, 7vw, 72px);
  position: relative;
  z-index: 2;
}

.news-inner {
  max-width: 900px;
  margin-inline: auto;
}

.news-heading {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 20px;
}

.news-heading::before,
.news-heading::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(180,160,255,0.35), transparent);
}

.news-heading-en {
  font-family: 'Cormorant Garamond', 'Georgia', serif;
  font-size: clamp(11px, 1.6vw, 13px);
  font-weight: 400;
  letter-spacing: 0.35em;
  color: rgba(200,185,255,0.7);
  white-space: nowrap;
}

.news-list {
  list-style: none;
  padding: 0;
  margin: 0;
  max-height: 260px;
  overflow-y: auto;
  border: 1px solid rgba(180,160,255,0.18);
  border-radius: 10px;
  background: rgba(15,12,35,0.55);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  scrollbar-width: thin;
  scrollbar-color: rgba(150,120,255,0.35) transparent;
}

.news-list::-webkit-scrollbar {
  width: 4px;
}
.news-list::-webkit-scrollbar-track {
  background: transparent;
}
.news-list::-webkit-scrollbar-thumb {
  background: rgba(150,120,255,0.35);
  border-radius: 2px;
}

.news-item {
  display: flex;
  align-items: baseline;
  gap: 20px;
  padding: 16px 20px;
  border-bottom: 1px solid rgba(180,160,255,0.1);
  transition: background 0.2s;
}

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

.news-item:hover {
  background: rgba(110,80,220,0.1);
}

.news-date {
  flex-shrink: 0;
  font-family: 'Cormorant Garamond', 'Georgia', serif;
  font-size: clamp(13px, 1.5vw, 16px);
  font-weight: 400;
  letter-spacing: 0.08em;
  color: rgba(190,170,255,0.75);
}

.news-text {
  margin: 0;
  font-size: clamp(14px, 1.6vw, 17px);
  line-height: 1.75;
  color: rgba(235,230,255,0.92);
  font-weight: 300;
  letter-spacing: 0.02em;
}

.news-link {
  color: rgba(210,180,255,1);
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-thickness: 1.5px;
  text-decoration-color: rgba(210,180,255,0.85);
  font-weight: 600;
  transition: color 0.2s, text-decoration-color 0.2s;
}

.news-link:hover {
  color: #fff;
  text-decoration-color: rgba(255,255,255,0.9);
}

/* ── コラボレーションLIVE枠 ── */
.collab-live-section {
  margin-top: 56px;
  max-width: 900px;
  margin-inline: auto;
}

.collab-live-list {
  list-style: none;
  padding: 0;
  margin: 0;
  border: 1px solid rgba(180,160,255,0.18);
  border-radius: 10px;
  background: rgba(15,12,35,0.55);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  overflow: hidden;
}

.collab-live-item {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 14px 20px;
  border-bottom: 1px solid rgba(180,160,255,0.1);
  transition: background 0.2s;
}

.collab-live-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}
.collab-live-item:last-child {
  border-bottom: none;
}
.collab-live-item:hover {
  background: rgba(180,160,255,0.06);
}

.collab-live-text {
  margin: 0;
  font-size: clamp(.82rem, 1.6vw, .95rem);
  color: rgba(255,255,255,.88);
  line-height: 1.65;
  font-family: var(--font-mincho);
  letter-spacing: .03em;
}

.collab-live-guest {
  display: block;
  margin: 0;
  font-size: .85em;
  color: rgba(200,180,255,.75);
  letter-spacing: .03em;
}

.collab-live-detail {
  margin: .2em 0 0;
  font-size: .8rem;
  color: rgba(255,255,255,.45);
  letter-spacing: .04em;
}

.collab-live-platform {
  margin: .25em 0 0;
  font-size: .78rem;
  color: rgba(200,180,255,.6);
  letter-spacing: .05em;
}

/* ── レスポンシブ ── */
@media (max-width: 600px) {
  .news-item {
    flex-direction: column;
    gap: 6px;
    padding: 14px 16px;
  }
  .news-date {
    font-size: 16px;
  }
  .news-text {
    font-size: 16px;
  }
}

/* ネブラ装飾 — 宇宙感を演出するラジアルグロー */
.intro-nebula {
  position: absolute;
  inset: 0;
  z-index: 3; /* コンテンツ(z-index:2)より前面に */
  pointer-events: none;
  mix-blend-mode: screen; /* 下のコンテンツを透かして合成 */
  background:
    radial-gradient(
      ellipse 80% 60% at 20% 60%,
      rgba(108,77,255,0.18) 0%,
      transparent 70%
    ),
    radial-gradient(
      ellipse 60% 50% at 80% 30%,
      rgba(201,166,107,0.15) 0%,
      transparent 65%
    ),
    radial-gradient(
      ellipse 50% 40% at 50% 80%,
      rgba(230,90,168,0.14) 0%,
      transparent 60%
    );
  animation: nebulaShift 12s ease-in-out infinite alternate;
}

@keyframes nebulaShift {
  0%   { opacity: 0.6; transform: scale(1) translateY(0); }
  100% { opacity: 1.0; transform: scale(1.02) translateY(-4px); } /* スマホはみ出し防止のためscaleを縮小 */
}

/* ============================================================
   INTRO STACK — PC・スマホ共通で全要素を縦並びセンター
============================================================ */
.intro-stack {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--sp7);
  max-width: 880px;
  margin-inline: auto;
  width: 100%;
}

/* 各カラム共通: 幅100%・中央 */
.intro-col {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp4);
}

/* タグラインカラム */
.intro-col--title {
  gap: var(--sp4);
}

.intro-eyebrow {
  font-family: var(--font-en);
  font-size: .7rem;
  font-weight: 500;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  text-align: center;
}

/* タグライン + カナのまとまり */
.intro-tagline-block {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--sp4);
  padding-top: var(--sp4);
  border-top: 1px solid rgba(255,255,255,.12);
  width: 100%;
}

.intro-tagline {
  font-size: clamp(1rem, 1.6vw, 1.125rem); /* 大きく */
  font-family: var(--font-mincho);
  font-weight: 400;
  color: rgba(255,255,255,.88); /* .72→.88 */
  line-height: 2.0;
  letter-spacing: .08em;
  text-align: center;
  word-break: normal;
  overflow-wrap: break-word;
}

/* アーティスト情報（ソラリスブレス下） */
.intro-artists {
  font-family: var(--font-mincho);
  font-weight: 500;
  color: rgba(255,255,255,.92);
  line-height: 2.0;
  letter-spacing: .06em;
  margin-top: var(--sp4);
  text-align: center;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .6em;
}

.artists-role {
  font-size: clamp(.8rem, 1.3vw, .95rem);
  color: var(--gold); /* ゴールド */
  letter-spacing: .16em;
  margin-right: .25em;
  font-weight: 600;
}

.artists-name {
  font-size: clamp(1.3rem, 2.5vw, 1.65rem); /* もう少し大きく */
  color: rgba(255,255,255,.97);
  letter-spacing: .1em;
  font-weight: 600;
}

.artists-sep {
  font-size: clamp(1rem, 1.6vw, 1.2rem);
  color: var(--gold); /* ゴールドの区切り */
  margin-inline: .3em;
  opacity: .7;
}

/* メタ情報カード — 幅を固定し中央に */
.intro-col--meta {
  width: 100%;
  max-width: 900px; /* PC: 760px → 900px に拡大 */
  flex-shrink: 0;
}

/* メタカード: 常に3段縦並び */
.intro-meta-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  width: 100%;
  background: rgba(255,255,255,.06);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(255,255,255,.14);
  /* 対角カット: 左上・右下を尖らせる */
  --cut: 20px;
  clip-path: polygon(
    var(--cut) 0%,
    100% 0%,
    100% calc(100% - var(--cut)),
    calc(100% - var(--cut)) 100%,
    0% 100%,
    0% var(--cut)
  );
  /* box-shadowはdrop-shadowで代替 */
  filter: drop-shadow(0 8px 48px rgba(0,0,0,.45))
          drop-shadow(0 0 1px rgba(255,255,255,.08));
}

.intro-meta-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
  padding: var(--sp4) var(--sp5); /* 元に戻す */
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.intro-meta-item:last-child { border-bottom: none; }

.intro-meta-label {
  font-family: var(--font-en);
  font-size: .875rem; /* .75rem → .875rem */
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
  text-align: center;
}

.intro-meta-value {
  font-family: var(--font-mincho);
  font-size: 1.25rem; /* 1.1rem → 1.25rem */
  font-weight: 600;
  color: rgba(255,255,255,.95);
  line-height: 1.6;
  text-align: center;
  letter-spacing: .04em;
}

/* TIME値を大きく表示（上映時間） */
.intro-meta-value--large {
  font-size: 2.1rem;
  font-weight: 700;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .25em 1.5em;
}

/* time-block: スマホでは横並び（ラベル＋値） */
.time-block {
  display: inline-flex;
  align-items: baseline;
  gap: .4em;
  white-space: nowrap;
}
.time-label {
  font-size: 1.1rem;
  font-weight: 600;
  color: rgba(255,255,255,.6);
  letter-spacing: .08em;
  text-transform: none;
}
.time-val {
  font-size: 2.1rem;
  font-weight: 700;
  color: rgba(255,255,255,.95);
}

/* DATE値をさらに大きく表示 */
.intro-meta-value--date {
  font-size: 2.1rem; /* 1.75rem → 2.1rem */
  font-weight: 700;
  letter-spacing: .04em;
  text-align: center;
}


/* VENUE値 */
.intro-meta-value--venue {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 2px;
}

.venue-line1 {
  display: block;
  font-size: 1.2rem; /* 1.05rem → 1.2rem */
  font-weight: 700;
  color: rgba(255,255,255,.95);
  white-space: normal;
  word-break: normal;
  overflow-wrap: break-word;
}

.venue-line2 {
  display: block;
  font-size: .95rem; /* .85rem → .95rem */
  color: rgba(255,255,255,.55);
  white-space: normal;
  word-break: normal;
  overflow-wrap: break-word;
}

.intro-btn-primary {
  width: 100%;
  min-width: 0;
}

.intro-btn-outline {
  width: 100%;
  min-width: 0;
}

/* 上映作品イメージ動画セクション（section-intro-video内・画面幅95%） */
.intro-video-section-full {
  width: 100%;
  max-width: 1800px;
  margin: 0 auto;
  padding-inline: 0; /* 動画は左右余白なし・ラッパー側で制御 */
}

/* PC動画ラッパー：左右に少しだけ隙間を残して最大幅に */
.intro-video-player-wrap {
  max-width: 1800px; /* 事実上の上限なし */
  width: calc(100% - 48px); /* 左右24pxずつ隙間 */
  margin-left: auto;
  margin-right: auto;
}

/* ── ドームシュミレーション映像ブロック ── */
.dome-video-section {
  padding: clamp(32px, 5vw, 64px) 0 clamp(40px, 6vw, 72px);
}

/* テキスト帯を動画と同じ幅に揃える */
.dome-video-footer {
  width: calc(100% - 48px);
  margin-left: auto;
  margin-right: auto;
  margin-top: 0;
  display: block;
}

#domeVideoEl {
  object-fit: contain;
  object-position: center center;
  background: #000 url('assets/gallery/dome-poster.jpg?v=20260426d') no-repeat center center / cover;
}

/* 動画上見出し */
.intro-video-heading {
  text-align: center;
  margin-top: -60px;
  margin-bottom: 121px; /* +50px */
}
.intro-video-heading-en {
  font-family: var(--font-en);
  font-size: clamp(.7rem, 1.4vw, .95rem);
  font-weight: 500;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: #D4AF6A;
  margin: 0 0 12px;
}
.intro-video-heading-ja {
  font-family: var(--font-mincho);
  font-size: clamp(1.4rem, 3.5vw, 2.6rem);
  font-weight: 500;
  letter-spacing: .1em;
  color: #ffffff;
  margin: 0;
  text-shadow: 0 2px 20px rgba(0,0,0,.4);
  white-space: nowrap;
}
.intro-video-title {
  font-family: var(--font-mincho);
  font-size: clamp(.85rem, 1.4vw, 1.05rem);
  font-weight: 500;
  color: rgba(255,255,255,.7);
  letter-spacing: .06em;
  margin: 0;
}

/* 動画下・左端キャプション */
.intro-video-title--below-player {
  display: block;
  width: 100%;
  margin: 8px 0 0 0;
  padding: 10px 16px;
  background: rgba(0,0,0,.38);
  border-radius: 4px;
  font-size: clamp(.8rem, 1.6vw, 1.25rem) !important;
  letter-spacing: .08em;
  color: #ffffff;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

/* ティザー・ドーム動画フッターは動画に密着 */
.dome-video-footer .intro-video-title--below-player {
  margin-top: 0;
  border-radius: 0 0 4px 4px;
}

.intro-video-subtitle {
  display: inline;
  font-family: var(--font-mincho);
  font-size: .88em;
  color: rgba(255,255,255,.75);
  letter-spacing: .04em;
  margin-left: .4em;
}

.intro-video-player {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: rgba(0,0,0,.4);
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 8px 40px rgba(0,0,0,.5);
  border: none;
  cursor: pointer;
}

.intro-video-element {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* カスタム再生ボタン */
.intro-video-play-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: clamp(56px, 8vw, 80px);
  height: clamp(56px, 8vw, 80px);
  background: rgba(0,0,0,.35);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform .2s ease, background .2s ease;
  z-index: 5;
  pointer-events: auto;
}
.intro-video-play-btn svg {
  width: 100%;
  height: 100%;
  display: block;
}
.intro-video-play-btn:hover {
  transform: translate(-50%, -50%) scale(1.1);
  background: rgba(0,0,0,.5);
}
/* 再生中はボタンを隠す */
.intro-video-play-btn.is-playing {
  opacity: 0;
  pointer-events: none;
}

/* ---- 動画フッター：タイトル＋音声ボタン（プレイヤー外） ---- */
/* 動画ラッパー：ボタンを右上角に重ねるため position:relative */
.intro-video-player-wrap {
  position: relative;
}
.intro-video-footer {
  width: calc(100% - 48px);
  margin-left: auto;
  margin-right: auto;
}
.intro-video-footer .intro-video-title--below-player {
  margin: 0;
  width: 100%;
}

/* ミュートボタン：動画右下角に絶対配置（PC・SP共通） */
.intro-video-mute-btn {
  position: absolute;
  bottom: 14px;
  right: 14px;
  top: auto;          /* 右上指定を上書き */
  z-index: 10;
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  padding: 0;
  background: none;
  border: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  min-width: 44px;
  min-height: 44px;
}
.mute-btn-inner {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px 9px 12px;
  background: rgba(0, 0, 0, .52);
  border: 1.5px solid rgba(255,255,255,.35);
  border-radius: 999px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: background .2s ease, border-color .2s ease, box-shadow .2s ease;
  box-shadow: 0 2px 12px rgba(0,0,0,.35);
}
.intro-video-mute-btn:active .mute-btn-inner,
.intro-video-mute-btn:hover .mute-btn-inner {
  background: rgba(0, 0, 0, .72);
  border-color: rgba(255,255,255,.65);
}
.intro-video-mute-btn svg {
  width: 20px;
  height: 20px;
  display: block;
  flex-shrink: 0;
}
.unmute-icon { display: none; }
.mute-btn-label {
  font-family: var(--font-en);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .13em;
  color: rgba(255,255,255,.92);
  text-transform: uppercase;
  white-space: nowrap;
}
/* 音声ON時：シアンのアクセント */
.intro-video-mute-btn.is-unmuted .mute-btn-inner {
  border-color: rgba(100, 220, 255, .7);
  box-shadow: 0 0 14px rgba(100, 220, 255, .3);
  background: rgba(0, 40, 60, .6);
}
.intro-video-mute-btn.is-unmuted .mute-btn-label {
  color: rgba(130, 230, 255, .95);
}

/* ===== スマホ：ミュートボタン → アイコンのみの丸ボタン ===== */
@media (max-width: 767px) {
  .intro-video-mute-btn {
    bottom: 10px;
    right: 10px;
  }
  .mute-btn-inner {
    width: 42px;
    height: 42px;
    padding: 0;
    justify-content: center;
    border-radius: 50%;       /* 丸型 */
    gap: 0;
  }
  /* テキストラベルを非表示 */
  .mute-btn-label {
    display: none;
  }
  /* アイコンをひとまわり大きく */
  .intro-video-mute-btn svg {
    width: 22px;
    height: 22px;
  }
  /* 音声ON時：シアン丸 */
  .intro-video-mute-btn.is-unmuted .mute-btn-inner {
    border-color: rgba(100, 220, 255, .8);
    box-shadow: 0 0 12px rgba(100, 220, 255, .4);
  }
}

/* CTAボタングループ（動画の上・section-intro末尾） */
.intro-video-cta-group-outer {
  padding-block: clamp(80px, 8vw, 108px) clamp(28px, 5vw, 56px);
}

.intro-video-cta-group {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp3);
  width: 100%;
  max-width: 400px;
  margin: 0 auto;
}

.intro-video-cta-group .btn {
  width: 100%;
  min-width: 0;
}

/* ============================
   S2-b: INTRO VIDEO + GALLERY 共通基盤
   bg-fixed-new2.jpg の固定背景エリア内のセクション
   内側は半透明色でオーバーレイし、固定背景を透かせる
=============================== */
.section-on-fixedbg {
  /* 固定背景をそのまま表示（オーバーレイなし） */
  background: transparent;
  position: relative;
  z-index: 2;
  /* isolationを展開して固定背景を透かす */
  isolation: auto;
}

.section-intro-video {
  padding-block: clamp(24px, 4vw, 48px) 0;
  position: relative;
  overflow: hidden;
  margin-top: -2px;
  margin-bottom: -1px;
}


/* ============================
   S3: CONCEPT
=============================== */
.section-concept {
  /* 白系 — 一息ついて「読む」セクション。テキスト多いため可読性優先 */
  background: var(--bg-base); /* #FAF8FD */
  padding-block: clamp(24px, 4vw, 48px) clamp(56px, 8vw, 100px);
  position: relative;
  z-index: 20;           /* section-break(z-index:10)より確実に前面に出す */
}

.concept-layout {
  display: flex;
  justify-content: center;
}

.concept-text {
  display: flex;
  flex-direction: column;
  gap: var(--sp4);
  max-width: 680px;   /* 読みやすい幅で中央 */
  width: 100%;
  text-align: left;   /* 本文は左揃えのまま — 可読性優先 */
}

.concept-heading {
  font-family: var(--font-mincho);
  font-size: clamp(2.2rem, 4.5vw, 4rem);
  font-weight: 600;
  color: var(--text-heading);
  line-height: 1.3;
  letter-spacing: .05em;
  text-shadow: none;
  text-wrap: unset;   /* balance を使わず自然な折り返しに */
}

.concept-heading-thin {
  font-weight: 400;
  color: var(--text-sub);
  display: block;
  font-size: 1em;   /* 「呼吸から始まる、」と同サイズに統一 */
}

.concept-en-title {
  font-family: var(--font-en);
  font-size: .875rem;
  font-weight: 400;
  letter-spacing: .1em;
  background: var(--grad-accent);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.concept-body p {
  font-size: clamp(1rem, 1.8vw, 1.125rem); /* MESSAGE基準に統一 */
  color: var(--text-heading);
  font-family: var(--font-mincho);
  line-height: 2.2;
  margin-bottom: var(--sp4);
  letter-spacing: .05em;
}
.concept-body p:last-child { margin-bottom:0; }

.concept-cta { margin-top: var(--sp2); }

/* 呼吸コラムボックス — ベージュ背景でわかりやすく */
.concept-breath-box {
  margin-top: var(--sp6);
  background: #F5EFE3;
  border-left: 4px solid #C9A66B;
  border-radius: 0 var(--r-md) var(--r-md) 0;
  padding: var(--sp5) var(--sp6);
}

.concept-breath-title {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 2vw, 1.2rem);
  font-weight: 600;
  color: #7A5A2A;
  letter-spacing: .08em;
  margin-bottom: var(--sp4);
  padding-bottom: var(--sp2);
  border-bottom: 1px solid rgba(201,166,107,.4);
}

.concept-breath-body p {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.7vw, 1.1rem);
  color: #4A3B28;
  line-height: 2.1;
  margin-bottom: var(--sp3);
  letter-spacing: .04em;
}

.concept-breath-body p:last-child {
  margin-bottom: 0;
}

.concept-breath-closing {
  font-weight: 600;
  color: #7A5A2A !important;
  letter-spacing: .1em !important;
  margin-top: var(--sp3) !important;
  font-size: 1.05rem !important;
}


/* ============================
   S4: PARALLAX BRIDGE
=============================== */
.section-bridge {
  position: relative;
  min-height: 600px;
  display: flex;
  align-items: center;
  padding-block: clamp(135px, 16vw, 255px);
  margin-block: 0;
  isolation: auto; /* .sectionのisolate上書き → bridge-bgが正しく表示されるよう */
}

.bridge-bg {
  position: absolute; inset:0;
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  z-index: 1;
}
.bridge-overlay {
  position: absolute; inset:0;
  background: rgba(10,14,28,0.55);
  z-index: 2;
}
.section-bridge .container { position:relative; z-index:3; }

.bridge-content {
  text-align: center;
  max-width: 640px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp5);
}

/* BRIDGEロゴ */
.bridge-logo {
  display: block;
  width: clamp(260px, 45vw, 560px);
  height: auto;
  mix-blend-mode: screen;
  filter: drop-shadow(0 0 40px rgba(201,166,107,.3))
          drop-shadow(0 0 80px rgba(230,90,168,.22));
}

.bridge-cta {
  margin-top: 16px;
  padding: 20px 72px;
  font-size: clamp(1.05rem, 2.2vw, 1.35rem);
  font-weight: 700;
  letter-spacing: 0.16em;
  border-radius: 50px;
  min-width: 280px;
}

@media (max-width:767px) {
  .bridge-bg { background-attachment:scroll; }
}

/* ============================
   BRIDGE 2 FINAL (融合版)
=============================== */
.section-bridge--final {
  min-height: 700px;
  padding-block: clamp(100px, 14vw, 200px);
  background: linear-gradient(
    180deg,
    #0e0b28 0%,
    #1a0e40 25%,
    #2a1260 50%,
    #1a0e40 75%,
    #0e0b28 100%
  );
}
.section-bridge--final .bridge-bg {
  display: none;
}
.section-bridge--final .bridge-overlay {
  background: transparent;
}

.bridge-content--final {
  gap: var(--sp4);
}

/* 日程バッジ */
.bridge-event-date {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: 100px;
  padding: 10px 32px;
  backdrop-filter: blur(8px);
}
.bridge-event-date span {
  font-family: var(--font-mincho);
  font-size: clamp(1.2rem, 3vw, 1.65rem);
  font-weight: 600;
  letter-spacing: 0.12em;
  color: #fff;
}

/* サブアクション（お問い合わせ・FAQ）ボタン群 */
.bridge-sub-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
  margin-top: 4px;
}

.bridge-btn-sub {
  padding: 14px 32px;
  font-size: clamp(0.88rem, 1.6vw, 1rem);
  font-weight: 500;
  letter-spacing: 0.1em;
  border-radius: 50px;
  border: 1.5px solid rgba(255,255,255,0.45);
  color: rgba(255,255,255,0.9);
  background: rgba(255,255,255,0.06);
  transition: border-color 0.25s, background 0.25s, color 0.25s, transform 0.2s;
  backdrop-filter: blur(6px);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.bridge-btn-sub:hover {
  border-color: rgba(255,255,255,0.85);
  background: rgba(255,255,255,0.14);
  color: #fff;
  transform: translateY(-2px);
}

/* フッター注記 */
.bridge-footnote {
  margin-top: 8px;
  font-size: clamp(0.78rem, 1.4vw, 0.88rem);
  color: rgba(255,255,255,0.5);
  letter-spacing: 0.06em;
}
.bridge-sns-link {
  color: rgba(255,255,255,0.75);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color 0.2s;
}
.bridge-sns-link:hover {
  color: #fff;
}

@media (max-width: 600px) {
  .bridge-event-date {
    padding: 8px 24px;
  }
  .bridge-sub-actions {
    flex-direction: column;
    align-items: center;
    gap: 12px;
  }
  .bridge-btn-sub {
    width: 100%;
    max-width: 280px;
    justify-content: center;
  }
}


/* ============================
   S5: GALLERY
=============================== */
.section-gallery {
  background: transparent;
  padding-block: 74px 0;
  position: relative;
}
/* 背景画像なし（無地）— ::before削除 */
.section-gallery .container {
  position: relative;
  z-index: 1;
}

/* ギャラリーヘッダー: 暗背景対応 — テキストを白系に */
.section-gallery .section-eyebrow { color: var(--accent); }
.section-gallery .section-title-ja { color: rgba(255,255,255,.92); }
.section-gallery .title-thin { color: rgba(255,255,255,.55); }
.section-gallery .section-desc { color: rgba(255,255,255,.6); }

/* =============================================
   GALLERY SLIDER — フルワイド横スクロール
============================================= */

/* ラッパー: section幅いっぱい */
.gl-slider-wrap {
  position: relative;
  width: 100%;
  overflow: hidden;
  margin-block: 71px 0; /* +15px */
  cursor: grab;
  user-select: none;
}
.gl-slider-wrap.is-dragging { cursor: grabbing; }

/* トラック: スライド横並び */
.gl-track {
  display: flex;
  gap: clamp(12px, 2vw, 24px);
  padding-inline: clamp(16px, 5vw, 80px);
  transition: transform 0.72s cubic-bezier(.4,0,.2,1);
  will-change: transform;
}

/* 各スライド */
.gl-slide {
  flex: 0 0 clamp(260px, 68vw, 900px);
  height: clamp(260px, 52vw, 680px);
  position: relative;
  overflow: hidden;
  border-radius: var(--r-xl);
  margin: 0;
  box-shadow: 0 12px 48px rgba(10,14,28,.18);
  transition: transform 0.5s cubic-bezier(.4,0,.2,1),
              box-shadow 0.5s cubic-bezier(.4,0,.2,1),
              filter 0.5s cubic-bezier(.4,0,.2,1);
  filter: brightness(.72) saturate(.7);
  transform: scale(.94);
}

/* アクティブスライド: 明るく・大きく */
.gl-slide.is-active {
  filter: brightness(1) saturate(1);
  transform: scale(1);
  box-shadow: 0 24px 80px rgba(10,14,28,.32);
}

/* 画像: ズームアニメーション */
.gl-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 6s cubic-bezier(.4,0,.2,1);
  transform: scale(1.08);
}
.gl-slide.is-active img {
  transform: scale(1);
}

/* スマホでスライドをタップ可能に見せる */
@media (max-width: 767px) {
  .gl-slide.is-active {
    cursor: zoom-in;
  }
}

/* ギャラリーモーダル */
.gl-modal {
  position: fixed;
  inset: 0;
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}
.gl-modal.is-open {
  opacity: 1;
  pointer-events: auto;
}
.gl-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(4, 5, 14, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.gl-modal-inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: min(92vw, 92vh * 16 / 9);
  padding: 0 16px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.gl-modal-img {
  width: 100%;
  height: auto;
  max-height: 88vh;
  object-fit: contain;
  border-radius: 8px;
  box-shadow: 0 24px 80px rgba(0,0,0,.7);
  transform: scale(0.92);
  transition: transform 0.3s cubic-bezier(.4,0,.2,1);
  display: block;
}
.gl-modal.is-open .gl-modal-img {
  transform: scale(1);
}
.gl-modal-close {
  position: absolute;
  top: clamp(12px, 4vw, 24px);
  right: clamp(12px, 4vw, 24px);
  z-index: 2;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,.3);
  background: rgba(255,255,255,.1);
  backdrop-filter: blur(8px);
  color: #fff;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s, transform 0.2s;
}
.gl-modal-close:hover {
  background: rgba(255,255,255,.25);
  transform: rotate(90deg);
}
.gl-modal-close svg {
  width: 20px;
  height: 20px;
}

/* コントロールエリア */
.gl-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp4);
  margin-top: var(--sp4);
  padding-inline: var(--sp4);
}

/* 矢印ボタン — 暗背景対応 */
.gl-btn {
  width: 48px; height: 48px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,.2);
  background: rgba(255,255,255,.10);
  backdrop-filter: blur(8px);
  color: rgba(255,255,255,.85);
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background var(--t-base) var(--ease),
              border-color var(--t-base) var(--ease),
              transform var(--t-base) var(--ease),
              box-shadow var(--t-base) var(--ease);
  flex-shrink: 0;
}
.gl-btn svg { width: 20px; height: 20px; }
.gl-btn:hover {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  transform: scale(1.08);
  box-shadow: 0 4px 16px rgba(var(--accent-rgb),.35);
}
.gl-btn:active { transform: scale(.96); }
.gl-btn:disabled {
  opacity: .3;
  pointer-events: none;
}

/* ドット — 暗背景対応 */
.gl-dots {
  display: flex;
  gap: 8px;
  align-items: center;
}
.gl-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,.25);
  border: none;
  cursor: pointer;
  padding: 0;
  transition: background .3s, transform .3s, width .3s;
}
.gl-dot.is-active {
  background: var(--accent);
  width: 24px;
  border-radius: 4px;
  transform: none;
}

/* プログレスバー — 暗背景対応 */
.gl-progress-wrap {
  height: 2px;
  background: rgba(255,255,255,.12);
  margin-top: var(--sp3);
  margin-inline: clamp(16px, 5vw, 80px);
  border-radius: 2px;
  overflow: hidden;
}
.gl-progress-bar {
  height: 100%;
  background: linear-gradient(90deg, var(--accent), #a78bfa);
  border-radius: 2px;
  width: 0%;
  transition: width .1s linear;
}

/* ギャラリーCTA */
.gallery-cta {
  text-align: center;
  margin-top: var(--sp3);
}

/* ========= RESPONSIVE ========= */
@media (max-width: 767px) {
  .gl-slide {
    flex: 0 0 82vw;
    height: 60vw;
    min-height: 220px;
  }
  .gl-btn { width: 40px; height: 40px; }
  .gl-btn svg { width: 16px; height: 16px; }
}


/* ============================
   S6: ARTISTS
   左右交互レイアウト（大きな写真 + テキスト）
=============================== */
/* Artists: 白系 — 人物写真を明るく、テキストを読みやすく */
.section-artists {
  background: var(--bg-base); /* #FAF8FD */
  padding-block: clamp(24px, 4vw, 48px) clamp(56px, 8vw, 100px);
  position: relative;
}
.section-artists::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url('../assets/gallery/new/gallery-new-6.jpg');
  background-size: cover;
  background-position: center;
  /* background-attachment:fixed は iOS非対応のため scroll に統一 */
  background-attachment: scroll;
  opacity: 0.04;
  pointer-events: none;
  z-index: 0;
}
.section-artists .container {
  position: relative;
  z-index: 1;
}

.artist-block {
  display: grid;
  grid-template-columns: 400px 1fr;
  gap: var(--sp7);
  align-items: start;
  margin-bottom: var(--sp6);
  padding-bottom: var(--sp6);
  border-bottom: 1px solid rgba(16,20,38,.08);
}
.artist-block:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

/* 右が写真になる逆順 */
.artist-block--reverse {
  grid-template-columns: 1fr 400px;
}
.artist-block--reverse .artist-visual { order:2; }
.artist-block--reverse .artist-body   { order:1; }

/* 写真エリア */
.artist-visual {
  display: flex;
  flex-direction: column;
  gap: var(--sp3);
}

.artist-photo-wrap {
  position: relative;
  overflow: hidden;
  /* 対角カット: 左上・右下を尖らせる */
  --cut: 24px;
  clip-path: polygon(
    var(--cut) 0%,
    100% 0%,
    100% calc(100% - var(--cut)),
    calc(100% - var(--cut)) 100%,
    0% 100%,
    0% var(--cut)
  );
  aspect-ratio: 3/4;
}
.artist-photo {
  width:100%; height:100%;
  object-fit:cover;
  transition: transform .8s var(--ease);
}
.artist-block:hover .artist-photo { transform:scale(1.03); }

.artist-visual-tag {
  display: flex;
  gap: var(--sp2);
  flex-wrap: wrap;
}
.artist-visual-tag span {
  font-family: var(--font-en);
  font-size: .65rem;
  font-weight: 600;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--text-sub);
  background: rgba(16,20,38,.06);
  padding: 4px 12px;
  border-radius: var(--r-full);
}

/* テキストエリア */
.artist-body {
  display: flex;
  flex-direction: column;
  gap: var(--sp4);
  padding-top: var(--sp3);
}

.artist-name-block {
  display: flex;
  flex-direction: column;
  gap: var(--sp1);
}

.artist-role {
  font-family: var(--font-en);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
}

.artist-name-ja {
  font-family: var(--font-mincho);
  font-size: clamp(1.75rem, 3vw, 2.75rem);
  font-weight: 600;
  color: var(--text-heading);
  line-height: 1.15;
  letter-spacing: .06em;
  text-shadow: none;
}

.artist-name-en {
  font-family: var(--font-en);
  font-size: 1rem;
  font-weight: 300;
  color: var(--text-sub);
  letter-spacing: .06em;
}

.artist-link-sub {
  font-family: var(--font-en);
  font-size: .8rem;
  color: var(--violet);
  letter-spacing: .04em;
  border-bottom: 1px solid transparent;
  transition: border-color var(--t-fast);
  width: fit-content;
}
.artist-link-sub:hover { border-color:var(--violet); }

.artist-bio {
  font-size: clamp(1rem, 1.8vw, 1.125rem); /* MESSAGE基準に合わせて統一 */
  font-family: var(--font-mincho);
  color: var(--text-heading);
  line-height: 2.2;
  letter-spacing: .04em;
  text-wrap: unset; /* <br class="pc-only-br"> の改行位置を有効にする */
}

.artist-credits {
  display: flex;
  flex-direction: column;
  gap: var(--sp2);
  padding: var(--sp4) var(--sp5);
  background: rgba(16,20,38,.04);
  border: 1px solid rgba(16,20,38,.10);
  /* 対角カット: 左上・右下を尖らせる */
  --cut: 14px;
  clip-path: polygon(
    var(--cut) 0%,
    100% 0%,
    100% calc(100% - var(--cut)),
    calc(100% - var(--cut)) 100%,
    0% 100%,
    0% var(--cut)
  );
}
.artist-credits li {
  font-size: .9375rem; /* .875→.9375rem */
  color: var(--text-main); /* sub→main */
  line-height: 1.75;
  display: flex;
  gap: var(--sp2);
  align-items: baseline;
}
.credit-label {
  font-family: var(--font-en);
  font-size: .7rem; /* .65→.7rem */
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--violet);
  flex-shrink: 0;
  min-width: 88px;
}

.artist-portfolio-btn {
  width: fit-content;
  height: 44px;
  min-width: 0;
  font-size: .875rem;
}


/* ============================
   S7: VENUE
=============================== */
/* VENUE: 会場への高揚感 — 温かみのあるクリームホワイト */
.section-venue { background: #FAF8FD; padding-block: clamp(24px, 4vw, 48px) clamp(56px, 8vw, 100px); }

/* ---- venue-why: なぜここで開催するのか ---- */
.venue-why {
  margin-bottom: clamp(60px, 8vw, 120px);
}

/* リード文エリア */
.venue-why-lead {
  text-align: center;
  max-width: 680px;
  margin: 0 auto clamp(48px, 6vw, 80px);
}
.venue-why-eyebrow {
  font-family: var(--font-en);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--sp3);
  display: block;
}
.venue-why-eyebrow::after {
  content: '';
  display: block;
  width: 40px;
  height: 1px;
  background: var(--grad-accent);
  margin: 10px auto 0;
}
/* スマホ専用改行 — PCでは非表示 */
br.sp-br { display: none; }

.venue-why-subnote {
  font-family: var(--font-mincho);
  font-size: clamp(.8rem, 1.2vw, .9rem);
  color: #999;
  letter-spacing: .1em;
  margin-top: .5rem;
  margin-bottom: 0;
}

.venue-why-heading {
  font-family: var(--font-mincho);
  font-size: clamp(1.6rem, 3.5vw, 2.1rem);
  font-weight: 600;
  color: var(--text-heading);
  line-height: 1.35;
  letter-spacing: .05em;
  margin-bottom: var(--sp5);
}
.venue-why-body {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.6vw, 1.125rem);
  color: var(--text-heading);
  line-height: 2.1;
  letter-spacing: .05em;
}
/* 1文を折り返さず1行で表示 */
.venue-why-body--nowrap {
  white-space: nowrap;
  text-wrap: unset;
  word-break: normal;
  overflow-wrap: normal;
}
.venue-why-body em {
  font-style: normal;
  background: var(--grad-accent);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 600;
}

/* 3枚フォトグリッド */
.venue-why-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 2.5vw, 28px);
}

.venue-why-card {
  /* 対角カット: 左上・右下を尖らせる — 3枚交互に方向を変化 */
  --cut: 22px;
  clip-path: polygon(
    var(--cut) 0%,
    100% 0%,
    100% calc(100% - var(--cut)),
    calc(100% - var(--cut)) 100%,
    0% 100%,
    0% var(--cut)
  );
  overflow: hidden;
  filter: drop-shadow(0 4px 32px rgba(16,20,38,.12));
  transition: transform var(--t-base) var(--ease),
              filter var(--t-base) var(--ease);
}
.venue-why-card:hover {
  transform: translateY(-6px);
  filter: drop-shadow(0 16px 56px rgba(16,20,38,.22));
}
/* 逆方向カード: 2枚目は右上・左下が尖る */
.venue-why-card:nth-child(2) {
  clip-path: polygon(
    0% 0%,
    calc(100% - var(--cut)) 0%,
    100% var(--cut),
    100% 100%,
    var(--cut) 100%,
    0% calc(100% - var(--cut))
  );
}

.venue-why-figure {
  position: relative;
  aspect-ratio: 3/4;
  overflow: hidden;
  margin: 0;
}
.venue-why-figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .9s var(--ease);
}
.venue-why-card:hover .venue-why-figure img {
  transform: scale(1.06);
}
.venue-why-fig-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    transparent 35%,
    rgba(10,12,26,.75) 100%
  );
  z-index: 1;
}
.venue-why-caption {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: clamp(16px, 3vw, 28px);
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.venue-why-cap-num {
  font-family: var(--font-en);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .3em;
  color: var(--accent);
}
.venue-why-cap-title {
  font-family: var(--font-mincho);
  font-size: clamp(.95rem, 1.6vw, 1.1rem);
  font-weight: 600;
  color: rgba(255,255,255,.95);
  line-height: 1.4;
  letter-spacing: .05em;
}
.venue-why-cap-desc {
  font-family: var(--font-mincho);
  font-size: clamp(.8rem, 1.3vw, .9rem); /* 大きく */
  color: rgba(255,255,255,.82); /* .65→.82 */
  line-height: 1.8;
  letter-spacing: .03em;
}

/* セクション内区切り線 */
.venue-section-divider {
  width: 60px;
  height: 1px;
  background: var(--grad-accent);
  margin: 0 auto clamp(60px, 8vw, 100px);
  opacity: .4;
}

/* レスポンシブ */
@media (max-width: 900px) {
  .venue-why-grid {
    grid-template-columns: 1fr;
    max-width: 480px;
    margin: 0 auto;
  }
  .venue-why-figure {
    aspect-ratio: 4/3;
  }
}
@media (min-width: 901px) and (max-width: 1100px) {
  .venue-why-figure {
    aspect-ratio: 2/3;
  }
}

/* =============================================
   venue-split-block
   PC : 左右2カラム交互（写真↔テキスト）
   スマホ : 写真→テキスト の縦並び（全ブロック共通）
============================================= */
.venue-split-block {
  display: flex;
  flex-direction: row;
  border-radius: var(--r-xl);
  overflow: hidden;
  margin-bottom: var(--sp6);
  box-shadow: var(--sh-lg);
  min-height: 420px;
}

/* 写真・テキストそれぞれ50%幅 */
.venue-split-block .venue-split-photo,
.venue-split-block .venue-split-body--dark,
.venue-split-block .venue-split-body--light {
  flex: 0 0 50%;
  width: 50%;
}

/* PC: --reverse ブロックはテキスト左・写真右（order で制御） */
.venue-split-block--reverse .venue-split-photo { order: 2; }
.venue-split-block--reverse .venue-split-body   { order: 1; }

/* 写真カラム（共通） */
.venue-split-photo {
  margin: 0;
  overflow: hidden;
  min-height: 300px;
}
.venue-split-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--t-slow) var(--ease);
}
.venue-split-block:hover .venue-split-photo img {
  transform: scale(1.03);
}

/* テキストカラム（ダーク背景） */
.venue-split-body--dark {
  background: linear-gradient(145deg, #101426 0%, #0B1020 100%);
  padding: clamp(var(--sp5), 5vw, var(--sp8));
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--sp3);
}

/* テキストカラム（ライト背景） */
.venue-split-body--light {
  background: linear-gradient(145deg, #F5F2FA 0%, #EEE9F5 100%);
  padding: clamp(var(--sp5), 5vw, var(--sp8));
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--sp3);
}

/* 説明テキスト（ダーク背景用） */
.venue-split-desc {
  font-family: var(--font-mincho);
  font-size: clamp(.9375rem, 1.4vw, 1.0625rem); /* 大きく */
  color: rgba(255,255,255,.82); /* .65→.82 */
  line-height: 2.0;
  letter-spacing: .04em;
}

/* 説明テキスト（ライト背景用） */
.venue-split-desc--dark {
  color: var(--text-main); /* sub→main */
}

/* シートブロック */
.venue-seat-block {
  margin-top: 1.5rem;
}
.venue-seat-block + .venue-seat-block {
  margin-top: 1.25rem;
}
.venue-seat-label {
  font-family: var(--font-mincho);
  font-size: clamp(.8125rem, 1.2vw, .9375rem);
  color: var(--accent);
  letter-spacing: .12em;
  margin-bottom: .4rem;
  font-weight: 500;
}
.venue-seat-block .venue-split-desc {
  margin-top: 0;
}

/* venue-title ライト背景版（クリーム背景ブロック用） */
.venue-split-body--light .venue-title--dark,
.venue-title--dark {
  color: var(--text-heading);
}

/* venue-eyebrow アクセント版 */
.venue-eyebrow--accent {
  color: var(--accent);
}

.venue-eyebrow {
  font-family: var(--font-en);
  font-size: .65rem;
  font-weight: 500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
}

.venue-title {
  font-family: var(--font-mincho);
  font-size: clamp(1.4rem, 2.5vw, 1.75rem);
  font-weight: 500;
  color: var(--text-inverse);
  line-height: 1.4;
  letter-spacing: .06em;
}

.venue-title--sm {
  font-size: clamp(1.1rem, 1.6vw, 1.4rem); /* 2行で収まるサイズに拡大 */
  white-space: normal;
  line-height: 1.5;
}
/* PCでは--smと同じ扱い、スマホで上書き */
.venue-title--xs {
  font-size: clamp(1.1rem, 1.6vw, 1.4rem);
  white-space: normal;
  line-height: 1.5;
}

/* アクセス */
.venue-access {
  background: var(--bg-pure);
  border-radius: var(--r-lg);
  border: 1px solid rgba(16,20,38,.06);
  padding: var(--sp6);
  box-shadow: var(--sh-sm);
  overflow: hidden;
}

.venue-access-title {
  font-family: var(--font-en);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-heading);
  margin-bottom: var(--sp5);
  padding-bottom: var(--sp3);
  border-bottom: 1px solid rgba(16,20,38,.07);
}

.access-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp5);
}

.access-item {
  display: flex;
  align-items: flex-start;
  gap: var(--sp3);
  padding-bottom: var(--sp5);
  border-bottom: 1px solid rgba(16,20,38,.06);
}
.access-item:last-child {
  padding-bottom: 0;
  border-bottom: none;
}
.access-icon { font-size:1.5rem; flex-shrink:0; margin-top:2px; }

/* テキスト列がflexbox内で正しく折り返すように設定 */
.access-detail {
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
}

.access-label {
  font-family: var(--font-en);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--text-sub);
  margin-bottom: var(--sp1);
}
.access-text {
  font-family: var(--font-mincho);
  font-size: 1rem;
  color: var(--text-heading);
  line-height: 2.0;
  letter-spacing: .04em;
  overflow-wrap: anywhere;
  word-break: normal;
}


/* ============================
   S8: EVENT INFO
=============================== */
/* =============================================
   TICKETS セクション — カード型グリッド
============================================= */
/* TICKETS: 決断の純白 — 清潔で力強い白 */
.section-tickets {
  background: #FAF8FD;
  padding-block: clamp(8px, 2vw, 20px) clamp(56px, 8vw, 100px);
}

/* カードグリッド: 2列 */
.ticket-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--sp5); /* 対角カット後の視覚的余白 */
  margin-top: var(--sp3); /* 上の素材との隙間を詰める */
}

/* 参加者全員特典バナー */
.ticket-all-benefit {
  position: relative;
  margin-bottom: var(--sp6);
  overflow: hidden;
  border-radius: 4px;
  /* 上下に極細のグラデーションライン */
  background: linear-gradient(180deg,
    rgba(230,90,168,.0) 0%,
    rgba(230,90,168,.04) 50%,
    rgba(108,77,255,.0) 100%
  );
}

/* 上下の装飾ライン */
.ticket-all-benefit::before,
.ticket-all-benefit::after {
  content: '';
  display: block;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(230,90,168,.5) 30%,
    rgba(108,77,255,.8) 50%,
    rgba(230,90,168,.5) 70%,
    transparent 100%
  );
}

.ticket-all-benefit-deco {
  display: none;
}

.ticket-all-benefit-content {
  padding: clamp(20px, 4vw, 36px) clamp(16px, 5vw, 48px);
  text-align: center;
}

.ticket-all-benefit-eyebrow {
  font-family: var(--font-en);
  font-size: clamp(.85rem, 1.6vw, 1rem);
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--pink);
  margin-bottom: var(--sp3);
  opacity: .9;
}

.ticket-all-benefit-main {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(10px, 2vw, 20px);
  margin-bottom: var(--sp3);
}

.ticket-all-benefit-star {
  font-size: clamp(.65rem, 1.2vw, .8rem);
  background: linear-gradient(135deg, var(--pink), var(--violet));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  opacity: .9;
}

.ticket-all-benefit-name {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 2.2vw, 1.25rem);
  font-weight: 500;
  letter-spacing: .12em;
  background: linear-gradient(90deg, var(--pink) 0%, var(--violet) 60%, var(--pink) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.ticket-all-benefit-desc {
  font-size: clamp(.78rem, 1.3vw, .875rem);
  color: var(--text-sub);
  line-height: 1.9;
  letter-spacing: .04em;
  max-width: 600px;
  margin-inline: auto;
}

/* カード共通 */
.ticket-card {
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(16,20,38,.1);
  /* 対角カット: 左上・右下を尖らせる — チケットの切り欠きイメージ */
  --cut: 20px;
  clip-path: polygon(
    var(--cut) 0%,
    100% 0%,
    100% calc(100% - var(--cut)),
    calc(100% - var(--cut)) 100%,
    0% 100%,
    0% var(--cut)
  );
  background: var(--bg-pure);
  filter: drop-shadow(0 4px 20px rgba(16,20,38,.10));
  transition: transform .4s var(--ease), filter .4s var(--ease);
}
.ticket-card:hover {
  transform: translateY(-6px);
  filter: drop-shadow(0 16px 48px rgba(16,20,38,.18));
}

/* PREMIUM VIP: 左辺アクセントライン（対角カットで左上が尖るため左辺が効果的） */
.ticket-card--premium { border-left: 3px solid #E65AA8; }
.ticket-card--vip     { border-left: 3px solid #C9A66B; }
.ticket-card--a       { border-left: 3px solid #6C4DFF; }
.ticket-card--b       { border-left: 3px solid #4EC7E8; }

/* カードヘッダー */
.ticket-card-header {
  padding: var(--sp5) var(--sp5) var(--sp4);
  border-bottom: 1px solid rgba(16,20,38,.06);
  background: var(--bg-base);
}

/* TIER ラベル */
.ticket-tier {
  font-family: var(--font-en);
  font-size: .62rem;
  font-weight: 600;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--sp2);
}
.ticket-card--premium .ticket-tier { color: #E65AA8; }
.ticket-card--vip     .ticket-tier { color: #C9A66B; }
.ticket-card--a       .ticket-tier { color: #6C4DFF; }
.ticket-card--b       .ticket-tier { color: #4EC7E8; }

/* チケット名 */
.ticket-name {
  font-family: var(--font-mincho);
  font-size: clamp(1.2rem, 2vw, 1.6rem);
  font-weight: 500;
  color: var(--text-heading);
  letter-spacing: .06em;
  line-height: 1.3;
  margin: 0 0 var(--sp2);
}

/* 価格 */
.ticket-price {
  font-family: var(--font-en);
  font-size: clamp(1.3rem, 2.2vw, 1.8rem);
  font-weight: 700;
  color: var(--text-heading);
  letter-spacing: .02em;
  margin: 0;
}
.ticket-tax {
  font-family: var(--font-mincho);
  font-size: .78rem;
  font-weight: 400;
  color: var(--text-sub);
  margin-left: .3em;
}

/* 席数表示 */
.ticket-seats {
  font-family: var(--font-en);
  font-size: .72rem;
  color: var(--text-muted);
  letter-spacing: .1em;
  margin: var(--sp1) 0 0;
}

/* A席・B席の座席種別ラベル */
.ticket-seat-label {
  font-size: .8em;
  font-weight: 400;
  color: var(--text-muted);
  letter-spacing: .04em;
}

/* カードボディ（特典） */
.ticket-card-body {
  flex: 1;
  padding: var(--sp4) var(--sp5);
}
.ticket-perks-label {
  font-family: var(--font-en);
  font-size: .6rem;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin: 0 0 var(--sp2);
}

/* 特典リスト */
.ticket-perks {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ticket-perks li {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.7vw, 1.05rem);
  color: var(--text-main);
  letter-spacing: .04em;
  line-height: 1.85;
  padding-left: 1.4em;
  position: relative;
}
.ticket-perks li::before {
  content: '✦';
  position: absolute;
  left: 0;
  font-size: .5rem;
  top: .35em;
  color: var(--accent);
}
.ticket-card--premium .ticket-perks li::before { color: #E65AA8; }
.ticket-card--vip     .ticket-perks li::before { color: #C9A66B; }
.ticket-card--a       .ticket-perks li::before { color: #6C4DFF; }
.ticket-card--b       .ticket-perks li::before { color: #4EC7E8; }

/* ── 追加特典ブロック（カード内） ── */
.ticket-bonus-block {
  margin-top: 18px;
  border: 1.5px solid rgba(230,90,168,.3);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(230,90,168,.07) 0%, rgba(156,90,230,.07) 100%);
  padding: 14px 14px 12px;
  position: relative;
}
/* キラキラ流れるシマーアニメーション */
@keyframes bonusShimmer {
  0%   { transform: translateX(-120%) skewX(-20deg); }
  100% { transform: translateX(220%)  skewX(-20deg); }
}
.ticket-bonus-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-ja);
  font-size: .95rem;
  font-weight: 800;
  letter-spacing: .1em;
  color: #fff;
  background: linear-gradient(90deg, #E65AA8 0%, #9C5AE6 100%);
  border-radius: 999px;
  padding: 5px 14px 5px 10px;
  margin: 0 0 10px;
  box-shadow: 0 2px 14px rgba(230,90,168,.5);
  line-height: 1.4;
  position: relative;
  overflow: hidden;
}
/* キラン光沢 */
.ticket-bonus-label::after {
  content: '';
  position: absolute;
  top: 0; bottom: 0;
  width: 40%;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255,255,255,.55) 50%,
    transparent 100%
  );
  animation: bonusShimmer 2.6s ease-in-out infinite;
}
.ticket-bonus-label::before {
  content: '✦';
  font-size: .75rem;
  line-height: 1;
  opacity: .95;
  position: relative;
  z-index: 1;
}
/* テキストをシマーより前面に */
.ticket-bonus-label > * ,
.ticket-bonus-label {
  position: relative;
  z-index: 1;
}
.ticket-bonus-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ticket-bonus-list li {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.7vw, 1.05rem);
  color: var(--text-main);
  letter-spacing: .04em;
  line-height: 1.85;
  padding-left: 1.4em;
  position: relative;
}
.ticket-bonus-list li::before {
  content: '✦';
  position: absolute;
  left: 0;
  font-size: .45rem;
  top: .38em;
  color: #E65AA8;
}
/* カード別テーマカラー上書き */
.ticket-card--vip .ticket-bonus-block {
  border-color: rgba(201,166,107,.4);
  background: linear-gradient(135deg, rgba(201,166,107,.08) 0%, rgba(230,90,168,.06) 100%);
}
.ticket-card--vip .ticket-bonus-label {
  background: linear-gradient(90deg, #C9A66B 0%, #e0c080 100%);
  box-shadow: 0 2px 10px rgba(201,166,107,.45);
}
.ticket-card--vip .ticket-bonus-list li::before { color: #C9A66B; }

.ticket-card--a .ticket-bonus-block {
  border-color: rgba(108,77,255,.35);
  background: linear-gradient(135deg, rgba(108,77,255,.07) 0%, rgba(230,90,168,.05) 100%);
}
.ticket-card--a .ticket-bonus-label {
  background: linear-gradient(90deg, #6C4DFF 0%, #9C5AE6 100%);
  box-shadow: 0 2px 10px rgba(108,77,255,.4);
}
.ticket-card--a .ticket-bonus-list li::before { color: #6C4DFF; }

.ticket-card--b .ticket-bonus-block {
  border-color: rgba(78,199,232,.38);
  background: linear-gradient(135deg, rgba(78,199,232,.08) 0%, rgba(108,77,255,.05) 100%);
}
.ticket-card--b .ticket-bonus-label {
  background: linear-gradient(90deg, #1a8aaa 0%, #4EC7E8 100%);
  box-shadow: 0 2px 10px rgba(78,199,232,.4);
}
.ticket-card--b .ticket-bonus-list li::before { color: #4EC7E8; }

/* ── 座席配置図サムネイル（カードヘッダー内） ── */
.ticket-seatmap-thumb {
  margin-top: var(--sp3);
  position: relative;
  cursor: pointer;
  border-radius: 6px;
  overflow: hidden;
  display: block;
  max-width: 100%;
  border: 1px solid rgba(16,20,38,.08);
  transition: box-shadow .3s var(--ease), transform .3s var(--ease);
}
.ticket-seatmap-thumb:hover,
.ticket-seatmap-thumb:focus-visible {
  box-shadow: 0 6px 24px rgba(16,20,38,.18);
  transform: translateY(-2px);
  outline: none;
}
.ticket-seatmap-thumb img {
  display: block;
  width: 100%;
  height: auto;
  pointer-events: none;
}
.ticket-seatmap-zoom {
  position: absolute;
  bottom: 8px;
  right: 8px;
  display: flex;
  align-items: center;
  gap: 4px;
  background: rgba(16,20,38,.72);
  color: #fff;
  font-family: var(--font-en);
  font-size: .65rem;
  font-weight: 600;
  letter-spacing: .12em;
  padding: 4px 8px;
  border-radius: 20px;
  pointer-events: none;
  backdrop-filter: blur(4px);
}

/* ── 座席配置図 拡大モーダル ── */
.tckt-seatmap-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9000;
  align-items: center;
  justify-content: center;
}
.tckt-seatmap-modal.is-open {
  display: flex;
}
.tckt-seatmap-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(8,10,20,.82);
  backdrop-filter: blur(6px);
  cursor: pointer;
}
.tckt-seatmap-inner {
  position: relative;
  z-index: 1;
  background: var(--bg-pure);
  border-radius: 12px;
  width: min(860px, 92vw);
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 24px 80px rgba(8,10,20,.5);
}
.tckt-seatmap-close {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(16,20,38,.08);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  color: var(--text-heading);
  transition: background .2s;
}
.tckt-seatmap-close:hover { background: rgba(16,20,38,.18); }
.tckt-seatmap-label {
  font-family: var(--font-en);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--text-muted);
  padding: 20px 24px 0;
  margin: 0;
}
.tckt-seatmap-scroll {
  flex: 1;
  overflow: auto;
  padding: 16px 24px;
  -webkit-overflow-scrolling: touch;
}
.tckt-seatmap-img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 6px;
}
.tckt-seatmap-hint {
  font-family: var(--font-mincho);
  font-size: .75rem;
  color: var(--text-muted);
  text-align: center;
  padding: 8px 24px 16px;
  margin: 0;
}

/* カードフッター */
.ticket-card-footer {
  padding: var(--sp4) var(--sp5) var(--sp5);
  border-top: 1px solid rgba(16,20,38,.05);
}

/* 申し込みボタン */
.ticket-btn {
  display: block;
  width: 100%;
  padding: 14px var(--sp4);
  border: 1.5px solid rgba(16,20,38,.15);
  border-radius: var(--r-full);
  background: var(--bg-pure);
  color: var(--text-heading);
  font-family: var(--font-mincho);
  font-size: 1rem;
  font-weight: 500;
  letter-spacing: .08em;
  text-align: center;
  text-decoration: none;
  transition: background var(--t-base) var(--ease),
              border-color var(--t-base) var(--ease),
              color var(--t-base) var(--ease),
              box-shadow var(--t-base) var(--ease);
}
/* SOLD OUT ラベル */
.ticket-sold-out-label {
  text-align: center;
  font-family: var(--font-en);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .2em;
  color: #aaa;
  margin: 0 0 8px;
}

/* SOLD OUT ボタン */
.ticket-btn--sold-out {
  background: #e8e8e8;
  border-color: #ddd;
  color: #aaa;
  cursor: not-allowed;
  pointer-events: none;
}
.ticket-btn--sold-out:hover {
  background: #e8e8e8;
  box-shadow: none;
}

.ticket-btn:hover {
  background: linear-gradient(135deg, #E65AA8, #6C4DFF);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 6px 24px rgba(108,77,255,.28);
}

/* ── 残席表示（チケットカード内） ───────────────────── */
.ticket-remaining {
  display: flex;
  align-items: center;
  gap: .45em;
  margin-bottom: var(--sp3);
  font-family: var(--font-mincho);
  font-size: .82rem;
  letter-spacing: .05em;
}
.ticket-remaining-icon {
  font-size: .55rem;
  color: #4CAF50;
  line-height: 1;
}
.ticket-remaining-text {
  color: var(--text-muted);
}
.ticket-remaining-num {
  font-weight: 700;
  color: var(--text-heading);
}
/* 残席わずか（3席以下）*/
.ticket-remaining.is-low .ticket-remaining-icon { color: #E65AA8; }
.ticket-remaining.is-low .ticket-remaining-num  { color: #E65AA8; }
/* 残席なし */
.ticket-remaining.is-sold-out .ticket-remaining-icon { color: #aaa; }
.ticket-remaining.is-sold-out .ticket-remaining-num  { color: #aaa; }

/* ── 残席表示（チケット詳細ページCTA内） ───────────── */
.purchase-remaining {
  display: inline-flex;
  align-items: center;
  gap: .5em;
  margin: var(--sp2) 0 var(--sp4);
  padding: .45em 1.1em;
  border-radius: var(--r-full);
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.18);
  font-family: var(--font-mincho);
  font-size: .9rem;
  letter-spacing: .06em;
  color: rgba(255,255,255,.8);
}
.purchase-remaining-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #4CAF50;
  flex-shrink: 0;
}
.purchase-remaining-num {
  font-weight: 700;
  color: #fff;
}
/* 残席わずか（3席以下）*/
.purchase-remaining.is-low .purchase-remaining-dot { background: #E65AA8; }
.purchase-remaining.is-low .purchase-remaining-num  { color: #E65AA8; }
/* 残席なし */
.purchase-remaining.is-sold-out .purchase-remaining-dot { background: #aaa; }
.purchase-remaining.is-sold-out .purchase-remaining-num  { color: rgba(255,255,255,.45); }

/* 注記 */
.ticket-note {
  font-family: var(--font-mincho);
  font-size: .8rem;
  color: var(--text-muted);
  letter-spacing: .06em;
  text-align: left;
  margin-top: var(--sp4);
}

/* カード内注記（詳細はお申込みページをご覧ください） */
.ticket-note-detail {
  font-family: var(--font-mincho);
  font-size: .8125rem;
  color: var(--text-muted);
  letter-spacing: .04em;
  margin-top: var(--sp3);
  line-height: 1.6;
  text-align: left;
}

/* --- レスポンシブはファイル末尾の統合 @media (max-width: 767px) ブロックに集約 --- */

/* =============================================
   ARTIST COMMENT — アーティストコメント
============================================= */
.artist-comment {
  margin: var(--sp5) 0 0;
}

.artist-comment-label {
  font-family: var(--font-en);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--sp2);
  display: flex;
  align-items: center;
  gap: var(--sp2);
}

.artist-comment-label::before {
  content: '';
  display: inline-block;
  width: 3px;
  height: 16px;
  background: linear-gradient(180deg, var(--pink), var(--violet));
  border-radius: 2px;
}

.artist-comment .artist-quote {
  margin-top: 0;
  padding: var(--sp4) var(--sp5);
  border-left: 4px solid var(--accent);
  background: linear-gradient(135deg, rgba(230,90,168,.06), rgba(108,77,255,.06));
  box-shadow: 0 4px 16px rgba(230,90,168,.08);
}

.artist-comment .artist-quote::before {
  font-size: 5rem;
  opacity: .15;
  top: -.1em;
}

/* ---- 音源サンプルプレイヤー ---- */
.sound-sample-wrap {
  margin-top: var(--sp5);
  padding: var(--sp4) var(--sp5);
  background: linear-gradient(135deg, rgba(108,77,255,.07), rgba(230,90,168,.07));
  border: 1px solid rgba(108,77,255,.2);
  border-radius: var(--r-md);
}

.sound-sample-label {
  font-family: var(--font-en);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--sp2);
  display: flex;
  align-items: center;
  gap: 6px;
}

.sound-sample-icon {
  font-size: 1rem;
  line-height: 1;
}

.sound-sample-note {
  font-size: .68rem;
  font-weight: 400;
  letter-spacing: .05em;
  color: var(--text-sub);
  text-transform: none;
}

.sound-sample-title {
  font-family: var(--font-mincho);
  font-size: clamp(.9rem, 1.6vw, 1.05rem);
  font-weight: 500;
  color: var(--text-main);
  margin-bottom: var(--sp3);
  letter-spacing: .08em;
}

.sound-sample-player {
  width: 100%;
  height: 40px;
  border-radius: 20px;
  outline: none;
  accent-color: var(--pink);
}

.artist-comment .artist-quote-text {
  font-size: clamp(1rem, 1.8vw, 1.1875rem);
  line-height: 2.2;
  margin: 0 0 var(--sp3);
}

.artist-comment .artist-quote-cite {
  font-size: .9375rem;
  font-weight: 500;
}

.artist-quote {
  margin: var(--sp4) 0 0;
  padding: var(--sp4) var(--sp5);
  border-left: 3px solid var(--accent);
  background: linear-gradient(135deg, rgba(230,90,168,.04), rgba(108,77,255,.04));
  /* 右上のみを尖らせ、左はフラット（左辺ラインを活かす） */
  --cut: 14px;
  clip-path: polygon(
    0% 0%,
    calc(100% - var(--cut)) 0%,
    100% var(--cut),
    100% 100%,
    0% 100%
  );
  position: relative;
}
.artist-quote::before {
  content: '\201C';
  font-family: Georgia, serif;
  font-size: 4rem;
  line-height: 1;
  color: var(--accent);
  opacity: .2;
  position: absolute;
  top: -.2em;
  left: var(--sp3);
}
.artist-quote-text {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.6vw, 1.125rem); /* 大きく */
  color: var(--text-heading);
  line-height: 2.1;
  letter-spacing: .06em;
  margin: 0 0 var(--sp2);
  position: relative;
  z-index: 1;
}
.artist-quote-cite {
  font-family: var(--font-mincho); /* en→mincho */
  font-size: .875rem; /* .75→.875rem */
  letter-spacing: .1em;
  color: var(--text-sub);
  font-style: normal;
}

/* =============================================
   ARTIST SOUND SAMPLE — Vimeo埋め込み
============================================= */
.artist-sound-sample {
  margin-top: var(--sp5);
  padding-top: var(--sp5);
  border-top: 1px solid rgba(16,20,38,.07);
}

.artist-sound-label {
  font-family: var(--font-en);
  font-size: .62rem;
  font-weight: 600;
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--sp3);
}

/* 音声プレーヤー */
.artist-audio-wrap {
  width: 100%;
  margin-top: var(--sp2);
}
.artist-audio-player {
  width: 100%;
  height: 48px;
  border-radius: var(--r-md);
  outline: none;
  accent-color: var(--accent);
}

/* INFO: 静かな安心感 — 微ラベンダーホワイト */
.section-info { background: #FAF8FD; padding-block: clamp(24px, 4vw, 48px) clamp(56px, 8vw, 100px); }

.info-wrap {
  background: var(--bg-pure);
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--sh-sm);
  border: 1px solid rgba(16,20,38,.06);
}

.info-dl { display:flex; flex-direction:column; }

.info-row {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: var(--sp4);
  padding: var(--sp4) var(--sp6);
  border-bottom: 1px solid rgba(16,20,38,.05);
  align-items: start;
}
.info-row:last-child { border-bottom:none; }

.info-row dt {
  font-family: var(--font-en);
  font-size: .72rem; /* .68→.72rem */
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--accent);
  padding-top: 5px;
}

.info-row dd {
  font-size: 1.0625rem; /* 1→1.0625rem */
  font-family: var(--font-mincho);
  color: var(--text-heading); /* main→heading */
  line-height: 2.0;
  letter-spacing: .04em;
}
.info-row dd strong { font-weight:700; color:var(--text-heading); }

/* イベント名：PCでは1行に収める */
.info-event-name {
  white-space: nowrap;
  font-weight: 700;
  color: var(--text-heading);
}

.info-note {
  font-size: .875rem; /* .85→.875rem */
  color: var(--text-main); /* sub→main */
}

.info-notes-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: var(--sp1);
}
.info-notes-list li {
  font-family: var(--font-mincho);
  font-size: 1rem;
  color: var(--text-main);
  display: block;
  padding-left: 1.4em;
  position: relative;
  line-height: 2.0;
  letter-spacing: .04em;
  word-break: normal;
  overflow-wrap: normal;
}
.info-notes-list li::before {
  content: '·';
  color: var(--accent);
  font-size: 1.4em;
  line-height: .9;
  position: absolute;
  left: 0;
  top: 0.1em;
}

/* 情報テーブル下CTA */
.info-cta {
  text-align: center;
  padding: var(--sp6);
  background: transparent;
  border-top: none;
}

/* --- 主催・問い合わせ先（フッター直前独立セクション） --- */
/* ===============================
   GOODS SECTION
=============================== */
/* GOODS: ときめき・喜び — ペールローズラベンダー */
.section-goods {
  background: linear-gradient(180deg, #FFF5FA 0%, #F8F0FF 50%, #FFF0F8 100%);
  padding-block: var(--section-pad);
  padding-top: 0;        /* 上余白を削って詰める */
  position: relative;
  overflow: visible;     /* .sectionのoverflow:hiddenを上書きして見出しのはみ出しを許可 */
}

/* GOODS見出し画像（SPECIAL GOODS） */
.goods-heading-img-wrap {
  display: flex;
  justify-content: center;
  margin-top: -80px;     /* section-break直後から上へ引き上げ */
  margin-bottom: 0;
  position: relative;
  z-index: 100;          /* section(.z-index:5)やsection-break素材より必ず前面 */
  background: #FFF5FA;   /* GOODSセクション上端と同じ背景色で背景抜けを防ぐ */
  padding-top: 20px;
}
.goods-heading-img {
  max-width: min(680px, 88vw);  /* 他セクションに合わせる */
  width: 88%;
  height: auto;
  display: block;
  margin-bottom: -20px;  /* 見出し画像下の余白を詰める */
}

.goods-eyebrow {
  font-family: var(--font-en);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--sp2);
}

.goods-heading-en {
  font-family: var(--font-en);
  font-size: clamp(2.4rem, 7vw, 5rem);
  font-weight: 700;
  letter-spacing: .04em;
  background: linear-gradient(135deg, var(--accent-2) 0%, #8B5CF6 60%, var(--accent) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  line-height: 1;
  margin-bottom: var(--sp2);
}

.goods-heading-ja {
  font-family: var(--font-mincho);
  font-size: clamp(.95rem, 1.8vw, 1.1rem);  /* 他セクションに統一 */
  color: var(--text-sub);
  letter-spacing: .25em;                     /* 他セクションに統一 */
  margin-bottom: var(--sp3);
}

.goods-lead {
  font-family: var(--font-mincho);
  font-size: clamp(.88rem, 1.4vw, 1rem);
  color: var(--text-sub);
  line-height: 2;
  letter-spacing: .04em;
  margin-top: var(--sp3);
}

/* グッズ折りたたみ */
.goods-details {
  margin-top: var(--sp6);
  border: 2px solid rgba(201, 166, 107, 0.2);
  border-radius: var(--r-xl);
  background: rgba(255, 255, 255, 0.5);
  overflow: hidden;
}

.goods-details-summary {
  padding: var(--sp4) var(--sp5);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp3);
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 2vw, 1.125rem);
  font-weight: 600;
  color: var(--text-heading);
  letter-spacing: 0.08em;
  transition: background var(--t-base);
  user-select: none;
  list-style: none;
}

.goods-details-summary::-webkit-details-marker {
  display: none;
}

.goods-details-summary:hover {
  background: rgba(201, 166, 107, 0.08);
}

.goods-details-icon {
  font-size: 0.75rem;
  transition: transform var(--t-base);
}

.goods-details[open] .goods-details-icon {
  transform: rotate(180deg);
}

.goods-details-content {
  padding: var(--sp5);
  border-top: 1px solid rgba(201, 166, 107, 0.15);
}

/* グッズカードグリッド */
.goods-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp4);
  margin-top: var(--sp7);
  margin-bottom: var(--sp6);
}

.goods-card {
  border-radius: var(--r-lg);
  border: 1px solid rgba(201,166,107,.2);
  background: rgba(255,255,255,.72);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 2px 16px rgba(16,20,38,.06);
  overflow: hidden;
  transition: transform var(--t-base) var(--ease),
              box-shadow var(--t-base) var(--ease);
}

.goods-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 48px rgba(16,20,38,.12),
              0 0 40px rgba(230,90,168,.1);
}

.goods-card-img-wrap {
  aspect-ratio: 1;
  overflow: hidden;
  background: linear-gradient(135deg, #1a0d2e 0%, #2d1050 50%, #1a1040 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.goods-card-img-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .5s var(--ease);
}
.goods-card:hover .goods-card-img-wrap img {
  transform: scale(1.05);
}

/* プレースホルダーアート — カード別カラー */
.goods-placeholder-art {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg,
    rgba(230,90,168,.15) 0%,
    rgba(139,92,246,.2) 50%,
    rgba(201,166,107,.1) 100%);
}
/* Tシャツ: ピンク系 */
.goods-placeholder-art--tshirt {
  background: linear-gradient(135deg,
    rgba(230,90,168,.22) 0%,
    rgba(180,60,140,.18) 60%,
    rgba(108,77,255,.12) 100%);
}
/* ステンレスボトル: シアン〜バイオレット */
.goods-placeholder-art--bottle {
  background: linear-gradient(135deg,
    rgba(78,199,232,.18) 0%,
    rgba(108,77,255,.22) 60%,
    rgba(201,166,107,.10) 100%);
}
/* ビジュアルブック: ゴールド〜アンバー */
.goods-placeholder-art--book {
  background: linear-gradient(135deg,
    rgba(201,166,107,.22) 0%,
    rgba(160,120,70,.18) 60%,
    rgba(230,90,168,.10) 100%);
}
/* デジタルコンテンツ: バイオレット〜シアン */
.goods-placeholder-art--digital {
  background: linear-gradient(135deg,
    rgba(108,77,255,.22) 0%,
    rgba(78,199,232,.18) 60%,
    rgba(230,90,168,.10) 100%);
}

.goods-placeholder-icon {
  font-size: clamp(2rem, 5vw, 3.5rem);
  opacity: .5;
  background: linear-gradient(135deg, var(--accent-2), #8B5CF6, var(--accent));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.goods-card-body {
  padding: var(--sp4) var(--sp4) var(--sp5);
  display: flex;
  flex-direction: column;
  gap: var(--sp2);
}

.goods-category {
  font-family: var(--font-en);
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
}

.goods-name {
  font-family: var(--font-mincho);
  font-size: clamp(.9rem, 1.5vw, 1rem);
  font-weight: 500;
  color: var(--text-heading);
  letter-spacing: .04em;
  line-height: 1.5;
  margin: 0;
}

.goods-coming-label {
  font-family: var(--font-en);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .16em;
  color: var(--text-muted);
  border: 1px solid rgba(16,20,38,.15);
  border-radius: var(--r-full);
  padding: 3px 12px;
  display: inline-block;
  margin-top: var(--sp1);
}

.goods-card--coming .goods-card-img-wrap {
  opacity: .85;
}

/* グッズ SNS メモ */
.goods-sns-note {
  text-align: center;
  margin-top: var(--sp5);
  font-family: var(--font-mincho);
  font-size: .95rem;
  color: var(--text-sub);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp3);
}

.goods-sns-link {
  color: var(--accent-2);
  text-decoration: underline;
  text-underline-offset: 3px;
}

.goods-follow-btn {
  min-width: 200px;
}

/* ===============================
   VENUE MAP (チケットセクション内)
=============================== */
.venue-map-section {
  margin-top: 0;
  margin-bottom: var(--sp4);
  padding-bottom: var(--sp4);
  border-bottom: none;
}

.venue-map-header {
  text-align: center;
  margin-bottom: var(--sp6);
}

.venue-map-eyebrow {
  font-family: var(--font-en);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--sp2);
}

.venue-map-title {
  font-family: var(--font-mincho);
  font-size: clamp(1.3rem, 3vw, 1.8rem);
  font-weight: 500;
  color: var(--text-heading);
  letter-spacing: .06em;
  margin-bottom: var(--sp2);
}

.venue-map-desc {
  font-family: var(--font-mincho);
  font-size: clamp(.85rem, 1.3vw, .95rem);
  color: var(--text-sub);
  letter-spacing: .04em;
  line-height: 1.8;
}

/* スマホでコンパクト表示 */
.venue-map-desc--compact {
  font-size: clamp(.75rem, 2vw, .85rem);
}

/* 座席イメージ写真 */
.venue-seat-images {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--sp4);
  margin: var(--sp5) auto;
  max-width: 960px;
}

.venue-seat-image {
  margin: 0;
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--sh-md);
  transition: transform var(--t-base), box-shadow var(--t-base);
}

.venue-seat-image:hover {
  transform: translateY(-4px);
  box-shadow: var(--sh-lg);
}

.venue-seat-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  aspect-ratio: 4 / 3;
}

/* 座席写真2枚目（カップル）— トリミング位置固定 */
.venue-seat-img--couple {
  object-position: center 30%;
}

/* スマホで縦並び */
@media (max-width: 767px) {
  .venue-seat-images {
    grid-template-columns: 1fr;
    gap: var(--sp3);
    margin-bottom: var(--sp5); /* 画像下スペース = カード上スペースと統一 */
  }
  
  .venue-seat-image img {
    aspect-ratio: 16 / 10;
  }
}

.venue-map-wrap {
  max-width: 960px;
  margin: 0 auto;
  background: #FAF8FD;
  border-radius: var(--r-xl);
  box-shadow: var(--sh-lg);
  padding: var(--sp4); /* PCは余白を少し縮小 */
}

.venue-map-img {
  width: 100%;
  border-radius: var(--r-md);
  display: block;
}



/* ---- 座席図ズームボタン ---- */
.venue-map-wrap {
  position: relative;
}
.seat-map-zoom-btn {
  display: none; /* PCは非表示 */
}

@media (max-width: 767px) {
  /* スマホ: venue-map-section の余白を縮小 */
  .venue-map-section {
    padding-bottom: 0;      /* 画像下のpadding-bottomを除去 */
    margin-bottom: 0;       /* 画像下のmargin-bottomを除去（ticket-gridのmargin-topで制御） */
  }

  /* スマホ: 全幅表示・横スクロールなし */
  .venue-map-wrap {
    overflow: visible;
    padding: var(--sp2) var(--sp2) var(--sp3);
    border-radius: var(--r-md);
    cursor: default;
  }
  .venue-map-img {
    min-width: unset; /* 最小幅制限を解除 */
    width: 100%;      /* 画面幅いっぱいに表示 */
    border-radius: var(--r-sm);
  }
  /* 拡大ボタン表示 */
  .seat-map-zoom-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: var(--sp3) auto 0;
    padding: 10px 20px;
    background: var(--grad-accent-cta);
    color: #fff;
    border: none;
    border-radius: var(--r-full);
    font-family: var(--font-mincho);
    font-size: .875rem;
    font-weight: 600;
    letter-spacing: .06em;
    cursor: pointer;
    box-shadow: 0 4px 20px rgba(230,90,168,.35);
    transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast);
  }
  .seat-map-zoom-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 28px rgba(230,90,168,.50);
  }
}

/* ---- 座席図モーダル ---- */
.seat-map-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9000;
  align-items: center;
  justify-content: center;
}
.seat-map-modal.is-open {
  display: flex;
}
.seat-map-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(8, 10, 20, .88);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.seat-map-modal-inner {
  position: relative;
  z-index: 1;
  width: 96vw;
  max-width: 960px;
  max-height: 90vh;
  background: #FAF8FD;
  border-radius: var(--r-lg);
  box-shadow: var(--sh-xl);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.seat-map-modal-close {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  width: 40px;
  height: 40px;
  background: rgba(16,20,38,.08);
  border: none;
  border-radius: 50%;
  display: grid;
  place-items: center;
  cursor: pointer;
  color: var(--text-heading);
  transition: background var(--t-fast);
}
.seat-map-modal-close:hover {
  background: rgba(16,20,38,.18);
}
.seat-map-modal-scroll {
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  padding: var(--sp5) var(--sp4) var(--sp3);
  touch-action: pan-x pan-y pinch-zoom;
}
.seat-map-modal-img {
  width: 100%;
  min-width: 480px;
  display: block;
  border-radius: var(--r-sm);
}
.seat-map-modal-hint {
  text-align: center;
  font-family: var(--font-mincho);
  font-size: .8rem;
  color: var(--text-muted);
  padding: var(--sp2) var(--sp4) var(--sp3);
  letter-spacing: .06em;
}

/* ===============================
   RESPONSIVE: GOODS
=============================== */
@media (max-width: 1024px) {
  .goods-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 767px) {
  /* グッズ横スクロール：1アイテム=1画面 */
  .goods-grid {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: visible;
    gap: 0;
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
    padding-bottom: 0;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x mandatory;
    /* スクロールバーを表示してヒントにする */
    scrollbar-width: thin;
    scrollbar-color: rgba(230,90,168,.6) rgba(255,255,255,.1);
  }
  .goods-grid::-webkit-scrollbar {
    display: block;
    height: 4px;
  }
  .goods-grid::-webkit-scrollbar-track {
    background: rgba(255,255,255,.1);
    border-radius: 2px;
  }
  .goods-grid::-webkit-scrollbar-thumb {
    background: rgba(230,90,168,.6);
    border-radius: 2px;
  }
  .goods-card {
    flex: 0 0 100%;
    width: 100%;
    max-width: none;
    min-width: 0;
    scroll-snap-align: start;
    scroll-snap-stop: always;
    border-radius: 0;
    border-left: none;
    border-right: none;
  }
  /* カード間の区切り線 */
  .goods-card + .goods-card {
    border-left: 1px solid rgba(201,166,107,.15);
  }
  /* 画像エリアを高さ固定で大きく */
  .goods-card .goods-card-img-wrap {
    aspect-ratio: auto;
    height: 52vw;
    max-height: 260px;
  }
  /* スクロールドット（件数インジケーター） */
  .goods-scroll-indicator {
    display: flex !important;
  }
}

/* ===============================
   GOODS SLIDER WRAP & ARROWS
=============================== */
.goods-slider-wrap {
  position: relative; /* 矢印の基準 */
}

/* 矢印：PCでは非表示、スマホで表示 */
.goods-arrow {
  display: none;
}

@media (max-width: 767px) {
  .goods-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 38%; /* 画像エリアの中央付近 */
    transform: translateY(-50%);
    z-index: 10;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: none;
    background: rgba(20, 10, 40, 0.55);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    color: #fff;
    font-size: 26px;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 2px 12px rgba(0,0,0,.3);
    transition: background .2s, opacity .2s, transform .2s;
    padding: 0 0 2px 0;
    -webkit-tap-highlight-color: transparent;
  }
  .goods-arrow--prev {
    left: 10px;
  }
  .goods-arrow--next {
    right: 10px;
  }
  /* 端のページでは薄く */
  .goods-arrow.is-hidden {
    opacity: 0;
    pointer-events: none;
  }
  .goods-arrow:active {
    background: rgba(230,90,168,.5);
    transform: translateY(-50%) scale(0.93);
  }
}

/* ===============================
   GOODS SCROLL INDICATOR（ドット）
=============================== */
.goods-scroll-indicator {
  display: none; /* PCでは非表示 */
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin-top: 14px;
  margin-bottom: 4px;
}
.goods-dot {
  display: block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,.25);
  transition: background .25s, width .25s;
}
.goods-dot--active {
  background: rgba(230,90,168,.85);
  width: 22px;
  border-radius: 4px;
}

.section-organizer {
  background: var(--bg-base);
  padding-block: clamp(48px, 6vw, 80px);
  border-top: 1px solid rgba(16,20,38,.06);
}

.info-organizer {
  margin-top: var(--sp5);
}

.info-organizer-heading {
  font-family: var(--font-mincho);
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--text-sub);
  text-align: center;
  margin-bottom: var(--sp4);
}

.info-organizer-body {
  border: 1px solid rgba(16,20,38,.1);
  border-radius: var(--r-lg);
  padding: var(--sp6) var(--sp7);
  background: var(--bg-pure);
  box-shadow: var(--sh-sm);
  display: flex;
  flex-direction: column;
  gap: var(--sp3);
}

.info-organizer-name {
  font-family: var(--font-mincho);
  font-size: 1rem;
  font-weight: 500;
  color: var(--text-heading);
  letter-spacing: .04em;
  line-height: 1.6;
  margin: 0;
}

.info-organizer-notice {
  font-size: .85rem;
  color: #444;
  line-height: 1.8;
  margin: .75em 0 0;
  padding: .75em 1em;
  border-left: 2px solid #bbb;
}

.info-organizer-addr {
  font-family: var(--font-mincho);
  font-size: .875rem;
  color: var(--text-sub);
  letter-spacing: .04em;
  margin: 0;
  padding-bottom: var(--sp2);
  border-bottom: 1px solid rgba(16,20,38,.06);
}

.info-organizer-contact-label {
  font-family: var(--font-mincho);
  font-size: .875rem;
  font-weight: 500;
  color: var(--text-heading);
  letter-spacing: .06em;
  margin: 0;
}

.info-organizer-contact-desc {
  font-family: var(--font-mincho);
  font-size: .875rem;
  color: var(--text-sub);
  letter-spacing: .04em;
  line-height: 1.7;
  margin: 0;
}

.info-organizer-btn {
  display: block;
  width: 100%;
  margin-top: var(--sp2);
  padding: var(--sp4) var(--sp5);
  border: 1.5px solid rgba(16,20,38,.15);
  border-radius: var(--r-full);
  background: var(--bg-pure);
  color: var(--text-sub);
  font-family: var(--font-mincho);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .06em;
  text-align: center;
  text-decoration: none;
  transition: background var(--t-base) var(--ease),
              border-color var(--t-base) var(--ease),
              color var(--t-base) var(--ease),
              box-shadow var(--t-base) var(--ease);
}
.info-organizer-btn:hover {
  background: var(--bg-warm);
  border-color: var(--accent);
  color: var(--accent);
  box-shadow: 0 4px 16px rgba(var(--accent-rgb), .12);
}

/* info-organizer mobile → 末尾統合ブロックに集約 */


/* ============================
   S9: FAQ
=============================== */
/* FAQ: 包容・温かさ — アイボリーホワイト */
.section-faq { background: #FAF8FD; padding-block: clamp(24px, 4vw, 48px) clamp(56px, 8vw, 100px); }

.faq-list {
  display: flex;
  flex-direction: column;
  gap: var(--sp2);
}

.faq-item {
  background: var(--bg-pure);
  border: 1px solid rgba(16,20,38,.06);
  border-radius: var(--r-md);
  overflow: hidden;
  transition: box-shadow var(--t-base) var(--ease);
}
.faq-item[open] { box-shadow: var(--sh-md); }

.faq-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp4);
  padding: var(--sp4) var(--sp5);
  cursor: pointer;
  list-style: none;
  font-size: clamp(1rem, 1.8vw, 1.125rem); /* MESSAGE基準に統一 */
  font-family: var(--font-mincho);
  font-weight: 500;
  color: var(--text-heading);
  line-height: 1.8;
  user-select: none;
  letter-spacing: .04em;
  transition: color var(--t-fast);
}
/* 質問テキストスパン: flex子要素が縮むように min-width:0 を設定 */
.faq-q > span:first-child {
  min-width: 0;
  word-break: normal;
  overflow-wrap: break-word;
}
.faq-q::-webkit-details-marker { display:none; }
.faq-item:hover .faq-q { color:var(--violet); }

.faq-icon {
  font-size: 1.25rem;
  color: var(--accent);
  flex-shrink: 0;
  font-weight: 300;
  line-height: 1;
  transition: transform var(--t-base) var(--ease);
}
.faq-item[open] .faq-icon { transform:rotate(45deg); }

.faq-a {
  padding: 0 var(--sp5) var(--sp5);
  border-top: 1px solid rgba(16,20,38,.05);
}
.faq-a p {
  font-size: clamp(1rem, 1.7vw, 1.1rem);
  font-family: var(--font-mincho);
  color: var(--text-main);
  line-height: 2.2;
  padding-top: var(--sp4);
  letter-spacing: .04em;
  word-break: break-all;
  overflow-wrap: break-word;
}
.faq-a a,
.faq-link {
  color: var(--violet);
  text-decoration: underline;
  font-weight: 600;
  transition: color var(--t-base);
}
.faq-a a:hover,
.faq-link:hover {
  color: var(--pink);
}

@keyframes faqOpen {
  from { opacity:0; transform:translateY(-6px); }
  to   { opacity:1; transform:translateY(0); }
}


/* ============================
   S10: FINAL CTA
=============================== */
.section-cta {
  position: relative;
  text-align: center;
  padding-block: clamp(140px, 18vw, 280px);
}

.cta-bg {
  position: absolute; inset:0;
  background: var(--grad-dark);
  z-index:0;
}
.cta-bg::before {
  content:'';
  position:absolute;
  top:-40%; left:50%;
  transform:translateX(-50%);
  width:900px; height:900px;
  background: radial-gradient(
    ellipse at center,
    var(--glow-violet) 0%,
    var(--glow-pink)   35%,
    transparent        70%
  );
  pointer-events:none;
}

.section-cta .container { position:relative; z-index:2; }

.cta-body {
  max-width: 720px;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--sp5);
}

/* CTAロゴ */
.cta-logo {
  display: block;
  width: clamp(240px, 40vw, 520px);
  height: auto;
  mix-blend-mode: screen;
  filter: drop-shadow(0 0 50px rgba(230,90,168,.35))
          drop-shadow(0 0 100px rgba(139,92,246,.25));
}

/* 開催日時（大きく表示） */
.cta-event-date {
  text-align: center;
  margin: var(--sp4) 0 var(--sp5);
}

.cta-event-date span {
  display: inline-block;
  font-family: var(--font-en);
  font-size: clamp(1.5rem, 4vw, 2rem);
  font-weight: 600;
  color: rgba(255, 255, 255, 0.95);
  letter-spacing: 0.1em;
  padding: var(--sp2) var(--sp4);
  border: 2px solid rgba(108, 77, 255, 0.3);
  border-radius: var(--r-lg);
  background: rgba(108, 77, 255, 0.08);
  box-shadow: 0 0 20px rgba(108, 77, 255, 0.2);
}

/* メインCTAボタン */
.cta-actions { margin-block: var(--sp2); }

/* 副次CTAボタン群 */
.cta-sub-actions {
  display: flex;
  gap: var(--sp3);
  flex-wrap: wrap;
  justify-content: center;
}
.cta-btn-sub {
  height: 44px;
  min-width: 160px;
  font-size: .875rem;
}

.cta-footnote {
  font-size: .875rem; /* .8125→.875rem */
  color: rgba(255,255,255,.60); /* .3→.60 */
  line-height: 1.9;
}
.cta-sns {
  color: var(--accent);
  border-bottom: 1px solid transparent;
  transition: border-color var(--t-fast);
}
.cta-sns:hover { border-color:var(--accent); }


/* ============================
   FOOTER
=============================== */
.site-footer {
  background: #080a14;
  padding-block: clamp(48px, 8vw, 80px) 0;
  border-top: 1px solid rgba(255,255,255,.06);
}

/* メイン行 */
.footer-inner {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--sp8);
  align-items: start;
  padding-bottom: clamp(40px, 6vw, 64px);
  border-bottom: 1px solid rgba(255,255,255,.06);
  margin-bottom: 0;
}

/* ブランド */
.footer-brand {
  display: flex;
  flex-direction: column;
  gap: var(--sp2);
}
.footer-logo {
  font-family: var(--font-en);
  font-size: 1.1rem;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: rgba(255,255,255,.90);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
}
.footer-logo-img {
  height: 96px;
  width: auto;
  display: block;
}
.footer-tagline {
  font-family: var(--font-mincho);
  font-size: .8rem;
  color: rgba(255,255,255,.65);
  line-height: 1.8;
  margin-top: var(--sp1);
  margin-bottom: var(--sp3);
  word-break: normal;
  overflow-wrap: break-word;
}

/* アクセス情報の各ルートを block 表示で改行 */
.access-route {
  display: block;
  padding-left: 1em;
  text-indent: -1em;
}
.footer-social,
.hero-social {
  display: flex;
  gap: var(--sp3);
  flex-wrap: wrap;
}
.hero-social {
  margin-bottom: 24px;
}
.social-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-en);
  font-size: .72rem;
  font-weight: 500;
  letter-spacing: .12em;
  color: rgba(255,255,255,.70);
  border: 1px solid rgba(255,255,255,.25);
  border-radius: var(--r-full);
  padding: 6px 14px;
  transition: color var(--t-fast), border-color var(--t-fast), background var(--t-fast);
}
.social-link svg { flex-shrink: 0; }
.social-link:hover {
  color: var(--accent);
  border-color: rgba(201,166,107,.35);
  background: rgba(201,166,107,.06);
}

/* ナビ */
.footer-nav {
  display: flex;
  gap: clamp(var(--sp6), 5vw, var(--sp9));
}
.footer-nav-col { display: flex; flex-direction: column; }
.footer-nav-heading {
  font-family: var(--font-en);
  font-size: .6rem;
  font-weight: 700;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: rgba(255,255,255,.55);
  margin-bottom: var(--sp4);
}
.footer-nav ul {
  display: flex;
  flex-direction: column;
  gap: var(--sp2);
}
.footer-nav a {
  font-family: var(--font-mincho); /* 日本語表記に合わせ明朝体 */
  font-size: .875rem; /* .78→.875rem */
  color: rgba(255,255,255,.80); /* .72→.80 */
  letter-spacing: .06em;
  line-height: 2.0;
  transition: color var(--t-fast);
}
.footer-nav a:hover { color: var(--accent); }

/* SPECIAL THANKS */
.footer-thanks {
  padding-block: clamp(24px, 3vw, 36px);
  border-top: 1px solid rgba(255,255,255,.05);
  text-align: center;
}
.footer-thanks-heading {
  font-family: var(--font-en);
  font-size: .62rem;
  font-weight: 500;
  letter-spacing: .35em;
  color: rgba(255,255,255,.35);
  text-transform: uppercase;
  margin-bottom: 14px;
}
.footer-thanks-list {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px 24px;
}
.footer-thanks-list li {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: .72rem;
  line-height: 1.6;
}
.footer-thanks-role {
  font-family: var(--font-mincho);
  color: rgba(255,255,255,.35);
  letter-spacing: .05em;
  white-space: nowrap;
}
.footer-thanks-role::after {
  content: '：';
  color: rgba(255,255,255,.2);
}
.footer-thanks-name {
  font-family: var(--font-mincho);
  color: rgba(255,255,255,.55);
  letter-spacing: .04em;
}

/* 法的リンク帯 */
.footer-legal {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp4);
  padding-block: clamp(18px, 3vw, 28px);
  border-top: 1px solid rgba(255,255,255,.05);
}
.footer-legal-links {
  display: flex;
  align-items: center;
  gap: var(--sp3);
  flex-wrap: wrap;
}
.footer-legal-link {
  font-family: var(--font-mincho);
  font-size: .78rem;
  color: rgba(255,255,255,.72);
  letter-spacing: .06em;
  border-bottom: 1px solid transparent;
  padding-bottom: 1px;
  transition: color var(--t-fast), border-color var(--t-fast);
  white-space: nowrap;
}
.footer-legal-link:hover {
  color: rgba(255,255,255,.80);
  border-color: rgba(255,255,255,.30);
}
.footer-legal-sep {
  color: rgba(255,255,255,.40);
  font-size: .75rem;
  user-select: none;
}
.footer-legal-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}
.footer-copy {
  font-family: var(--font-en);
  font-size: .68rem;
  color: rgba(255,255,255,.55);
  letter-spacing: .06em;
  white-space: nowrap;
}


/* --- フッター スマホ対応 --- */
@media (max-width: 767px) {
  .footer-inner {
    grid-template-columns: 1fr;
    gap: var(--sp6);
  }
  .footer-nav {
    gap: var(--sp6);
  }
  .footer-legal {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--sp3);
  }
  .footer-legal-right {
    align-items: flex-start;
  }
  /* フッター文字のはみ出し防止 */
  .footer-copy,
  .footer-legal-link {
    white-space: normal;
    word-break: normal;
    overflow-wrap: break-word;
  }
}


/* ============================
   BACK TO TOP
=============================== */
/* セクションナビゲーション（↓次・↑トップ）ボタングループ */
.section-nav-btns {
  position: fixed;
  bottom: var(--sp5);
  right: var(--sp5);
  z-index: 900;
  display: flex;
  flex-direction: column;
  gap: 10px;
  opacity: 0;
  transform: translateY(16px);
  pointer-events: none;
  transition: opacity var(--t-base) var(--ease),
              transform var(--t-base) var(--ease);
}
.section-nav-btns.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.section-nav-btn {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: rgba(16, 20, 38, 0.82);
  color: rgba(255,255,255,0.9);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 20px rgba(0,0,0,.28);
  border: 1px solid rgba(255,255,255,.12);
  backdrop-filter: blur(8px);
  cursor: pointer;
  transition: background var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease),
              transform var(--t-fast) var(--ease);
}
.section-nav-btn:hover {
  background: rgba(30, 36, 60, 0.95);
  box-shadow: 0 8px 28px rgba(0,0,0,.38);
  transform: translateY(-2px);
}
.section-nav-btn:active {
  transform: translateY(0);
}
/* ↓ 次へ（下矢印）— is-at-bottom のとき非表示 */
#scroll-to-next {
  transition: opacity var(--t-base) var(--ease),
              background var(--t-fast) var(--ease),
              transform var(--t-fast) var(--ease);
}
#scroll-to-next.is-hidden {
  opacity: 0;
  pointer-events: none;
}
/* 後方互換：旧 back-to-top 単体指定はそのまま無効化 */
.back-to-top {
  display: none;
}


/* ============================
   SECTION HEADING IMAGE
   — グラデーション文字見出し画像 + 日本語テキスト
=============================== */
.section-heading-img-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0px;
  margin-top: -90px;     /* 窓の直後にがっつり引き上げて詰める */
  margin-bottom: var(--sp3);
  position: relative;    /* z-index を有効に */
  z-index: 10;           /* section-break素材(z1〜4)より必ず前面に */
}

.section-heading-img {
  display: block;
  max-width: min(680px, 88vw);  /* 少し大きめに */
  width: 88%;                   /* 幅を広げる */
  height: auto;
  mix-blend-mode: normal;
  border-radius: 4px;
  margin-bottom: -20px;         /* 画像下の余白を詰める */
}

/* ARTISTSだけ見出しを少し下げる */
.section-artists .section-heading-img-wrap {
  margin-top: -10px;
}

/* Venue→Tickets の section-break */
.section-break--tickets .sb-gap {
  height: 320px;
}
@media (max-width: 767px) {
  .section-break--tickets .sb-gap {
    height: 200px;
  }
}

/* TICKETS の見出しを上に引き上げる */
.section-tickets .section-heading-img-wrap {
  margin-top: -20px;
}

/* ABOUT VENUEの見出しを15px下げる */
.section-venue .section-heading-img-wrap {
  margin-top: -75px;
}

/* EVENT INFO: 窓に詰めて引き上げる */
.section-info .section-heading-img-wrap {
  margin-top: -40px;
  z-index: 20;
}

/* EVENT INFO: 見出し画像と日本語テキストの間を広げる */
.section-info .section-heading-img {
  margin-bottom: 12px;
}

/* FAQ: 見出し画像が欠けないよう5px下げる */
.section-faq .section-heading-img-wrap {
  margin-top: -82px;
}

/* SNS: 窓直後から 60px 下げる */
.section-sns .section-heading-img-wrap {
  margin-top: -30px;
}

/* ダーク背景上では通常表示 */
.section-bridge .section-heading-img,
.section-cta .section-heading-img {
  mix-blend-mode: normal;
  filter: brightness(1.15);
}

.section-heading-ja {
  font-family: var(--font-mincho);
  font-size: clamp(.95rem, 1.8vw, 1.1rem); /* 文字を大きく */
  font-weight: 500;
  letter-spacing: .25em;
  color: var(--text-sub);
  text-align: center;
  margin-top: 0;          /* 画像との隙間はgapで管理 */
}

/* Concept内の見出し画像 */
.concept-heading-img-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
  margin-top: -71px;     /* 他セクションに合わせて引き上げ +55px */
  margin-bottom: var(--sp3);
  position: relative;
  z-index: 20;           /* section-break(z-index:10)より前面に */
}
.concept-heading-img {
  max-width: min(560px, 90%);  /* 他セクションに近いサイズに */
  width: 90%;
  height: auto;
  mix-blend-mode: normal;
  border-radius: 4px;
}
.concept-heading-img-ja {
  font-family: var(--font-mincho);
  font-size: clamp(.95rem, 1.8vw, 1.1rem); /* section-heading-jaに揃える */
  font-weight: 500;
  letter-spacing: .25em;
  color: var(--text-sub);
  margin-top: -15px;
}

/* AURORA AURA 写真は正方形アスペクト */
.artist-photo-wrap--square {
  aspect-ratio: 1/1;
}

/* intro-tagline カナ — 暗背景の独立行 */
.intro-tagline-kana {
  font-family: var(--font-mincho);
  font-size: clamp(1.1rem, 2vw, 1.5rem);
  font-weight: 500;
  letter-spacing: .22em;
  color: rgba(255,255,255,.45);
  display: block;
}

.intro-tagline-logo {
  display: block;
  width: clamp(240px, 64vw, 420px);
  height: auto;
  margin-top: var(--sp3);
  margin-inline: auto;
  opacity: .95;
}

/* ============================
   S2.5: SUB KEY VISUAL
   — Conceptセクション前のサブキービジュアル
=============================== */
.section-subkv {
  padding-block: 0;
  /* 上下に宇宙的なグラデーション — 画像との接続を滑らかに */
  background:
    linear-gradient(to bottom,
      #080a14 0%,
      #0a0c1a 40%,
      #0d0e22 60%,
      #080a14 100%
    );
  overflow: visible;
  position: relative;
  z-index: 3;
}

.subkv-inner {
  width: 100%;
  max-width: var(--cw-xl);
  margin-inline: auto;
  padding-inline: clamp(24px, 5vw, 80px);
  padding-block: clamp(60px, 8vw, 120px);
}

.subkv-figure {
  position: relative;
  margin: 0;
  /* 上部だけ丸め、下部はフラットにして波形SVGと自然に接続 */
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  overflow: hidden;
  box-shadow: 0 32px 100px rgba(0,0,0,.55),
              0 0 80px rgba(230,90,168,.12),
              /* 下端グロー: 波形との接続を豊かに */
              0 60px 120px rgba(108,77,255,.15);
  /* 光沢感のある額縁効果 */
  border: 1px solid rgba(255,255,255,.08);
  border-bottom: none; /* 下端は波形と面一に */
}

.subkv-img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 16/9;
  object-fit: cover;
  object-position: center 30%;
  transition: transform 1.2s var(--ease);
}
.subkv-figure:hover .subkv-img {
  transform: scale(1.015);
}

/* 下部グラデーションオーバーレイ — 文字視認性のため下50%を十分に暗く */
.subkv-overlay {
  position: absolute;
  inset: 0;
  background:
    /* 中央・下側から滲むピンク・バイオレットグロー */
    radial-gradient(ellipse 80% 50% at 50% 90%,
      rgba(108,77,255,.22) 0%,
      rgba(230,90,168,.12) 40%,
      transparent 70%
    ),
    /* 下端へ向かう暗化グラデーション: 上50%は透明、下50%で十分黒く */
    linear-gradient(
      to bottom,
      transparent 30%,
      rgba(8,10,20,.45) 55%,
      rgba(8,10,20,.82) 72%,
      rgba(8,10,20,.97) 100%
    );
  pointer-events: none;
  z-index: 1;
}

/* キャプション: 全高を占有して文字を完全に下端寄せ */
.subkv-caption {
  position: absolute;
  top: 0; bottom: 0; left: 0; right: 0; /* inset全面を占有 */
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end; /* 文字を常に下端に固定 */
  gap: var(--sp2);
  padding: 0 clamp(28px, 5vw, 64px) clamp(20px, 3vw, 40px);
}

.subkv-caption-en {
  font-family: var(--font-en);
  font-size: clamp(.65rem, 1.1vw, .8rem);
  font-weight: 600;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--accent);
  display: block;
  /* 文字影でグラデーションが浅い部分でも読めるように */
  text-shadow: 0 1px 8px rgba(0,0,0,.8);
}

.subkv-caption-ja {
  font-family: var(--font-mincho);
  font-size: clamp(1.1rem, 2.8vw, 2.2rem);
  font-weight: 500;
  color: rgba(255,255,255,.95);
  letter-spacing: .1em;
  line-height: 1.6;
  display: block;
  text-shadow: 0 2px 16px rgba(0,0,0,.9), 0 0 40px rgba(0,0,0,.6);
}

/* ============================
   ACCESS MAP BUTTON
=============================== */
.access-map-btn-wrap {
  margin-top: var(--sp5);
  padding-top: var(--sp5);
  border-top: 1px solid rgba(16,20,38,.07);
  display: flex;
  justify-content: flex-start;
}

.btn-access-map {
  display: inline-flex;
  align-items: center;
  gap: var(--sp2);
  padding: 0 var(--sp5);
  height: 52px;
  min-width: 0;
  border-radius: var(--r-full);
  font-family: var(--font-mincho);
  font-size: .9375rem;
  font-weight: 500;
  letter-spacing: .06em;
  color: var(--text-heading);
  background: var(--bg-pure);
  border: 1.5px solid rgba(16,20,38,.15);
  box-shadow: var(--sh-sm);
  transition: transform var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease),
              border-color var(--t-fast);
}
.btn-access-map:hover {
  transform: translateY(-2px);
  box-shadow: var(--sh-md);
  border-color: var(--accent);
  color: var(--accent);
}
.access-map-icon {
  display: flex;
  align-items: center;
  color: var(--accent);
  flex-shrink: 0;
}
.btn-access-map:hover .access-map-icon {
  color: var(--accent);
}

/* ============================
   SECTION Z-INDEX 調整
=============================== */
/* intro section — 上部に統合済み */

/* bridge section の上下をwaveで自然につなぐ */
.section-bridge {
  position: relative;
}

/* CTA section — wave-faq-ctaの下にアタッチ */
.section-cta {
  position: relative;
  z-index: 2;
}

/* intro tagline の明朝体強調 */
.intro-tagline strong {
  font-weight: 600;
  color: var(--text-heading);
}

/* nav CTA のアニメーション */
.nav-cta {
  animation: navCtaShimmer 3.5s ease-in-out infinite;
}
@keyframes navCtaShimmer {
  0%, 100% { box-shadow: 0 2px 16px rgba(230,90,168,.35); }
  50%       { box-shadow: 0 4px 24px rgba(201,166,107,.5), 0 0 20px rgba(230,90,168,.25); }
}

/* bridge CTA ボタン */
.bridge-cta { margin-top: var(--sp2); }

/* section-header margin: 249行に定義済み */

/* 明朝体ベース — 各種テキスト要素 */
.venue-specs li,
.info-note,
.cta-footnote,
.footer-tagline {
  font-family: var(--font-mincho);
  letter-spacing: .04em;
}

.artist-credits li {
  font-family: var(--font-mincho);
  letter-spacing: .03em;
}

/* section-desc: 310行に定義済みのため削除 */

/* ============================
   RESPONSIVE — TABLET (≤1024px)
=============================== */
@media (max-width:1024px) {

  html { font-size: 16px; } /* タブレットは16px */

  .intro-stack { max-width: 720px; }
  .intro-btn-primary,
  .intro-btn-outline { max-width: 380px; }

  /* Artist: 縦積み */
  .artist-block,
  .artist-block--reverse {
    grid-template-columns: 1fr;
    gap: var(--sp5);
  }
  .artist-block--reverse .artist-visual { order:0; }
  .artist-block--reverse .artist-body   { order:0; }
  .artist-photo-wrap { max-width:360px; }
  .artist-bio { font-size: 1rem; }
  .artist-credits li { font-size: .9375rem; }

  /* Venue split: tablet — 写真(上)→テキスト(下) の縦並び */
  .venue-split-block,
  .venue-split-block--reverse {
    flex-direction: column;
    min-height: auto;
  }
  .venue-split-block .venue-split-photo,
  .venue-split-block .venue-split-body--dark,
  .venue-split-block .venue-split-body--light {
    flex: 0 0 auto;
    width: 100%;
  }
  .venue-split-block--reverse .venue-split-photo { order: 1; }
  .venue-split-block--reverse .venue-split-body   { order: 2; }
  .venue-split-photo { min-height: 280px; }
}



/* ============================
   INFO DETAILS — 開催情報格納式
=============================== */

/* サマリーカード（常時表示） */
.info-summary-card {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  background: var(--bg-pure);
  border: 1px solid rgba(16,20,38,.07);
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--sh-sm);
  margin-bottom: var(--sp4);
}

.info-summary-item {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: var(--sp4) var(--sp5);
  border-right: none;
  border-bottom: 1px solid rgba(16,20,38,.06);
}
.info-summary-item:last-child { border-bottom: none; }

.info-summary-label {
  font-family: var(--font-en);
  font-size: .65rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
}

.info-summary-value {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.8vw, 1.125rem);
  font-weight: 500;
  color: var(--text-heading);
  line-height: 1.6;
  letter-spacing: .04em;
  word-break: normal;
  overflow-wrap: break-word;
}

/* 詳細アコーディオン */
.info-details {
  border: 1px solid rgba(16,20,38,.08);
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--bg-pure);
  box-shadow: var(--sh-sm);
}

.info-details-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--sp4) var(--sp5);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.7vw, 1.1rem);
  color: var(--text-sub);
  letter-spacing: .06em;
  border-bottom: 1px solid transparent;
  transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.info-details-summary::-webkit-details-marker { display: none; }
.info-details-summary:hover {
  background: var(--bg-warm);
  color: var(--text-heading);
}
.info-details[open] .info-details-summary {
  border-bottom-color: rgba(16,20,38,.07);
  color: var(--text-heading);
}

.info-details-toggle {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  color: var(--text-muted);
  transition: transform var(--t-base) var(--ease);
}
.info-details-toggle svg { display: block; }
.info-details[open] .info-details-toggle {
  transform: rotate(180deg);
}

.info-details-body {
  padding: var(--sp3) 0 0;
}

/* タブレット */
@media (max-width:1024px) {
  .info-summary-card { grid-template-columns: 1fr; }
  .info-summary-item { border-right: none; }
}

/* モバイル */
@media (max-width:767px) {
  .info-summary-card { grid-template-columns: 1fr; }
  .info-summary-item { border-right: none; }
  .info-details-summary { padding: var(--sp3) var(--sp4); }
}


/* ============================
   SNS SECTION — 白系グラデーション（実用情報ゾーン・白の流れを統一）
=============================== */
.section-sns {
  background: linear-gradient(
    180deg,
    #FAF8FD 0%,
    #F5F2FA 40%,
    #EEE9F5 100%
  );
  position: relative;
  overflow: hidden;
  padding-block: var(--section-pad);
  z-index: 1;
}

/* 薄いオーバーレイ装飾 */
.sns-bg-layer {
  position: absolute;
  inset: 0;
  background-image: url('../assets/gallery/new/gallery-new-6.jpg');
  background-size: cover;
  background-position: center;
  /* background-attachment:fixed は iOS非対応のため scroll に統一 */
  background-attachment: scroll;
  opacity: 0.06;
  pointer-events: none;
  z-index: 0;
}
.section-sns .container {
  position: relative;
  z-index: 1;
}

/* SNS 見出し */
.section-sns .section-heading-img {
  mix-blend-mode: normal;
  filter: none;
}
.section-heading-img--dark {
  mix-blend-mode: normal !important;
  filter: none !important;
}
.section-heading-ja--light {
  color: var(--text-sub) !important;
}

.sns-lead {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.8vw, 1.15rem);
  color: var(--text-main);
  letter-spacing: .05em;
  line-height: 2;
  margin-top: var(--sp3);
  text-align: center;
}

/* SNS カードグリッド — Instagram・LINEの2枚表示 */
.sns-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--sp4);
  margin-top: var(--sp7);
  max-width: 640px;
  margin-inline: auto;
}

.sns-card[hidden] { display: none; }
.sns-card {
  display: block;
  text-decoration: none;
  border: 1px solid rgba(16,20,38,.09);
  /* Instagram: 左上・右下を尖らせる */
  --cut: 18px;
  clip-path: polygon(
    var(--cut) 0%,
    100% 0%,
    100% calc(100% - var(--cut)),
    calc(100% - var(--cut)) 100%,
    0% 100%,
    0% var(--cut)
  );
  transition: transform var(--t-base) var(--ease),
              filter var(--t-base) var(--ease),
              border-color var(--t-base);
  background: rgba(255,255,255,.80);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  filter: drop-shadow(0 2px 16px rgba(16,20,38,.08));
}
.sns-card:hover {
  transform: translateY(-5px);
  filter: drop-shadow(0 12px 40px rgba(16,20,38,.14))
          drop-shadow(0 0 20px rgba(201,166,107,.12));
}
/* LINE: デフォルトと同じ向き（左上・右下を尖らせる） */

.sns-card--instagram:hover { filter: drop-shadow(0 12px 36px rgba(16,20,38,.12)) drop-shadow(0 0 24px rgba(230,90,168,.18)); }
.sns-card--line:hover      { filter: drop-shadow(0 12px 36px rgba(16,20,38,.12)) drop-shadow(0 0 24px rgba(6,199,85,.16)); }
.sns-card--youtube:hover   { filter: drop-shadow(0 12px 36px rgba(16,20,38,.12)) drop-shadow(0 0 24px rgba(220,60,60,.10)); }
.sns-card--x:hover         { filter: drop-shadow(0 12px 36px rgba(16,20,38,.12)) drop-shadow(0 0 24px rgba(108,77,255,.10)); }

.sns-card-inner {
  padding: var(--sp5) var(--sp4);
  display: flex;
  flex-direction: column;
  gap: var(--sp3);
  align-items: flex-start;
  min-height: 200px;
}

.sns-icon-wrap {
  width: 52px;
  height: 52px;
  border-radius: var(--r-md);
  overflow: hidden;
  background: rgba(16,20,38,.04);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.sns-icon {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

.sns-card-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.sns-name {
  font-family: var(--font-en);
  font-size: .9rem;
  font-weight: 600;
  letter-spacing: .1em;
  color: var(--text-heading);
}

.sns-handle {
  font-family: var(--font-en);
  font-size: .78rem;
  color: var(--accent);
  letter-spacing: .06em;
}

.sns-desc {
  font-family: var(--font-mincho);
  font-size: .8rem;
  color: var(--text-sub);
  line-height: 1.7;
  letter-spacing: .03em;
  margin-top: var(--sp1);
}

.sns-follow-label {
  font-family: var(--font-en);
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .22em;
  color: var(--accent);
  border: 1px solid rgba(201,166,107,.45);
  border-radius: var(--r-full);
  padding: 4px 12px;
  align-self: flex-start;
  transition: background var(--t-fast), color var(--t-fast);
}
.sns-card:hover .sns-follow-label {
  background: var(--grad-accent-cta);
  color: #fff;
  border-color: transparent;
}

/* ハッシュタグ */
.sns-hashtag {
  margin-top: var(--sp7);
  text-align: center;
}
.sns-hashtag-label {
  font-family: var(--font-en);
  font-size: .65rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: var(--sp2);
}
.sns-hashtag-tag {
  font-family: var(--font-mincho);
  font-size: clamp(1.1rem, 2.5vw, 1.8rem);
  font-weight: 500;
  color: var(--text-heading);
  letter-spacing: .12em;
}

/* タブレット以下もそのまま2カラム */
@media (max-width:1024px) {
  .sns-grid { grid-template-columns: repeat(2, 1fr); max-width: 640px; }
}


/* ============================
   CANCEL POLICY
   チケット内 折りたたみ式キャンセルポリシー
=============================== */
.cancel-policy-wrap {
  margin-top: var(--sp4);
}

.cancel-policy {
  border: 1px solid rgba(16,20,38,.1);
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--bg-pure);
  box-shadow: var(--sh-sm);
}

.cancel-policy-summary {
  display: flex;
  align-items: center;
  gap: var(--sp3);
  padding: var(--sp4) var(--sp5);
  cursor: pointer;
  list-style: none;
  user-select: none;
  font-family: var(--font-mincho);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: .06em;
  color: var(--text-heading);
  transition: background var(--t-fast);
}
.cancel-policy-summary::-webkit-details-marker { display:none; }
.cancel-policy-summary:hover { background: var(--bg-soft); }

.cancel-policy-icon {
  flex-shrink: 0;
  color: var(--accent);
  display: flex;
  align-items: center;
}

.cancel-policy-toggle {
  margin-left: auto;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  color: var(--text-muted);
  transition: transform var(--t-base) var(--ease);
}
.cancel-policy-toggle svg { display: block; }
.cancel-policy[open] .cancel-policy-toggle {
  transform: rotate(180deg);
}

.cancel-policy-body {
  padding: var(--sp5) var(--sp6) var(--sp6);
  border-top: 1px solid rgba(16,20,38,.07);
  display: flex;
  flex-direction: column;
  gap: var(--sp5);
}

.cancel-policy-lead {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.7vw, 1.05rem);
  color: var(--text-sub);
  line-height: 2.0;
  letter-spacing: .03em;
  background: var(--bg-soft);
  border-left: 3px solid var(--accent);
  padding: var(--sp3) var(--sp4);
  border-radius: 0 var(--r-sm) var(--r-sm) 0;
}

.cancel-policy-section {
  display: flex;
  flex-direction: column;
  gap: var(--sp2);
}

.cancel-policy-heading {
  font-family: var(--font-mincho);
  font-size: clamp(1rem, 1.7vw, 1.1rem);
  font-weight: 700;
  letter-spacing: .08em;
  color: var(--text-heading);
  padding-bottom: var(--sp2);
  border-bottom: 1px solid rgba(16,20,38,.07);
}

.cancel-policy-section p {
  font-family: var(--font-mincho);
  font-size: clamp(.95rem, 1.6vw, 1.05rem);
  color: var(--text-sub);
  line-height: 2.0;
  letter-spacing: .03em;
  word-break: auto-phrase;
  overflow-wrap: break-word;
}

/* キャンセル料テーブル */
.cancel-policy-table {
  width: 100%;
  border-collapse: collapse;
  border-radius: var(--r-sm);
  overflow: hidden;
  margin-block: var(--sp2);
}
.cancel-policy-table tr {
  border-bottom: 1px solid rgba(16,20,38,.06);
}
.cancel-policy-table tr:last-child { border-bottom: none; }
.cancel-policy-table td {
  padding: var(--sp3) var(--sp4);
  font-family: var(--font-mincho);
  font-size: clamp(.95rem, 1.6vw, 1.05rem);
  vertical-align: middle;
}
.cancel-date {
  color: var(--text-sub);
  width: 45%;
  border-right: 1px solid rgba(16,20,38,.06);
}
.cancel-fee {
  color: var(--text-heading);
  font-weight: 500;
  padding-left: var(--sp4) !important;
}
.cancel-fee strong {
  color: var(--pink);
  font-size: 1.05em;
}
.cancel-fee--free { color: #2a8a5c; }
.cancel-fee--free span { font-weight: 400; color: var(--text-sub); font-size: .85em; }

.cancel-row--alert td {
  background: rgba(230,90,168,.04);
}
.cancel-row--alert .cancel-fee strong {
  color: #c0392b;
}

.cancel-note {
  font-size: .8rem !important;
  color: var(--text-muted) !important;
  font-style: italic;
  letter-spacing: .02em !important;
}

.cancel-list {
  list-style: disc;
  padding-left: var(--sp4);
  display: flex;
  flex-direction: column;
  gap: var(--sp1);
}
.cancel-list li {
  font-family: var(--font-mincho);
  font-size: .9rem;
  color: var(--text-sub);
  line-height: 1.7;
}

.cancel-policy-section--contact { margin-top: var(--sp2); }
.cancel-mail {
  font-family: var(--font-en);
  font-size: .9375rem;
  color: var(--accent);
  letter-spacing: .06em;
  border-bottom: 1px solid rgba(201,166,107,.35);
  padding-bottom: 2px;
  transition: border-color var(--t-fast), color var(--t-fast);
}
.cancel-mail:hover {
  color: var(--pink);
  border-color: var(--pink);
}


/* ============================================================
   RESPONSIVE — スマホ全体対応
   ブレークポイント: 767px (スマホ・小型タブレット)
   ※ 各セクション固有の既存 @media は上書き・補完
============================================================= */
@media (max-width: 767px) {

  /* ================================================================
     ★★★ LOCKED: HEADER〜GALLERY スマホ調整済み ★★★
     この範囲は確定済み。変更禁止。
  ================================================================ */

  /* ---- ユーティリティ ---- */
  .sp-only, br.sp-only { display: inline; }
  br.pc-only-br        { display: none; }   /* SP: 改行なし＝1行に */

  /* ---- word-break ---- */
  body {
    word-break: normal;
    overflow-wrap: anywhere;
    -webkit-hyphens: none;
    hyphens: none;
  }

  /* ---- CSS 変数リセット ---- */
  :root {
    --section-pad: 40px;
    --sp9: 80px;
    --sp8: 64px;
    --sp7: 48px;
  }

  html { font-size: 16px; }

  /* ---- HEADER ---- */
  .site-nav { display: none !important; }
  .header-inner {
    padding-inline: var(--sp4);
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
  }
  .nav-toggle {
    display: flex !important;
    margin-left: auto;
    position: relative !important;
    top: auto !important;
    right: auto !important;
    flex-shrink: 0;
  }

  /* ---- HERO ---- */
  .hero-logo-area {
    width: clamp(260px, 88vw, 400px);
    transform: translate(-50%, -54%);
  }

  /* ---- INTRO ---- */
  .section-intro { padding-block: 96px 72px; }
  .intro-stack { gap: var(--sp5); max-width: 100%; }
  .intro-col--meta { max-width: 100%; }

  /* メタカード（スマホ） */
  .intro-meta-item {
    border-right: none;
    border-bottom: 1px solid rgba(255,255,255,.08);
    padding: var(--sp4) var(--sp3);
  }
  .venue-line1 { display: block; font-size: .95rem; white-space: normal; }
  .venue-line2 { display: block; font-size: .8rem; }
  .intro-meta-label {
    font-size: .75rem;
    margin-bottom: var(--sp2);
  }
  .intro-meta-value { font-size: .9375rem; }
  .intro-meta-value--large {
    font-size: clamp(1.35rem, 5.5vw, 1.75rem);
    line-height: 1.3;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .25em;
    text-align: center;
  }
  .intro-meta-value--large br.sp-only {
    display: none; /* flex列並びで改行不要 */
  }
  .intro-meta-value--date {
    font-size: clamp(1.35rem, 5.5vw, 1.75rem);
    letter-spacing: .06em;
    font-family: var(--font-mincho);
  }
  br.pc-br { display: none; }

  /* アクセスマップボタン */
  .access-map-btn-wrap { justify-content: center; }
  .btn-access-map {
    width: 100%;
    max-width: 360px;
    justify-content: center;
  }

  /* タグライン */
  .intro-tagline {
    font-size: clamp(0.75rem, 4vw, 1rem);
    line-height: 2.0;
    white-space: normal;
    word-break: normal;
    overflow-wrap: anywhere;
    text-align: center;
  }
  /* 各行を途中で絶対に折り返さない */
  .intro-tagline-line1,
  .intro-tagline-line2 {
    display: inline-block;
    white-space: nowrap;
  }
  .intro-artists {
    font-size: 0.9375rem;
    flex-direction: column; /* スマホは必ず縦並び */
    flex-wrap: nowrap;
    gap: .3em 0;
    align-items: center;
    justify-content: center;
  }
  /* 各アーティストブロック（ロール＋名前）は途中で切らない */
  .artists-sound,
  .artists-visual {
    display: inline-flex;
    align-items: baseline;
    gap: .2em;
    white-space: nowrap;
  }
  /* スマホでは「／」区切りを非表示にして改行で代替 */
  .artists-sep {
    display: none;
  }
  .artists-name {
    font-size: 1.45rem;
  }
  .artists-role {
    font-size: 1.0rem;
  }

  /* メタカード内: TIME を横並びで読みやすく */
  .time-block {
    display: inline-flex;
    align-items: baseline;
    gap: .3em;
    margin-right: 0;
  }
  .time-label {
    font-size: .85rem;
    font-weight: 500;
    color: rgba(255,255,255,.55);
    letter-spacing: .08em;
  }
  .time-val {
    font-size: clamp(1.35rem, 5.5vw, 1.75rem);
    font-weight: 700;
    color: rgba(255,255,255,.95);
  }
  /* VENUE: スマホでは折り返し許可 */
  .venue-line1,
  .venue-line2,
  .venue-line3 {
    font-size: clamp(.85rem, 3.8vw, .975rem);
    white-space: normal !important;
    word-break: normal;
    overflow-wrap: break-word;
    line-height: 1.55;
  }

  .intro-btn-primary,
  .intro-btn-outline {
    width: 100%;
    max-width: 340px;
  }

  /* ---- CONCEPT ---- */
  .section-concept {
    z-index: 20;
    padding-top: 16px;     /* ★固定値 */
    margin-top: -60px;     /* ★固定値 */
  }
  .concept-heading-img-wrap {
    margin-top: 0;
    margin-bottom: var(--sp2);
  }
  .concept-heading {
    font-size: clamp(1.35rem, 5.5vw, 1.75rem);
    word-break: normal;
    overflow-wrap: break-word;
    white-space: normal;
    text-wrap: unset;           /* balance を無効化：「呼吸から始まる、」を1行に */
    letter-spacing: 0.04em;
  }
  .concept-heading-thin {
    display: block;             /* 「内なる旅」は次行へ */
    font-size: 1em;             /* 「呼吸から始まる、」と同サイズに統一 */
  }
  .concept-body p {
    font-size: 1rem;
    line-height: 2.0;
    letter-spacing: .04em;
    word-break: normal;
    overflow-wrap: anywhere;
  }
  .concept-body .nowrap {
    white-space: normal;
  }
  .concept-body-p1 {
    font-size: 1rem;
    letter-spacing: .04em;
  }
  .concept-breath-box {
    padding: var(--sp4) var(--sp4);
    margin-top: var(--sp5);
  }
  .concept-breath-title {
    font-size: 1rem;
  }
  .concept-breath-body p {
    font-size: 1rem; /* MESSAGE基準に統一 */
    line-height: 2.0;
    word-break: normal;
    overflow-wrap: anywhere;
  }

  /* ---- BRIDGE ---- */
  .section-bridge {
    min-height: 360px;
    padding-block: clamp(72px, 16vw, 140px);
  }
  .bridge-logo { max-width: clamp(180px, 62vw, 260px); }

  /* ---- ARTISTS ---- */
  .artist-block,
  .artist-block--reverse {
    grid-template-columns: 1fr;
    gap: var(--sp3);
  }
  .artist-block--reverse .artist-visual { order: 1; }
  .artist-block--reverse .artist-body   { order: 2; }
  .artist-photo-wrap {
    aspect-ratio: 4/3;
    border-radius: var(--r-md);
  }
  .artist-photo-wrap--square { aspect-ratio: 4/3; }
  .artist-name-ja { font-size: clamp(1.5rem, 6vw, 2rem); }
  .artist-body { gap: var(--sp2); padding-top: var(--sp2); }
  .artist-name-en {
    font-size: clamp(.85rem, 3.4vw, .95rem);
    word-break: normal;
  }
  .artist-bio {
    font-size: 1rem;
    line-height: 2.0;
    overflow-wrap: anywhere;
    word-break: normal;    /* keep-all解除：強制改行しない */
  }
  .artist-credits { padding: var(--sp3) var(--sp3); }
  .artist-credits li { font-size: 0.9375rem; }
  .artist-portfolio-btn { width: 100%; min-width: 0; justify-content: center; }
  .artist-quote-text {
    font-size: 1rem; /* MESSAGE基準 */
    line-height: 2.0;
    word-break: normal;
    overflow-wrap: anywhere;
  }

  /* ---- GALLERY ---- */
  .section-title-ja {
    font-size: clamp(1.8rem, 7vw, 3rem);
    word-break: normal;
    white-space: normal;
  }
  .section-desc {
    font-size: 1rem; /* MESSAGE基準 */
    word-break: normal;
    overflow-wrap: anywhere;
  }

  /* ================================================================
     ★★★ LOCKED END ★★★
  ================================================================ */

  /* ---- WHY HERE フォトグリッド ---- */
  .venue-why-grid {
    grid-template-columns: 1fr;
    gap: var(--sp4);
  }
  .venue-why-figure { aspect-ratio: 16/9; }
  .venue-why-lead {
    margin-bottom: var(--sp5);
    text-align: left;
  }
  .venue-why-heading {
    font-size: clamp(1.15rem, 4.8vw, 1.5rem);
    white-space: normal;
    word-break: normal;
    line-height: 1.5;
  }
  .venue-why-body {
    text-align: left;
    font-size: 1rem; /* MESSAGE基準 */
    line-height: 2.0;
    word-break: normal;
    overflow-wrap: anywhere;
  }
  .venue-title--sm {
    font-size: clamp(1.05rem, 4.4vw, 1.3rem);
    white-space: normal;
    word-break: normal;
    line-height: 1.45;
  }
  .venue-title--xs {
    font-size: clamp(1.05rem, 4.4vw, 1.3rem);
    white-space: normal;
    word-break: normal;
    line-height: 1.45;
    letter-spacing: 0;
  }
  /* sp-brは不要になったので非表示 */
  br.sp-br { display: none; }

  /* ---- VENUE (split blocks) ---- */
  .venue-split-block,
  .venue-split-block--reverse {
    flex-direction: column;
    min-height: unset;
    border-radius: var(--r-lg);
  }
  .venue-split-block .venue-split-photo,
  .venue-split-block .venue-split-body--dark,
  .venue-split-block .venue-split-body--light {
    flex: 0 0 100%;
    width: 100%;
  }
  .venue-split-photo,
  .venue-split-photo--first,
  .venue-split-photo--second,
  .venue-split-photo--third {
    order: 1 !important;
    min-height: 220px;
    aspect-ratio: 16/9;
  }
  .venue-split-body--dark,
  .venue-split-body--light,
  .venue-split-text--second {
    order: 2 !important;
    width: 100% !important;
    padding: var(--sp4) var(--sp4); /* スマホはパディングを抑えて本文幅を確保 */
  }
  .venue-title {
    font-size: clamp(1.4rem, 5.5vw, 2rem);
    word-break: normal;
  }
  .venue-split-desc {
    font-size: 1rem; /* MESSAGE基準 */
    line-height: 2.0;
    word-break: normal;
    overflow-wrap: anywhere;
  }

  /* アクセス：スマホは左に1文字分の余白を追加 */
  .venue-access { padding: var(--sp4) var(--sp4) var(--sp4) var(--sp5); }
  .access-item { gap: var(--sp2); }
  .access-text { font-size: 1rem; line-height: 1.85; } /* MESSAGE基準 */
  .venue-seat-label { font-size: .8125rem; }

  /* ---- 動画セクション ---- */
  .intro-video-player {
    border-radius: 0;
  }



  /* ---- TICKETS: 座席図は全幅表示・横スクロールなし ---- */
  .venue-map-wrap {
    overflow: visible;
  }
  /* チケットカード：スマホはひと回り大きく */
  .ticket-tier {
    font-size: .72rem;           /* 0.62rem → 0.72rem */
  }
  .ticket-name {
    font-size: 1.35rem;          /* 1.15rem → 1.35rem */
    word-break: normal;
  }
  .ticket-price {
    font-size: 2rem;             /* 1.75rem → 2rem */
  }
  .ticket-tax {
    font-size: .875rem;          /* 0.78rem → 0.875rem */
  }
  .ticket-perks-label {
    font-size: .72rem;           /* 0.6rem → 0.72rem */
  }
  .ticket-perks li {
    font-size: 1rem;             /* 0.875rem → 1rem（MESSAGE基準） */
    line-height: 1.85;
  }
  .ticket-note,
  .ticket-note-detail {
    font-size: .875rem;
  }
  .ticket-btn {
    font-size: 1rem;             /* 据え置き・明示 */
    padding: 16px var(--sp4);
  }

  /* ---- INFO / CANCEL POLICY ---- */
  .cancel-policy-summary {
    padding: var(--sp3) var(--sp3); /* 左右パディングを縮小して1行に収める */
    gap: var(--sp2);
    font-size: .9375rem;
    white-space: nowrap; /* テキストを折り返さない */
  }
  .cancel-policy-body { padding: var(--sp4) var(--sp3) var(--sp5); }
  .cancel-policy-table {
    width: 100%;
    table-layout: auto;
    border-collapse: collapse;
  }
  .cancel-policy-table tr {
    display: table-row;
    border-bottom: 1px solid rgba(16,20,38,.06);
  }
  .cancel-policy-table td {
    display: table-cell;
    padding: var(--sp2) var(--sp1) var(--sp2) var(--sp2);
    vertical-align: middle;
    font-size: clamp(.8rem, 3.2vw, .9rem);
  }
  .cancel-policy-table .cancel-date {
    font-weight: 600;
    color: var(--text-heading);
    white-space: nowrap;
    font-size: clamp(.75rem, 2.8vw, .875rem);
    padding-right: var(--sp2);
  }
  .cancel-policy-table .cancel-fee {
    padding-left: var(--sp1);
    word-break: normal;
  }

  /* ---- FAQ ---- */
  .faq-q {
    font-size: 1rem; /* MESSAGE基準 */
    padding: var(--sp3) var(--sp4);
    line-height: 1.7;
    word-break: normal;
  }
  .faq-a { padding: var(--sp3) var(--sp4) var(--sp4); }
  .faq-a p {
    font-size: 1rem; /* MESSAGE基準 */
    line-height: 1.95;
    word-break: normal;
  }

  /* ---- SNS ---- */
  .sns-lead {
    font-size: 1rem;
    text-align: left;
  }
  .section-sns .section-header {
    text-align: center;
    align-items: center;
  }
  .section-sns .section-heading-img-wrap {
    align-items: center;
  }
  .section-sns .section-eyebrow {
    text-align: center;
  }
  .section-sns .section-eyebrow::after {
    margin-inline: auto;
  }
  .sns-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--sp3);
    max-width: 100%;
    margin-inline: 0; /* 左寄せ */
  }
  .sns-card-inner {
    padding: var(--sp4) var(--sp3);
    min-height: 152px;
  }
  .sns-icon-wrap { width: 40px; height: 40px; }
  .sns-name {
    font-size: clamp(.75rem, 3vw, .875rem);
  }
  .sns-hashtag {
    text-align: center;
  }
  .sns-hashtag-tag {
    font-size: clamp(.95rem, 4.2vw, 1.25rem);
    word-break: normal;
  }

  /* ---- GOODS ---- */
  /* 見出し・リードテキストを左寄せ */
  .section-goods .section-header {
    text-align: left;
    align-items: flex-start;
  }
  .goods-heading-ja {
    text-align: center;
  }
  .goods-lead {
    text-align: left;
    font-size: 1rem; /* MESSAGE基準 */
  }
  .goods-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--sp3);
  }
  .goods-heading-img { max-width: 80%; }
  .goods-name {
    font-size: clamp(.85rem, 3.4vw, .9375rem);
    word-break: normal;
  }

  /* ---- BUTTONS (スマホ全幅・折り返し許可) ---- */
  .btn {
    white-space: normal;
    word-break: normal;
    overflow-wrap: break-word;
    height: auto;
    min-height: 58px;
    padding: var(--sp2) var(--sp4);
    min-width: 0;
    font-size: .9375rem;
    letter-spacing: .08em;
    line-height: 1.6;
    text-align: center;
  }
  .btn-large { min-height: 64px; font-size: 1rem; }
  .cta-sub-actions { flex-direction: column; align-items: stretch; }
  .cta-btn-sub { min-width: 0; width: 100%; }
  .concept-cta,
  .bridge-cta { width: 100%; min-width: 0; display: flex; }

  /* ---- CTA ---- */
  .cta-body { padding-inline: var(--sp4); }
  .cta-logo { max-width: clamp(180px, 60vw, 240px); }

  /* ---- 共通セクション余白 ---- */
  .section { padding-block: clamp(24px, 6vw, 56px); }

  /* ---- セクション見出し ---- */
  .section-heading-img { max-width: 78%; }

  /* ---- 見出し画像 隠れ防止：全セクションに z-index 確保 ---- */
  /* section-break の z-index:10 より上に積み、見出し画像を必ず前面に出す */
  .section-artists,
  .section-venue,
  .section-tickets,
  .section-info,
  .section-faq,
  .section-sns,
  .section-goods,
  .section-cta {
    position: relative;
    z-index: 20;
  }
  /* 各セクションの見出し画像はセクション内に収める（margin-topをリセット） */
  .section-heading-img-wrap {
    margin-top: 0;
    margin-bottom: var(--sp2);
  }
  /* 個別セクションの margin-top 上書きもリセット */
  .section-artists .section-heading-img-wrap,
  .section-tickets .section-heading-img-wrap,
  .section-info .section-heading-img-wrap,
  .section-faq .section-heading-img-wrap,
  .section-sns .section-heading-img-wrap {
    margin-top: 0;
  }
  .section-venue .section-heading-img-wrap {
    margin-top: -10px;   /* ★固定値 */
  }

  /* ---- SECTION NAV BTNS (mobile) ---- */
  .section-nav-btns {
    bottom: var(--sp4);
    right: var(--sp4);
    gap: 8px;
  }
  .section-nav-btn {
    width: 46px;
    height: 46px;
  }

  /* ---- TICKET GRID ---- */
  .ticket-grid {
    grid-template-columns: 1fr;
    gap: var(--sp3);
    margin-top: var(--sp5);
    width: 100%;
    box-sizing: border-box;
    overflow: hidden;
  }
  .ticket-card {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    min-width: 0;
    overflow: hidden;     /* カード全体ではみ出しを封じる */
  }
  .ticket-card-header,
  .ticket-card-body,
  .ticket-card-footer {
    padding-inline: var(--sp3);
    box-sizing: border-box;
    width: 100%;
    overflow: hidden;
  }
  /* カード内テキスト要素のはみ出し防止 */
  .ticket-name,
  .ticket-perks li,
  .ticket-note,
  .ticket-note-detail,
  .ticket-price,
  .ticket-tax,
  .ticket-tier {
    overflow-wrap: anywhere;
    word-break: normal;
    max-width: 100%;
  }

  /* ---- INFO ORGANIZER ---- */
  .info-organizer-body { padding: var(--sp5) var(--sp4); }

  /* ---- INFO ROW: \u30b9\u30de\u30db\u3067\u7e26\u4e26\u3073 ---- */
  .info-row {
    grid-template-columns: 1fr;
    gap: var(--sp1);
    padding: var(--sp3) var(--sp4);
  }
  .info-row dt {
    padding-top: 0;
    font-size: .68rem;
  }
  .info-row dd {
    font-size: 1rem; /* MESSAGE基準 */
    line-height: 1.9;
  }
  /* スマホではイベント名を折返し許可 */
  .info-event-name {
    white-space: normal;
  }
  .info-notes-list li {
    font-size: 1rem; /* MESSAGE基準 */
    line-height: 1.9;
  }

  /* ---- container: SP is 100% width + 20px side padding ---- */
  .container,
  .container-narrow {
    width: 100%;
    padding-inline: 20px;
    box-sizing: border-box;
  }

  /* ---- section-title-ja \u30b9\u30de\u30db\u5bfe\u5fdc ---- */
  .section-title-ja {
    font-size: clamp(1.6rem, 6.5vw, 2.8rem);
  }

  /* ---- concept-breath-box \u30b9\u30de\u30db\u5bfe\u5fdc ---- */
  .concept-breath-box {
    padding: var(--sp3) var(--sp3);
    margin-left: 0;
  }

  /* ---- \u30a2\u30af\u30bb\u30b9\u30c6\u30ad\u30b9\u30c8\u306e\u6298\u308a\u8fd4\u3057\u8a31\u53ef ---- */

  /* ---- \u30c1\u30b1\u30c3\u30c8\u30da\u30fc\u30b8 detail-info-table ---- */
  .detail-info-row {
    flex-direction: column;
    gap: 4px;
  }
  .detail-info-label {
    min-width: unset;
    width: auto;
  }
  .detail-info-value {
    overflow-wrap: anywhere;
  }

  /* ---- INFO詳細テーブル スマホ縦並び ---- */
  .info-row {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: var(--sp3) var(--sp4);
  }
  .info-row dt {
    padding-top: 0;
    font-size: .68rem;
  }
  .info-row dd {
    font-size: .9375rem;
    line-height: 1.8;
  }

  /* ---- cancel-supplement-text 折り返し ---- */

  /* ---- Simple Header (Legal/Contact pages) スマホ調整 ---- */
  .site-header--simple ~ main       { padding-top: 70px; }
  .site-header--simple .header-inner{ padding-block: 12px; }
  .site-header--simple .logo-img    { max-height: 32px; }
  .site-header--simple .logo-text   { font-size: 0.9rem; }
  .site-header--simple .logo-kana   { font-size: 0.65rem; }

  /* ================================================================
     はみ出し防止：全体
  ================================================================ */

  /* ページ全体の横スクロール完全封じ */
  html, body {
    overflow-x: hidden;
    max-width: 100vw;
  }

  /* 全要素：スマホ幅を超えないように */
  * {
    max-width: 100%;
    box-sizing: border-box;
  }

  /* 固定幅・min-width をリセット */
  .btn {
    min-width: 0;
    max-width: 100%;
  }
  .btn-large {
    min-width: 0;
  }

  /* white-space: nowrap によるはみ出しをリセット */
  .intro-video-heading-ja,
  .nowrap-pc {
    white-space: normal;
  }

  /* 画像・動画・埋め込みコンテンツ */
  img, video, iframe, embed, object {
    max-width: 100%;
    height: auto;
  }

  /* テーブルのはみ出し防止 */
  table {
    width: 100%;
    table-layout: fixed;
    overflow-wrap: anywhere;
  }

  /* ================================================================
     パフォーマンス最適化（スマホ）
  ================================================================ */

  /* 1. backdrop-filter は GPU負荷が高いためスマホでは無効化 */
  .site-header.scrolled,
  .nav-toggle,
  .mobile-nav,
  .intro-meta-card,
  .intro-video-title--below-player {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  /* ヘッダーのbackground代替（blurなし） */
  .site-header.scrolled {
    background: rgba(255,255,255,.97) !important;
  }
  .mobile-nav {
    background: rgba(10,5,25,.98) !important;
  }
  .nav-toggle {
    background: rgba(10,5,25,.85) !important;
  }

  /* 2. hover時のtransformをスマホでは無効化（タッチには不要） */
  .btn:hover,
  .ticket-card:hover,
  .artist-portfolio-btn:hover,
  .cta-apply-btn:hover,
  .cta-other-tickets-btn:hover {
    transform: none !important;
  }

  /* 3. 重いbox-shadowを軽量化 */
  .ticket-card {
    box-shadow: 0 2px 8px rgba(16,20,38,.08) !important;
  }

  /* 4. transition を短縮してレスポンス向上 */
  * {
    transition-duration: 0.15s !important;
  }
  /* アニメーション不要な要素は完全無効化 */
  .section-break,
  .sb-gap,
  #sb-fixed-bg {
    transition: none !important;
  }

} /* end @media 767px */


/* PC以上ではハンバーガー・モバイルナビを非表示 */
@media (min-width: 768px) {
  .nav-toggle { display: none !important; }
  .mobile-nav { display: none !important; visibility: hidden !important; pointer-events: none !important; }
}

/* ---- タブレット中間 (768px〜1024px) ---- */
@media (min-width: 768px) and (max-width: 1024px) {

  .intro-stack { max-width: 680px; }

  .artist-block,
  .artist-block--reverse {
    grid-template-columns: 280px 1fr;
  }

  .venue-why-grid {
    grid-template-columns: repeat(3, 1fr);
  }
  .venue-why-figure {
    aspect-ratio: 2/3;
  }

  .venue-split-block,
  .venue-split-block--reverse {
    gap: var(--sp5);
  }

  .sns-grid {
    grid-template-columns: repeat(2, 1fr);
  }

} /* end @media tablet */


/* スマートフォン横向き（ランドスケープ） */
@media (max-width: 926px) and (orientation: landscape) {
  .intro-video-player { max-height: 70vh; }
}

@media (max-width: 767px) {
  /* ---- ドームシュミレーション映像：gallery前動画と同サイズ ---- */
  .dome-video-section .intro-video-player-wrap {
    width: calc(100% - 48px);
  }
  .dome-video-footer {
    width: calc(100% - 48px);
  }

  .hero-social {
    margin-bottom: 44px; /* PC 24px + スマホ +20px */
  }
  .hero {
    height: 100svh;
    min-height: 500px;
  }
  .section-intro-video {
    padding-block: clamp(16px, 3vw, 24px) 0;
    margin-top: -50px;     /* ★ 上に引き上げ */
  }
  .section-gallery {
    padding-block-start: 16px;
    padding-block-end: 0;
    margin-bottom: -96px;
  }
  .gallery-cta {
    margin-top: 4px;
    margin-bottom: 0;
  }
  /* タイトル→動画を近づける */
  .intro-video-heading {
    margin-bottom: 57px; /* +15px */
  }
  .intro-video-heading-ja {
    font-size: clamp(1.32rem, 5.5vw, 1.98rem);
  }
  .gl-slider-wrap {
    margin-block: 57px 0; /* +15px */
  }
  /* スマホ: フッターのテキストサイズ調整 */
  .intro-video-footer .intro-video-title--below-player {
    padding: 6px 10px;
    font-size: clamp(.76rem, 3.2vw, .88rem) !important;
    text-align: left;
    white-space: normal;
  }
  .intro-video-footer .intro-video-subtitle {
    display: inline;
    font-size: .85em;
    color: rgba(255,255,255,.72);
    margin-left: .3em;
  }
  .intro-video-cta-group {
    max-width: 340px;
  }
  .intro-video-cta-group .btn {
    width: 85%;
  }
}

/* ============================
   LEGAL PAGE STYLES
=============================== */

.section-legal {
  /* INTROセクションと同じ深宇宙グラデーション背景 */
  background: linear-gradient(
    180deg,
    #0d1020 0%,
    #131530 25%,
    #1a1e40 50%,
    #131530 75%,
    #0d1020 100%
  );
  padding: clamp(100px, 15vw, 200px) 0;
  position: relative;
  overflow: hidden;
}

/* ネブラ装飾 — 宇宙感を演出するラジアルグロー */
.section-legal::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(
      ellipse 70% 50% at 20% 40%,
      rgba(108,77,255,0.15) 0%,
      transparent 70%
    ),
    radial-gradient(
      ellipse 60% 40% at 80% 60%,
      rgba(78,199,232,0.12) 0%,
      transparent 65%
    );
}

.section-legal .container {
  position: relative;
  z-index: 1;
}

.section-legal .section-heading {
  text-align: center;
  margin-bottom: clamp(var(--sp6), 8vw, var(--sp8));
}

.section-legal .section-heading-img {
  max-width: min(600px, 90%);
  height: auto;
  display: block;
  margin: 0 auto;
}

/* Privacy page用の見出しスタイル（暗い背景対応） */
.section-legal .section-eyebrow {
  color: var(--cyan);
  text-align: center;
}

/* ============================================================
   PERFORMANCE: prefers-reduced-motion
   端末の「視差効果を減らす」設定が有効な場合、
   常時ループするアニメーションを停止してバッテリー・CPU負荷を軽減
============================================================ */
@media (prefers-reduced-motion: reduce) {
  /* 常時ループ系アニメーションをすべて停止 */
  .btn-accent-pulse,
  .btn-accent-pulse::after,
  .nav-cta,
  .nav-cta::after,
  .scroll-indicator,
  .hero-nebula {
    animation: none !important;
  }
  /* transitionも短縮（完全に消すとUX悪化するため最短に） */
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}

/* ============================================================
   PERFORMANCE: スマホで重い backdrop-filter を無効化
   モバイルGPUは blur(20px以上) の compositing コストが高い
   → ヘッダー・モバイルナビは背景色で代替
============================================================ */
@media (max-width: 767px) {
  /* ヘッダー（スクロール後） */
  .site-header.scrolled {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(8, 4, 20, 0.96); /* 不透明度を上げて代替 */
  }
  /* モバイルナビ */
  .mobile-nav {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    background: rgba(10, 5, 25, 0.98);
  }
}

.section-legal .section-title-ja {
  color: var(--text-inverse);
  text-align: center;
}

.section-legal .legal-content {
  max-width: 900px !important;  /* 全画面幅に戻す */
  margin: 0 auto;
  padding: 0 var(--sp4);
}

.legal-content {
  max-width: 900px;
  margin: 0 auto;
  padding: 0 var(--sp4);
}

.legal-section {
  background: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(108, 77, 255, 0.15);
  border-radius: var(--r-lg);
  padding: var(--sp5);  /* clampを削除して固定値に */
  margin-bottom: var(--sp6);
  backdrop-filter: blur(24px);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
}

.legal-section-title {
  font-family: var(--font-mincho);
  font-size: clamp(1.25rem, 3.5vw, 1.75rem);  /* タイトルを少し縮小 */
  font-weight: 600;
  color: var(--text-heading);
  margin-bottom: var(--sp4);  /* 余白を縮小 */
  padding-bottom: var(--sp2);  /* 余白を縮小 */
  border-bottom: 2px solid var(--violet);
  letter-spacing: 0.08em;
}

.legal-table {
  display: flex;
  flex-direction: column;
  gap: var(--sp3);
}

.legal-row {
  display: grid;
  grid-template-columns: 120px 1fr;  /* 140px → 120px でさらにコンパクトに */
  gap: var(--sp2);  /* ギャップを縮小 */
  padding: var(--sp3);
  background: rgba(255, 255, 255, 0.5);
  border-radius: var(--r-sm);
  border: 1px solid rgba(108, 77, 255, 0.08);
}

.legal-label {
  font-family: var(--font-mincho);
  font-size: 0.8125rem;  /* 0.875rem → 0.8125rem で少し縮小 */
  font-weight: 600;
  color: var(--violet);
  letter-spacing: 0.05em;
}

.legal-value {
  font-family: var(--font-mincho);
  font-size: 0.9375rem;  /* 1rem → 0.9375rem で少し縮小 */
  line-height: 1.8;  /* 1.9 → 1.8 で行間縮小 */
  color: var(--text-heading);
}

.legal-value a {
  color: var(--violet);
  text-decoration: underline;
  transition: color var(--t-base);
}

.legal-value a:hover {
  color: var(--pink);
}

.legal-note {
  display: block;
  font-size: 0.8125rem;
  color: var(--text-sub);
  margin-top: 0.75em;
  padding-top: 0.5em;
  border-top: 1px solid rgba(108, 77, 255, 0.08);
}

.cancel-policy-intro {
  font-family: var(--font-mincho);
  font-size: 1.0625rem;
  line-height: 2;
  color: var(--text-heading);
  margin-bottom: var(--sp4);
  padding: var(--sp3);
  background: rgba(230, 90, 168, 0.05);
  border-left: 4px solid var(--pink);
  border-radius: var(--r-sm);
}

.cancel-table-wrap {
  overflow-x: auto;
  margin-bottom: var(--sp4);
}

.cancel-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mincho);
}

.cancel-table thead {
  background: linear-gradient(135deg, var(--violet), var(--pink));
  color: white;
}

.cancel-table th,
.cancel-table td {
  padding: var(--sp3);
  text-align: left;
  border: 1px solid rgba(108, 77, 255, 0.15);
}

.cancel-table th {
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 0.08em;
}

.cancel-table td {
  font-size: 1rem;
  line-height: 1.8;
  background: rgba(255, 255, 255, 0.6);
}

.cancel-table tbody tr:hover td {
  background: rgba(108, 77, 255, 0.05);
}

.cancel-policy-notes {
  display: flex;
  flex-direction: column;
  gap: var(--sp2);
}

.legal-note-item {
  font-family: var(--font-mincho);
  font-size: 0.9375rem;
  color: var(--text-sub);
  padding-left: 1.2em;
  position: relative;
}

.legal-note-item::before {
  content: "※";
  position: absolute;
  left: 0;
  color: var(--pink);
  font-weight: 600;
}

.legal-back {
  text-align: center;
  margin-top: var(--sp6);
}

/* Responsive: Legal Page */
@media (max-width: 767px) {
  .legal-row {
    grid-template-columns: 1fr;
    gap: var(--sp2);
  }
  
  .legal-label {
    font-size: 0.8125rem;
    padding-bottom: var(--sp1);
    border-bottom: 1px solid rgba(108, 77, 255, 0.2);
  }
  
  .legal-value {
    font-size: 0.9375rem;
  }
  
  .cancel-table th,
  .cancel-table td {
    padding: var(--sp2);
    font-size: 0.875rem;
  }
}

/* ============================
   PRIVACY POLICY STYLES
=============================== */

.privacy-intro {
  font-family: var(--font-mincho);
  font-size: 1rem;
  line-height: 2;
  color: var(--text-heading);
  margin-bottom: var(--sp5);
}

.privacy-intro p {
  margin-bottom: var(--sp3);
}

.privacy-policy-list {
  list-style: none;
  padding: 0;
  margin: var(--sp4) 0;
}

.privacy-policy-list li {
  font-family: var(--font-mincho);
  font-size: 1rem;
  line-height: 2;
  color: var(--text-heading);
  padding-left: 1.5em;
  margin-bottom: var(--sp3);
  position: relative;
}

.privacy-policy-list li::before {
  content: "•";
  position: absolute;
  left: 0;
  color: var(--violet);
  font-size: 1.2em;
  font-weight: bold;
}

.privacy-signature {
  margin-top: var(--sp5);
  text-align: right;
  font-family: var(--font-mincho);
}

.privacy-signature p {
  font-size: 1rem;
  color: var(--text-heading);
  margin-bottom: var(--sp2);
}

.privacy-date {
  font-size: 0.875rem;
  color: var(--text-sub);
}

.privacy-subtitle {
  font-family: var(--font-mincho);
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--text-heading);
  margin: var(--sp4) 0 var(--sp3);
  padding-left: var(--sp2);
  border-left: 3px solid var(--violet);
}

.privacy-contact {
  font-family: var(--font-mincho);
  font-size: 1rem;
  line-height: 2;
  color: var(--text-heading);
  padding: var(--sp4);
  background: rgba(108, 77, 255, 0.03);
  border-radius: var(--r-sm);
  margin: var(--sp3) 0;
}

.privacy-contact p {
  margin-bottom: var(--sp2);
}

.privacy-contact a {
  color: var(--violet);
  text-decoration: underline;
}

.privacy-note {
  font-size: 0.875rem;
  color: var(--text-sub);
  margin-top: var(--sp1);
}

.privacy-procedure {
  margin: var(--sp4) 0;
}

.privacy-procedure p {
  font-family: var(--font-mincho);
  font-size: 1rem;
  line-height: 2;
  color: var(--text-heading);
  margin-bottom: var(--sp3);
}

.privacy-procedure strong {
  color: var(--violet);
  font-weight: 600;
}

/* Responsive: Privacy Page */
@media (max-width: 767px) {
  .privacy-intro,
  .privacy-policy-list li,
  .privacy-contact,
  .privacy-procedure p {
    font-size: 0.9375rem;
  }
  
  .privacy-subtitle {
    font-size: 1rem;
  }
}

/* ============================
   CONTACT PAGE STYLES
=============================== */

/* Simple Header for Legal & Contact Pages */
.site-header--simple {
  background: linear-gradient(
    180deg,
    rgba(8, 10, 20, 0.65) 0%,
    rgba(13, 16, 32, 0.75) 100%
  );
  backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(108, 77, 255, 0.35);
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}

/* ヘッダー内の光エフェクト */
.site-header--simple::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(
    ellipse 60% 100% at 50% 0%,
    rgba(108, 77, 255, 0.12) 0%,
    transparent 70%
  );
  pointer-events: none;
}

.site-header--simple .header-inner {
  justify-content: center;
  position: relative;
  z-index: 1;
  padding-block: var(--sp2);  /* ヘッダーの高さを縮小 */
}

.site-header--simple .site-logo {
  margin: 0;
  transition: all var(--t-base);
}

/* PCでもロゴを小さく */
.site-header--simple .logo-img {
  max-height: 28px;
}

.site-header--simple .logo-text {
  font-size: 0.95rem;
}

.site-header--simple .logo-kana {
  font-size: 0.65rem;
}

.site-header--simple .site-logo:hover {
  transform: translateY(-1px);
}

.site-header--simple .site-logo:hover .logo-text {
  text-shadow: 0 0 16px rgba(108, 77, 255, 0.6);
}

.site-header--simple .site-logo:hover .logo-img {
  filter: drop-shadow(0 0 10px rgba(108, 77, 255, 0.4));
}

/* コンテンツのパディング調整（ヘッダー分） */
.site-header--simple ~ main {
  padding-top: 60px;  /* 80px → 60px に縮小 */
}

/* ↑ Simple Headerのスマホ対応はメイン @media (max-width:767px) ブロックに統合済み */

.section-contact {
  /* INTROセクションと同じ深宇宙グラデーション背景 */
  background: linear-gradient(
    180deg,
    #0d1020 0%,
    #131530 25%,
    #1a1e40 50%,
    #131530 75%,
    #0d1020 100%
  );
  padding: clamp(100px, 15vw, 200px) 0;
  position: relative;
  overflow: hidden;
}

/* ネブラ装飾 — 宇宙感を演出するラジアルグロー */
.section-contact::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(
      ellipse 65% 45% at 30% 50%,
      rgba(230,90,168,0.12) 0%,
      transparent 70%
    ),
    radial-gradient(
      ellipse 55% 35% at 70% 40%,
      rgba(201,166,107,0.10) 0%,
      transparent 65%
    );
}

.section-contact .container {
  position: relative;
  z-index: 1;
}

.section-contact .section-heading {
  text-align: center;
  margin-bottom: clamp(var(--sp6), 8vw, var(--sp8));
}

.section-contact .section-heading-img {
  max-width: min(600px, 90%);
  height: auto;
  display: block;
  margin: 0 auto;
}

.section-contact .contact-content {
  max-width: 900px !important;  /* 全画面幅に戻す */
  margin: 0 auto;
  padding: 0 var(--sp4);
}

.contact-content {
  max-width: 900px;
  margin: 0 auto;
  padding: 0 var(--sp4);
}

.contact-form-wrap {
  background: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(108, 77, 255, 0.15);
  border-radius: var(--r-lg);
  padding: var(--sp5);  /* clampを削除して固定値に */
  margin-bottom: var(--sp6);
  backdrop-filter: blur(24px);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
}

.contact-form {
  max-width: 100%;  /* 580px → 100% でコンテナ内いっぱいに */
  margin: 0 auto;
}

.form-group {
  margin-bottom: var(--sp5);
}

.form-label {
  display: block;
  font-family: var(--font-mincho);
  font-size: 0.9375rem;  /* 1rem → 0.9375rem で少し縮小 */
  font-weight: 600;
  color: var(--text-heading);
  margin-bottom: var(--sp2);
  letter-spacing: 0.05em;
}

.form-required {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 600;
  color: white;
  background: linear-gradient(135deg, var(--pink), var(--violet));
  padding: 2px 8px;
  border-radius: 4px;
  margin-left: 8px;
  letter-spacing: 0.08em;
}

.form-optional {
  display: inline-block;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--text-sub);
  background: rgba(108, 77, 255, 0.08);
  padding: 2px 8px;
  border-radius: 4px;
  margin-left: 8px;
  letter-spacing: 0.08em;
}

.form-input,
.form-textarea {
  width: 100%;
  font-family: var(--font-mincho);
  font-size: 0.9375rem;  /* 1rem → 0.9375rem で少し縮小 */
  color: var(--text-heading);
  background: rgba(255, 255, 255, 0.9);
  border: 2px solid rgba(108, 77, 255, 0.15);
  border-radius: var(--r-sm);
  padding: var(--sp3);
  transition: all var(--t-base);
  outline: none;
}

.form-input:focus,
.form-textarea:focus {
  border-color: var(--violet);
  background: #FAF8FD;
  box-shadow: 0 0 0 4px rgba(108, 77, 255, 0.1);
}

.form-input::placeholder,
.form-textarea::placeholder {
  color: var(--text-muted);
}

.form-textarea {
  resize: vertical;
  min-height: 180px;
  line-height: 1.8;
}

.form-submit {
  text-align: center;
  margin-top: var(--sp6);
  margin-bottom: var(--sp4);
}

.form-submit-btn {
  min-width: 280px;
  cursor: pointer;
}

.form-submit-btn:hover {
  transform: translateY(-2px);
}

.form-note {
  font-family: var(--font-mincho);
  font-size: 0.875rem;
  line-height: 1.9;
  color: var(--text-sub);
  text-align: center;
  margin-top: var(--sp3);
}

/* Responsive: Form */
@media (max-width: 767px) {
  .form-label {
    font-size: 0.9375rem;
  }
  
  .form-input,
  .form-textarea {
    font-size: 16px; /* iOS zoom防止 */
    padding: var(--sp2) var(--sp3);
  }
  
  .form-submit-btn {
    min-width: 100%;
  }
}

.contact-direct {
  background: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(108, 77, 255, 0.15);
  border-radius: var(--r-lg);
  padding: clamp(var(--sp5), 5vw, var(--sp7));
  margin-bottom: var(--sp6);
  backdrop-filter: blur(24px);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
  text-align: center;
}

.contact-direct-title {
  font-family: var(--font-mincho);
  font-size: clamp(1.3rem, 3.5vw, 1.75rem);
  font-weight: 600;
  color: var(--text-heading);
  margin-bottom: var(--sp3);
  letter-spacing: 0.08em;
}

.contact-direct-text {
  font-family: var(--font-mincho);
  font-size: 1rem;
  line-height: 2;
  color: var(--text-main);
  margin-bottom: var(--sp4);
}

.contact-email {
  margin: var(--sp4) 0;
}

.contact-email a {
  display: inline-block;
  font-family: var(--font-mincho);
  font-size: clamp(1.1rem, 3vw, 1.5rem);
  font-weight: 600;
  color: var(--violet);
  text-decoration: none;
  padding: var(--sp3) var(--sp5);
  background: rgba(108, 77, 255, 0.08);
  border: 2px solid var(--violet);
  border-radius: var(--r-md);
  transition: all var(--t-base);
}

.contact-email a:hover {
  background: var(--violet);
  color: white;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(108, 77, 255, 0.3);
}

.contact-note {
  font-family: var(--font-mincho);
  font-size: 0.875rem;
  line-height: 1.9;
  color: var(--text-sub);
  margin-top: var(--sp3);
}

.contact-back {
  text-align: center;
  margin-top: var(--sp6);
}

.contact-back .btn,
.legal-back .btn {
  background: var(--grad-accent-cta);
  border: none;
  color: white;
  box-shadow: 0 4px 20px rgba(230, 90, 168, 0.3);
  transition: transform var(--t-base), box-shadow var(--t-base);
}

.contact-back .btn:hover,
.legal-back .btn:hover {
  background: var(--grad-accent-cta);
  transform: translateY(-2px);
  box-shadow: 0 8px 32px rgba(230, 90, 168, 0.4);
}

/* Responsive: Contact Page */
@media (max-width: 767px) {
  .contact-email a {
    font-size: 1rem;
    padding: var(--sp2) var(--sp3);
    word-break: break-all;
  }
  
  .section-heading-ja {
    font-size: clamp(0.65rem, 3vw, 0.85rem);
  }
  
  /* INFO セクションの見出しは特に小さく */
  .section-info .section-heading-ja {
    font-size: clamp(0.6rem, 2.8vw, 0.75rem);
    letter-spacing: 0.2em;
  }
  
  .section-desc {
    font-size: 0.9375rem;
  }
}

/* ↑ スマホ全体調整は上記 @media (max-width:767px) 内に統合済み */

/* 会場名 */
.venue-name {
  display: block;
  white-space: normal;
  line-height: 1.7;
}
.venue-name-sub {
  display: block;
  font-size: .8em;
  font-weight: 400;
  color: var(--text-sub);
  letter-spacing: .08em;
  margin-top: .2em;
}

/* 会場名の改行はメインSPブロック内で制御 */
