/* ================================================================
   JASMAC YAKUMO WEDDING — main.css
   Figmaデザイン（9gTRPslS3CvOU1CZ5LnzWN）忠実実装
   canvas 1728px / container 1200px
================================================================ */

/* ----------------------------------------------------------------
   1. DESIGN TOKENS
---------------------------------------------------------------- */
:root {
  --c-accent:   #b05a63;
  --c-wine:     #9c4f59;
  --c-reserve:  #a2505a;
  --c-fair:     #5f9079;
  --c-black:    #000;
  --c-white:    #fff;
  --c-gray:     #d9d9d9;
  --c-overlay-kv: rgba(205,202,202,0.43);

  --font-jp: 'Noto Serif JP', serif;
  --font-en: 'Playfair Display', serif;

  --container: 1200px;
  --gutter: clamp(20px, 4vw, 68px);
  --header-h: 86px;
  --sec-py: clamp(60px, 7vw, 120px);
}

/* ----------------------------------------------------------------
   2. RESET / BASE
---------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-jp);
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--c-black);
  background: var(--c-white);
}
img, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }

/* ----------------------------------------------------------------
   3. LAYOUT HELPERS
---------------------------------------------------------------- */
.l-container {
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.l-section { padding-block: var(--sec-py); }
.l-main { padding-top: var(--header-h); }
.l-main--hero { padding-top: 0; }

/* ----------------------------------------------------------------
   4. COMMON COMPONENTS
---------------------------------------------------------------- */
/* セクション英語見出し 32px Playfair Bold italic #b05a63 tracking 3.2px */
.c-sec-h {
  font-family: var(--font-en);
  font-weight: 700;
  font-style: italic;
  font-size: clamp(1.5rem, 2.5vw, 2rem); /* 32px */
  color: var(--c-accent);
  letter-spacing: .2em;
  line-height: 1.2;
  margin-bottom: .8em;
}

/* ◄ ──── View more */
.c-viewmore {
  display: inline-flex;
  align-items: center;
  gap: .5em;
  font-family: var(--font-en);
  font-weight: 700;
  font-style: italic;
  font-size: 1rem;
  color: var(--c-accent);
  letter-spacing: .1em;
}
.c-viewmore__line {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  flex-shrink: 0;
}
.c-viewmore__line::before {
  content: '';
  display: block;
  width: 0; height: 0;
  border-top: 3.5px solid transparent;
  border-bottom: 3.5px solid transparent;
  border-right: 5px solid var(--c-accent);
}
.c-viewmore__line::after {
  content: '';
  display: block;
  width: 80px;
  height: 1px;
  background: var(--c-accent);
}

.u-center { text-align: center; }
.u-sp-only { display: none; }

/* フェードイン */
.js-fade {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .7s ease, transform .7s ease;
}
.js-fade.is-shown { opacity: 1; transform: none; }

/* ----------------------------------------------------------------
   5. HEADER (86px固定)
---------------------------------------------------------------- */
.l-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  height: var(--header-h);
  background: var(--c-white);
  box-shadow: 0 4px 4px rgba(0,0,0,.25);
  display: flex;
  align-items: center;
  justify-content: center;
}
/* WordPress管理バー（ログイン時のみ）分だけ固定ヘッダーを下げ、Title帯との隙間を防ぐ */
body.admin-bar .l-header { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar .l-header { top: 46px; }
}
.l-header__brand {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 1.25rem;
  letter-spacing: .1em;
  color: var(--c-black);
  text-transform: uppercase;
}
.l-header__toggle {
  position: absolute;
  right: clamp(20px, 5vw, 88px);
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  cursor: pointer;
  width: 28px; height: 20px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 0;
}
.l-header__toggle span {
  display: block;
  height: 1.5px;
  background: var(--c-black);
  transition: transform .3s, opacity .3s;
}
.is-nav-open .l-header__toggle span:nth-child(1) { transform: translateY(9px) rotate(45deg); }
.is-nav-open .l-header__toggle span:nth-child(2) { opacity: 0; }
.is-nav-open .l-header__toggle span:nth-child(3) { transform: translateY(-9px) rotate(-45deg); }

/* サイドタブ RESERVE / FAIR */
.l-sidetab {
  position: fixed;
  right: 0;
  top: calc(var(--header-h) + 160px); /* タイトル帯（高さ160px）の直下 */
  z-index: 90;
  display: flex;
  flex-direction: column;
}
/* 管理バー表示時はその分だけ下げる */
body.admin-bar .l-sidetab { top: calc(var(--header-h) + 160px + 32px); }
.l-sidetab__item {
  writing-mode: vertical-rl;
  display: block;
  padding: 20px 12px;
  font-family: var(--font-jp);
  font-size: .875rem;
  letter-spacing: .1em;
  color: var(--c-white);
  text-align: center;
}
.l-sidetab__item--reserve { background: var(--c-reserve); }
.l-sidetab__item--fair    { background: var(--c-fair); }
.l-sidetab__item:hover { opacity: .9; }

/* アンカー（#fair-reserve 等）は固定ヘッダー分のオフセットを確保 */
html { scroll-behavior: smooth; }
#fair-reserve { scroll-margin-top: 110px; }

/* グローバルナビ 展開メニュー（Figma 163-3257/164-3315/164-3316）
   クリーム背景・2カラム×5項目（英Noto Serif JP Bold20px＋和14px・accent）＋下段3項目 */
.l-gnav {
  position: fixed;
  inset: 0;
  background: #fffef7; /* クリーム（BG 163-3257） */
  z-index: 99;
  display: flex;
  flex-direction: column;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .35s;
  overflow-y: auto;
  padding: calc(var(--header-h) + 48px) 24px 56px;
}
.is-nav-open .l-gnav { opacity: 1; pointer-events: all; }
.l-gnav__inner { width: 100%; max-width: 620px; margin-inline: auto; }
.l-gnav__main {
  display: grid;
  grid-template-columns: auto auto; /* 内容幅の2列 */
  grid-template-rows: repeat(5, auto);
  grid-auto-flow: column;
  justify-content: center;          /* 列ブロックを中央へ（下段と中心を揃える） */
  column-gap: clamp(80px, 14vw, 180px);
  row-gap: 52px;
}
.l-gnav__item a { display: block; color: var(--c-accent); }
.l-gnav__en {
  display: block;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  letter-spacing: .1em;
  line-height: 1.2;
}
.l-gnav__jp {
  display: block;
  font-size: .875rem; /* 14px */
  letter-spacing: .1em;
  margin-top: 8px;
}
.l-gnav__item a:hover { opacity: .6; }
.l-gnav__sub {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 24px 128px; /* Figma: 項目間 128px */
  margin-top: 90px; /* Figma: menu1〜menu2 間 90px */
}
.l-gnav__sub a { display: block; color: var(--c-accent); text-align: center; }
.l-gnav__sub .l-gnav__en { font-size: 1.125rem; /* 18px */ }
.l-gnav__sub a:hover { opacity: .6; }

/* ----------------------------------------------------------------
   6. FOOTER (157px black)
---------------------------------------------------------------- */
.l-footer {
  position: relative;
  z-index: 2;
  background: var(--c-black);
  color: var(--c-white);
  text-align: center;
  padding-block: 30px;
}
.l-footer__nav {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: .875rem; /* 14px */
  letter-spacing: .1em;
  margin-bottom: 32px;
}
.l-footer__nav li + li::before {
  content: "|";
  margin: 0 1em;
  color: var(--c-white);
  font-weight: 300;
}
.l-footer__nav a:hover { color: var(--c-accent); }
.l-footer__copy {
  font-size: .75rem; /* 12px */
  letter-spacing: .1em;
}

/* ----------------------------------------------------------------
   7. KV
---------------------------------------------------------------- */
.p-kv {
  position: relative;
  width: 100%;
  height: 100svh;
  min-height: 600px;
  overflow: hidden;
}
.p-kv__slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity 1.4s ease;
}
.p-kv__slide.is-active { opacity: 1; }
.p-kv__overlay {
  position: absolute;
  inset: 0;
  background: var(--c-overlay-kv);
  z-index: 1;
}

/* テキストブロック 右寄せ・垂直中央 */
.p-kv__body {
  position: absolute;
  right: clamp(24px, 8vw, 140px);
  top: 45%;
  transform: translateY(-50%);
  z-index: 2;
  text-align: right;
}
/* JASMAC WEDDING 64px */
.p-kv__title {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: clamp(2rem, 3.6vw, 3rem); /* 最大48px（旧64px）：In frameとの差を縮める */
  color: var(--c-white);
  letter-spacing: .1em;
  text-shadow: 0 4px 4px rgba(0,0,0,.25);
  line-height: 1.1;
  margin-bottom: .4em;
}
/* In frame 36px #b05a63 italic */
.p-kv__tag {
  font-family: var(--font-en);
  font-weight: 700;
  font-style: italic;
  font-size: clamp(1.5rem, 2.5vw, 2.25rem);
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.2;
  text-shadow: 0 2px 8px rgba(0,0,0,.55); /* 明るいKV背景でも視認できるよう影付与 */
}
/* サブテキスト 16px white */
.p-kv__sub {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1rem;
  color: var(--c-white);
  letter-spacing: .1em;
  margin-top: .3em;
  text-shadow: 0 2px 6px rgba(0,0,0,.45);
}

/* ページャー */
.p-kv__pager {
  position: absolute;
  right: clamp(24px, 8vw, 140px);
  bottom: 120px;
  z-index: 2;
  display: flex;
  gap: 8px;
}
.p-kv__pager span {
  display: block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,.5);
  transition: background .3s;
}
.p-kv__pager span.is-active { background: var(--c-white); }

/* リードバー（底部白帯） 24px */
.p-kv__leadbar {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  z-index: 2;
  background: rgba(255,255,255,.94);
  padding: 22px var(--gutter);
  font-family: var(--font-jp);
  font-size: clamp(1rem, 1.4vw, 1.5rem);
  color: var(--c-black);
  letter-spacing: .1em;
  text-align: center;
  white-space: nowrap;
}

/* ----------------------------------------------------------------
   8. INTRODUCTION（sticky In frame の上を白背景でスクロール）
   Left 40%: 見出し + テキスト + 花嫁写真
   Right 60%: 縦長屋外写真
---------------------------------------------------------------- */
.p-intro {
  position: relative;
  z-index: 1;
  background: transparent;
}
.p-intro__inner {
  display: grid;
  grid-template-columns: 4fr 6fr;
  gap: clamp(32px, 5vw, 80px);
  align-items: start;
}
.p-intro__left {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
.p-intro__body p {
  font-size: 1rem;
  line-height: 1.75;
  letter-spacing: .1em;
  margin-bottom: .8em;
}
.p-intro__body p:last-child { margin-bottom: 0; }
.p-intro__bride img {
  width: 100%;
  object-fit: cover;
}
.p-intro__right img {
  width: 100%;
  height: 100%;
  max-height: 1020px;
  object-fit: cover;
}

/* ----------------------------------------------------------------
   9. STYLE & PLAN
---------------------------------------------------------------- */
.p-style__inner { max-width: 700px; }
.p-style__body p {
  font-size: 1rem;
  line-height: 1.75;
  letter-spacing: .1em;
  margin-bottom: .8em;
}
.p-style__body p:last-child { margin-bottom: 0; }
.p-style__more {
  margin-top: 2.5rem;
  display: flex;
  justify-content: flex-end;
  max-width: 900px;
}

/* ----------------------------------------------------------------
   8.5. 植物テクスチャ固定背景（node 3:156）
        position: fixed — コンテンツ背後に常時表示
---------------------------------------------------------------- */
.p-botanical-fixed {
  position: fixed;
  top: var(--header-h);
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 0;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
  pointer-events: none;
}

/* fixed 背景の上に content を乗せる（固定背景レイヤーだけ除外） */
.l-main > *:not(.p-botanical-fixed):not(.p-sp-botanical-fixed) {
  position: relative;
  z-index: 1;
}
.p-botanical-fixed {
  position: fixed !important;
  z-index: 0;
}

/* ----------------------------------------------------------------
   10. INTERVAL（全幅写真）
   上マット: 白ソリッド→フェード（Figma実装準拠）
---------------------------------------------------------------- */
.p-interval {
  position: relative;
  width: 100%;
  height: clamp(300px, 42vw, 630px);
  overflow: hidden;
}
.p-interval img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 30%;
}
/* 白マット（全面）：Cuisine & Item と同じ uniform overlay */
.p-interval__overlay {
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.55);
  pointer-events: none;
  z-index: 2;
}

/* ----------------------------------------------------------------
   11. ARCHITECTURE
   Left 40%: テキスト / Right 60%: 写真
---------------------------------------------------------------- */
.p-arch__inner {
  display: grid;
  grid-template-columns: 4fr 6fr;
  gap: clamp(32px, 5vw, 80px);
  align-items: center;
}
.p-arch__text {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.p-arch__body p {
  font-size: 1rem;
  line-height: 1.75;
  letter-spacing: .1em;
  margin-bottom: .8em;
}
.p-arch__body p:last-child { margin-bottom: 0; }
.p-arch__photo img {
  width: 100%;
  height: clamp(280px, 35vw, 446px);
  object-fit: cover;
}

/* ----------------------------------------------------------------
   12. CEREMONY & PARTY
   Left 58%: 写真 / Right 42%: テキスト
---------------------------------------------------------------- */
.p-ceremony__inner {
  display: grid;
  grid-template-columns: 58fr 42fr;
  gap: clamp(32px, 4vw, 64px);
  align-items: center;
}
.p-ceremony__photo img {
  width: 100%;
  height: clamp(280px, 35vw, 560px);
  object-fit: cover;
}
.p-ceremony__text {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.p-ceremony__body p {
  font-size: 1rem;
  line-height: 1.75;
  letter-spacing: .1em;
  margin-bottom: .8em;
}
.p-ceremony__body p:last-child { margin-bottom: 0; }

/* ----------------------------------------------------------------
   13. CUISINE & ITEM
   全幅背景 rgba(255,255,255,0.8) オーバーレイ
   Left: 見出し / Right: テキスト + View more
---------------------------------------------------------------- */
.p-cuisine__bg {
  position: relative;
  background-size: cover;
  background-position: center;
}
.p-cuisine__overlay {
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,.8);
}
.p-cuisine__inner {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 3fr 7fr;
  gap: clamp(24px, 4vw, 60px);
  align-items: start;
  padding-block: var(--sec-py);
}
.p-cuisine__heading { margin-bottom: 0; padding-top: .2em; }
.p-cuisine__right {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
.p-cuisine__body p {
  font-size: 1rem;
  line-height: 1.75;
  letter-spacing: .1em;
  margin-bottom: .8em;
}
.p-cuisine__body p:last-child { margin-bottom: 0; }

/* ----------------------------------------------------------------
   14. BRIDAL FAIR
---------------------------------------------------------------- */
.p-fair__desc {
  font-size: 1rem;
  line-height: 1.75;
  letter-spacing: .1em;
  text-align: center;
  max-width: 1100px;
  margin-inline: auto;
  margin-bottom: clamp(40px, 5vw, 80px);
}
.p-fair__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 3vw, 40px);
  margin-bottom: 2.5rem;
}
.p-fair__item {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.p-fair__img {
  display: block;
  overflow: hidden;
  aspect-ratio: 4/3;
  background: var(--c-gray);
}
.p-fair__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .4s ease;
}
.p-fair__img:hover img { transform: scale(1.04); }
.p-fair__title {
  font-size: .9375rem;
  line-height: 1.65;
  letter-spacing: .08em;
}
.p-fair__title a:hover { color: var(--c-accent); }
.p-fair__more { display: flex; justify-content: flex-end; }

/* ----------------------------------------------------------------
   15. INSTAGRAM
---------------------------------------------------------------- */
.p-insta__widget {
  max-width: 980px;
  margin-inline: auto;
  margin-top: 2rem;
}
.p-insta__placeholder { width: 100%; height: auto; }

/* ----------------------------------------------------------------
   16. ACCESS & MAP
---------------------------------------------------------------- */
.p-access { padding-bottom: var(--sec-py); }
.p-access > .l-container { padding-top: var(--sec-py); }
.p-access__map {
  position: relative;
  width: 100%;
  height: clamp(280px, 40vw, 616px);
  background: var(--c-gray);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-block: 2.5rem;
}
.p-access__map iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: none;
}
.p-access__map-label {
  font-weight: 700;
  font-size: 2rem;
  letter-spacing: .2em;
  position: relative;
  z-index: 1;
}
.p-access__info {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 2rem;
}
.p-access__address p {
  font-size: 1rem;
  line-height: 1.75;
  letter-spacing: .1em;
  margin-bottom: .5em;
}
.p-access__address a:hover { color: var(--c-accent); }

/* ================================================================
   16.5 下層ページ共通（Title帯 / パンくず）
================================================================ */
/* Title帯（node 131-28）: 全幅・h160px・背景写真cover・中央見出し */
.l-pagetitle {
  position: relative;
  width: 100%;
  height: 160px;
  margin-top: var(--header-h); /* 固定ヘッダーの直下に置く */
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--c-accent); /* 背景写真が無いページ（Company/Privacy等）の無地帯フォールバック */
}
/* 下層は page-head がオフセットを持つので l-main の padding-top を打ち消す */
.l-pagetitle ~ .l-main { padding-top: 0; }
.l-pagetitle__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
}
.l-pagetitle__en {
  position: relative;
  z-index: 1;
  margin: 0;
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 2rem; /* 32px */
  color: var(--c-white);
  letter-spacing: .1em;
  line-height: 1;
  text-shadow: 0 4px 4px rgba(0,0,0,.25);
}

/* パンくず（node 10-108）: Home=黒 / 現在地=アクセント */
.c-breadcrumb {
  margin: 20px 0 0;
  font-family: var(--font-jp);
  font-size: .75rem; /* 12px */
  letter-spacing: .1em;
  line-height: 24px;
  color: var(--c-black);
}
.c-breadcrumb__home { color: var(--c-black); }
.c-breadcrumb__home:hover { color: var(--c-accent); }
.c-breadcrumb__sep { margin: 0 .35em; }
.c-breadcrumb__current { color: var(--c-accent); }

/* ================================================================
   16.6 Architecture — MV（node 131-29）
================================================================ */
.p-archmv { margin-top: clamp(28px, 4vw, 48px); }
.p-archmv__photo {
  position: relative;
  aspect-ratio: 1100 / 688;
  border-radius: 8px; /* Figma未出力のため控えめに。要確認 */
  overflow: hidden;
}
.p-archmv__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.p-archmv__pager {
  position: absolute;
  right: 24px;
  bottom: 24px;
  display: flex;
  gap: 12px;
}
.p-archmv__pager span {
  width: 10px;
  height: 10px;
  transform: rotate(45deg); /* ひし形 */
  border: 1px solid var(--c-white);
  background: transparent;
}
.p-archmv__pager span.is-active {
  background: var(--c-accent);
  border-color: var(--c-accent);
}

/* ================================================================
   16.7 Architecture — Award（node 25-916）
================================================================ */
.p-award__lead {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.6;
}
.p-award__lead-body {
  margin-top: 24px;
  font-family: var(--font-jp);
  font-size: 1rem; /* 16px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.5; /* 24px */
}
.p-award__prize {
  position: relative;
  margin-top: clamp(32px, 4vw, 56px);
  padding-block: clamp(28px, 4vw, 48px);
}
/* 植物テクスチャ背景 opacity20%（node 13:56） */
.p-award__prize-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: .2;
  z-index: 0;
  pointer-events: none;
}
.p-award__prize-inner {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 256px 1fr;
  gap: clamp(24px, 3vw, 40px);
  align-items: start;
  padding-inline: clamp(20px, 5vw, 78px); /* 賞状の左インデント（Figma x差分≒78px） */
}
.p-award__cert { width: 256px; }
.p-award__cert img {
  width: 256px;
  height: 360px;
  object-fit: cover;
  display: block;
  box-shadow: 0 4px 4px rgba(0,0,0,.25);
}
.p-award__prize-h {
  margin: 0;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-black); /* アクセント色ではない */
  letter-spacing: .1em;
  line-height: 1.6;
}
/* 見出し下の区切り線（node 13:60・色はFigma未出力のため控えめなグレー。要確認） */
.p-award__rule {
  display: block;
  width: 100%;
  max-width: 653px;
  height: 1px;
  margin: 16px 0 20px;
  background: var(--c-gray);
}
.p-award__prize-body p {
  font-family: var(--font-jp);
  font-size: 1rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.5;
}
.p-award__prize-body p + p { margin-top: 1.5em; } /* 段落間の空行を再現 */

/* ================================================================
   16.8 Architecture — Plugin（間取り図・後日ImageLinks差し替え）
================================================================ */
.p-plugin__placeholder {
  aspect-ratio: 794 / 829;
  max-width: 794px;
  margin-inline: auto;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--c-gray);
  color: var(--c-white);
  font-family: var(--font-jp);
  letter-spacing: .1em;
}

/* ================================================================
   16.9 Architecture — Spot（node 25-917・2列グリッド10件）
================================================================ */
.p-spot__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 40px 34px;
}
.p-spot__item { display: flex; flex-direction: column; }
.p-spot__img {
  aspect-ratio: 530 / 345;
  overflow: hidden;
  background: var(--c-gray);
  cursor: zoom-in; /* クリックで拡大できることを示す */
}
.p-spot__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.p-spot__img:hover img { transform: scale(1.04); }
.p-spot__head {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: .6em;
  margin-top: 16px;
}
.p-spot__title {
  margin: 0;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.4;
}
.p-spot__label {
  font-family: var(--font-jp);
  font-weight: 400;
  font-size: .875rem; /* 14px */
  color: var(--c-accent);
  letter-spacing: .1em;
}
.p-spot__body { margin-top: 12px; }
.p-spot__body p {
  font-family: var(--font-jp);
  font-size: 1rem; /* 16px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.5;
}
.p-spot__body p + p { margin-top: 1em; }

/* ================================================================
   16.95 ライトボックス（Spot写真クリック拡大・汎用）
================================================================ */
.l-lightbox {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: none;
  align-items: center;
  justify-content: center;
  padding: clamp(20px, 5vw, 64px);
  background: rgba(0,0,0,.88);
  cursor: zoom-out;
  opacity: 0;
  transition: opacity .25s ease;
}
.l-lightbox.is-open { display: flex; opacity: 1; }
body.is-lightbox-open { overflow: hidden; }
.l-lightbox__inner {
  margin: 0;
  max-width: 100%;
  text-align: center;
}
.l-lightbox__img {
  max-width: 92vw;
  max-height: 82vh;
  object-fit: contain;
  box-shadow: 0 10px 40px rgba(0,0,0,.5);
}
.l-lightbox__cap {
  margin-top: 16px;
  font-family: var(--font-jp);
  font-size: .875rem;
  letter-spacing: .1em;
  color: var(--c-white);
}
.l-lightbox__close {
  position: absolute;
  top: clamp(12px, 3vw, 28px);
  right: clamp(16px, 4vw, 36px);
  width: 44px;
  height: 44px;
  background: none;
  border: none;
  color: var(--c-white);
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
}

/* ================================================================
   16.96 Style & Plan — 背景固定（Mask Group / node 3-5669）
================================================================ */
.p-sp-botanical-fixed {
  position: fixed;
  top: var(--header-h);
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: .14; /* Figmaの白80%オーバーレイ≒実効20%を再現 */
  pointer-events: none;
}

/* ================================================================
   16.97 Style & Plan — contents1（左右交互の3ブロック）
================================================================ */
.p-styleblocks .l-container {
  display: flex;
  flex-direction: column;
  gap: clamp(56px, 8vw, 112px);
}
.p-styleblock {
  display: flex;
  flex-direction: row-reverse; /* DOM=写真→テキスト。既定は写真右・テキスト左（Block1） */
  align-items: center;
  gap: clamp(32px, 5vw, 72px);
}
.p-styleblock--rev { flex-direction: row; } /* 写真左・テキスト右（Block2/3） */
.p-styleblock__photo { flex: 0 0 56%; }
.p-styleblock__photo img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: cover;
}
.p-styleblock__text { flex: 1 1 auto; min-width: 0; }
.p-styleblock__head {
  margin: 0 0 24px;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.5;
}
.p-styleblock__body p {
  font-family: var(--font-jp);
  font-size: 1rem; /* 16px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.85;
}
.p-styleblock__body p + p { margin-top: 1.2em; }

/* ================================================================
   16.98 Style & Plan — Plan（大見出し＋導入文＋プランカード）
================================================================ */
.p-plan__head {
  margin: 0;
  font-family: var(--font-en);
  font-weight: 700;
  font-style: normal;
  font-size: clamp(2rem, 3.2vw, 2.5rem); /* 40px */
  color: var(--c-accent);
  letter-spacing: .1em;
  text-align: center;
}
.p-plan__lead {
  margin: 24px auto 0;
  font-family: var(--font-jp);
  font-size: 1rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.8;
  text-align: center;
}
.p-plan__list {
  margin-top: clamp(40px, 5vw, 72px);
  display: flex;
  flex-direction: column;
  gap: clamp(40px, 5vw, 72px);
}
.p-plan__item {
  display: grid;
  grid-template-columns: 42fr 58fr;
  gap: clamp(24px, 3vw, 32px);
  align-items: start;
}
.p-plan__photo {
  aspect-ratio: 450 / 300;
  overflow: hidden;
}
.p-plan__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.p-plan__catch {
  margin: 0;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.5;
}
.p-plan__body { margin-top: 16px; }
.p-plan__body p {
  font-family: var(--font-jp);
  font-size: .875rem; /* 14px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.7;
}
.p-plan__body p + p { margin-top: .8em; }
.p-plan__price {
  margin-top: 20px;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-black);
  letter-spacing: .1em;
}
.p-plan__price-note { font-size: .875rem; /* 14px */ font-weight: 700; }

/* ================================================================
   16.985 Ceremony & Party 下層（.p-cp-* / .p-ent / 一部 .p-ci-* 流用）
================================================================ */
/* Other Ceremony 見出し（32px・Ceremony等の40pxより小さい） */
.p-ci-sec__head--sm { font-size: clamp(1.75rem, 2.6vw, 2rem); }

/* Other Ceremony：2カラム（写真＋見出し＋本文） */
.p-cp-other__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(24px, 4vw, 56px);
  margin-top: clamp(36px, 5vw, 56px);
}
.p-cp-other__photo { aspect-ratio: 436 / 321; overflow: hidden; }
.p-cp-other__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.p-cp-other__head {
  margin: 20px 0 0;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem;
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.5;
}
.p-cp-other__head--center { text-align: center; }
.p-cp-other__body {
  margin-top: 12px;
  font-family: var(--font-jp);
  font-size: .875rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.8;
}
.p-cp-other__body p + p { margin-top: 1em; }

/* Party：Formal / Buffet スタイルブロック */
.p-cp-style { margin-top: clamp(48px, 7vw, 96px); }
.p-cp-style__hero { margin-bottom: clamp(28px, 4vw, 48px); } /* .p-archmv__photo の aspect/角丸/ページャーを流用 */
.p-cp-style__head {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: .6em;
}
.p-cp-style__en {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: clamp(2rem, 3.2vw, 2.5rem); /* 40px */
  color: var(--c-accent);
  letter-spacing: .1em;
}
.p-cp-style__jp {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
}
.p-cp-style__capacity {
  margin-top: 16px;
  font-family: var(--font-jp);
  font-size: .875rem;
  color: var(--c-black);
  letter-spacing: .1em;
}
.p-cp-style__body { margin-top: 8px; }
.p-cp-style__body p {
  font-family: var(--font-jp);
  font-size: .875rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.9;
}
.p-cp-style__body p + p { margin-top: .6em; }
.p-cp-style .p-ci-grid { margin-top: clamp(28px, 4vw, 40px); }

/* Entertainment：2列×3行カード（写真＋タイトル＋説明） */
.p-ent__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px 16px;
  margin-top: clamp(36px, 5vw, 56px);
}
.p-ent__photo { aspect-ratio: 516 / 266; overflow: hidden; }
.p-ent__photo img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  cursor: zoom-in;
  transition: transform .4s ease;
}
.p-ent__photo img:hover { transform: scale(1.04); }
.p-ent__title {
  margin: 16px 0 0;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
}
.p-ent__text {
  margin-top: 8px;
  font-family: var(--font-jp);
  font-size: .875rem; /* 14px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.7;
}

/* ================================================================
   16.99 Cuisine & Item 下層（.p-ci-* 名前空間。TOPの .p-cuisine__* と別物）
================================================================ */
/* MV：Architecture .p-archmv をそのまま流用（1100/688・角丸・ひし形ページャー） */

/* セクション見出し（40px Playfair・.p-plan__head と同仕様） */
.p-ci-sec__head {
  margin: 0;
  font-family: var(--font-en);
  font-weight: 700;
  font-style: normal;
  font-size: clamp(2rem, 3.2vw, 2.5rem); /* 40px */
  color: var(--c-accent);
  letter-spacing: .1em;
  text-align: center;
}
.p-ci-sec__lead {
  margin: 24px auto 0;
  font-family: var(--font-jp);
  font-size: 1rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.8;
  text-align: center;
}

/* ブランド2カラム（ロゴ左＋本文右）：Cuisine(Pinox)/Sweets(モンサンクレール)/Flower(VALFLOR) */
.p-ci-brand {
  display: grid;
  grid-template-columns: minmax(0, 280px) 1fr;
  gap: clamp(24px, 4vw, 60px);
  align-items: start;
  margin-top: clamp(36px, 5vw, 64px);
}
.p-ci-brand__logo img { display: block; max-width: 100%; height: auto; }
.p-ci-brand__logo--lg img { width: 280px; max-width: 100%; }
.p-ci-brand__body p {
  font-family: var(--font-jp);
  font-size: 1rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.85;
}
.p-ci-brand__body p + p { margin-top: 1.2em; }

/* 辻口シェフ：写真左＋テキスト右 + 全幅長文 */
.p-ci-chef {
  display: grid;
  grid-template-columns: 210px 1fr;
  gap: clamp(24px, 3vw, 40px);
  align-items: start;
  margin-top: clamp(32px, 4vw, 56px);
}
.p-ci-chef__photo { aspect-ratio: 1 / 1; overflow: hidden; }
.p-ci-chef__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.p-ci-chef__meta p,
.p-ci-chef__bio p {
  font-family: var(--font-jp);
  font-size: 1rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.85;
}
.p-ci-chef__meta p + p { margin-top: .5em; }
.p-ci-chef__bio { margin-top: clamp(24px, 3vw, 40px); }
.p-ci-chef__bio p + p { margin-top: 1.2em; }

/* 画像グリッド（Cuisine/Sweets=4列正方形・Dress=4列縦長）。グレー空セル */
.p-ci-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-top: clamp(36px, 5vw, 64px);
}
.p-ci-grid__cell { aspect-ratio: 1 / 1; overflow: hidden; background: var(--c-gray); }
.p-ci-grid--portrait .p-ci-grid__cell { aspect-ratio: 3 / 4; }
.p-ci-grid__cell img,
.p-ci-flowergrid__cell img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  cursor: zoom-in;
  transition: transform .4s ease;
}
.p-ci-grid__cell img:hover,
.p-ci-flowergrid__cell img:hover { transform: scale(1.04); }

/* Flower 不規則グリッド（01大・04/05小・03大・02大） */
.p-ci-flowergrid {
  display: grid;
  grid-template-columns: 568fr 253fr 253fr;
  gap: 14px;
  margin-top: clamp(36px, 5vw, 64px);
}
.p-ci-flowergrid__cell { overflow: hidden; background: var(--c-gray); }
.p-ci-flowergrid__cell--01 { grid-column: 1; grid-row: 1; aspect-ratio: 568 / 379; }
.p-ci-flowergrid__cell--04 { grid-column: 2; grid-row: 1; aspect-ratio: 253 / 379; }
.p-ci-flowergrid__cell--05 { grid-column: 3; grid-row: 1; aspect-ratio: 253 / 379; }
.p-ci-flowergrid__cell--03 { grid-column: 1; grid-row: 2; aspect-ratio: 567 / 347; }
.p-ci-flowergrid__cell--02 { grid-column: 2 / span 2; grid-row: 2; aspect-ratio: 520 / 347; }

/* ================================================================
   16.9905 完了（サンクス）ページ
================================================================ */
.p-thanks { text-align: center; padding-block: clamp(56px, 9vw, 130px); }
.p-thanks__h {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: clamp(2rem, 4vw, 2.75rem);
  color: var(--c-accent);
  letter-spacing: .08em;
}
.p-thanks__body {
  margin-top: clamp(24px, 4vw, 40px);
  font-family: var(--font-jp);
  font-size: 1rem;
  line-height: 2;
  letter-spacing: .1em;
  color: var(--c-black);
}
.p-thanks__body p { margin-bottom: 1em; }
.p-thanks__back { margin-top: clamp(32px, 5vw, 56px); display: flex; justify-content: center; }

/* ================================================================
   16.991 Company / Privacy など文書系ページ（汎用）
================================================================ */
/* 会社概要などの定義リスト（dt 項目名 / dd 値） */
.p-doc {
  max-width: 880px;
  margin: 0 auto;
}
.p-doc__row {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: clamp(16px, 3vw, 40px);
  padding: 22px 0;
  border-bottom: 1px solid var(--c-gray);
}
.p-doc__row:first-child { border-top: 1px solid var(--c-gray); }
.p-doc__dt {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1rem;
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.8;
}
.p-doc__dd {
  font-family: var(--font-jp);
  font-size: 1rem;
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.8;
}
.p-doc__ol {
  margin: 0;
  padding-left: 1.4em;
}
.p-doc__ol li { margin-bottom: .5em; }
.p-doc__ol li:last-child { margin-bottom: 0; }

/* プライバシーポリシーなど長文 */
.p-prose {
  max-width: 840px;
  margin: 0 auto;
}
.p-prose__intro {
  font-family: var(--font-jp);
  font-size: 1rem;
  line-height: 2;
  letter-spacing: .1em;
  color: var(--c-black);
}
.p-prose__group {
  margin-top: clamp(48px, 7vw, 88px);
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--c-accent);
  letter-spacing: .08em;
  text-align: center;
}
.p-prose__block { margin-top: clamp(28px, 4vw, 48px); }
.p-prose__h {
  margin: 0 0 .7em;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.125rem;
  color: var(--c-accent);
  letter-spacing: .08em;
  line-height: 1.6;
}
.p-prose__block p {
  font-family: var(--font-jp);
  font-size: 1rem;
  line-height: 2;
  letter-spacing: .1em;
  color: var(--c-black);
}
.p-prose__block p + p { margin-top: 1em; }
.p-prose__ol {
  margin: .8em 0;
  padding-left: 1.4em;
  font-family: var(--font-jp);
  font-size: 1rem;
  line-height: 2;
  letter-spacing: .1em;
  color: var(--c-black);
}

/* ================================================================
   16.992 フォーム共通（Fair Entry / Contact / Reserve 横展開基盤）
================================================================ */
/* 見出し下の注記＋TEL */
/* フォーム見出し（日本語・Contact=問い合わせ / Reserve=見学予約 等） */
.p-form__heading {
  margin: 0 auto;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: clamp(1.75rem, 3vw, 2rem); /* ≒28〜32px */
  color: var(--c-accent);
  letter-spacing: .1em;
  text-align: center;
}
.p-form__note {
  margin: 24px auto 0;
  font-family: var(--font-jp);
  font-size: 1rem;
  line-height: 1.6;
  letter-spacing: .1em;
  text-align: center;
  color: var(--c-black);
}
.p-form__note-req { font-weight: 700; }
.p-form__tel {
  margin: .5em auto clamp(36px, 5vw, 56px);
  font-family: var(--font-jp);
  font-size: 1rem;
  letter-spacing: .1em;
  text-align: center;
  color: var(--c-black);
}
.p-form__tel a { color: inherit; }

/* フォームパネル（オフホワイト） */
.p-form {
  max-width: 1000px;
  margin: 0 auto;
  background: #f0f0ee;
  padding: clamp(28px, 5vw, 72px) clamp(20px, 4vw, 60px);
}

/* ステップ切替 */
.p-form__step { display: none; }
.p-form__step.is-active { display: block; }

/* 1フィールド行：ラベル左／コントロール右 */
.p-form__row {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: clamp(16px, 2vw, 28px);
  align-items: center;
  margin-bottom: clamp(20px, 3vw, 32px);
}
.p-form__row--textarea { align-items: start; }
.p-form__label {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.4;
}
.p-form__req { color: #d3343f; } /* 必須マーク＝赤 */

/* コントロール共通 */
.p-form__control { width: 100%; }
.p-form__control input[type="text"],
.p-form__control input[type="email"],
.p-form__control input[type="tel"],
.p-form__control input[type="date"],
.p-form__control select,
.p-form__control textarea {
  width: 100%;
  max-width: 685px;
  height: 48px;
  background: #fff;
  border: 1px solid var(--c-gray);
  border-radius: 0;
  padding: 0 16px;
  font-family: var(--font-jp);
  font-size: 1rem;
  letter-spacing: .05em;
  color: var(--c-black);
}
.p-form__control textarea {
  height: auto;
  min-height: 200px;
  padding: 14px 16px;
  line-height: 1.7;
  resize: vertical;
}
.p-form__control ::placeholder { color: #999; }
.p-form__control :-ms-input-placeholder { color: #999; }
/* セレクトの独自矢印 */
.p-form__control select {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 40px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7' viewBox='0 0 10 7'%3E%3Cpath d='M0 0l5 7 5-7z' fill='%23555'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  cursor: pointer;
}
/* 2連セレクト（来館希望日時） */
.p-form__datetime { display: flex; gap: 16px; max-width: 685px; }
.p-form__datetime select { flex: 1; min-width: 0; }
/* フェア名（読み取り専用表示） */
.p-form__fairname {
  width: 100%;
  max-width: 685px;
  min-height: 48px;
  background: #fff;
  border: 1px solid var(--c-gray);
  padding: 12px 16px;
  font-family: var(--font-jp);
  font-size: .875rem;
  line-height: 1.6;
  letter-spacing: .1em;
  color: var(--c-accent);
  display: flex;
  align-items: center;
}
/* 必須エラー */
.p-form__row.is-invalid input,
.p-form__row.is-invalid select,
.p-form__row.is-invalid textarea { border-color: #c0392b; }
.p-form__agree.is-invalid { outline: 1px dashed #c0392b; outline-offset: 6px; }

/* 同意チェック */
.p-form__agree {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin: clamp(20px, 3vw, 32px) 0 0;
  font-family: var(--font-jp);
  font-size: 1rem;
  letter-spacing: .05em;
}
.p-form__agree input[type="checkbox"] { width: 20px; height: 20px; accent-color: var(--c-fair); }
.p-form__agree a { color: var(--c-accent); text-decoration: underline; }

/* 送信（確認画面へ）ボタン */
.p-form__submit {
  display: block;
  margin: clamp(28px, 4vw, 44px) auto 0;
  width: 256px;
  height: 64px;
  background: #559778; /* Figma実測 */
  color: #fff;
  border: none;
  border-radius: 0;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.125rem; /* 18px */
  letter-spacing: .1em;
  cursor: pointer;
  transition: opacity .2s;
}
.p-form__submit:hover { opacity: .88; }

/* 確認ステップ */
.p-form__confirm-lead {
  font-family: var(--font-jp);
  letter-spacing: .1em;
  text-align: center;
  margin-bottom: clamp(20px, 3vw, 32px);
}
.p-form__confirm-row {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: clamp(16px, 2vw, 28px);
  padding: 16px 0;
  border-bottom: 1px solid var(--c-gray);
}
.p-form__confirm-label {
  font-family: var(--font-jp);
  font-weight: 700;
  color: var(--c-black);
  letter-spacing: .1em;
}
.p-form__confirm-value {
  font-family: var(--font-jp);
  color: var(--c-black);
  letter-spacing: .05em;
  line-height: 1.7;
  white-space: pre-wrap;
}
.p-form__actions {
  display: flex;
  gap: 16px;
  justify-content: center;
  margin-top: clamp(28px, 4vw, 48px);
}
.p-form__btn {
  width: 220px;
  height: 60px;
  border: none;
  border-radius: 0;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.0625rem;
  letter-spacing: .1em;
  cursor: pointer;
  transition: opacity .2s;
}
.p-form__btn:hover { opacity: .88; }
.p-form__btn--back { background: #fff; border: 1px solid var(--c-gray); color: var(--c-black); }
.p-form__btn--send { background: #559778; color: #fff; }

/* ---- Contact Form 7 連携（CF7のラッパspanを吸収） ---- */
.p-form .wpcf7-form-control-wrap { display: block; width: 100%; }
.p-form__datetime .wpcf7-form-control-wrap { flex: 1; min-width: 0; }
/* フェア名（readonly表示・アクセント色） */
.p-form__fairname-input {
  color: var(--c-accent) !important;
  font-size: .875rem !important;
  cursor: default;
}
/* 同意チェック（CF7 acceptance） */
.p-form__agree { text-align: center; }
.p-form__agree .wpcf7-form-control-wrap { display: inline; width: auto; }
.p-form__agree .wpcf7-list-item { margin: 0; }
.p-form__agree label { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; }
.p-form__agree input[type="checkbox"] { width: 20px; height: 20px; accent-color: var(--c-fair); }
/* CF7 バリデーション・応答メッセージ */
.p-form .wpcf7-not-valid { border-color: #c0392b !important; }
.p-form .wpcf7-not-valid-tip { color: #c0392b; font-size: .8rem; margin-top: 4px; }
.wpcf7-response-output {
  margin: 20px auto 0 !important;
  max-width: 1000px;
  padding: 12px 16px;
  font-family: var(--font-jp);
  font-size: .9rem;
  letter-spacing: .05em;
}
.wpcf7-spinner { margin-left: 12px; }

/* 完了ステップ（旧デモ・現在はCF7リダイレクトを使用） */
.p-form__step--done { text-align: center; padding: clamp(20px, 4vw, 48px) 0; }
.p-form__done-h {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  color: var(--c-accent);
  letter-spacing: .08em;
}
.p-form__done-text {
  margin-top: 1em;
  font-family: var(--font-jp);
  letter-spacing: .05em;
  line-height: 1.8;
}

/* ================================================================
   16b. WEDDING REPORT 一覧（Figma 149-436 / pager 13-433）
================================================================ */
.p-report-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 56px 30px; /* 行56 / 列30(≈29) */
}
.p-report-card__link { display: block; color: inherit; }
.p-report-card__thumb {
  aspect-ratio: 347 / 231; /* ≒3:2 */
  overflow: hidden;
  background: var(--c-gray);
}
.p-report-card__thumb img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform .5s ease;
}
.p-report-card__link:hover .p-report-card__thumb img { transform: scale(1.04); }
.p-report-card__title {
  margin-top: 24px;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem;   /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.4;
}
.p-report-card__text {
  margin-top: 14px;
  font-size: .875rem;   /* 14px */
  line-height: 24px;
  letter-spacing: .1em;
  color: var(--c-black);
}
.p-report-empty { text-align: center; padding-block: 40px; letter-spacing: .1em; }

/* 数字四角ページャー（31px・gap32・現在=accent白／他=gray黒・前後矢印なし） */
.p-pager {
  display: flex;
  justify-content: center;
  gap: 32px;
  margin-top: 64px;
}
.p-pager .page-numbers {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 31px; height: 31px;
  background: var(--c-gray);
  color: var(--c-black);
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  letter-spacing: .1em;
  text-decoration: none;
  transition: background .2s, color .2s;
}
.p-pager a.page-numbers:hover,
.p-pager .page-numbers.current {
  background: var(--c-accent);
  color: var(--c-white);
}
.p-pager .page-numbers.dots {
  background: transparent;
  color: var(--c-black);
}

/* ================================================================
   16d. BRIDAL FAIR 一覧（Figma 154-448 / 154-449）
================================================================ */
.p-fairlist {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 52px 18px; /* 行52 / 列18 */
}
.p-fair-card__link { display: block; color: inherit; }
.p-fair-card__thumb {
  aspect-ratio: 354 / 261; /* ≒4:3 */
  overflow: hidden;
  background: var(--c-gray);
}
.p-fair-card__thumb img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform .5s ease;
}
.p-fair-card__link:hover .p-fair-card__thumb img { transform: scale(1.04); }
.p-fair-card__date {
  margin-top: 16px;
  font-size: .875rem; /* 14px */
  font-weight: 700;
  color: var(--c-accent);
  letter-spacing: .1em;
}
.p-fair-card__title {
  margin-top: 8px;
  font-size: 1rem; /* 16px */
  line-height: 24px;
  letter-spacing: .1em;
  color: var(--c-black);
}

/* ================================================================
   16e. BRIDAL FAIR 詳細（Figma 154-450/13-765/13-855/22-861/22-862/22-899）
================================================================ */
.p-fair-detail { max-width: 1000px; margin-inline: auto; padding-inline: var(--gutter); }

/* MV（アイキャッチ 1000×737 ≒4:3） */
.p-fair-mv { aspect-ratio: 1000 / 737; overflow: hidden; background: var(--c-gray); }
.p-fair-mv img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* フェアタイトル（accent 24px） */
.p-fair-ttl {
  margin-top: 40px;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.5rem; /* 24px */
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.6;
}
.p-fair-lead {
  margin-top: 20px;
  font-size: 1rem;
  line-height: 24px;
  letter-spacing: .1em;
  color: var(--c-black);
}

/* データ枠（上下ヘアライン・行間36px） */
.p-fair-data {
  margin-top: 32px;
  padding-block: 16px;
  border-top: 1px solid var(--c-gray);
  border-bottom: 1px solid var(--c-gray);
}
.p-fair-data__row { font-size: 1rem; line-height: 36px; letter-spacing: .1em; }
.p-fair-data__row dt { display: inline; font-weight: 400; color: var(--c-black); }
.p-fair-data__row dd { display: inline; margin: 0; color: var(--c-black); }
.p-fair-data__row dd.is-accent { color: var(--c-accent); font-weight: 700; }

/* セクション見出し（accent縦棒＋24px） */
.p-fair-sect { margin-top: 56px; }
.p-fair-sect__head {
  position: relative;
  padding-left: 27px;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.5rem; /* 24px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.4;
}
.p-fair-sect__head::before {
  content: "";
  position: absolute;
  left: 0; top: .15em;
  width: 14px; height: 32px;
  background: var(--c-accent);
}

/* 項目（見出しaccent20px＋説明16px） */
.p-fair-item { margin-top: 32px; }
.p-fair-item__head {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.25rem; /* 20px */
  color: var(--c-accent);
  letter-spacing: .1em;
  line-height: 1.5;
}
.p-fair-item__body {
  margin-top: 12px;
  font-size: 1rem;
  line-height: 24px;
  letter-spacing: .1em;
  color: var(--c-black);
}

/* CTA（緑ボタン＋Return To Index） */
.p-fair-cta { display: flex; flex-direction: column; align-items: center; gap: 24px; margin-top: 64px; }
.p-fair-cta__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 256px; height: 64px;
  background: #559778;
  color: var(--c-white);
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.125rem; /* 18px */
  letter-spacing: .1em;
  text-decoration: none;
  border-radius: 6px;
  transition: opacity .2s;
}
.p-fair-cta__btn:hover { opacity: .88; }
.p-fair-cta__back {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 1rem;
  color: var(--c-black);
  letter-spacing: .1em;
  text-decoration: underline;
}
.p-fair-cta__back:hover { color: var(--c-accent); }

/* ================================================================
   16c. WEDDING REPORT 詳細（Figma 151-441/151-447/13-561）
================================================================ */
.p-report-article { max-width: 1000px; margin-inline: auto; padding-inline: var(--gutter); }

/* 記事タイトルバー（accent帯・高さ64px・右下角20px丸め・白32px） */
.p-article-bar {
  background: var(--c-accent);
  border-bottom-right-radius: 20px;
  min-height: 64px;
  display: flex;
  align-items: center;
  padding: 8px 27px;
}
.p-article-bar__title {
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 2rem;   /* 32px */
  color: var(--c-white);
  letter-spacing: .1em;
  line-height: 1.3;
}

/* 本文prose（ブロックエディタ入稿） */
.p-report-body { margin-top: 40px; }
.p-report-body > * + * { margin-top: 24px; }
.p-report-body h2,
.p-report-body h3 {
  position: relative;
  padding-left: 27px;
  font-family: var(--font-jp);
  font-weight: 700;
  font-size: 1.5rem; /* 24px */
  color: var(--c-black);
  letter-spacing: .1em;
  line-height: 1.5;
  margin-top: 48px;
}
.p-report-body h2::before,
.p-report-body h3::before {
  content: "";
  position: absolute;
  left: 0; top: .25em;
  width: 14px; height: 32px;
  background: var(--c-accent);
}
.p-report-body p {
  font-size: 1rem;   /* 16px */
  line-height: 24px;
  letter-spacing: .1em;
  color: var(--c-black);
}
.p-report-body :is(img) { max-width: 100%; height: auto; }
.p-report-body figure { margin-block: 24px; }
.p-report-body .wp-block-image img { width: 100%; display: block; }

/* ギャラリー（columns-N を尊重：2列28px/3列17px）
   ※WPの is-layout-flex を上書きしてグリッドセルいっぱいに図版を充填 */
.p-report-body .wp-block-gallery {
  display: grid !important;
  grid-template-columns: repeat(2, 1fr) !important;
  gap: 28px !important;
  margin-block: 24px;
}
.p-report-body .wp-block-gallery.columns-3 { grid-template-columns: repeat(3, 1fr) !important; gap: 17px !important; }
.p-report-body .wp-block-gallery.columns-1 { grid-template-columns: 1fr !important; }
.p-report-body .wp-block-gallery .wp-block-image {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  flex: none !important;
}
.p-report-body .wp-block-gallery .wp-block-image img {
  width: 100%; height: 100%;
  aspect-ratio: 3 / 2; object-fit: cover; display: block;
}

/* 一覧へ戻る（accent角丸ボタン 256×64・中央） */
.p-backindex { display: flex; justify-content: center; margin-top: 64px; }
.p-backindex__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 256px; height: 64px;
  background: var(--c-accent);
  color: var(--c-white);
  border-radius: 6px;
  font-family: var(--font-jp);
  font-weight: 500;
  letter-spacing: .1em;
  text-decoration: none;
  transition: opacity .2s;
}
.p-backindex__btn:hover { opacity: .85; }

/* 詳細パンくず：中間リンク */
.c-breadcrumb__parent { color: var(--c-black); text-decoration: none; }
.c-breadcrumb__parent:hover { color: var(--c-accent); }

/* ================================================================
   16f. FLOOR MAP（インタラクティブ間取り図・Architecture）Figma 13-74
================================================================ */
.p-floormap { position: relative; max-width: 800px; margin-inline: auto; }
.p-floormap__base { width: 100%; height: auto; display: block; }
.p-floormap__spot {
  position: absolute;
  transform: translate(-50%, -50%);
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: #e2002b; /* 本番のマーカー赤 */
  border: 2px solid var(--c-white);
  box-shadow: 0 2px 6px rgba(0,0,0,.4);
  cursor: pointer; padding: 0;
  transition: transform .2s;
  animation: floormapPulse 2.2s ease-in-out infinite;
}
.p-floormap__spot-icon { width: 19px; height: 19px; fill: var(--c-white); pointer-events: none; }
.p-floormap__spot:hover,
.p-floormap__spot:focus-visible { transform: translate(-50%, -50%) scale(1.15); animation: none; }
@keyframes floormapPulse {
  0%, 100% { box-shadow: 0 2px 6px rgba(0,0,0,.4), 0 0 0 0 rgba(226,0,43,.45); }
  50%      { box-shadow: 0 2px 6px rgba(0,0,0,.4), 0 0 0 10px rgba(226,0,43,0); }
}

/* ================================================================
   17. SP RESPONSIVE (<= 768px)
================================================================ */
@media (max-width: 768px) {
  :root {
    --header-h: 64px;
    --sec-py: 56px;
  }

  .l-header__brand { font-size: 1rem; }

  /* 固定CTA：モバイルはフッター固定の横並びバー（見学予約｜フェア） */
  .l-sidetab {
    display: flex;
    flex-direction: row;
    top: auto; bottom: 0; left: 0; right: 0;
    transform: none;
    z-index: 95;
  }
  body.admin-bar .l-sidetab { top: auto; }
  .l-sidetab__item {
    writing-mode: horizontal-tb;
    flex: 1;
    text-align: center;
    padding: 15px 8px;
    font-size: .9375rem;
    letter-spacing: .08em;
  }
  /* 固定バー分の余白（最下部コンテンツが隠れないように） */
  body { padding-bottom: 54px; }

  /* KV */
  .p-kv__body {
    right: auto;
    left: 50%;
    top: 42%;
    transform: translate(-50%, -50%);
    text-align: center;
    width: 90%;
  }
  .p-kv__title { font-size: 2rem; }
  .p-kv__tag   { font-size: 1.4rem; }
  .p-kv__leadbar {
    font-size: .85rem;
    white-space: normal;
    text-align: center;
    letter-spacing: .03em;
    padding: 16px var(--gutter);
  }
  .p-kv__pager { right: 50%; transform: translateX(50%); bottom: 90px; }

  /* SP CTA */
  .u-sp-only { display: flex; }
  .p-kv-cta { display: flex; height: 56px; }
  .p-kv-cta__reserve,
  .p-kv-cta__tell {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .9375rem;
    letter-spacing: .1em;
    color: var(--c-white);
  }
  .p-kv-cta__reserve { background: var(--c-reserve); }
  .p-kv-cta__tell    { background: var(--c-fair); }

  /* Introduction */
  .p-intro__inner { grid-template-columns: 1fr; gap: 2rem; }
  .p-intro__right { order: -1; }
  .p-intro__right img { height: 300px; max-height: none; }
  .p-intro__bride img { max-height: 300px; }

  /* Style */
  .p-style__inner { max-width: 100%; }

  /* Interval */
  .p-interval { height: 220px; }

  /* Architecture */
  .p-arch__inner { grid-template-columns: 1fr; gap: 2rem; }
  .p-arch__photo { order: -1; }
  .p-arch__photo img { height: 240px; }

  /* Ceremony */
  .p-ceremony__inner { grid-template-columns: 1fr; gap: 2rem; }
  .p-ceremony__photo img { height: 240px; }

  /* Cuisine */
  .p-cuisine__inner { grid-template-columns: 1fr; gap: 1.5rem; }

  /* Fair */
  .p-fair__grid { grid-template-columns: 1fr; gap: 2rem; }
  .p-fair__desc { text-align: left; }

  /* Access */
  .p-access__info { flex-direction: column; align-items: flex-start; }

  /* Footer */
  .l-footer__nav { flex-wrap: wrap; gap: 0; font-size: .8125rem; }
  .l-footer__nav li + li::before { margin: 0 .7em; }

  /* 下層 Title帯 / パンくず */
  .l-pagetitle { height: 120px; }
  .l-pagetitle__en { font-size: 1.5rem; }

  /* Architecture MV */
  .p-archmv__pager { right: 16px; bottom: 16px; }

  /* Architecture Award */
  .p-award__prize-inner {
    grid-template-columns: 1fr;
    gap: 24px;
    justify-items: center;
    padding-inline: 0;
  }
  .p-award__cert { width: 200px; }
  .p-award__cert img { width: 100%; height: auto; }
  .p-award__prize-text { width: 100%; }
  .p-award__lead-body br { display: none; } /* SPは自然改行 */

  /* Architecture Spot */
  .p-spot__grid { grid-template-columns: 1fr; gap: 32px; }

  /* Style&Plan contents1 — 1カラム（写真上） */
  .p-styleblock,
  .p-styleblock--rev { flex-direction: column; }
  .p-styleblock__photo { flex: none; width: 100%; }
  .p-styleblock__head { margin-bottom: 16px; }

  /* Style&Plan Plan — 1カラム */
  .p-plan__head { font-size: 2rem; }
  .p-plan__item { grid-template-columns: 1fr; gap: 16px; }
  .p-plan__lead br { display: none; }

  /* Ceremony & Party */
  .p-cp-other__cols { grid-template-columns: 1fr; gap: 32px; }
  .p-ent__grid { grid-template-columns: 1fr; gap: 28px; }
  .p-cp-style__en { font-size: 1.75rem; }
  .p-ci-sec__head--sm { font-size: 1.6rem; }

  /* Cuisine & Item */
  .p-ci-sec__head { font-size: 2rem; }
  .p-ci-sec__lead br { display: none; }
  .p-ci-brand { grid-template-columns: 1fr; gap: 20px; }
  .p-ci-chef { grid-template-columns: 1fr; gap: 16px; }
  .p-ci-chef__photo { width: 180px; }
  .p-ci-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .p-report-list { grid-template-columns: 1fr; gap: 40px; }
  .p-report-card__title { margin-top: 18px; }
  .p-fairlist { grid-template-columns: 1fr; gap: 36px; }
  .p-fair-ttl { font-size: 1.25rem; }
  .p-fair-cta__btn { width: 220px; height: 58px; }
  /* 展開メニュー：モバイルは1カラム・中央寄せ */
  /* 展開メニュー：1カラム・上詰めスクロール（中央寄せだと縦長時に上下が画面外になるため） */
  .l-gnav { justify-content: flex-start; padding-top: calc(var(--header-h) + 24px); padding-bottom: 40px; }
  .l-gnav__inner { max-width: 360px; }
  .l-gnav__main { grid-template-columns: 1fr; grid-template-rows: auto; grid-auto-flow: row; row-gap: 22px; text-align: center; }
  .l-gnav__sub { flex-direction: column; gap: 14px; margin-top: 32px; }
  .p-pager { gap: 20px; margin-top: 48px; }
  .p-article-bar__title { font-size: 1.375rem; }
  .p-report-body .wp-block-gallery,
  .p-report-body .wp-block-gallery.columns-3 { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .p-backindex__btn { width: 200px; height: 56px; }
  /* Flower グリッドは2列正方形に再構成 */
  .p-ci-flowergrid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .p-ci-flowergrid__cell--01,
  .p-ci-flowergrid__cell--02,
  .p-ci-flowergrid__cell--03,
  .p-ci-flowergrid__cell--04,
  .p-ci-flowergrid__cell--05 {
    grid-column: auto;
    grid-row: auto;
    aspect-ratio: 1 / 1;
  }

  /* Company / Privacy 文書系 */
  .p-doc__row { grid-template-columns: 1fr; gap: 4px; padding: 16px 0; }
  .p-prose__intro,
  .p-prose__block p,
  .p-prose__ol { line-height: 1.9; }

  /* フォーム — 1カラム化（ラベル上・コントロール下） */
  .p-form__row { grid-template-columns: 1fr; gap: 8px; }
  .p-form__label { font-size: 1.0625rem; }
  .p-form__confirm-row { grid-template-columns: 1fr; gap: 4px; }
  .p-form__submit { width: 100%; max-width: 320px; }
  .p-form__actions { flex-direction: column; align-items: center; }
  .p-form__btn { width: 100%; max-width: 320px; }
}
