/* Page templates — ABOUT / Tour Enquiry / GUIDE archive / JOURNAL archive / Tour LP single */

/* ============ Page Hero ============ */
.page-hero {
  position: relative;
  width: 100%;
  height: clamp(420px, 60vh, 720px);
  overflow: hidden;
  color: var(--c-white);
  background: var(--c-navy);
}
.page-hero__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
}
.page-hero__bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.25), rgba(0,0,0,0.5));
}
.page-hero__caption {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  z-index: 2;
  gap: 18px;
  padding-inline: clamp(20px, 5vw, 60px);
}
.page-hero__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(48px, 8vw, 116px);
  line-height: 1;
  letter-spacing: 0.04em;
  text-shadow: 0 2px 16px rgba(0,0,0,0.4);
}
.page-hero__sub {
  font-family: var(--f-en-serif);
  font-size: clamp(20px, 3vw, 36px);
  line-height: 1.3;
  letter-spacing: 0.06em;
}
.page-hero__sub-jp {
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.8vw, 22px);
  letter-spacing: 0.06em;
  margin-top: 12px;
  line-height: 1.6;
  max-width: 720px;
}

/* ============ ABOUT page ============ */
/* --- ABOUT Hero (モック実測準拠: 1280x1200 比率、全要素絶対配置) --- */
.about-hero {
  position: relative;
  background: var(--c-white);
  padding-bottom: clamp(40px, 5vw, 80px);
}
.about-hero__photos {
  position: relative;
  width: 100%;
  /* キャプション末尾「JTA.」がほぼ底辺に来る高さ (リードとの隙間を最小化) */
  aspect-ratio: 1280 / 980;
}
.about-hero__photo {
  position: absolute;
  object-fit: cover;
  display: block;
}
/* 左写真: 縦を圧縮してタイトルとの間に余白 */
.about-hero__photo--left {
  top: 0;
  left: 0;
  width: 60%;
  height: 40%;
}
/* 右写真: 縦を圧縮、左写真と重なりなし */
.about-hero__photo--right {
  top: 22%;
  left: 62%;
  width: 38%;
  height: 44%;
}
/* タイトル位置: 左写真下から十分な余白をとって配置 */
.about-hero__caption {
  position: absolute;
  left: 4.3%;
  top: 42%;
  z-index: 2;
  color: var(--c-text);
}
/* モック: ABOUT US 116pt EN serif 1行 */
.about-hero__title {
  font-family: var(--f-en-serif);
  font-weight: 700;
  font-size: clamp(56px, 9vw, 115px);          /* GUIDE と統一 */
  line-height: 1.0;
  margin: 0 0 clamp(12px, 1.8vw, 24px);
}
/* モック: Beyond / Luxury / Produced by / JTA. 92pt 4行 */
.about-hero__sub {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(3.4rem, 9.6vw, 4.6rem);
  line-height: 1.0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(2px, 0.3vw, 8px);
}
.about-hero__sub span { display: block; }
/* モック: 日本の美しい... 32pt JP 中央配置
   photos div 内の caption 下の余白を埋めるよう負マージンで上に引き上げる */
.about-hero__lead {
  margin: 100px auto 0px!important;
  text-align: center;
  font-family: var(--f-jp-mincho);
  font-size: clamp(1.1rem, 2.5vw, 1.8rem);
  line-height: 2.1;
  max-width: 900px;
  padding-inline: clamp(20px, 4vw, 60px);
  position: relative;
  z-index: 1;
}
@media (max-width: 900px) {
  .about-hero__photos { aspect-ratio: 1 / 1.2; }
  .about-hero__photo--left { width: 80%; height: 45%; }
  .about-hero__photo--right { top: 30%; left: 30%; width: 70%; height: 50%; }
  .about-hero__caption { top: auto; bottom: 4%; left: 6%; }
  /* #3 About Hero mobile: 仕様 title 48/lh44, sub 36/lh36 (アバウト_ジャーナル_ガイドブック.docx P14,P18) */
  .about-hero__title {
    font-size: clamp(48px, 12.8vw, 80px);
    line-height: clamp(44px, 11.7vw, 76px);
  }
  .about-hero__sub {
    font-size: clamp(2.2rem, 9.6vw, 3.4rem);
    line-height: 0.9em;
  }
}

/* --- Statement --- */
.about-statement {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 60px) clamp(80px, 10vw, 160px);
  max-width: none;
  margin: 0 auto;
  text-align: center;
}
.about-statement__body {
  /* [2026-09] フォント指定(family/size/line-height/letter-spacing)は
     base.css の .t-body に一本化(PHP側で .t-body クラスを併記)。
     ここではレイアウト(幅・余白・中央寄せ)だけを持つ。text-align:centerは
     親.about-statementから継承済みだが、GUIDE/フロント側でも同じクラスを
     文脈(親)なしで使うため、ここにも明示しておく。 */
  max-width: 760px;
  margin: 0 auto clamp(60px, 8vw, 120px);
  text-align: center;
}
.about-statement__body p { margin: 0 0 clamp(20px, 2.5vw, 36px); }
.about-statement__body p:last-child { margin-bottom: 0; }
.about-statement__photo {
  width: 100%;
  /* モック実測: 1128x846 ≈ 4:3 */
  aspect-ratio: 4 / 3;
  overflow: hidden;
}
.about-statement__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* --- Statement Slider --- */
.about-statement__slider {
  position: relative;
  width: 92vw;             /* スライダーを拡大: 75vw→92vw(カウンター分の余白は8%程度に) */
  max-width: 92vw;
  margin: 0;
  margin-left: calc(-1 * clamp(20px, 4vw, 60px));  /* セクション左 padding を打ち消し flush left */
}
/* ページカウンター (1 / 5): モック準拠で画像の「外」右下に・斜め配置・濃色 */
.about-statement__count {
  position: absolute;
  left: 100%;                              /* スライダー(画像)の右外 */
  bottom: 0;                               /* カウンター下端を画像下端に揃える */
  margin-left: clamp(16px, 2.4vw, 44px);
  z-index: 3;
  display: inline-flex;
  align-items: center;
  color: var(--c-text);
  font-family: var(--f-en-serif);
  font-size: clamp(0.8rem, 2vw, 1.1rem);
  line-height: 1;
  white-space: nowrap;
}
.about-statement__count-cur   { align-self: flex-start; }
.about-statement__count-total { align-self: flex-end; }
.about-statement__count-sep   { font-size: 1.9em; font-weight: 300; margin: 0 0.1em; }
/* モバイル: スライダーを全幅(full-bleed)に拡大・左右の余白を消す */
@media (max-width: 768px) {
  .about-statement__slider { width: 100vw; max-width: none; margin-left: calc(50% - 50vw); }
  /* 全幅画像のため、カウンターは画像内の右下(白文字)に */
  .about-statement__count {
    left: auto;
    right: clamp(14px, 4vw, 24px);
    bottom: clamp(12px, 3vw, 20px);
    margin-left: 0;
    color: var(--c-white);
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
  }
}
.about-statement__slider-track {
  position: relative;
  width: 100%;
  aspect-ratio: 1100 / 500; /* #248 */
  overflow: hidden;
}
.about-statement__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1.6s ease-in-out; /* Item 10: TOP hero と同期 */
  pointer-events: none;
}
.about-statement__slide.is-active {
  opacity: 1;
  pointer-events: auto;
}
.about-statement__slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.about-statement__slider-nav {
  position: absolute;
  right: clamp(20px, 3vw, 40px);
  bottom: clamp(20px, 3vw, 40px);
  display: inline-flex;
  align-items: center;
  gap: clamp(12px, 1.6vw, 22px);
  color: var(--c-white);
  font-family: var(--f-en-serif);
  font-size: clamp(18px, 1.8vw, 22px);
  letter-spacing: 0.08em;
  z-index: 3;
}
.about-statement__slider-btn {
  background: rgba(255,255,255,0.18);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  color: var(--c-white);
  border: 1px solid rgba(255,255,255,0.7);
  width: clamp(44px, 3.6vw, 52px);
  height: clamp(44px, 3.6vw, 52px);
  font-size: clamp(22px, 2.2vw, 28px);
  line-height: 1;
  cursor: pointer;
  transition: background var(--t-base), color var(--t-base);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.about-statement__slider-btn:hover { background: var(--c-white); color: var(--c-text); }
.about-statement__slider-count {
  min-width: 68px;
  text-align: center;
  padding: 6px 14px;
  background: rgba(0,0,0,0.5);
  border-radius: 99px;
  text-shadow: none;
}

/* スライダー下にドットインジケータ */
.about-statement__slider-dots {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: clamp(20px, 3vw, 40px);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  z-index: 3;
}
.about-statement__slider-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  border: 1px solid rgba(255,255,255,0.9);
  cursor: pointer;
  transition: background var(--t-base);
  padding: 0;
}
.about-statement__slider-dot.is-active {
  background: var(--c-white);
  transform: scale(1.2);
}

/* [2026-09] .about-commitment / __header / __title / __subtitle removed —
   ABOUTページのOUR COMMITMENTセクション/見出し/サブタイトルは、TOPページの
   .commitment 系クラスに統一(page-about.php / page-en-about.php側も変更済み)。
   カード自体(.about-commitment-card*)は変更していないので、そちらのクラスは
   このまま残す。 */
.about-commitment__cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(30px, 4vw, 60px);   /* TOP の OUR COMMITMENT と揃える */
  max-width: 1008px;             /* TOP と同じカード幅(302×406)になるよう調整 */
  margin: 0 auto;
  text-align: center;
}
.about-commitment-card__media {
  width: 100%;
  /* モック: 縦長カード写真 ≈ 290 / 390 */
  aspect-ratio: 290 / 390;
  overflow: hidden;
  margin-bottom: clamp(28px, 3.5vw, 48px);
}
.about-commitment-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* #13 P2: 仕様 EN 32 lh52 D / 22 lh31 M、JP 26 lh52 D / 16 lh31 M
   (アバウト_ジャーナル_ガイドブック.docx P67) — desktop max は 32px が上限、+13% を解消。
   テキストは EN/JP 共に英語表記 (例: "EXPERIENCE")、EN serif 想定で 22→32 / lh 31→52 に統一。 */
.about-commitment-card__title {
  font-family: var(--f-en-serif);
  font-weight: 700;
  font-size: clamp(1.4rem, 2.4vw, 2.2rem);
  line-height: clamp(31px, 4vw, 52px);
  letter-spacing: 0.02em;
  margin: 0 0 clamp(14px, 1.8vw, 22px);
}
/* #4 About sub-section title: 仕様 desktop EN 20/lh26, JP 18/lh31; mobile 15/lh22 (アバウト_ジャーナル_ガイドブック.docx P83-84) */
.about-commitment-card__sub {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(1.2rem, 1.5vw, 1.6rem);
  line-height: clamp(22px, 2vw, 26px);
  letter-spacing: 0.02em;
  margin: 0 0 clamp(18px, 2.5vw, 32px);
  min-height: clamp(44px, 4vw, 52px);   /* R92 (2026-09-15): reserve 2 lines' worth of height (= line-height × 2)
    so a 1-line sub doesn't leave the body text below starting higher than cards with a 2-line sub. */
}
/* モック仕様: 15pt JP 本文 */
.about-commitment-card__body {
  font-family: var(--f-jp-mincho);
  font-size: 15px;
  line-height: 2.0;
  letter-spacing: 0.04em;
  margin: 0 auto;
  max-width: 320px;
}

/* --- SERVICE --- */
.about-service {
  padding: 0;
  background: var(--c-white);
}
/* 上段: 富士山写真背景 + ダークオーバーレイ + タイトル + ベン図 */
.about-service__diagram {
  position: relative;
  width: 100%;
  background-color: #0f1530;
  background-image: url("../images/about/service-bg.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 60px) clamp(60px, 8vw, 120px);
  text-align: center;
  color: var(--c-white);
  overflow: hidden;
}
.about-service__diagram::before {
  content: "";
  position: absolute;
  inset: 0;
  /* 富士山写真を暗く落としつつネイビーの統一感を作るオーバーレイ */
  background:
    linear-gradient(180deg, rgba(15,21,48,0.55) 0%, rgba(15,21,48,0.75) 70%, rgba(15,21,48,0.9) 100%);
  pointer-events: none;
}
.about-service__diagram-inner {
  position: relative;
  z-index: 2;
  max-width: 1200px;
  margin: 0 auto;
}
/* モック仕様: 64pt */
.about-service__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(36px, 5vw, 64px);
  line-height: 1.0;
  letter-spacing: 0.04em;
  margin: 0 0 clamp(20px, 2.5vw, 32px);
  color: var(--c-white);
}
.about-service__hr {
  display: block;
  width: clamp(180px, 26vw, 380px);
  height: 1px;
  background: rgba(255,255,255,0.6);
  margin: 0 auto clamp(48px, 7vw, 100px);
}
/* ベン図 PNG */
.about-service__venn {
  display: block;
  width: 100%;
  max-width: 1200px;
  height: auto;
  margin: 0 auto;
}
/* 下段: 白背景の本文 */
.about-service__intro {
  padding: clamp(60px, 8vw, 100px) clamp(20px, 4vw, 60px) clamp(40px, 5vw, 64px);
  text-align: center;
  background: var(--c-white);
}
/* モック仕様: 26pt JP */
.about-service__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(1rem, 2vw, 1.4rem);
  line-height: 2.6;
  letter-spacing: 0.08em;
  margin: 0 0 clamp(28px, 3.5vw, 80px)!important;
}
.about-service__body:last-child { margin-bottom: 0; }
/* SERVICE 下部の写真 */
.about-service__photo {
  width: 100%;
  max-width: 720px;
  margin: 0 auto clamp(60px, 8vw, 120px);
  aspect-ratio: 3 / 2;
  overflow: hidden;
}
.about-service__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media (max-width: 900px) {
  .about-service__diagram { padding-block: clamp(48px, 8vw, 80px); }
  .about-service__hr { margin-bottom: clamp(28px, 5vw, 56px); }
}

/* --- CORPORATE PROFILE (グレー枠囲み) --- */
.about-corporate {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 60px) clamp(80px, 10vw, 160px);
  background: var(--c-white);
}
.about-corporate__header { margin-bottom: clamp(40px, 5vw, 60px); }
/* モック仕様: 64pt */
.about-corporate__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(36px, 5vw, 64px);
  line-height: 1.0;
  letter-spacing: 0.04em;
  margin: 0 0 clamp(16px, 2vw, 28px);
}
.about-corporate__hr {
  display: block;
  width: 100%;
  height: 1px;
  background: var(--c-text);
  opacity: 0.6;
}
.about-corporate__box {
  background: #ECEAE4;
  /* CTAを外したので上下パディングを均等＋少し圧縮 */
  padding: clamp(36px, 5vw, 72px) clamp(20px, 6vw, 100px);
  max-width: 1080px;
  margin: clamp(40px, 5vw, 80px) auto 0;
}
.about-corporate__list {
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(120px, 220px) minmax(0, 1fr);
  gap: 0;
  font-family: var(--f-jp-mincho);
  /* モック仕様: 18pt */
  font-size: clamp(14px, 1.4vw, 18px);
  line-height: 2.0;
  letter-spacing: 0.04em;
  color: var(--c-text);
}
.about-corporate__list dt,
.about-corporate__list dd {
  padding: clamp(24px, 3vw, 40px) 0;
  border-bottom: 1px solid rgba(20,20,19,0.25);
  margin: 0;
}
.about-corporate__list dt { font-weight: 400; }
.about-corporate__list dd { padding-left: clamp(0px, 2vw, 24px); }
.about-corporate__list dt:last-of-type,
.about-corporate__list dd:last-of-type { border-bottom: 0; }
.about-corporate__cta {
  margin-top: clamp(40px, 5vw, 64px);
  text-align: center;
}
.btn-outline {
  display: inline-flex;
  align-items: center;
  gap: 18px;
  padding: clamp(14px, 1.6vw, 22px) clamp(36px, 4vw, 60px);
  background: transparent;
  border: 1px solid var(--c-text);
  color: var(--c-text);
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(15px, 1.5vw, 20px);
  letter-spacing: 0.06em;
  text-decoration: none;
  transition: background var(--t-base), color var(--t-base);
}
.btn-outline:hover { background: var(--c-text); color: var(--c-white); }
.btn-outline .arrow { transition: transform var(--t-base); }
.btn-outline:hover .arrow { transform: translateX(6px); }

@media (max-width: 900px) {
  .about-commitment__cards { grid-template-columns: 1fr; gap: clamp(48px, 8vw, 80px); }
  .about-corporate__list { grid-template-columns: 1fr; }
  .about-corporate__list dt { padding-bottom: 4px; border-bottom: 0; opacity: 0.7; font-size: 0.9em; }
  .about-corporate__list dd { padding-top: 0; padding-left: 0; }
}

/* --- Concierge (ABOUT版: 左写真 + 中央navy box + 右写真) --- */
.concierge--split {
  position: relative;
  display: grid;
  /* 中央navyボックスはタイトル「旅のご相談はぜひお気軽に。」を1行で収める幅 */
  grid-template-columns: minmax(0, 1fr) minmax(440px, 580px) minmax(0, 1.4fr);
  background: none;
  padding: 0;
  min-height: clamp(380px, 42vw, 540px);
  align-items: stretch;
}
.concierge--split .concierge__photo {
  position: relative;
  overflow: hidden;
}
.concierge--split .concierge__photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.concierge--split .concierge__box {
  background: var(--c-navy);
  color: var(--c-white);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  text-align: center;
  padding: clamp(40px, 5vw, 80px) clamp(28px, 4vw, 56px);
  width: 100%;
  gap: clamp(18px, 2vw, 28px);
}
.concierge--split .concierge__title-jp {
  font-family: var(--f-jp-mincho);
  font-size: clamp(20px, 2.4vw, 30px);
  line-height: 1.6;
  letter-spacing: 0.06em;
  margin: 0;
  white-space: nowrap;
}
.concierge--split .concierge__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(0.9rem, 1.2vw, 1rem);
  line-height: 1.9;
  letter-spacing: 0.06em;
}
.concierge--split .concierge__cta {
  display: inline-block;
  align-self: flex-end;       /* 右寄り */
  padding: clamp(12px, 1.4vw, 18px) clamp(28px, 3vw, 48px);
  border: 1px solid rgba(255,255,255,0.8);
  color: var(--c-white);
  text-decoration: none;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.2vw, 15px);
  letter-spacing: 0.08em;
  margin-top: clamp(16px, 2vw, 24px);
  transition: background var(--t-base), color var(--t-base);
}
.concierge--split .concierge__cta:hover { background: var(--c-white); color: var(--c-navy); }

@media (max-width: 900px) {
  .concierge--split { grid-template-columns: 1fr; min-height: 0; }
  .concierge--split .concierge__photo { aspect-ratio: 16 / 9; }
}

/* ============ Archive (GUIDE / JOURNAL) ============ */
.archive-page { padding-top: 0; background: var(--c-white); }
.archive-hashtags {
  padding: clamp(40px, 6vw, 80px) clamp(20px, 5vw, 60px) clamp(20px, 3vw, 40px);
  text-align: center;
}
.archive-hashtags__tab {
  display: inline-block;
  background: var(--c-black);
  color: var(--c-white);
  padding: 10px 28px;
  font-family: var(--f-en-serif);
  font-size: clamp(15px, 1.6vw, 20px);
  letter-spacing: 0.06em;
  margin-bottom: clamp(24px, 3vw, 36px);
}
.archive-hashtags__list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(14px, 2vw, 28px);
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.6vw, 20px);
}
.archive-hashtags__list a {
  position: relative;
  padding: 4px 0;
  transition: color var(--t-base);
}
.archive-hashtags__list a::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 0; height: 1px;
  background: currentColor;
  transition: width var(--t-slow);
}
.archive-hashtags__list a:hover { color: var(--c-red); }
.archive-hashtags__list a:hover::after { width: 100%; }

.archive-grid {
  padding: clamp(40px, 5vw, 80px) clamp(20px, 5vw, 80px) clamp(60px, 8vw, 120px);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(32px, 4vw, 56px);
}
@media (max-width: 900px) {
  .archive-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  /* #71: モバイルもサムネは2列レイアウト */
  .archive-grid { grid-template-columns: repeat(2, 1fr); }
}

.archive-card { display: flex; flex-direction: column; }
.archive-card__img {
  width: 100%;
  aspect-ratio: 320 / 420;
  overflow: hidden;
}
.archive-card__img img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform var(--t-slow);
}
.archive-card:hover .archive-card__img img { transform: scale(1.06); }
.archive-card__regions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 16px;
  margin-left: clamp(-16px, -1.2vw, -8px);   /* R102 (2026-09-15): moved here from .archive-card__region so only the group, not each badge, is pulled flush-left */
  align-self: flex-start;
}
.archive-card__region,
.journal-card__region {
  display: inline-block;
  padding: 10px 18px 8px 18px;
  font-family: var(--f-en-serif);
  font-size: clamp(0.85rem, 1.4vw, 1.1rem);
  color: var(--c-navy);
  background: var(--c-gray);
  align-self: flex-start;
}
/* 47都道府県、北(寒色)→南(暖色)のグラデーションで自動生成。
   北海道・沖縄は既存の色をそのまま維持し、間の45県を補間。
   彩度・輝度から自動計算し、暗すぎる色(山陰~四国の一部)だけ
   color:#fff を付与(YIQ輝度で自動判定)。 */
.archive-card__region--hokkaido,
.journal-card__region--hokkaido { background: #92B0F1; }
.archive-card__region--aomori,
.journal-card__region--aomori { background: #C3CADE; }
.archive-card__region--iwate,
.journal-card__region--iwate { background: #C2C7DE; }
.archive-card__region--miyagi,
.journal-card__region--miyagi { background: #C1C4DE; }
.archive-card__region--akita,
.journal-card__region--akita { background: #C0C2DD; }
.archive-card__region--yamagata,
.journal-card__region--yamagata { background: #C0C0DD; }
.archive-card__region--fukushima,
.journal-card__region--fukushima { background: #C1BFDD; }
.archive-card__region--ibaraki,
.journal-card__region--ibaraki { background: #C3BEDC; }
.archive-card__region--tochigi,
.journal-card__region--tochigi { background: #C4BEDC; }
.archive-card__region--gunma,
.journal-card__region--gunma { background: #C5BDDB; }
.archive-card__region--saitama,
.journal-card__region--saitama { background: #C7BCDB; }
.archive-card__region--chiba,
.journal-card__region--chiba { background: #C8BBDB; }
.archive-card__region--tokyo,
.journal-card__region--tokyo { background: #CABBDA; }
.archive-card__region--kanagawa,
.journal-card__region--kanagawa { background: #CBBADA; }
.archive-card__region--niigata,
.journal-card__region--niigata { background: #CDB9D9; }
.archive-card__region--toyama,
.journal-card__region--toyama { background: #CFB9D9; }
.archive-card__region--ishikawa,
.journal-card__region--ishikawa { background: #D0B8D9; }
.archive-card__region--fukui,
.journal-card__region--fukui { background: #D2B7D8; }
.archive-card__region--yamanashi,
.journal-card__region--yamanashi { background: #D4B6D8; }
.archive-card__region--nagano,
.journal-card__region--nagano { background: #D6B6D7; }
.archive-card__region--gifu,
.journal-card__region--gifu { background: #D7B5D7; }
.archive-card__region--shizuoka,
.journal-card__region--shizuoka { background: #D7B4D4; }
.archive-card__region--aichi,
.journal-card__region--aichi { background: #D6B3D1; }
.archive-card__region--mie,
.journal-card__region--mie { background: #D6B3CE; }
.archive-card__region--shiga,
.journal-card__region--shiga { background: #D6B2CC; }
.archive-card__region--kyoto,
.journal-card__region--kyoto { background: #D5B1C9; }
.archive-card__region--osaka,
.journal-card__region--osaka { background: #D5B1C6; }
.archive-card__region--hyogo,
.journal-card__region--hyogo { background: #D4B0C3; }
.archive-card__region--nara,
.journal-card__region--nara { background: #D4AFC0; }
.archive-card__region--wakayama,
.journal-card__region--wakayama { background: #D4AEBD; }
.archive-card__region--tottori,
.journal-card__region--tottori { background: #D3AEBA; }
.archive-card__region--shimane,
.journal-card__region--shimane { background: #D3ADB7; color: #fff; }
.archive-card__region--okayama,
.journal-card__region--okayama { background: #D2ACB3; color: #fff; }
.archive-card__region--hiroshima,
.journal-card__region--hiroshima { background: #D2ACB0; color: #fff; }
.archive-card__region--yamaguchi,
.journal-card__region--yamaguchi { background: #D2ABAD; color: #fff; }
.archive-card__region--tokushima,
.journal-card__region--tokushima { background: #D1ABAA; color: #fff; }
.archive-card__region--kagawa,
.journal-card__region--kagawa { background: #D1ACA9; color: #fff; }
.archive-card__region--ehime,
.journal-card__region--ehime { background: #D1AEA9; color: #fff; }
.archive-card__region--kochi,
.journal-card__region--kochi { background: #D0B0A8; }
.archive-card__region--fukuoka,
.journal-card__region--fukuoka { background: #D0B2A7; }
.archive-card__region--saga,
.journal-card__region--saga { background: #CFB5A7; }
.archive-card__region--nagasaki,
.journal-card__region--nagasaki { background: #CFB7A6; }
.archive-card__region--kumamoto,
.journal-card__region--kumamoto { background: #CFB9A5; }
.archive-card__region--oita,
.journal-card__region--oita { background: #CEBBA4; }
.archive-card__region--miyazaki,
.journal-card__region--miyazaki { background: #CEBDA4; }
.archive-card__region--kagoshima,
.journal-card__region--kagoshima { background: #CDC0A3; }
.archive-card__region--okinawa,
.journal-card__region--okinawa { background: #DACA9C; }

/* 広域地方(都道府県をまたぐ記事用、主にJOURNAL)。都道府県と同じ北→南の
   寒色→暖色の流れだが、彩度を上げ明度を落として都道府県バッジと差別化。
   全8地方とも背景が濃いため白文字固定。 */
.archive-card__region--tohoku,
.journal-card__region--tohoku { background: #5578C3; color: #fff; }
.archive-card__region--hokuriku,
.journal-card__region--hokuriku { background: #6052C2; color: #fff; }
.archive-card__region--kanto,
.journal-card__region--kanto { background: #8F50C1; color: #fff; }
.archive-card__region--tokai,
.journal-card__region--tokai { background: #C04DC0; color: #fff; }
.archive-card__region--kansai,
.journal-card__region--kansai { background: #C04A8D; color: #fff; }
.archive-card__region--chugoku,
.journal-card__region--chugoku { background: #BF4857; color: #fff; }
.archive-card__region--shikoku,
.journal-card__region--shikoku { background: #BE6A45; color: #fff; }
.archive-card__region--kyushu,
.journal-card__region--kyushu { background: #BD9D42; }

/* カテゴリー由来のバッジ(都道府県/地方を持たない記事、例:サイトお知らせ)。
   地理系(都道府県=パステル、地方=高彩度)とは違う編集トーンにするため、
   サイトのブランドカラー --c-navy をそのまま使用。 */
.archive-card__region--news,
.journal-card__region--news { background: var(--c-navy); color: #fff; }

.archive-card__date {
  margin-top: 8px;
  font-family: var(--f-en-serif);
  font-size: clamp(0.8125rem, 1.3vw, 1rem);
}
.archive-card__title,
.journal-card__title {
  margin-top: 18px;
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(1rem, 1.8vw, 1.2rem);
  line-height: 1.8;
  /* Layout unification (user directive 2026-07-03): equalize card heights so
     the TOURS grid aligns regardless of title length. line-clamp caps at 2
     lines; min-height reserves the 2-line box so shorter titles still push
     the body/tags below to a shared baseline. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  letter-spacing: 0.02em;
  overflow: hidden;
  min-height: calc(1.8em * 2);   /* R88 (2026-09-15): was 1.4em, didn't match line-height:1.8 above */
}

body.is-en .archive-card__title,
body.is-en .journal-card__title {
  font-size: clamp(1.1rem, 1.8vw, 1.3rem);
  line-height: 1.4;
  min-height: calc(1.4em * 2);   /* R88 (2026-09-15): added — line-height differs from the base rule (1.8), so min-height must too */
}

.archive-card__body {
  margin-top: 16px;
  font-family: var(--f-jp-mincho);
  font-size: clamp(0.9rem, 1.3vw, 1rem);
  line-height: 1.8;
  /* Layout unification (user directive 2026-07-03): cap body at 3 lines
     with a matching min-height so all cards share a common vertical rhythm
     regardless of copy length. */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(1.8em * 3);   /* R88 (2026-09-15): was 1.7em, didn't match line-height:1.8 above */
}

body.is-en .archive-card__body {
  font-size: clamp(1rem, 1.3vw, 1.1rem);
  line-height: 1.4;
  min-height: calc(1.4em * 3);   /* R88 (2026-09-15): added — line-height differs from the base rule (1.8), so min-height must too */
}

/* [2026-09] GUIDEのツアーカードは本文($card['body'])を廃止し空文字を渡しているため、
   .archive-card__body が空の<p>のまま margin-top + min-height(3行分)を予約し続け、
   タイトルとハッシュタグの間に無駄な余白ができていた。中身が空の時だけ畳む
   (JOURNALなど実際に本文テキストが入っているカードには影響しない)。 */
.archive-card__body:empty {
  display: none;
}
/* GUIDE ツアーカードのサムネ下テキストのホバー挙動を JOURNAL カードと同一にする。
   基準: front-page.css の .journal-card__{date,title,body,more} = 各子に明示 color を与えて
   親 <a>(.archive-card__inner) からの inherit を断ち、要素ごとに :hover で赤 → ホバーした要素だけ赤。
   (カード全体一括赤を防ぐ。Coming Soon カード=非リンクの div は対象外で現状維持。) */
.archive-card__date,
.archive-card__title,
.archive-card__body,
.archive-card__more {
  color: var(--c-text);
  transition: color var(--t-base);
}
.archive-card:not(.archive-card--coming-soon) .archive-card__date:hover,
.archive-card:not(.archive-card--coming-soon) .archive-card__title:hover,
.archive-card:not(.archive-card--coming-soon) .archive-card__body:hover,
.archive-card:not(.archive-card--coming-soon) .archive-card__more:hover { color: var(--c-red); }
/* === 統一 VIEW MORE (モック 0619_ガイドブック page0 実測準拠: テキストは左下、下線はテキスト右端より
   約0.34×テキスト幅ぶん右へ伸び、その右端から上やや左へ22°の短い矢印が立ち上がる。リンクは右下) ===
   モック実測値 (1280px幅 design scale): テキスト幅99px / テキスト下〜下線 約10px /
   下線長128px(=テキスト幅+約29px, 右オーバーシュート約34px) / 矢印 (419,2326)->(411,2306) 上20・左8 長さ約22 角度22°。 */
.archive-card__more,
.journal-card__more {
  position: relative;
  align-self: flex-end;
  margin-top: clamp(20px, 2.4vw, 28px);
  display: inline-block;
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(0.8125rem, 1.4vw, 1.125rem);
  line-height: 1;
  letter-spacing: 0.06em;
  color: var(--c-text);
  border-bottom: 1px solid currentColor;
  /* 右 padding = 下線をテキスト右端より右へ伸ばすオーバーシュート量 (モック約34px相当)。
     下 padding = テキスト下端〜下線の間隔 (モック約10px相当)。line-height:1 で間隔を予測可能に。 */
  padding: 0 clamp(20px, 2.5vw, 31px) clamp(4px, 0.5vw, 6px) 0;
}
.archive-card__more::after,
.journal-card__more::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: -1px;
  width: 1px;
  height: clamp(15px, 1.8vw, 22px);
  background: currentColor;
  transform-origin: bottom;
  transform: rotate(-22deg);
}
.archive-card__more .arrow,
.journal-card__more .arrow { display: none; }
/* カードのVIEW MORE: モック準拠で「右下」。上の本文との間隔をユーザー要望に合わせて拡大 (近すぎ→もっと離す) */
.archive-card__more {
  align-self: flex-end;
  margin-top: clamp(30px, 3.6vw, 48px);
}

/* === 統一: journal-card(front-page系)を archive-card と同じ Coming Soon チップ +
   VIEW MORE 右下配置に揃える。pages.css は front-page.css より後に読み込まれるため
   ここでの上書きが最終的に有効になる。 === */
/* R85 (2026-09-15) front-page.css側に分散していた .journal-card / .journal-card > a /
   .journal-card__body をここに統合(重複解消)。padding-inline(archive-card__innerと
   揃えるための左右余白)は front-page.css 側にあったものをここに合流。 */
.journal-card { display: flex; flex-direction: column; height: 100%; }
.journal-card > a {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  padding-inline: clamp(8px, 1.2vw, 16px);
  text-decoration: none;
  color: inherit;
}
/* 仕様: 本文 JP 14/21 D, 13/18 M */
.journal-card__body {
  margin-top: 12px;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.3vw, 14px);
  line-height: clamp(18px, 1.9vw, 21px);
  transition: color var(--t-base);
}
/* VIEW MORE: 実カードは「右下」+上本文との間隔をユーザー要望に合わせ拡大 (.archive-card__more と同一) */
/* R77 (2026-09-15) タグをカード全体の <a> の外に出したため(タグ文字クリックで
   記事へ飛んでしまうのを防ぐ)、GUIDE・JOURNAL(フロント)ともVIEW MOREを
   独立した <a> に分離。画像の右端にぴったり揃うよう右側の余白は無し。 */
.archive-card__more-link,
.journal-card__more-link {
  align-self: flex-end;
  padding-left: clamp(8px, 1.2vw, 16px);
}
.journal-card__more {
  align-self: flex-end;
  margin-top: clamp(30px, 3.6vw, 48px);
}
/* Coming Soon カードは下端揃えを維持 (左寄せ) */
.journal-card__more--disabled {
  color: var(--c-text-mute, #888);
  opacity: 0.6;
  cursor: default;
  margin-top: auto;
}
.journal-card__more--disabled:hover { color: var(--c-text-mute, #888); }
/* Coming Soon カードの画像トーン/カーソルを archive-card--coming-soon と揃える */
.journal-card--coming-soon { cursor: default; opacity: 0.92; }
.journal-card--coming-soon .journal-card__img img { filter: saturate(0.85); }
.journal-card--coming-soon:hover .journal-card__img img { transform: none; }

.archive-pagination {
  text-align: center;
  padding: clamp(40px, 5vw, 64px) 0;
  font-family: var(--f-en-serif);
  font-size: clamp(24px, 4vw, 48px);
}
.archive-pagination a, .archive-pagination span {
  display: inline-block;
  margin: 0 clamp(8px, 1.5vw, 18px);
}
.archive-pagination .current {
  width: clamp(48px, 6vw, 80px);
  height: clamp(48px, 6vw, 80px);
  background: var(--c-navy);
  color: var(--c-white);
  border-radius: 50%;
  line-height: clamp(48px, 6vw, 80px);
}

/* ============ Tour LP Single ============ */
.tour-hero {
  position: relative;
  width: 100%;
  height: clamp(420px, 70vh, 760px);
  overflow: hidden;
  color: var(--c-white);
  background: #000;
}
.tour-hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.tour-hero__video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
.tour-hero__caption {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  z-index: 2;
  gap: 18px;
  padding-inline: clamp(20px, 5vw, 60px);
  background: rgba(0, 0, 0, 0.3);
}
.tour-hero__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(36px, 6vw, 76px);
  line-height: 1.1;
  letter-spacing: 0.04em;
}
.tour-hero__sub {
  font-family: var(--f-en-serif);
  font-size: clamp(20px, 2.4vw, 30px);
  font-style: normal;
}

.tour-overview {
  padding: clamp(80px, 10vw, 160px) clamp(20px, 5vw, 60px) clamp(60px, 8vw, 100px);
  text-align: center;
}
.tour-overview__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(48px, 7vw, 96px);
  line-height: 1;
  letter-spacing: 0.04em;
  margin-bottom: clamp(24px, 3vw, 40px);
}
.tour-overview__body {
  max-width: 760px;
  margin: 0 auto;
  font-family: var(--f-jp-mincho);
  /* #12 P2: 仕様 15px固定 / lh31 (ツアー_ブログ.docx P36) — 両 viewport 同値で厳格に固定。 */
  font-size: 15px;
  line-height: 31px;
}

.tour-highlight {
  padding: clamp(60px, 8vw, 120px) 0;
  background: var(--c-bg-soft);
}
.tour-highlight__day {
  padding: clamp(40px, 5vw, 80px) clamp(20px, 5vw, 80px);
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.tour-highlight__day:last-child { border-bottom: 0; }
.tour-highlight__label {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(48px, 8vw, 96px);
  line-height: 1;
  letter-spacing: 0.04em;
  margin-bottom: clamp(20px, 3vw, 32px);
}
.tour-highlight__items {
  display: grid;
  grid-template-columns: 2fr 3fr;
  gap: clamp(30px, 4vw, 60px);
}
.tour-highlight__list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.6vw, 18px);
}
.tour-highlight__list li::before { content: "• "; color: var(--c-navy); }
.tour-highlight__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 16px);
  line-height: 2;
}
@media (max-width: 768px) {
  .tour-highlight__items { grid-template-columns: 1fr; }
}

.tour-detail {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px);
  background: var(--c-bg-soft);
}
.tour-detail__map {
  width: 100%;
  aspect-ratio: 16 / 9;
  margin-bottom: clamp(24px, 3vw, 40px);
}
.tour-detail__map iframe { width: 100%; height: 100%; border: 0; }
.tour-detail__map-btn {
  display: inline-block;
  padding: 12px 32px;
  background: var(--c-green);
  color: var(--c-white);
  font-family: var(--f-en-serif);
  transition: background var(--t-base);
}
.tour-detail__map-btn:hover { background: var(--c-red); }
.tour-detail__list {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: 16px clamp(24px, 3vw, 48px);
  max-width: 960px;
  margin: clamp(40px, 5vw, 64px) auto 0;
  font-family: var(--f-jp-mincho);
}
.tour-detail__list dt {
  font-weight: 700;
  font-size: clamp(15px, 1.8vw, 20px);
}
.tour-detail__list dd {
  margin: 0;
  font-size: clamp(13px, 1.5vw, 18px);
  line-height: 1.8;
}

/* ============ Tour Enquiry Form (v0.8.18 モック完全準拠) ============ */
.enquiry-form {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 60px) clamp(80px, 10vw, 160px);
  max-width: 760px;
  margin: 0 auto;
}
.enquiry-form__intro {
  font-family: var(--f-jp-mincho);
  font-size: clamp(14px, 1.5vw, 16px);
  line-height: 2;
  margin: 0 auto clamp(40px, 5vw, 64px);
  text-align: center;
}
/* v0.8.18 項目3: リード文下の水平区切り線 (モック準拠: 中央短線) */
.enquiry-form__intro::after {
  content: '';
  display: block;
  width: clamp(140px, 18vw, 220px);
  height: 1px;
  background: var(--c-text, #1a1a1a);
  margin: clamp(28px, 3.5vw, 48px) auto 0;
}
/* v0.8.18 項目8: フィールド間余白増量 (モック実測 70-90px相当) */
.enquiry-form__field {
  margin-bottom: clamp(40px, 5vw, 72px);
}
.enquiry-form__label {
  display: block;
  font-family: var(--f-jp-mincho);
  font-weight: 500;
  font-size: clamp(1rem, 2vw, 1.1rem);
  line-height: 1.4;
  margin-bottom: 12px;
  letter-spacing: 0.04em;
}
/* v0.8.18 項目4: EN補足説明 (Name / Title 補足) を細字で */
.enquiry-form__label-main {
  font-weight: 500;
}
.enquiry-form__label-note {
  font-weight: 400;
  font-size: 0.7em;
  letter-spacing: 0.02em;
  margin-left: 4px;
  color: var(--c-text);
}
/* v0.8.18 項目10: EN版のラベル/セクションタイトルは 28px に拡大 */
.page-enquiry-en .enquiry-form__label {
  font-family: var(--f-en-serif);
  font-size: clamp(20px, 2.4vw, 28px);
  line-height: 1.1;
}
.enquiry-form__required {
  color: var(--c-red);
  margin-left: 4px;
}
/* v0.8.18 項目2,6: 入力フィールドを「ボトム下線のみ」に統一 */
.enquiry-form__input,
.enquiry-form__textarea,
.enquiry-form__select {
  width: 100%;
  padding: 10px 0;
  border: 0;
  border-bottom: 1px solid var(--c-text, #1a1a1a);
  background: transparent;
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.6vw, 17px);
  line-height: 1.5;
  border-radius: 0;
  box-shadow: none;
  outline: none;
}
.enquiry-form__textarea {
  min-height: 60px;
  resize: vertical;
}
/* v0.8.18 項目6: select の矢印アイコン (SVG 黒矢印) */
.enquiry-form__select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%231a1a1a' stroke-width='1.2' d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 4px center;
  background-size: 12px 8px;
  padding-right: 24px;
}
.enquiry-form__input:focus,
.enquiry-form__textarea:focus,
.enquiry-form__select:focus {
  outline: none;
  border-bottom: 2px solid var(--c-navy);
}
.enquiry-form__radio-group,
.enquiry-form__checkbox-group {
  display: flex;
  flex-direction: column;
  gap: 14px;
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.6vw, 17px);
  padding-left: clamp(24px, 3vw, 56px);
}
.enquiry-form__radio,
.enquiry-form__checkbox {
  display: flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
  line-height: 1.4;
}
/* v0.8.18 項目7: ラジオ/チェックボックスをカスタムスタイル */
.enquiry-form__radio input[type="radio"],
.enquiry-form__checkbox input[type="checkbox"] {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  margin: 0;
  border: 1px solid var(--c-text, #1a1a1a);
  background: transparent;
  display: inline-block;
  position: relative;
  flex-shrink: 0;
  vertical-align: middle;
  cursor: pointer;
}
.enquiry-form__radio input[type="radio"] {
  border-radius: 50%;
}
.enquiry-form__radio input[type="radio"]:checked::after {
  content: '';
  position: absolute;
  inset: 3px;
  border-radius: 50%;
  background: var(--c-text, #1a1a1a);
}
.enquiry-form__checkbox input[type="checkbox"] {
  border-radius: 2px;
}
.enquiry-form__checkbox input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 5px;
  top: 1px;
  width: 6px;
  height: 11px;
  border: solid var(--c-text, #1a1a1a);
  border-width: 0 1.5px 1.5px 0;
  transform: rotate(45deg);
}
/* v0.8.18 EN版: ラジオ/チェックボックスタイトル(.enquiry-form__label)もEN serif適用 */
.page-enquiry-en .enquiry-form__radio,
.page-enquiry-en .enquiry-form__checkbox {
  font-family: var(--f-en-serif);
  font-size: clamp(15px, 1.8vw, 20px);
}

/* v0.8.18 プライバシーポリシー文言ブロック */
.enquiry-form__field--privacy {
  margin-top: clamp(48px, 6vw, 80px);
}
.enquiry-form__privacy-text {
  font-family: var(--f-jp-mincho);
  font-size: clamp(14px, 1.5vw, 16px);
  line-height: 1.8;
  margin: 0 0 16px;
}
.page-enquiry-en .enquiry-form__privacy-text {
  font-family: var(--f-en-serif);
  font-size: clamp(15px, 1.8vw, 20px);
}
.enquiry-form__privacy-link {
  text-decoration: underline;
  color: inherit;
}

.enquiry-form__submit-wrap {
  text-align: center;
  margin-top: clamp(40px, 5vw, 64px);
}
.enquiry-form__submit {
  padding: 18px 80px;
  background: var(--c-text, #1a1a1a);
  color: var(--c-white);
  font-family: var(--f-en-serif);
  font-size: clamp(16px, 1.8vw, 20px);
  letter-spacing: 0.06em;
  border: 0;
  border-radius: 0;
  cursor: pointer;
  transition: background var(--t-base);
}
.enquiry-form__submit:hover { background: var(--c-navy); }

/* Send ボタンとフッターロゴ間の水平罫線 (v0.8.17, モック準拠)
   モック観察: 1px / #26314d (navy) / コンテンツ幅いっぱい / Send下に十分余白 */
.enquiry-form__divider {
  display: block;
  width: 100%;
  height: 1px;
  border: 0;
  background: var(--c-navy);
  margin: clamp(60px, 7vw, 110px) 0 0;
}

/* v0.8.24: Tour Enquiry 送信結果バナー (admin-post.php リダイレクト後表示) */
.enquiry-form__status {
  max-width: 760px;
  margin: clamp(24px, 4vw, 40px) auto 0;
  padding: 16px 20px;
  font-family: var(--f-jp-mincho);
  font-size: clamp(14px, 1.5vw, 16px);
  line-height: 1.8;
  border-radius: 2px;
  text-align: center;
}
.enquiry-form__status--ok {
  background: #f1f5ec;
  border: 1px solid #788c5d;
  color: #2d3a1f;
}
.enquiry-form__status--err {
  background: #fbecec;
  border: 1px solid #c44;
  color: #6a1f1f;
}
.page-enquiry-en .enquiry-form__status { font-family: var(--f-en-serif, 'Cormorant Infant', serif); }

/* ============================================================
   v0.6.0 追加: Privacy/ASCT/Journal/Guide/Blog/Tour/Enquiry
   ============================================================ */

/* ========== POLICY HERO (Privacy + ASCT 共通) ========== */
.policy-hero {
  position: relative;
  width: 100%;
  height: clamp(380px, 42.5vw, 560px);   /* Tour Enquiry のKVと同じサイズ */
  overflow: hidden;
}
.policy-hero__bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
}
.policy-hero__bg::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.15), rgba(0,0,0,0.40));
}
.policy-hero__overlay-text {
  position: absolute; left: 0; right: 0; top: 50%;
  transform: translateY(-50%);
  font-family: var(--f-en-serif);
  font-weight: 700;
  font-size: clamp(46px, 9vw, 116px);
  line-height: 0.94;
  color: var(--c-white);
  opacity: 0.5;
  text-align: center;
  letter-spacing: 0.04em;
  pointer-events: none;
  z-index: 2;
  padding-inline: 4vw;
}
.policy-hero__overlay-text--multi {
  display: flex; flex-direction: column; gap: 4px;
  text-align: left; left: clamp(20px, 5vw, 80px);
}
.policy-hero__overlay-text--multi span { display: block; }

/* ========== POLICY BODY ========== */
.policy-body, .asct-body {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px) clamp(80px, 10vw, 160px);
  max-width: 880px;
  margin: 0 auto;
}
.policy-body__title, .asct-body__title {
  text-align: center;
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(23px, 3.36vw, 43px);   /* 仕様: KVタイトル 日本語 D43 / M23 */
  line-height: 1.3;
  letter-spacing: 0.06em;
  margin: 0 0 clamp(8px, 1vw, 16px);
}
/* 仕様: KVタイトル 英語 D54 / M28 */
body.is-en .policy-body__title { font-size: clamp(28px, 4.22vw, 54px); }
.policy-body__hr {
  display: block;
  width: clamp(60px, 8vw, 120px);
  height: 1px;
  background: var(--c-navy);
  margin: clamp(16px, 2vw, 28px) auto clamp(40px, 5vw, 64px);
}
.policy-body__intro {
  font-family: var(--f-jp-mincho);
  font-size: clamp(14px, 1.5vw, 16px);
  line-height: 2.06;
  text-align: center;
  margin: 0 auto clamp(48px, 6vw, 80px);
  max-width: 720px;
}
.policy-section {
  margin-bottom: clamp(40px, 5vw, 64px);
}
.policy-section__title {
  font-family: var(--f-en-serif);
  font-weight: 700;
  font-size: clamp(20px, 2.4vw, 30px);
  line-height: 1.4;
  margin: 0 0 12px;
}
.policy-section__hr {
  display: block;
  width: 100%;
  height: 1px;
  background: var(--c-navy);
  margin: 0 0 clamp(16px, 2vw, 28px);
}
.policy-section__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 2.06;
  margin: 0;
}
.policy-section__body a { color: var(--c-navy); text-decoration: underline; }
.policy-section__body a.btn-primary { color: var(--c-white); text-decoration: none; }
.policy-section--contact .policy-section__body { font-family: var(--f-en-serif); }

/* ========== ASCT LIST ========== */
.asct-list {
  display: grid;
  grid-template-columns: minmax(160px, 24%) 1fr;
  gap: 0;
  margin: 0;
  font-family: var(--f-jp-mincho);
  border-top: 1px solid var(--c-gray);
}
.asct-list__dt {
  padding: clamp(18px, 2.4vw, 28px) clamp(12px, 2vw, 24px);
  font-weight: 700;
  font-size: clamp(14px, 1.5vw, 16px);
  border-bottom: 1px solid var(--c-gray);
}
.asct-list__dd {
  margin: 0;
  padding: clamp(18px, 2.4vw, 28px) clamp(12px, 2vw, 24px);
  font-size: clamp(13px, 1.5vw, 15px);
  line-height: 1.9;
  border-bottom: 1px solid var(--c-gray);
}
.asct-list__dd a { color: var(--c-navy); text-decoration: underline; }
@media (max-width: 768px) {
  .asct-list { grid-template-columns: 1fr; }
  .asct-list__dt { padding-bottom: 4px; border-bottom: none; }
  .asct-list__dd { padding-top: 8px; }
}

/* ========== JOURNAL HERO (mock-aligned v0.8.2)
   LEFT column: large landscape photo (top) + JOURNAL title + lead (below, with white space)
   RIGHT column: portrait photo near top, right-aligned (no caption)
   ============================================ */
.journal-hero {
  display: grid;
  grid-template-columns: minmax(0, 58fr) minmax(0, 42fr);
  background: var(--c-bg-soft);
  padding: clamp(24px, 3vw, 56px) 0 clamp(40px, 5vw, 96px);
}
/* dual-hero化された実際のマークアップ(.journal-hero.dual-hero)では、上のpaddingは
   GUIDE/ABOUTに無い余計な上下余白になり、挙動差の原因になっていた。GUIDEに揃えて
   無効化する(モバイルは既存のNo.124で別途0にしている)。 */
.journal-hero.dual-hero {
  padding: 0;
}
.journal-hero__left {
  display: flex;
  flex-direction: column;
  gap: clamp(28px, 4vw, 64px);
  padding: 0 clamp(24px, 3vw, 48px) 0 clamp(32px, 5vw, 96px);
}
.journal-hero__photo {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
}
.journal-hero__photo img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.journal-hero__caption {
  display: flex; flex-direction: column; gap: clamp(20px, 2.4vw, 36px);
  max-width: 540px;
  padding-left: clamp(4px, 0.5vw, 12px);
}
.journal-hero__title {
  font-family: var(--f-en-serif);
  font-weight: 700;
  font-size: clamp(56px, 9vw, 115px);          /* GUIDE と統一 */
  line-height: 0.94;
  letter-spacing: 0.01em;
  margin: 0;
}
.journal-hero__lead {
  font-family: var(--f-en-serif);
  font-weight: 400;
  font-size: clamp(14px, 1.3vw, 17px);
  line-height: 2.4;
  letter-spacing: 0.02em;
  margin: 20px 0 0 0;
  color: var(--c-text, #2a2a2a);
}
/* JP page lead retains EN serif (mock shows English copy on JP page). */
.journal-archive .journal-hero__lead {
  font-family: var(--f-en-serif);
}
.journal-hero__right {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  padding: clamp(80px, 12vw, 200px) clamp(32px, 5vw, 96px) 0 clamp(24px, 3vw, 48px);
}
.journal-hero__small {
  width: 100%;
  max-width: clamp(240px, 36vw, 420px);
  aspect-ratio: 3 / 4;
  overflow: hidden;
}
.journal-hero__small img { width: 100%; height: 100%; object-fit: cover; display: block; }

@media (max-width: 900px) {
  .journal-hero {
    grid-template-columns: 1fr;
    padding: 24px 0 40px;
  }
  .journal-hero__left { padding: 0 24px; gap: 24px; }
  .journal-hero__right {
    padding: 0 24px;
    justify-content: center;
  }
  .journal-hero__small {
    aspect-ratio: 4 / 3;
    max-width: 100%;
  }
}

/* ========== JOURNAL SECTION ========== */
.journal-section {
  margin: clamp(64px, 8vw, 120px) clamp(20px, 4vw, 60px) clamp(40px, 5vw, 80px);
}
/* ヒーロー直後の最初のセクション(REGIONAL STORIES)は上余白を詰める(モック準拠) */
.journal-hero + .journal-section { padding-top: clamp(16px, 2vw, 32px); }
.journal-section__head {
  display: flex; flex-direction: column; align-items: center;
  gap: clamp(12px, 1.5vw, 20px);   /* 本イラスト ↔ タイトル */
  padding-bottom: clamp(40px, 5vw, 64px);
}
/* モック: REGIONAL STORIES のタイトル上に開いた本の線画 (84×56, 中央) */
.journal-section__book {
  display: block;
  width: clamp(56px, 6.5vw, 84px);
  height: auto;
}
.journal-section__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(28px, 4vw, 64px);
  letter-spacing: 0.06em;
  text-align: center;
  margin: 0;
  /* モック: タイトル下にタイトル幅の細い下線 */
  padding-bottom: clamp(10px, 1.4vw, 16px);
  border-bottom: 1px solid rgba(20, 20, 19, 0.45);
}

/* ========== HASHTAG BAR ========== */
/* モック: 「Hashtags」は黒タブとして枠付きボックスの左上に乗る */
.journal-hashbar {
  position: relative;
  max-width: 1085px;
  width: 100%;
  margin: clamp(56px, 5.5vw, 70px) auto clamp(20px, 2.4vw, 32px);  /* 上にタブ分の余白 */
  border: 1px solid var(--c-navy);
  background: var(--c-white);
}
.journal-hashbar__pill {
  position: absolute;
  left: -1px;
  bottom: 100%;             /* ボックスの上端に乗せる(タブ) */
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--c-black); color: var(--c-white);   /* 仕様: タブ背景 黒・白文字 */
  padding: 10px clamp(24px, 3vw, 36px);
  font-family: var(--f-en-serif);
  font-size: 20px;          /* 仕様: D/M 20px */
  line-height: 1.3;
  letter-spacing: 0.08em;
  white-space: nowrap;
}
.journal-hashbar__list {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: clamp(12px, 1.6vw, 20px) clamp(18px, 2.4vw, 34px);
  padding: clamp(18px, 2.2vw, 28px) clamp(28px, 3.4vw, 46px);
  list-style: none;
  margin: 0;
}
.journal-hashbar__list a {
  font-family: var(--f-en-serif);
  font-size: clamp(15px, 1.6vw, 18px);   /* 仕様: D20 / M15 */
  line-height: 26px;                      /* 仕様: 行間 26px */
  color: var(--c-navy);
  letter-spacing: 0.04em;
  position: relative;
}
.journal-hashbar__list a::after {
  content: ""; position: absolute; left: 0; bottom: -2px;
  width: 0; height: 1px; background: var(--c-red);
  transition: width 600ms ease;
}
.journal-hashbar__list a:hover { color: var(--c-red); }
.journal-hashbar__list a:hover::after { width: 100%; }
/* Item #2 (2026-07-04): active chip when client-side filter is applied.
 * R78 (2026-09-15) was color: var(--c-red) — same red as :hover, so hovering a
 * different chip while one was active showed two red chips at once,
 * unclear which one was actually selected. Tried navy next, but that's
 * already the default (unselected) text color, so active became
 * indistinguishable from every other chip — and the underline was still
 * red (inherited from the base ::after rule), which was worse. Using the
 * existing --c-green brand token instead: default=navy, hover=red,
 * active=green — three clearly different colors, no new hex introduced. */
.journal-hashbar__list a.is-active { color: var(--c-green); }
.journal-hashbar__list a.is-active::after { width: 100%; background: var(--c-green); }
.journal-hashbar__list a.hashbar-chip { cursor: pointer; }

/* Batch 3 Item 10 (2026-07-04): explicit clear-filter button on GUIDE archive.
   Sits after the hashtag chip strip inside .guide-filterbar. Discreet outlined
   pill so it reads as a secondary control (not competing with the chips). */
.guide-filter-clear {
  align-self: center;
  display: inline-block;
  margin-top: clamp(8px, 1vw, 14px);
  padding: 6px 18px;
  font-family: var(--f-en-sans, var(--f-en-serif));
  font-size: clamp(12px, 1.2vw, 14px);
  letter-spacing: 0.08em;
  color: var(--c-navy, #1a2a4a);
  background: transparent;
  border: 1px solid currentColor;
  border-radius: 999px;
  cursor: pointer;
  text-decoration: none;
  transition: background var(--t-base), color var(--t-base);
}
.guide-filter-clear:hover,
.guide-filter-clear:focus {
  background: var(--c-navy, #1a2a4a);
  color: var(--c-white, #fff);
  text-decoration: none;
}
/* Q4 (2026-07-04): JOURNAL variant sits directly inside .journal-section
   (block flow, no flex parent) — center via auto margins, keep the same
   visual pill from the GUIDE case. */
.guide-filter-clear--journal {
  display: block;
  width: fit-content;
  margin: clamp(8px, 1vw, 14px) auto 0;
}

.journal-count {
  text-align: left;
  font-size: clamp(13px, 1.4vw, 16px);
  letter-spacing: 0.1em;
  margin: clamp(24px, 3vw, 40px) 0 -35px 0;
  color: var(--c-navy);
  /* R79 (2026-09-15) archive-grid(display:grid)の中に置かれる場合、カード1枠に
     押し込まれず全幅を使うようにする。 */
  grid-column: 1 / -1;
}

/* ========== ARCHIVE GRID 3-col ========== */
.archive-grid--3col {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(40px, 5vw, 64px) clamp(18px, 3.6vw, 40px);
  /* R80 (2026-09-15) .journal-hashbar (the bordered hashtag box) sits *inside*
     .guide-filterbar's own padding (clamp(20px,4vw,60px)) and is itself
     max-width:1085px + margin:auto within that already-narrowed area.
     To land on the exact same edges at any viewport width, this element
     (a sibling of .guide-filterbar, not nested inside it) reproduces both
     layers on itself: max-width = 1085px plus the same padding on both
     sides, with matching padding + margin:auto. */
  max-width: calc(1085px + 2 * clamp(20px, 4vw, 60px));
  margin: 0 auto clamp(40px, 5vw, 80px);
  padding: 0 clamp(20px, 4vw, 60px);
}
@media (max-width: 768px) {
  .archive-grid--3col { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 430px) {
  /* #71: モバイルもサムネは2列レイアウト */
  .archive-grid--3col { grid-template-columns: repeat(2, 1fr); }
}

/* ========== PAGINATION nav ========== */
.archive-pagination__nav {
  font-family: var(--f-en-serif);
  font-size: clamp(14px, 1.6vw, 18px);
  letter-spacing: 0.08em;
}
.archive-pagination--journal {
  font-size: clamp(18px, 2.2vw, 28px);
  padding: clamp(24px, 3vw, 40px) 0 clamp(40px, 5vw, 72px);
}
.archive-pagination--journal .current {
  width: clamp(36px, 4.4vw, 56px);
  height: clamp(36px, 4.4vw, 56px);
  line-height: clamp(36px, 4.4vw, 56px);
  font-size: clamp(16px, 1.8vw, 22px);
}
.archive-pagination__ellipsis {
  font-family: var(--f-en-serif);
  letter-spacing: 0.1em;
  color: var(--c-navy);
  margin: 0 clamp(4px, 0.6vw, 10px);
}

/* ========== Item 8: Pagination font-sizes per spec ==========
   Back / Next : desktop 20px (JP/EN)
   Numbers     : desktop 24px / mobile 20px (JP/EN)
   line-height : normal (auto)                                  */
.archive-pagination .archive-pagination__nav,
.archive-pagination .archive-pagination__nav--prev,
.archive-pagination .archive-pagination__nav--next {
  font-size: 20px;
  line-height: normal;
}
.archive-pagination a:not(.archive-pagination__nav),
.archive-pagination span.current,
.archive-pagination--journal a:not(.archive-pagination__nav),
.archive-pagination--journal span.current {
  font-size: 24px;
  line-height: normal;
}
.archive-pagination--journal .current {
  /* override earlier clamp() font-size to spec 24px desktop */
  font-size: 24px;
}

/* ========== Item 8b + Task #19: Circle size + geometric centering ==========
   Desktop numbers 24px → circle 44px (ratio ~1.83)
   Mobile  numbers 20px → circle 36px (ratio ~1.80)
   Task #19: use inline-flex + align/justify center + line-height:1 so the
   digit is geometrically centered inside the circle regardless of the
   font's baseline / half-leading.  !important beats the earlier
   `.archive-pagination span.current { line-height: normal }` (spec 0,2,1). */
.archive-pagination .current,
.archive-pagination--journal .current {
  width: 44px;
  height: 44px;
  padding: 0 !important;
  border-radius: 50%;
  box-sizing: border-box;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  text-align: center !important;
  vertical-align: middle !important;
}
@media (max-width: 768px) {
  .archive-pagination a:not(.archive-pagination__nav),
  .archive-pagination span.current,
  .archive-pagination--journal a:not(.archive-pagination__nav),
  .archive-pagination--journal span.current,
  .archive-pagination--journal .current {
    font-size: 20px;
    line-height: normal;
  }
  .archive-pagination .current,
  .archive-pagination--journal .current {
    width: 36px;
    height: 36px;
    line-height: 1 !important;
  }
}

/* ========== JOURNAL CARD overrides (v0.8.2 — mock-aligned) ========== */
.archive-card--journal .archive-card__inner {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
}
.archive-card--journal .archive-card__img {
  aspect-ratio: 4 / 5;
}
.archive-card--journal .archive-card__date,
.journal-card__date {
  position: relative;
  margin-top: 18px;
  padding-top: 14px;
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(0.75rem, 1.2vw, 0.875rem);
  color: var(--c-text);
  text-align: center;
  letter-spacing: 0.04em;
}
.archive-card--journal .archive-card__date::before,
.journal-card__date::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: var(--c-navy, #1a1a1a);
  opacity: 0.45;
}

/* GUIDE ページの JOURNAL カードを REGIONAL STORIES と同じ画像サイズ/レイアウトに */
.guide-archive .journal__cards {
  max-width: 1200px;
  margin-inline: auto;
  gap: clamp(24px, 3vw, 48px) clamp(20px, 2.4vw, 32px);
  padding-inline: clamp(16px, 2vw, 24px);
}
.guide-archive .journal-card__img {
  aspect-ratio: 4 / 5;   /* REGIONAL STORIES と同じ */
}
.archive-card--journal .archive-card__title,
.journal-card__title {
  margin-top: 10px;
  font-family: var(--f-en-serif);
  font-style: normal;
  font-weight: 500;
}
.archive-card--journal .archive-card__body {
  margin-top: 10px;
  font-family: var(--f-jp-mincho);
  font-size: 0.85rem;
  line-height: 1.8;
  text-align: center;
  min-height: calc(1.8em * 3);   /* R88 (2026-09-15): match this variant's own line-height, not the base rule's */
}
.archive-card--journal .archive-card__more {
  /* 統一: 基底 .archive-card__more（下線 + 矢印）に揃える。右下配置 */
  align-self: flex-end;
  color: var(--c-text);
}
/* カード内部を高さいっぱいの縦フレックスに → Coming Soon の VIEW MORE を右下へ */
.archive-card__inner { display: flex; flex-direction: column; height: 100%; padding-inline: clamp(8px, 1.2vw, 16px); }
.archive-card__img {
  flex-shrink: 0;
  margin-inline: clamp(-16px, -1.2vw, -8px);
  width: auto;
}
.archive-card--coming-soon .archive-card__inner {
  cursor: default;
  opacity: 0.92;
}
.archive-card--coming-soon .archive-card__img img {
  filter: saturate(0.85);
}
.archive-card--coming-soon .archive-card__more--disabled {
  color: var(--c-text-mute, #888);
  opacity: 0.6;
  margin-top: auto;        /* 下端へ */
  align-self: flex-end;    /* 右へ → 右下 */
}
.archive-card--coming-soon:hover .archive-card__img img {
  transform: none;
}

/* EN journal body font: now handled by the sitewide body.is-en rule
   (see body.is-en .archive-card__body, body.is-en .archive-card--journal
   .archive-card__body below) instead of this page-specific class. */

/* ========== CONCIERGE SPLIT (Journal/Guide/Enquiry) ==========
 * 注意: .concierge--split 親の .concierge には front-page.css で overflow:hidden
 * が指定されているため、min-heightが本文高さを下回るとCTAやタイトルがクリップされる。
 * → JP/EN 両方で本文・CTAが収まる十分な min-height を確保する。
 *
 * フォント: 既定は JP mincho（JP本文が見えないバグの根本原因対策）。
 * EN ページは HTML 側で inline style="font-family: var(--f-en-serif);" を
 * title/body/CTA に指定して EN serif に切り替える。
 * ============================================================ */
.concierge--split {
  display: grid;
  /* 帯を少し広げ(中央列)・少し左へ(左0.6fr/右1.4fr) */
  grid-template-columns: 0.6fr minmax(440px, 40%) 1.4fr;
  min-height: clamp(420px, 44vw, 560px);
  background: var(--c-navy);
  overflow: visible;
}
.concierge--split .concierge__photo {
  overflow: hidden;
}
.concierge--split .concierge__photo img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.concierge--split .concierge__box {
  background: var(--c-navy);
  color: var(--c-white);
  padding: clamp(32px, 4vw, 60px) clamp(20px, 3vw, 40px);
  display: flex; flex-direction: column; gap: clamp(16px, 2vw, 24px);
  justify-content: center;
  /* Task #15: desktop 文字は左揃え、ボタンは右揃え (per mock 0619_トップページ_Desktop.pdf) */
  text-align: left;
  align-items: stretch;
}
.concierge--split .concierge__title-jp {
  font-family: var(--f-jp-mincho);
  font-weight: 500;
  font-size: clamp(18px, 2vw, 26px);
  line-height: 1.6;
  letter-spacing: 0.06em;
  margin: 0;
  white-space: nowrap;          /* 改行なし（1行） */
  color: var(--c-white);
}
.concierge--split .concierge__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(0.9rem, 1.2vw, 1.05rem);
  line-height: 1.9;
  letter-spacing: 0.04em;
  margin: 0;
  color: rgba(255,255,255,0.92);
}
.concierge--split .concierge__cta {
  /* Task #15: ボタンは右揃え (per mock 0619_トップページ_Desktop.pdf) */
  align-self: flex-end;
  background: transparent;                       /* モック: 透明背景の枠ボタン */
  color: var(--c-white);
  border: 1px solid rgba(255, 255, 255, 0.85);   /* 白い枠線 */
  padding: 16px clamp(28px, 4vw, 44px);          /* 枠を少し大きく */
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.3vw, 15px);
  letter-spacing: 0.06em;
  text-decoration: none;
  transition: background var(--t-base), color var(--t-base);
}
.concierge--split .concierge__cta:hover { background: var(--c-white); color: var(--c-navy); }
@media (max-width: 900px) {
  /* モック(mobile, 0619_アバウト_mobile.pdf): 紺帯を左寄せ(約73%)・右に画像が少し見える */
  .concierge--split {
    grid-template-columns: 73% 27%;
    min-height: clamp(400px, 112vw, 460px);
  }
  .concierge--split .concierge__photo--left { display: none; }   /* 左写真は非表示 */
  .concierge--split .concierge__photo { aspect-ratio: auto; }     /* 列の高さいっぱいに */
  .concierge--split .concierge__box {
    text-align: left;
    align-items: flex-start;
    justify-content: center;
    padding: clamp(36px, 9vw, 56px) clamp(22px, 6vw, 40px);
  }
  .concierge--split .concierge__title-jp { white-space: normal; }
  .concierge--split .concierge__cta {
    align-self: flex-start;
    white-space: nowrap;                       /* CTA は1行 */
    font-size: clamp(12px, 3.4vw, 14px);
    padding: 13px clamp(18px, 4.5vw, 24px);
  }
}

/* ========== GUIDE HERO v8 (CCAGI design-reviewer 完全パッチ)
   ★ 根本修正: 右列 justify-content flex-start → flex-end
     右の画像とリード文をタイトルと同じ高さレベルへ押し下げ
   ============================================ */
.guide-hero {
  display: grid;
  grid-template-columns: minmax(0, 58fr) minmax(0, 42fr);
  min-height: auto;
  background: var(--c-bg-soft);
}
.guide-hero__left {
  display: flex;
  flex-direction: column;
  padding: clamp(40px, 6vw, 96px) clamp(40px, 5vw, 80px) clamp(40px, 6vw, 96px) clamp(40px, 6vw, 96px);
}
.guide-hero__photo {
  width: 100%;
  aspect-ratio: 715 / 510;   /* #99-111: モック実寸 715×510 */
  overflow: hidden;
}
.guide-hero__photo img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.guide-hero__title {
  font-family: var(--f-en-serif);
  font-weight: 700;
  font-size: clamp(56px, 9vw, 115px);
  line-height: 0.85;     /* 0.82から微増、行同士の接触回避 */
  letter-spacing: 0.01em;
  margin: 0 0 clamp(24px, 3vw, 40px);   /* Aboutと同位置: 上マージン0 */
  color: var(--c-text);
}

.guide-hero__right {
  display: flex;
  flex-direction: column;
  align-items: flex-start;     /* 左寄せ (右カラム内で左) */
  justify-content: flex-end;   /* 下寄せ */
  padding: clamp(20px, 2vw, 40px) clamp(40px, 6vw, 96px) clamp(40px, 6vw, 80px) 0;
  gap: clamp(20px, 2vw, 32px);
}
.guide-hero__small {
  width: min(500px, 100%);    /* #99-111: モック実寸 右画像 500px幅 */
  aspect-ratio: 500 / 550;    /* #99-111: 高さ最小550px（縦長） */
  overflow: hidden;
}
.guide-hero__small img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.guide-hero__lead {
  /* [2026-09] ABOUTと統一。フォント指定(family/size/line-height/letter-spacing)は
     base.css の .t-body、レイアウト(幅・中央寄せ)は pages.css の
     .about-statement__body に委ね、PHP側でその2クラスを併記(guide-hero__lead
     about-statement__body t-body)。ここでの重複指定は撤去。
     No.94(下記)のmargin-top上書きと、モバイル(900px以下)の個別上書きは
     デスクトップ/モバイルで意図的に見た目を変える調整なのでそのまま残す。 */
  color: var(--c-text);
}
@media (max-width: 900px) {
  .guide-hero { grid-template-columns: 1fr; }
  .guide-hero__right {
    padding: 0 clamp(20px, 5vw, 40px) clamp(40px, 6vw, 80px);
    align-items: center;
    justify-content: flex-start;
  }
  .guide-hero__small { margin: 0 auto; width: min(330px, 80vw); aspect-ratio: 330 / 265; }
  .guide-hero__lead { width: auto; max-width: 520px; margin-left: clamp(20px, 6vw, 40px); margin-top: 0; text-align: left; }
  .guide-hero__title { margin-top: clamp(24px, 6vw, 36px); margin-bottom: clamp(8px, 2vw, 12px); }
}

/* ========== GUIDE FILTERBAR (hashtags + regions) ========== */
.guide-filterbar {
  padding: 0 clamp(20px, 4vw, 60px) 0;
  margin: 0 auto;
  display: flex; flex-direction: column;
  gap: clamp(16px, 2vw, 28px);
}
.guide-regions {
  display: flex; flex-wrap: wrap; gap: 8px clamp(8px, 1vw, 16px);
  list-style: none; padding: 0; margin: 0;
}
.guide-regions__chip {
  display: inline-block;
  padding: 6px 14px;
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 16px);
  letter-spacing: 0.04em;
  color: var(--c-text);
  background: var(--c-gray-soft, #eee);
  transition: background var(--t-base), color var(--t-base);
}
.guide-regions__chip:hover { background: var(--c-red); color: var(--c-white); }
.guide-regions__chip--hokkaido { background: #92B0F1; color: var(--c-white); }
.guide-regions__chip--okinawa  { background: #DACA9C; color: var(--c-text); }
/* 暫定: Hokkaido 以外の region タブはクリック不可・グレーアウト (span + aria-disabled で出力) */
.guide-regions__chip--disabled {
  background: var(--c-gray-soft, #eee);
  color: var(--c-text-mute, #888);
  opacity: 0.5;
  pointer-events: none;
  cursor: default;
}
.guide-regions__chip--disabled:hover {
  background: var(--c-gray-soft, #eee);
  color: var(--c-text-mute, #888);
}
/* [2026-09] 撤去: このpadding-topは、以前?filter=時にhero/フィルタバーごと
   非表示にしていた頃の名残(archive-guide.php R63のコメント参照)。ヘッダーロゴと
   カードが重ならないよう確保していたクリアランスだったが、R63で「フィルター時も
   ヒーローを常に表示する」に仕様変更された後もこのpadding-topだけ残っており、
   フィルター適用時だけヒーロー(KV)全体が110〜185px余分に押し下げられ、
   「KVが変わる」ように見える原因になっていた。ヒーローが常時表示される今は
   このクリアランス自体が不要なので撤去し、フィルターの有無で見た目が
   変わらないようにする。 */
.guide-archive--filtered .archive-grid--3col { margin-top: 0; }

/* ========== GUIDE HIDDEN STORIES ========== */
.guide-hidden {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 4vw, 60px);
  max-width: 1240px;
  margin: 0 auto;
}
.guide-hidden__head {
  text-align: center;
  margin-bottom: clamp(40px, 5vw, 80px);
}
.guide-hidden__title {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-weight: 500;
  font-size: clamp(36px, 6vw, 80px);
  line-height: 1.0;
  letter-spacing: 0.02em;
  margin: 0 0 clamp(20px, 2.5vw, 32px);
}
.guide-hidden__deco {
  display: flex; align-items: center; justify-content: center;
  gap: clamp(12px, 1.6vw, 24px);
  margin-bottom: clamp(16px, 2vw, 28px);
}
.guide-hidden__label {
  font-family: var(--f-en-serif);
  font-size: clamp(20px, 2.4vw, 32px);
  letter-spacing: 0.08em;
}
.guide-hidden__sub {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 2;
  margin: 0 auto;
  max-width: 600px;
}
.guide-hidden__more { text-align: center; margin-top: clamp(32px, 4vw, 48px); }
.btn-view-more-light {
  display: inline-block;
  background: var(--c-white);
  color: var(--c-text);
  padding: 16px 48px;
  border: 1px solid var(--c-text);
  font-family: var(--f-en-serif);
  font-size: clamp(15px, 1.6vw, 20px);
  letter-spacing: 0.08em;
  transition: background var(--t-base), color var(--t-base);
}
.btn-view-more-light:hover { background: var(--c-text); color: var(--c-white); }

/* ========== BLOG SINGLE ========== */
.single-blog { background: var(--c-white); }
.blog-hero {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 8;
  overflow: hidden;
}
.blog-hero__image { position: absolute; inset: 0; }
.blog-hero__image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.blog-hero__caption {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  padding: clamp(20px, 4vw, 60px);
}
/* #6 Blog KV メインコピー EN: 仕様 desktop 54/lh68, mobile 28/lh36 (ツアー_ブログ.docx P135-136) */
.blog-hero__main {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-style: normal;
  font-size: clamp(28px, 4vw, 54px);
  line-height: clamp(36px, 5vw, 68px);
  letter-spacing: 0.04em;
  color: var(--c-white);
  text-align: center;
  text-shadow: 0 2px 12px rgba(0,0,0,0.4);
  margin: 0;
}
/* #6 Blog KV メインコピー JP: 仕様 desktop 40/lh60, mobile 20/lh32 */
:lang(ja) .blog-hero__main,
.blog-hero__main:lang(ja) {
  font-family: var(--f-jp-mincho);
  font-style: normal;
  font-size: clamp(20px, 3vw, 40px);
  line-height: clamp(32px, 4.5vw, 60px);
}
.blog-intro {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px) 0;
  max-width: 880px;
  margin: 0 auto;
  text-align: center;
}
.blog-intro__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(24px, 3.6vw, 54px);
  line-height: 1.3;
  letter-spacing: 0.02em;
  margin: 0;
}
.blog-section {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: clamp(24px, 4vw, 64px);
  padding: clamp(40px, 6vw, 88px) clamp(20px, 5vw, 80px);
  max-width: 1240px;
  margin: 0 auto;
}
.blog-section__image { overflow: hidden; aspect-ratio: 4 / 3; }
.blog-section__image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.blog-section__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(28px, 4vw, 54px);
  line-height: 1.3;
  margin: 0 0 clamp(20px, 2.5vw, 32px);
}
.blog-section__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 2.06;
}
@media (max-width: 768px) {
  .blog-section { grid-template-columns: 1fr; }
  .blog-section--right .blog-section__image { order: -1; }
}

/* ========== TOUR KV ========== */
.tour-kv {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: #000;
}
.tour-kv__video {
  position: absolute; inset: 0;
  pointer-events: none;
  overflow: hidden;              /* 拡大した iframe の端をクロップする境界 */
  transition: opacity 0.5s ease; /* 再生開始後にフェードイン */
}
/* 起動時の YouTube UI(中央の再生/一時停止ボタン・左右矢印)を見せないため、再生開始までは
   動画を不可視にする(JS が .tour-kv--loading を付与/解除。.tour-kv 背景は黒なので KV 高さ/レイアウトは不変)。 */
.tour-kv--loading .tour-kv__video { opacity: 0; }
.tour-kv__video iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  /* 背景KVとして iframe を一回り拡大し、右下に出る YouTube ロゴ/関連動画グリッドを
     表示領域外へクロップする。scale(1.35)=中心基準で上下約13%・左右約13%を切り落とし、
     右下隅のロゴ/関連クラスタを表示領域外へ追い出す(背景KVとして構図への影響は許容範囲)。 */
  transform: scale(1.35);
  transform-origin: center center;
}
/* クリックシールド: iframe の上に重ねる透明オーバーレイ。pointer-events:auto で
   マウス/タップを受け止め、YouTube プレイヤーへ届かせない → ホバー/タップで出る
   中央の再生/一時停止ボタン・左右の矢印(シーク/前後送り)を表示させない。背景KVは操作不要。 */
.tour-kv__shield {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: transparent;
  pointer-events: auto;
  cursor: default;
}
/* ポスター: iframe(z-index 無し) の上・シールド(z-index 2) の下に重ね、再生開始まで動画を覆う。
   起動時に中央へ一瞬出る一時停止ボタン等のUIフラッシュを隠す。動画クロップ(scale1.35)と framing を
   合わせ、reveal 時にフェードアウト→動画にクロスフェードする。.tour-kv 背景は黒なので画像未読込でも破綻なし。 */
.tour-kv__poster {
  position: absolute;
  inset: 0;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.35);
  transform-origin: center center;
  opacity: 0;                     /* 既定(JS無効/reveal後)は非表示=動画が見える */
  transition: opacity 0.6s ease;
  pointer-events: none;
}
.tour-kv--loading .tour-kv__poster { opacity: 1; }   /* 再生開始までポスターで覆う */

/* ========== TOUR OVERVIEW (updated) ========== */
.tour-overview {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px);
  max-width: 1080px;
  margin: 0 auto;
}
/* #5a Tour LP セクションタイトル: 仕様 desktop 96/lh78, mobile 55/lh48 (ツアー_ブログ.docx P32) */
.tour-overview__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(55px, 7vw, 96px);
  line-height: clamp(48px, 5.5vw, 78px);
  letter-spacing: 0.02em;
  margin: 0 0 clamp(16px, 2vw, 24px);
}
.tour-overview__sub {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(18px, 2.4vw, 32px);
  letter-spacing: 0.04em;
  margin: 0;
  color: var(--c-text);
}
.tour-overview__body {
  font-family: var(--f-jp-mincho);
  /* #12 P2: 仕様 15px固定 / lh31 (ツアー_ブログ.docx P36) — desktop/mobile 同値で厳格固定。 */
  font-size: 15px;
  line-height: 31px;
}
.tour-overview__gallery {
  display: grid; grid-template-columns: 1fr 1fr; gap: clamp(16px, 2vw, 28px);
  margin-top: clamp(40px, 5vw, 64px);
}
.tour-overview__gallery img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
@media (max-width: 768px) {
  .tour-overview__gallery { grid-template-columns: 1fr; }
}

/* ========== TOUR HIGHLIGHT (high|lights split heading) ========== */
.tour-highlight {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px);
  background: var(--c-bg-soft);
}
.tour-highlight__heading {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(64px, 12vw, 200px);
  line-height: 1.0;
  letter-spacing: 0.02em;
  margin: 0 0 clamp(40px, 5vw, 80px);
}
.tour-highlight__heading-line1 { text-align: left; }
.tour-highlight__heading-line2 { text-align: right; font-style: normal; }
.tour-highlight__day {
  margin-bottom: clamp(48px, 6vw, 96px);
}
.tour-highlight__day-meta {
  display: flex; align-items: baseline; gap: clamp(16px, 2vw, 32px);
  margin-bottom: clamp(20px, 2.5vw, 32px);
}
.tour-highlight__day-label {
  font-family: var(--f-en-serif);
  font-size: clamp(36px, 5vw, 76px);
  font-weight: 500;
  line-height: 1.0;
}
.tour-highlight__day-title {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(20px, 2.6vw, 36px);
  margin: 0;
}
.tour-highlight__day-content {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(24px, 3vw, 48px);
  align-items: center;
}
.tour-highlight__day-image { aspect-ratio: 4 / 3; overflow: hidden; }
.tour-highlight__day-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tour-highlight__day-list {
  list-style: none; padding: 0; margin: 0 0 clamp(16px, 2vw, 24px);
  display: flex; flex-direction: column; gap: 8px;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 16px);
}
.tour-highlight__day-list li::before { content: "• "; color: var(--c-navy); }
.tour-highlight__day-body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 2.06;
}
@media (max-width: 768px) {
  .tour-highlight__day-content { grid-template-columns: 1fr; }
  .tour-highlight__day-meta { flex-direction: column; gap: 4px; }
}

/* ========== TOUR DETAIL — DETAIL heading ========== */
.tour-detail__heading {
  text-align: center;
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(40px, 6vw, 96px);
  letter-spacing: 0.06em;
  margin: 0 0 clamp(32px, 4vw, 56px);
}
.tour-detail__map-wrap {
  max-width: 880px;
  margin: 0 auto clamp(32px, 4vw, 48px);
  text-align: center;
}
.tour-detail__map-wrap .tour-detail__map {
  width: 100%;
  aspect-ratio: 16 / 9;
  border: 0;
  display: block;
  margin-bottom: 16px;
}

/* ========== ENQUIRY HERO (v0.8.14: cover復元 + 縦幅拡大) ========== */
.enquiry-hero {
  position: relative;
  width: 100%;
  height: clamp(380px, 42.5vw, 560px);   /* モック実測: KV写真 ≈544px (1280幅) */
  overflow: hidden;
}
/* v0.8.14: 画像を元の cover に戻す（v0.8.13 の 85% auto を撤回） */
.enquiry-hero__bg {
  position: absolute; inset: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.enquiry-hero__bg::after {
  content: none;
}

/* ========== ENQUIRY PAGE TITLE (v0.8.14: モック準拠) ========== */
.enquiry-pagetitle {
  width: 100%;
  text-align: center;
  padding: clamp(56px, 7vw, 112px) clamp(20px, 4vw, 60px) clamp(32px, 4vw, 64px);
  background: var(--c-white);   /* 仕様/モックに背景色指定なし → 白 */
}
.enquiry-pagetitle__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  /* v0.8.15: 詳細指示書 P8 準拠 (Tour Apply KV メインタイトル 116/94 ↔ mobile 46/46)。
     About Hero / Tour LP KV と同じスケール (116/94 ↔ 48/44) に統一 */
  font-size: clamp(28px, 4.2vw, 54px);   /* 仕様: KVタイトル 英語54/モバイル28（モック準拠） */
  line-height: 1.2;
  letter-spacing: 0.04em;
  color: var(--c-text);
  margin: 0;
}
/* v0.8.18 項目1: KV画像にかぶる半透明大型 TOUR APPLICATION (モック準拠: 左下、超大型serif、半透明) */
.enquiry-hero__overlay {
  position: absolute;
  left: clamp(16px, 3vw, 60px);
  bottom: clamp(-8px, -0.5vw, 8px);
  font-family: var(--f-en-serif);
  font-weight: 400;
  font-size: clamp(64px, 12vw, 180px);
  line-height: 0.9;
  letter-spacing: 0.02em;
  color: rgba(255, 255, 255, 0.5);
  white-space: normal;
  pointer-events: none;
  user-select: none;
  z-index: 2;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.enquiry-hero__overlay > span { display: block; }
.enquiry-hero__title {
  position: relative;
  z-index: 3;
  text-align: center;
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(28px, 4vw, 54px);
  color: var(--c-white);
  letter-spacing: 0.06em;
  margin: clamp(60px, 8vw, 120px) 0 clamp(16px, 2vw, 24px);
}
.enquiry-hero__sub {
  position: relative;
  z-index: 3;
  text-align: center;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.94;
  color: var(--c-white);
  max-width: 720px;
  margin: 0 auto;
}

/* ============================================================
   v0.6.2 追加: 各ページ詳細資料.xlsx 反映用 (Blog/Tour 詳細セクション)
   ============================================================ */

/* ========== BLOG intro 補強 ========== */
.blog-intro__title-en {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-style: normal;
  font-size: clamp(24px, 3.6vw, 54px);
  line-height: 1.3;
  letter-spacing: 0.02em;
  margin: 0 0 clamp(12px, 1.5vw, 20px);
}
.blog-intro__title-jp {
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.8vw, 22px);
  line-height: 1.6;
  letter-spacing: 0.04em;
  margin: 0;
  color: var(--c-text);
}
.blog-intro__subtitle {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-style: normal;
  font-size: clamp(22px, 3vw, 40px);
  letter-spacing: 0.02em;
  margin: clamp(32px, 4vw, 56px) 0 clamp(20px, 2.5vw, 32px);
}
.blog-intro__lead-jp {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 2.06;
  text-align: left;
  max-width: 760px;
  margin: 0 auto;
}

/* ========== BLOG entry points (3 cards) ========== */
.blog-entry-points {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px);
  max-width: 1240px;
  margin: 0 auto;
  text-align: center;
}
.blog-entry-points__heading {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-style: normal;
  font-size: clamp(28px, 4vw, 54px);
  letter-spacing: 0.04em;
  margin: 0;
}
.blog-entry-points__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(24px, 3vw, 48px);
  text-align: left;
}
.blog-entry-card {
  position: relative;
}
.blog-entry-card__image {
  aspect-ratio: 4 / 3;
  overflow: hidden;
  margin-bottom: clamp(16px, 2vw, 28px);
}
.blog-entry-card__image img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform var(--t-base);
}
.blog-entry-card:hover .blog-entry-card__image img { transform: scale(1.04); }
.blog-entry-card__num {
  display: inline-block;
  font-family: var(--f-en-serif);
  font-weight: 700;
  font-size: clamp(24px, 3vw, 36px);
  color: var(--c-navy);
  margin-right: 8px;
}
.blog-entry-card__title {
  font-family: var(--f-jp-mincho);
  font-size: clamp(16px, 1.8vw, 22px);
  line-height: 1.5;
  margin: 0 0 clamp(8px, 1vw, 14px);
  display: inline;
}
.blog-entry-card__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.8;
  margin: clamp(8px, 1vw, 14px) 0 0;
}
@media (max-width: 768px) {
  .blog-entry-points__grid { grid-template-columns: 1fr; }
}

/* ========== BLOG info (Highlights / Included / Excluded) ========== */
.blog-info {
  padding: clamp(40px, 6vw, 80px) clamp(20px, 5vw, 80px) clamp(60px, 8vw, 120px);
  background: var(--c-bg-soft);
  max-width: none;
}
.blog-info__block {
  max-width: 880px;
  margin: 0 auto clamp(32px, 4vw, 48px);
}
.blog-info__row {
  max-width: 880px;
  margin: 0 auto clamp(32px, 4vw, 48px);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(24px, 3vw, 48px);
}
.blog-info__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(18px, 2.2vw, 28px);
  margin: 0 0 clamp(16px, 2vw, 24px);
}
.blog-info__list {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 8px;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.8;
}
.blog-info__list li::before { content: "・"; color: var(--c-navy); }
.blog-info__note {
  text-align: center;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  margin: clamp(24px, 3vw, 32px) auto 0;
  max-width: 880px;
}
@media (max-width: 768px) {
  .blog-info__row { grid-template-columns: 1fr; }
}

/* ========== TOUR overview 補強 ========== */
.tour-overview__title-jp {
  font-family: var(--f-jp-mincho);
  font-size: clamp(16px, 1.8vw, 22px);
  line-height: 1.6;
  letter-spacing: 0.04em;
  margin: clamp(12px, 1.5vw, 20px) 0 0;
  color: var(--c-text);
}
.tour-overview__section-title {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-weight: 500;
  font-size: clamp(24px, 3.5vw, 48px);
  margin: 0 0 clamp(8px, 1vw, 12px);
}
.tour-overview__section-title-jp {
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.6vw, 20px);
  letter-spacing: 0.04em;
  margin: 0 0 clamp(20px, 2.5vw, 32px);
  color: var(--c-text);
}

/* ========== TOUR schedule (Day1/Day2 timeline) ========== */
.tour-schedule {
  margin-top: clamp(48px, 6vw, 80px);
}
.tour-schedule__heading {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-weight: 500;
  font-size: clamp(24px, 3vw, 40px);
  text-align: center;
  margin: 0 0 clamp(24px, 3vw, 40px);
}
.tour-schedule__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(24px, 3vw, 48px);
  max-width: 1080px;
  margin: 0 auto;
}
.tour-schedule__col {
  background: var(--c-white);
  padding: clamp(24px, 3vw, 40px);
  border: 1px solid var(--c-gray);
}
.tour-schedule__day {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(20px, 2.4vw, 28px);
  margin: 0 0 clamp(16px, 2vw, 24px);
  color: var(--c-navy);
}
.tour-schedule__list {
  list-style: none; padding: 0; margin: 0;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 2;
}
.tour-schedule__list li {
  padding: 8px 0;
  border-bottom: 1px solid var(--c-gray-soft);
}
.tour-schedule__list li:last-child { border-bottom: 0; }
@media (max-width: 768px) {
  .tour-schedule__grid { grid-template-columns: 1fr; }
}

/* ============================================================
   v0.7.0 Tour LP rebuild — モック準拠 (design-reviewer-orchestrator 設計)
   ============================================================ */
.is-italic { font-style: normal; }

/* Tour Title block (2-column: LEFT 4-line title / RIGHT square image — モック準拠) */
.tour-title {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: end;                  /* 画像下端をJPサブタイトル baseline に揃え */
  gap: clamp(40px, 6vw, 96px);
  max-width: 1240px;
  margin: 0 auto;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px);
}
.tour-title__text {
  display: flex;
  flex-direction: column;
  gap: clamp(16px, 2vw, 28px);
}
.tour-title__label {
  font-family: var(--f-en-serif);
  font-weight: 600;                  /* bold per mockup */
  font-size: clamp(44px, 6.2vw, 92px);
  line-height: 1.0;
  letter-spacing: 0.02em;
  margin: 0;
}
.tour-title__main {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(56px, 9vw, 115px);    /* 他ページの main title と統一 (hero-title__heading / *-hero__title) */
  line-height: 1.05;
  letter-spacing: 0.01em;
  margin: 0;
  white-space: nowrap;
}
.tour-title__main br { display: block; }
.tour-title__jp {
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.6vw, 20px);
  line-height: 1.6;
  letter-spacing: 0.04em;
  margin: clamp(8px, 1vw, 16px) 0 0;
  color: var(--c-text);
}
.tour-title__image {
  width: 100%;
  max-width: 560px;
  aspect-ratio: 3 / 4;               /* 縦長 portrait per mockup */
  overflow: hidden;
  justify-self: end;
}
.tour-title__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
@media (max-width: 900px) {
  .tour-title { grid-template-columns: 1fr; align-items: stretch; }
  .tour-title__label { font-size: clamp(36px, 9vw, 60px); }
  .tour-title__main { font-size: clamp(28px, 7vw, 48px); }
  .tour-title__image { justify-self: center; max-width: 100%; }
}

/* Intro: A Luxurious Full-course Walking Tour (centered 1-line + body) */
.tour-intro {
  padding: clamp(40px, 5vw, 80px) clamp(20px, 5vw, 80px) clamp(32px, 4vw, 56px);
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}
.tour-intro__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(22px, 2.8vw, 38px);
  line-height: 1.2;
  margin: 0 0 clamp(20px, 2.5vw, 32px);
  white-space: nowrap;
}
.tour-intro__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.3vw, 15px);
  line-height: 2.06;
  text-align: center;
}
.tour-intro__body p { margin: 0 0 clamp(12px, 1.5vw, 20px); }
.tour-intro__body p:last-child { margin-bottom: 0; }
.tour-intro__body .is-italic { color: var(--c-text-mute, #888); font-family: var(--f-en-serif); }

/* 3-image row: varied sizes, staggered per mockup */
.tour-intro-images {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(16px, 2.5vw, 40px);
  padding: clamp(40px, 5vw, 80px) clamp(20px, 4vw, 60px);
  max-width: 1200px;
  margin: 0 auto;
  flex-wrap: nowrap;
}
.tour-intro-images__item {
  overflow: hidden;
  flex: 0 0 auto;
}
.tour-intro-images__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* sizes per user spec: lg / sm / md - varied vertical position */
.tour-intro-images__item--lg { width: clamp(220px, 28vw, 400px); aspect-ratio: 3/4; align-self: flex-start; }
.tour-intro-images__item--sm { width: clamp(170px, 22vw, 300px); aspect-ratio: 5/6; align-self: flex-start; margin-top: clamp(24px,3vw,48px); }
.tour-intro-images__item--sm img {
  object-position: 30% top;
  transform: scale(1.15);
  transform-origin: 30% top;
}
.tour-intro-images__item--md { width: clamp(160px, 20vw, 280px); aspect-ratio: 3/4; align-self: flex-start; margin-top: clamp(80px,9vw,140px); }
@media (max-width: 768px) {
  .tour-intro-images { gap: 12px; padding: 32px 16px; }
  .tour-intro-images__item--lg { width: clamp(120px, 30vw, 200px); }
  .tour-intro-images__item--sm { width: clamp(100px, 22vw, 160px); margin-top: 20px; }
  .tour-intro-images__item--md { width: clamp(110px, 26vw, 180px); }
}

/* Wellness sub: staggered layout
   Row A: outdoor-334 LEFT + "For those seeking..." text RIGHT
   Row B: stacked (Immerse text TOP / setsuniseko-108 image BOTTOM), offset right-down */
.tour-wellness-sub {
  max-width: 1240px;
  margin: 0 auto;
  padding: clamp(40px, 5vw, 80px) clamp(20px, 5vw, 80px);
  display: flex;
  flex-direction: column;
  gap: clamp(24px, 3vw, 40px);
}
.tour-wellness-sub__row--a {
  display: grid;
  grid-template-columns: clamp(320px, 36vw, 480px) 1fr;
  gap: clamp(24px, 4vw, 64px);
  align-items: start;
}
.tour-wellness-sub__row--a .tour-wellness-sub__text {
  padding-top: clamp(20px, 2.5vw, 40px);
  max-width: 320px;
}
.tour-wellness-sub__row--b {
  display: flex;
  justify-content: flex-end;
  margin-top: clamp(-360px, -28vw, -200px);
  padding-right: 0;
  position: relative;
  z-index: 1;
}
.tour-wellness-sub__stack {
  display: flex;
  flex-direction: column;
  gap: clamp(16px, 2vw, 24px);
  /* 左端を v4 位置(680px)に戻し、右端を 1260px まで拡張 (元1196px) */
  /* width 520→580 (約60px拡大、すべて右側へ) */
  width: clamp(400px, 40vw, 580px);
  max-width: none;
}
.tour-wellness-sub__stack .tour-wellness-sub__text {
  text-align: right;
}
.tour-wellness-sub__img {
  width: 100%;
  overflow: hidden;
}
.tour-wellness-sub__img--portrait { aspect-ratio: 3 / 4; }
.tour-wellness-sub__img--landscape { aspect-ratio: 4 / 3; }
.tour-wellness-sub__img img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.tour-wellness-sub__text {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(13px, 1.4vw, 16px);
  line-height: 1.8;
  letter-spacing: 0.04em;
  color: var(--c-text);
  margin: 0;
}
@media (max-width: 768px) {
  .tour-wellness-sub__row--a { grid-template-columns: 1fr; max-width: 100%; }
  .tour-wellness-sub__row--b { margin-top: 0; padding-right: 0; justify-content: stretch; }
  .tour-wellness-sub__stack { max-width: 100%; }
}

/* Concierge Tour variant: 背景画像内の被写体(ランプ)を上に */
.concierge--tour .concierge__bg {
  background-position: center 80% !important;   /* 通常centerから下寄せ → 被写体が上に来る */
}
/* v0.8.0: CTA#2 (food: setsuniseko-119) ズームインで握りのエビを画面左に出す。
   cover時は水平方向にクロップが発生しないため background-size を 125% に拡大し、
   中央寄せのまま寿司板＋エビが視認できる範囲を表示する。 */
.concierge--tour-cta2 .concierge__bg {
  background-position: center center !important;
  background-size: 125% auto !important;
}

/* Narrative block: subtitle LEFT + image RIGHT, body BELOW image */
.tour-narrative-block {
  display: grid;
  grid-template-columns: 1fr clamp(380px, 42vw, 620px);
  grid-template-rows: auto auto;
  gap: clamp(16px, 2vw, 32px) clamp(40px, 5vw, 80px);
  max-width: 1240px;
  margin: 0 auto;
  padding: clamp(40px, 6vw, 96px) clamp(20px, 5vw, 80px);
  align-items: end;
}
.tour-narrative-block__title {
  grid-column: 1;
  grid-row: 1;
  font-family: var(--f-en-serif);
  font-style: normal;
  font-weight: 500;
  font-size: clamp(28px, 3.6vw, 48px);
  line-height: 1.2;
  letter-spacing: 0.02em;
  margin: 0;
  text-align: right;
  padding-right: clamp(20px, 3vw, 60px);
  padding-bottom: clamp(20px, 3vw, 48px);
}
.tour-narrative-block__image {
  grid-column: 2;
  grid-row: 1;
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}
.tour-narrative-block__image img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
/* offset-right (Beautiful Encounters): 位置=右へ、画像=拡大 */
.tour-narrative-block--offset-right {
  padding-right: 0;
  grid-template-columns: 1fr clamp(500px, 52vw, 780px);  /* 画像拡大 620→780 */
}

/* offset-right-more (Wellness Stay): 程よい上シフト + 1行タイトル */
.tour-narrative-block--offset-right-more {
  padding-right: clamp(20px, 4vw, 60px);
  margin-right: 0;
  padding-left: clamp(40px, 6vw, 120px);
  padding-top: clamp(20px, 2.5vw, 40px);                /* 16→40 で少し下げる */
  margin-top: clamp(-40px, -3vw, -20px);                /* -80→-40 で控えめに */
  grid-template-columns: 1fr clamp(440px, 46vw, 700px);
}
.tour-narrative-block--offset-right-more .tour-narrative-block__title {
  white-space: nowrap;                                  /* 「Wellness Stay」1行強制 */
  /* v0.7.7: Heartfelt画像(top=7651, z-index:2)に隠れた Wellness Stay タイトル(bottom=7759)を
     物理的に上方向へリフト。translateYで他要素のレイアウトを動かさずに移動。
     必要量 = 7759 - 7651 + 余白(~110) ≈ 220px */
  transform: translateY(clamp(-260px, -16vw, -180px));
  position: relative;
  z-index: 3;                                            /* Heartfelt(2) より上 (保険) */
}
.tour-narrative-block__body {
  grid-column: 2;
  grid-row: 2;
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.3vw, 15px);
  line-height: 1.8;
  letter-spacing: 0.04em;
  margin: 0;
  color: var(--c-text);
  max-width: 520px;
}
/* M-10: JP body (placed BEFORE EN italic body) — same grid cell as __body, stacks via flex via row 2 */
.tour-narrative-block__body-jp {
  grid-column: 2;
  grid-row: 2;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 2;
  letter-spacing: 0.04em;
  margin: 0 0 8px;
  color: var(--c-text);
  max-width: 520px;
  align-self: start;
}
/* When BOTH JP + EN bodies exist, stack them in row 2 via a sub-grid trick:
   Both share grid-row: 2 — to stack vertically we move EN to row 3 when JP exists.
   Simpler: place JP in row 2 and let EN sit beneath via row 3. */
.tour-narrative-block {
  grid-template-rows: auto auto auto;
}
.tour-narrative-block__body-jp { grid-row: 2; }
.tour-narrative-block__body    { grid-row: 3; }

/* offset-left (Heartfelt Joy): image LEFT (portrait) + title RIGHT (below middle) + body BELOW image */
.tour-narrative-block--offset-left {
  grid-template-columns: clamp(380px, 42vw, 600px) 1fr;
  padding-top: 0;             /* 画像を上方向に詰める（モック準拠） */
  padding-left: 0;
  padding-right: clamp(20px, 5vw, 80px);
  align-items: stretch;
  /* v0.7.6: Wellness画像の79%地点までHeartfelt画像トップを引き上げる (モック準拠)
     計測: モック比率 mock_heartfelt_top - mock_wellness_top = 79.06% * wellness_height
     現在 -80pxでは不足、追加で約233pxの上シフトが必要 → 合計 ~-313px @1440px */
  margin-top: clamp(-360px, -22vw, -240px);
  position: relative;
  z-index: 2;
}
.tour-narrative-block--offset-left .tour-narrative-block__image {
  grid-column: 1;
  grid-row: 1;
  aspect-ratio: 3 / 4;        /* portrait per mock */
  align-self: start;          /* 画像を上端に揃える */
}
.tour-narrative-block--offset-left .tour-narrative-block__title {
  grid-column: 2;
  grid-row: 1;
  text-align: left;
  padding-right: 0;
  padding-left: clamp(20px, 3vw, 60px);
  padding-bottom: 0;
  align-self: end;            /* 縦位置: 真ん中より下 */
  padding-bottom: clamp(60px, 9vw, 140px);
}
.tour-narrative-block--offset-left .tour-narrative-block__body-jp {
  grid-column: 1;
  grid-row: 2;
  text-align: left;
  max-width: 520px;
}
.tour-narrative-block--offset-left .tour-narrative-block__body {
  grid-column: 1;
  grid-row: 3;
  text-align: left;
  max-width: 520px;
}

@media (max-width: 768px) {
  .tour-narrative-block {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto auto;
  }
  .tour-narrative-block__title {
    grid-column: 1; grid-row: 1;
    text-align: left;
    padding-right: 0;
    padding-bottom: 0;
  }
  .tour-narrative-block__image    { grid-column: 1; grid-row: 2; }
  .tour-narrative-block__body-jp  { grid-column: 1; grid-row: 3; max-width: 100%; }
  .tour-narrative-block__body     { grid-column: 1; grid-row: 4; max-width: 100%; }
  .tour-narrative-block--offset-left {
    grid-template-columns: 1fr;
    padding-left: clamp(20px, 5vw, 80px);
  }
  .tour-narrative-block--offset-left .tour-narrative-block__title {
    grid-column: 1; grid-row: 1;
    padding-left: 0;
    padding-bottom: 0;
    align-self: auto;
  }
  .tour-narrative-block--offset-left .tour-narrative-block__image   { grid-column: 1; grid-row: 2; }
  .tour-narrative-block--offset-left .tour-narrative-block__body-jp { grid-column: 1; grid-row: 3; max-width: 100%; }
  .tour-narrative-block--offset-left .tour-narrative-block__body    { grid-column: 1; grid-row: 4; max-width: 100%; }
}

/* Standalone feature image (between sections) */
.tour-feature-image {
  max-width: 1240px;
  margin: 0 auto;
  padding: clamp(40px, 5vw, 80px) clamp(20px, 5vw, 80px);
}
.tour-feature-image img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  display: block;
}

/* Wellness & Terroir section */
.tour-wellness {
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px);
  max-width: 1240px;
  margin: 0 auto;
  text-align: center;
}
/* #5a Tour LP セクションタイトル: 仕様 desktop 96/lh78, mobile 55/lh48 (ツアー_ブログ.docx P32) */
.tour-wellness__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(55px, 7vw, 96px);
  line-height: clamp(48px, 5.5vw, 78px);
  letter-spacing: 0.02em;
  margin: 0 0 clamp(40px, 5vw, 72px);
  text-align: left;
  max-width: 880px;
}
.tour-wellness__image {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
}
.tour-wellness__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Narrative section: alternating image + text */
.tour-narrative__section {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  align-items: center;
  gap: clamp(40px, 6vw, 96px);
  max-width: 1240px;
  margin: 0 auto;
  padding: clamp(60px, 8vw, 120px) clamp(20px, 5vw, 80px);
}
.tour-narrative__section--left .tour-narrative__section-image { order: 1; }
.tour-narrative__section--left .tour-narrative__section-text  { order: 2; }
.tour-narrative__section--right .tour-narrative__section-image { order: 2; }
.tour-narrative__section--right .tour-narrative__section-text  { order: 1; }
.tour-narrative__section-image img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}
.tour-narrative__section-title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(28px, 4vw, 48px);
  line-height: 1.2;
  margin: 0 0 clamp(16px, 2vw, 28px);
}
.tour-narrative__section-body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(14px, 1.4vw, 16px);
  line-height: 2.06;
  margin: 0 0 clamp(16px, 2vw, 24px);
}
.tour-narrative__section-quote {
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 16px);
  line-height: 1.9;
  color: var(--c-text-mute, #888);
  margin: 0;
}
@media (max-width: 768px) {
  .tour-narrative__section { grid-template-columns: 1fr; }
  .tour-narrative__section--left  .tour-narrative__section-image,
  .tour-narrative__section--right .tour-narrative__section-image { order: 0; }
}

/* Tour CTA (Concierge variant for inside Tour page) */
.tour-cta {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  background: var(--c-navy);
  min-height: clamp(280px, 32vh, 400px);
  max-width: 1240px;
  margin: clamp(40px, 5vw, 80px) auto;
}
.tour-cta__inner {
  display: flex; flex-direction: column;
  justify-content: center;
  gap: clamp(16px, 2vw, 24px);
  padding: clamp(40px, 5vw, 80px) clamp(24px, 4vw, 64px);
  color: var(--c-white);
}
.tour-cta__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(20px, 2.4vw, 32px);
  letter-spacing: 0.04em;
  margin: 0;
}
.tour-cta__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.8;
  margin: 0;
}
.tour-cta__btn {
  align-self: flex-start;
  background: var(--c-white);
  color: var(--c-navy);
  padding: 14px clamp(20px, 3vw, 32px);
  font-family: var(--f-en-serif);
  font-size: clamp(14px, 1.6vw, 18px);
  letter-spacing: 0.06em;
  transition: background var(--t-base), color var(--t-base);
}
.tour-cta__btn:hover { background: var(--c-red); color: var(--c-white); }
.tour-cta__image img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 900px) {
  .tour-cta { grid-template-columns: 1fr; }
  .tour-cta__image { aspect-ratio: 16 / 9; }
}

/* High | lights heading */
.tour-highlights {
  padding: clamp(80px, 10vw, 140px) clamp(20px, 5vw, 80px);
  max-width: 1320px;
  margin: 0 auto;
}
/* Head: "High" [image between] "lights" — split italic display heading */
.tour-highlights__head-wrap {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: clamp(24px, 4vw, 80px);
  margin: 0 0 clamp(40px, 6vw, 96px);
}
.tour-highlights__head-left,
.tour-highlights__head-right {
  font-family: var(--f-en-serif);
  font-weight: 400;
  /* v0.8.93: メインタイトルと同一サイズに統一 (clamp(56px,9vw,130px)) */
  font-size: clamp(56px, 9vw, 115px); 
  line-height: 1.05;
  letter-spacing: 0.01em;
  white-space: nowrap;
}
.tour-highlights__head-left { font-style: normal; }
.tour-highlights__head-right { font-style: normal; }
.tour-highlights__head-img {
  position: relative;
  width: 100%;
  max-width: clamp(220px, 28vw, 380px);
  margin: 0 auto;
  transform: translateY(-12%);   /* float image above baseline */
}
.tour-highlights__head-img img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}

/* Day row — image + bullets + body, alternating sides */
.tour-highlights__day {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  grid-template-rows: auto auto;
  gap: clamp(24px, 3vw, 48px) clamp(40px, 5vw, 80px);
  margin-bottom: clamp(64px, 8vw, 120px);
  align-items: start;
}
/* v0.7.9: per-day grid ratios tuned to mock (image_a ~64.9%, image_b ~43.7% of container) */
.tour-highlights__day--img-left  { grid-template-columns: minmax(0, 2.235fr) minmax(0, 1fr); }
.tour-highlights__day--img-right { grid-template-columns: minmax(0, 1fr) minmax(0, 2.235fr); }
/* Day 1 (img-left): top row → media_a LEFT + text RIGHT; bottom row → text LEFT + media_b RIGHT */
.tour-highlights__day--img-left .tour-highlights__media--a { grid-column: 1; grid-row: 1; }
.tour-highlights__day--img-left .tour-highlights__text     { grid-column: 2; grid-row: 1; }
.tour-highlights__day--img-left .tour-highlights__body-wrap { grid-column: 1 / -1; grid-row: 2; display: grid; grid-template-columns: minmax(0, 1.149fr) minmax(0, 1fr); gap: clamp(40px, 5vw, 80px); align-items: start; }
.tour-highlights__day--img-left .tour-highlights__body-text  { grid-column: 1; grid-row: 1; padding-top: clamp(16px, 2vw, 32px); }
.tour-highlights__day--img-left .tour-highlights__media--b   { grid-column: 2; grid-row: 1; }

/* Day 2 (img-right): top row → text LEFT + media_a RIGHT; bottom row → media_b LEFT + text RIGHT */
.tour-highlights__day--img-right .tour-highlights__media--a { grid-column: 2; grid-row: 1; }
.tour-highlights__day--img-right .tour-highlights__text     { grid-column: 1; grid-row: 1; padding-top: clamp(12px, 2vw, 32px); }
.tour-highlights__day--img-right .tour-highlights__body-wrap { grid-column: 1 / -1; grid-row: 2; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: clamp(40px, 5vw, 80px); align-items: start; }
.tour-highlights__day--img-right .tour-highlights__media--b  { grid-column: 1; grid-row: 1; }
.tour-highlights__day--img-right .tour-highlights__body-text { grid-column: 2; grid-row: 1; padding-top: clamp(16px, 2vw, 32px); }

.tour-highlights__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}
.tour-highlights__body-text { display: flex; flex-direction: column; gap: clamp(10px, 1.2vw, 16px); }
.tour-highlights__text {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
/* #5b Tour LP Day タイトル: 仕様 desktop 76, mobile 43 (ツアー_ブログ.docx P56) */
.tour-highlights__label {
  font-family: var(--f-en-serif);
  font-weight: 400;
  font-style: normal;
  font-size: clamp(43px, 5.5vw, 76px);
  letter-spacing: 0.01em;
  line-height: 1.05;
  margin: 0 0 clamp(20px, 2.5vw, 32px);
  border-bottom: 1px solid var(--c-text, #141413);
  padding-bottom: clamp(8px, 1vw, 14px);
}
.tour-highlights__list {
  list-style: none; padding: 0;
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(13px, 1.3vw, 15px);
  line-height: 1.9;
  margin: 0;
  color: var(--c-text, #141413);
}
.tour-highlights__list li {
  padding: 4px 0;
  border-bottom: none;
}
.tour-highlights__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(12px, 1.2vw, 14px);
  line-height: 2;
  margin: 0;
  color: var(--c-text, #141413);
}
.tour-highlights__quote {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-size: clamp(12px, 1.2vw, 14px);
  color: var(--c-text-mute, #888);
  line-height: 1.9;
  margin: 0;
}
@media (max-width: 768px) {
  .tour-highlights__head-wrap { grid-template-columns: 1fr; text-align: center; gap: 16px; }
  .tour-highlights__head-img { transform: none; max-width: 70%; }
  .tour-highlights__day,
  .tour-highlights__day--img-left,
  .tour-highlights__day--img-right { grid-template-columns: 1fr; }
  .tour-highlights__day--img-left .tour-highlights__media,
  .tour-highlights__day--img-left .tour-highlights__text,
  .tour-highlights__day--img-right .tour-highlights__media,
  .tour-highlights__day--img-right .tour-highlights__text { grid-column: 1; }
  .tour-highlights__day--img-right .tour-highlights__media--a { grid-row: 1; }
  .tour-highlights__day--img-right .tour-highlights__text { grid-row: 2; }
  .tour-highlights__day--img-left .tour-highlights__body-wrap,
  .tour-highlights__day--img-right .tour-highlights__body-wrap { grid-template-columns: 1fr; gap: 16px; }
  .tour-highlights__day--img-left .tour-highlights__body-text,
  .tour-highlights__day--img-left .tour-highlights__media--b,
  .tour-highlights__day--img-right .tour-highlights__body-text,
  .tour-highlights__day--img-right .tour-highlights__media--b { grid-column: 1; }
  .tour-highlights__day--img-left .tour-highlights__body-text  { grid-row: 1; }
  .tour-highlights__day--img-left .tour-highlights__media--b   { grid-row: 2; }
  .tour-highlights__day--img-right .tour-highlights__media--b  { grid-row: 1; }
  .tour-highlights__day--img-right .tour-highlights__body-text { grid-row: 2; }
}

/* Tour Schedule (new design — 2 cards) */
.tour-schedule-new {
  padding: clamp(48px, 6vw, 80px) clamp(20px, 5vw, 60px);
  max-width: 1080px;
  margin: 0 auto;
}
.tour-schedule-new__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(24px, 3vw, 40px);
  text-align: center;
  margin: 0 0 clamp(24px, 3vw, 40px);
}
.tour-schedule-new__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(20px, 2.4vw, 32px);
}
.tour-schedule-new__card {
  background: var(--c-bg-soft);
  padding: clamp(24px, 3vw, 40px);
}
.tour-schedule-new__day {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(20px, 2.4vw, 28px);
  color: var(--c-navy);
  margin: 0 0 clamp(16px, 2vw, 24px);
  padding-bottom: clamp(8px, 1vw, 12px);
  border-bottom: 1px solid var(--c-gray);
}
.tour-schedule-new__list {
  list-style: none; padding: 0; margin: 0;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.9;
}
.tour-schedule-new__list li {
  padding: 8px 0;
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.tour-schedule-new__list li:last-child { border-bottom: 0; }
@media (max-width: 768px) {
  .tour-schedule-new__grid { grid-template-columns: 1fr; }
}

/* DETAIL section (2-col: list left / map+included aside right) */
.tour-detail-new {
  padding: clamp(80px, 10vw, 140px) clamp(20px, 5vw, 80px);
  max-width: 1240px;
  margin: 0 auto;
}
.tour-detail-new__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(40px, 6vw, 88px);
  letter-spacing: 0.04em;
  border-bottom: 1px solid var(--c-text);
  padding-bottom: clamp(16px, 2vw, 28px);
  margin: 0 0 clamp(40px, 5vw, 72px);
}
.tour-detail-new__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(32px, 5vw, 80px);
  align-items: start;
}
.tour-detail-new__list {
  display: grid;
  grid-template-columns: minmax(140px, 28%) 1fr;
  gap: clamp(16px, 2vw, 24px) clamp(20px, 3vw, 32px);
  margin: 0;
  font-family: var(--f-jp-mincho);
}
.tour-detail-new__list dt {
  font-weight: 700;
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.6;
}
.tour-detail-new__list dd {
  margin: 0;
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.8;
}
.tour-detail-new__aside {
  display: flex; flex-direction: column;
  gap: clamp(20px, 2.4vw, 32px);
}
.tour-detail-new__map {
  position: relative;
  overflow: hidden;
}
.tour-detail-new__map iframe {
  width: 100%;
  aspect-ratio: 4 / 3;
  border: 0;
  display: block;
}
.tour-detail-new__map-label {
  position: absolute; top: 16px; left: 16px;
  z-index: 2;
  background: var(--c-white);
  padding: 8px 16px;
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 16px);
  letter-spacing: 0.06em;
  line-height: 1.3;
}
.tour-detail-new__map-btn {
  display: inline-block;
  margin-top: 12px;
  background: var(--c-green);
  color: var(--c-white);
  padding: 10px 24px;
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 16px);
  letter-spacing: 0.06em;
  transition: background var(--t-base);
}
.tour-detail-new__map-btn:hover { background: var(--c-red); }
.tour-detail-new__included,
.tour-detail-new__not-included {
  background: var(--c-bg-soft);
  padding: clamp(20px, 2.5vw, 32px);
}
.tour-detail-new__included h4,
.tour-detail-new__not-included h4 {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(18px, 2vw, 24px);
  margin: 0 0 clamp(12px, 1.5vw, 20px);
  color: var(--c-navy);
}
.tour-detail-new__included ul,
.tour-detail-new__not-included ul {
  list-style: none; padding: 0; margin: 0;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.9;
}
.tour-detail-new__included li::before,
.tour-detail-new__not-included li::before { content: "・"; color: var(--c-navy); }
.tour-detail-new__enquire {
  text-align: center;
  margin: clamp(40px, 5vw, 64px) auto 0;
}
@media (max-width: 768px) {
  .tour-detail-new__grid { grid-template-columns: 1fr; }
  .tour-detail-new__list { grid-template-columns: 1fr; }
  .tour-detail-new__list dt { padding-bottom: 4px; }
}

/* =========================================================================
   DETAIL (mock-accurate single-panel layout)
   Section 13 — map image + Google Map button + Included / Not Included / Price
   ========================================================================= */
.tour-detail-mock {
  padding: clamp(80px, 10vw, 140px) clamp(20px, 5vw, 80px) clamp(40px, 5vw, 80px);
  max-width: 1240px;
  margin: 0 auto;
}
.tour-detail-mock__title {
  font-family: var(--f-en-serif);
  font-weight: 400;
  font-style: normal;
  font-size: clamp(48px, 7vw, 96px);
  letter-spacing: 0.02em;
  border-bottom: 1px solid var(--c-text, #141413);
  padding-bottom: clamp(12px, 1.5vw, 24px);
  margin: 0 0 clamp(32px, 4vw, 56px);
  line-height: 1;
}
.tour-detail-mock__panel {
  background: var(--c-bg-soft, #f5f5f5);
  padding: clamp(40px, 5vw, 72px) clamp(28px, 5vw, 72px);
}
.tour-detail-mock__map-block {
  position: relative;
  max-width: 760px;
  /* Reserve bottom space so the absolutely-positioned Google Map button sits
     below the map image without colliding with the Included row below */
  margin: 0 auto clamp(56px, 6vw, 88px);
  padding-bottom: clamp(72px, 7vw, 88px);
}
.tour-detail-mock__map-img {
  width: 100%;
  height: auto;
  display: block;
}
.tour-detail-mock__map-btn {
  display: inline-block;
  position: absolute;
  right: 0;
  bottom: 0;
  background: var(--c-green, #8fa05c);
  color: var(--c-white, #ffffff);
  padding: 10px 26px;
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 16px);
  letter-spacing: 0.04em;
  line-height: 1.3;
  text-align: center;
  text-decoration: none;
  transition: background var(--t-base, 0.2s ease);
}
.tour-detail-mock__map-btn em {
  font-style: normal;
  display: block;
  font-size: 0.92em;
  letter-spacing: 0.06em;
}
.tour-detail-mock__map-btn:hover { background: var(--c-navy, #26314d); }

/* Rows: label LEFT, content RIGHT, divider BELOW each row */
.tour-detail-mock__rows {
  max-width: 760px;
  margin: 0 auto;
  padding: 0;
}
.tour-detail-mock__row {
  display: grid;
  grid-template-columns: minmax(140px, 1fr) minmax(0, 2.4fr);
  gap: clamp(24px, 4vw, 64px);
  padding: clamp(28px, 3vw, 40px) 0;
  border-top: 1px solid rgba(20, 20, 19, 0.25);
  align-items: start;
}
.tour-detail-mock__row:last-child {
  border-bottom: 1px solid rgba(20, 20, 19, 0.25);
}
.tour-detail-mock__row dt {
  font-family: var(--f-en-serif);
  font-style: normal;
  font-weight: 400;
  font-size: clamp(15px, 1.6vw, 19px);
  color: var(--c-text, #141413);
  letter-spacing: 0.02em;
}
.tour-detail-mock__row dd {
  margin: 0;
}
.tour-detail-mock__row dd ul {
  list-style: none; padding: 0; margin: 0;
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.3vw, 14px);
  line-height: 1.9;
  color: var(--c-text, #141413);
}
.tour-detail-mock__row dd ul li {
  position: relative;
  padding-left: 1em;
}
.tour-detail-mock__row dd ul li::before {
  content: "・";
  position: absolute;
  left: 0;
}
.tour-detail-mock__price {
  margin: 0;
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 15px);
  line-height: 1.6;
  color: var(--c-text, #141413);
}
.tour-detail-mock__enquire {
  text-align: center;
  margin: clamp(40px, 5vw, 64px) auto 0;
}
@media (max-width: 768px) {
  .tour-detail-mock__row {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 24px 0;
  }
  .tour-detail-mock__map-btn {
    position: static;
    display: block;
    margin: 12px 0 0 auto;
    width: max-content;
  }
}

/* ============================================================
   Under Construction (Membership / Sign In) — v0.8.3
   ============================================================ */
.page-uc {
    min-height: 60vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(80px, 12vw, 160px) clamp(20px, 5vw, 80px);
    background: var(--c-bg-soft);
}
.page-uc__inner {
    max-width: 600px;
    text-align: center;
}
.page-uc__title {
    font-family: var(--f-en-serif);
    font-weight: 500;
    font-size: clamp(48px, 8vw, 120px);
    line-height: 0.95;
    letter-spacing: 0.02em;
    margin: 0 0 clamp(24px, 3vw, 40px);
}
.page-uc__lead {
    font-family: var(--f-jp-mincho);
    font-size: clamp(16px, 2vw, 22px);
    margin: 0 0 8px;
}
.page-uc__lead-en {
    font-family: var(--f-en-serif);
    font-size: clamp(13px, 1.4vw, 16px);
    color: var(--c-text-mute, #888);
    margin: 0 0 clamp(40px, 5vw, 64px);
}
.page-uc__body {
    font-family: var(--f-jp-mincho);
    font-size: clamp(14px, 1.4vw, 16px);
    line-height: 2;
    margin: 0 0 clamp(40px, 5vw, 64px);
}
.page-uc__back {
    display: inline-block;
    font-family: var(--f-en-serif);
    font-size: clamp(13px, 1.4vw, 15px);
    letter-spacing: 0.04em;
    color: var(--c-text);
    text-decoration: underline;
    text-underline-offset: 6px;
}

/* === BP #7 (v0.8.21): mobile-small / mobile / desktop additions ===
 * 仕様 (基本設計_共通パーツ P21-27): 320px までレイアウト破綻なしを保証。
 * 監査で 320px 時:
 *   - Tour LP の .tour-intro-images は 3 画像 (lg+sm+md) + gap + padding で
 *     320px viewport を約 17px 超過していた。
 *   - Enquiry の .enquiry-hero__overlay は単語 "APPLICATION" が折り返さず
 *     427px 幅まで膨らみ +5px の overflow を生んでいた。
 * 既存の 768/900 BP は維持。370px 以下のみ局所修正する。
 */
@media (max-width: 370px) {
  /* Tour LP: 3 枚並びの flex-wrap を許可してオーバーフロー解消。
     画像比率は維持し、サイズだけ 320px に収まる固定 vw 値へ */
  .tour-intro-images {
    flex-wrap: wrap;
    gap: 8px;
    padding: 24px 12px;
  }
  .tour-intro-images__item--lg { width: 44vw; }
  .tour-intro-images__item--sm { width: 32vw; margin-top: 12px; }
  .tour-intro-images__item--md { width: 38vw; margin-top: 24px; }

  /* Enquiry: 半透明大型 overlay。単語の途中改行を許可して
     viewport 幅を超えないようにする (font-size は clamp の最小 64px のまま) */
  .enquiry-hero__overlay {
    overflow-wrap: anywhere;
    word-break: break-word;
    /* 64px だと 1 文字あたり ~38px。320px 内に最大 8 文字までしか入らないので
       小型機ではフォントサイズも一段下げて視認性と収まりを両立 */
    font-size: 48px;
    line-height: 0.95;
    right: clamp(20px, 4vw, 80px);
  }
}
/* === END BP #7 === */

/* ===== Shared dual-hero (ABOUT / GUIDE): 左画像+タイトル / 右画像はメニュー下 ===== */
.dual-hero { display: block; background: var(--c-white); padding-bottom: clamp(40px, 5vw, 80px); }
.dual-hero__grid {
  /* 左右フラッシュを最優先。gap は --dual-hero-gap で完全固定。
     右カラムは(デスクトップ幅では)position:absoluteでグリッドの「行の高さ」計算から
     外す(左カラムのテキスト量で行の高さが変な余白を生まないようにするため)が、
     右画像の高さを左カラムに追従させることはしない(=テキストの折り返しで画像の
     高さがガクッと変わるのを避けるため)。右画像は自分自身のaspect-ratioだけで
     決まる、ビューポート幅にのみ連動する独立したサイズにする。
     その代わり、右カラムの想定最大高さ(メニュー避け+画像自身の高さ)を
     .dual-hero__grid の min-height として確保し、テキストが短いページでも
     次のセクションと重ならないようにする。 */
  --dual-hero-gap: 56px;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 715fr) minmax(0, 500fr);
  gap: var(--dual-hero-gap);
  align-items: start;
}
.dual-hero__img { display: block; object-fit: cover; width: 100%; }
.dual-hero__img--left {
  aspect-ratio: 715 / 510;          /* 左画像 715×510 比率を維持したまま自トラック幅いっぱいに拡大縮小 */
  margin-left: 0;                   /* 左端にflush（左右余白なし） */
}
@media (min-width: 769px) {
  .dual-hero__img--left {
    /* 右カラムのメニュー避けオフセットは固定px(下記参照)にしたので、左画像が
       縮みすぎるとその固定offsetに近づき、右画像が左画像の下端にめり込んで
       見えることがある。それを防ぐため、デスクトップ帯(769px〜)では左画像の
       高さに下限を設け、常に理想デザイン(広い画面)に近いプロポーションを保つ。 */
    min-height: 460px;
  }
}
/* About/Guide はオーバーレイ(メニュー)の min-height 膨張を解除し内容高さに */
/* EN align (Phase B / Wave B6): add .page-template-page-en-* siblings so /en/about/, /en/guide/, /en/journal/ receive the same overlay treatment as JP */
body.page-template-page-about .site-header__overlay,
body.page-template-page-en-about .site-header__overlay,
body.post-type-archive-guide .site-header__overlay,
body.page-template-page-en-guide .site-header__overlay,
body.post-type-archive-journal .site-header__overlay,
body.page-template-page-en-journal .site-header__overlay {
  min-height: 0;
}

/* Tour detail pages: KV movie background is dark, so the black site logo
 * disappears into the video. Invert the logo to white for legibility.
 * Applies to all tour singulars (JP + EN via .single-tour body class).
 */
body.single-tour .site-logo img {
  filter: brightness(0) invert(1);
}
.dual-hero__img--right {
  display: block;
  margin-left: auto;
}
@media (min-width: 769px) {
  .dual-hero__col--right {
    /* [2026-09 再変更] 右画像を、左カラム(画像+タイトル+本文)の下端に自動で
       伸びる仕様に戻す。top:0 + bottom:0 で .dual-hero__grid の実高さ
       (=左カラムの自然な高さ)にぴったり合わせる。 */
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: calc((100% - var(--dual-hero-gap)) * 500 / 1215);
    padding-top: 320px;   /* メニュー避け・固定 */
    box-sizing: border-box;
  }
  .dual-hero__img--right {
    width: 100%;
    height: 100%;              /* col--rightの実高さ(padding分を除く)いっぱいに */
    min-height: 420px;         /* 縮みすぎ防止の下限(550pxから縮小し、本文が短いページの余白を詰める) */
    object-fit: cover;         /* 枠の高さは可変、中身はcoverで詰める */
  }
  .dual-hero__grid {
    /* 右画像のmin-height(420px)を確保するための下限。左カラムがこれより
       短いページでも、右画像が次のセクションに重ならないようにする。 */
    min-height: calc(320px + 420px);
  }
}
.dual-hero .about-hero__caption,
.dual-hero .guide-hero__caption,
.dual-hero .journal-hero__caption {
  position: static;
  margin-top: clamp(20px, 3vw, 40px);
  padding-top: clamp(24px, 3vw, 48px);    /* テキスト上にも余裕を持たせる */
  padding-left: clamp(56px, 7vw, 100px);  /* タイトルをもう少し右へ */
  padding-bottom: clamp(32px, 4vw, 56px); /* テキスト下に余裕を持たせる */
}
/* リードは負マージンをやめ、右画像の下に余白をとって配置（テキスト重なり解消） */
.dual-hero .about-hero__lead {
  margin-top: clamp(40px, 5vw, 80px);
}
/* GUIDEのリード(.guide-hero__lead)は .about-statement__body の margin-bottom
   (60-120px)を継承しているが、GUIDEではこれがセクション最後の要素で、
   さらに .dual-hero 自体の padding-bottom (40-80px)も乗るため合計が
   過剰(100-200px)になっていた。ABOUTは後ろにスライダーが続くので
   margin-bottomが必要だが、GUIDEでは不要なので打ち消す。 */
.guide-hero.dual-hero .guide-hero__lead.about-statement__body {
  margin-bottom: 0;
}
@media (max-width: 768px) {
  .dual-hero__grid { grid-template-columns: 1fr; gap: clamp(24px, 6vw, 40px); }
  .dual-hero__col--right { position: static; padding-top: 0; }
  .dual-hero__img--left { max-width: none; aspect-ratio: auto; height: 100vh; min-height: 0; }      /* モバイル: 左は縦100vh */
  .dual-hero__img--right { max-width: 330px; aspect-ratio: 330 / 265; margin: 0 auto; height: auto; object-fit: cover; } /* モバイル: 右 330×265 */
  /* GUIDE モバイル: リード(テキスト)を右画像の上へ → タイトル→テキスト→画像 */
  .guide-hero.dual-hero { display: flex; flex-direction: column; gap: clamp(24px, 6vw, 40px); }
  .guide-hero .dual-hero__grid { display: contents; }
  .guide-hero .dual-hero__col--right { order: 2; }
  .guide-hero .guide-hero__lead { order: 1; }
}

/* About PHILOSOPHY: 左写真をモック実測(512×859)に・左端をヒーロー画像と揃える */
/* EN align (Phase B / Wave B6): add .page-template-page-en-about sibling so /en/about/ PHILOSOPHY matches JP layout */
body.page-template-page-about .philosophy,
body.page-template-page-en-about .philosophy {
  padding-left: clamp(24px, 3vw, 48px);   /* 上のヒーロー左画像と左端を揃える */
}
body.page-template-page-about .philosophy__photo img,
body.page-template-page-en-about .philosophy__photo img {
  aspect-ratio: 512 / 859;                /* モック比 1:1.68（過度なズーム解消） */
  object-position: 20% center;
}

/* concierge が最終セクション(Journal/Guide)のとき、フッターとの間隔を確保（モック準拠） */
.concierge--split:last-child {
  margin-bottom: clamp(56px, 7vw, 100px);
}

/* ===== WAVE_B_FIXES (task-wave-B) ===== */
/* Wave B: About ページ関連修正 (No.26 07/01, 30, 58, 85 JS, 86, 87 defer, 121, 122) */

/* No.26 (07/01): ABOUT 上部余白を除去 (JP dual-hero / EN about-hero__photos の両構造) */
body.page-template-page-about main.page-about,
body.page-template-page-en-about main.page-about {
  margin-top: 0;
  padding-top: 0;
}
body.page-template-page-about .about-hero.dual-hero,
body.page-template-page-en-about .about-hero {
  padding-top: 0;
  margin-top: 0;
}
body.page-template-page-about .about-hero.dual-hero .dual-hero__grid {
  padding-top: 0;
}
@media (max-width: 768px) {
  body.page-template-page-about main.page-about,
  body.page-template-page-en-about main.page-about {
    padding-top: 0;
    margin-top: 0;
  }
  body.page-template-page-about .about-hero.dual-hero,
  body.page-template-page-en-about .about-hero {
    padding-top: 0;
    margin-top: 0;
  }
}

/* Item 5 (07/04): ABOUT top image un-skew.
   Previously rotated -2.2deg (desktop) / -1.6deg (mobile) — reverted per user request. */
body.page-template-page-about .dual-hero__img--left,
body.page-template-page-en-about .about-hero__photo--left {
  transform: none;
}
@media (max-width: 768px) {
  body.page-template-page-about .dual-hero__img--left,
  body.page-template-page-en-about .about-hero__photo--left {
    transform: none;
  }
}

/* Item 5 (07/04): ABOUT consultation section (旅のご相談はぜひお気軽に。) background → JTA_080.jpg.
   Scoped to ABOUT (JP + EN) only. Side photos hidden; navy box overlays JTA_080 with dim scrim. */
body.page-template-page-about .concierge--split,
body.page-template-page-en-about .concierge--split {
  background-image:
    linear-gradient(rgba(31, 41, 74, 0.55), rgba(31, 41, 74, 0.55)),
    url('../images/about/JTA_080.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
body.page-template-page-about .concierge--split .concierge__photo,
body.page-template-page-en-about .concierge--split .concierge__photo {
  visibility: hidden;
}
/* Fix (07/04): restore navy band behind text — Item 5 regression.
   User request: JTA_080.jpg stays as outer section bg (via .concierge--split rule above)
   but the text box must retain the canonical navy band matching other pages. */
body.page-template-page-about .concierge--split .concierge__box,
body.page-template-page-en-about .concierge--split .concierge__box {
  background: var(--c-navy);
}

/* Batch 3 Item 6 (07/04): mobile concierge (旅のご相談はぜひお気軽に。) — prevent
   orphan short lines. Explicit <br class="br-sp"> in PHP handles the primary
   segmentation; this CSS reinforces the intent by keeping JP text from breaking
   at unfortunate positions and letting the browser pretty-wrap what remains.
   Scoped to mobile + concierge area only. */
@media (max-width: 900px) {
  .concierge__box .concierge__title-jp,
  .concierge__box .concierge__body {
    text-wrap: pretty;
    line-break: strict;
  }
  /* Prevent long segments from wrapping in a way that leaves ≤3 trailing chars
     on the last line — .br-sp breaks split text at safe positions and this
     helper keeps each resulting segment together. */
  .concierge__box .concierge__body {
    word-break: normal;
    overflow-wrap: normal;
  }
}

/* No.86 (desktop): キャッチ(Beyond〜)とボディ(We/我々〜)の間に 2-3 行分の空白を追加 */
@media (min-width: 901px) {
  body.page-template-page-about .about-statement,
  body.page-template-page-en-about .about-statement {
    padding-top: clamp(140px, 14vw, 220px);
  }
  body.page-template-page-about .about-hero__lead,
  body.page-template-page-en-about .about-hero__lead {
    margin-bottom: clamp(48px, 6vw, 96px);
  }
}

/* No.121 (mobile): ABOUT OUR PHILOSOPHY - 画像が縦長すぎる問題を修正、
   モックアップ準拠のバランスに (1:1.88 -> 3:4)、コンテンツ順序も改善 */
@media (max-width: 900px) {
  body.page-template-page-about .philosophy__photo img,
  body.page-template-page-en-about .philosophy__photo img {
    aspect-ratio: 3 / 4;         /* 従来の 1:1.88 (極端に縦長) を緩和 */
    object-position: center 30%;
  }
  body.page-template-page-about .philosophy__col--left,
  body.page-template-page-en-about .philosophy__col--left {
    gap: clamp(24px, 5vw, 40px);
  }
  body.page-template-page-about .philosophy__welcome-block,
  body.page-template-page-en-about .philosophy__welcome-block {
    padding-inline: clamp(20px, 6vw, 40px);
  }
  body.page-template-page-about .philosophy__content,
  body.page-template-page-en-about .philosophy__content {
    padding-top: clamp(24px, 5vw, 48px);
  }
}

/* No.122 (mobile): ABOUT OUR COMMITMENT - 画像アスペクト比が縦長すぎる問題を修正
   デスクトップ 3カード縦長 (290:390) はそのまま、モバイル 1カラム時のみ 4:3 に */
@media (max-width: 900px) {
  body.page-template-page-about .about-commitment-card__media,
  body.page-template-page-en-about .about-commitment-card__media {
    aspect-ratio: 4 / 3;
    max-width: 480px;
    margin-inline: auto;
  }
  body.page-template-page-about .about-commitment-card,
  body.page-template-page-en-about .about-commitment-card {
    max-width: 520px;
    margin-inline: auto;
  }
}

/* Batch 3 Item 8 (07/04): ABOUT hero — 3-part fix per user request.
   1. Beyond Luxury text font-size 76px (desktop; mobile clamp preserved)
   2. [2026-09 撤回] 当時は grid align-items:stretch + flex column + 右画像
      height:100% で「右画像の高さを左カラムに合わせる」対応をしていたが、
      これはベース .dual-hero__grid/.dual-hero__col--right 側で右カラムを
      position:absolute にして行サイズ計算から外す方式に統一したため不要かつ
      競合するので撤去（詳細はベース側のコメント参照）。
   3. OUR PHILOSOPHY left image — remove left padding so image sits
      flush to viewport left edge (previously padding-left clamp(24-48px)).
   Scoped to page-about + page-en-about only. */

/* [2026-09 撤去] 右画像の高さがもう左カラムに連動しなくなったため、この
   ABOUT専用のpadding-bottomは不要(GUIDE/JOURNALと挙動を揃えるため撤去)。 */
body.page-template-page-about .philosophy,
body.page-template-page-en-about .philosophy {
  padding-left: 0;
}

/* Q1 (2026-07-04): ABOUT page fix per user feedback:
   (a) [2026-09 再修正] 右画像高さの制御は現在ベース .dual-hero__col--right の
       position:absolute + top:0/bottom:0 方式に統一済み(詳細はベース側コメント)。
       ここでの個別対応は不要になったため削除。
   (b) 依然有効: キャッチコピーと本文の間の余白削減。
   Scoped to page-about + page-en-about only. */
@media (min-width: 901px) {
  /* (b) Gap reduction */
  body.page-template-page-about .about-hero__lead,
  body.page-template-page-en-about .about-hero__lead {
    margin-bottom: 0;
  }
  body.page-template-page-about .about-hero,
  body.page-template-page-en-about .about-hero {
    padding-bottom: 20px;
  }
  body.page-template-page-about .about-statement,
  body.page-template-page-en-about .about-statement {
    padding-top: 20px;
  }
}
/* ===== END WAVE_B_FIXES ===== */

/* ===== WAVE_C_FIXES ===== */
/* Wave C: Journal ページ改修 (No.69, 89, 90, 91, 92, 93, 124)
 * - No.69: REGIONAL STORIES カードを左寄せ
 * - No.89: PRODUCT/EVENTS セクション削除 (PHP 側で対応)
 * - No.90: REGIONAL STORIES を 3列 x 2行 = 6枚 (PHP 側で対応、CSS は既存の 3col grid が自動対応)
 * - No.91: JP KV ボディコピーを 2 段落に分割 (PHP 側で対応、CSS で段間隔調整)
 * - No.92: EN 本文の色/フォントを Guide/Journal 統一仕様に (var(--c-navy) + var(--f-en-serif))
 * - No.93: JP 本文フォント/色を仕様統一 (JP 本文は --f-jp-mincho / --c-navy、見出しは --f-en-serif)
 * - No.124: モバイル JOURNAL 上部余白を除去
 */

/* No.93: JP page の journal-hero__lead を JP 明朝に戻す
 * (line 1384-1386 で EN serif 強制していた旧仕様を上書き) */
/* Q3 (2026-07-04): JP JOURNAL lead を canonical 黒に統一
 * (Guide JP/EN, Journal EN と同じ var(--c-text)=#000000 に。
 *  var(--c-navy)=#26314d は "少し青っぽい" と user 指摘) */
.journal-archive:not(.journal-archive--en) .journal-hero__lead {
  font-family: var(--f-jp-mincho);
  color: var(--c-text);
}

/* No.92: EN page の journal-hero__lead を EN serif + navy に統一 */
/* Item15 (2026-07-04): EN JOURNAL の title-below テキストを Guide EN と統一 (color: --c-text=#000, size 20px)
 * User request: EN JOURNAL の text が font/color 他ページと違う。Guide EN (`.guide-hero__lead`, pages.css:3956)
 * が黒 (#000000) + font-size clamp(15px,1.6vw,20px) + line-height clamp(28px,3vw,34px) の canonical. */
.journal-archive.journal-archive--en .journal-hero__lead {
  font-family: var(--f-en-serif);
  color: var(--c-text);
  font-size: clamp(15px, 1.6vw, 20px);
  line-height: clamp(28px, 3vw, 34px);
}

/* No.91/92: 段落分割対応 — <p> 要素の段間隔調整 */
.journal-hero__lead p {
  margin: 0 0 0.6em;
}
.journal-hero__lead p:last-child {
  margin-bottom: 0;
}

/* No.93: JP 見出し (JOURNAL タイトル) は EN serif で装飾統一 */
.journal-archive:not(.journal-archive--en) .journal-hero__title {
  font-family: var(--f-en-serif);
}

/* No.69: REGIONAL STORIES カード (date / title / body) を中央寄せ→左寄せに */
.archive-card--journal .archive-card__date,
.archive-card--journal .archive-card__title,
.archive-card--journal .archive-card__body,
.journal-card__date,
.journal-card__title {
  text-align: left;
}

/* No.90: REGIONAL STORIES の 3列 x 2行 レイアウト保証
 * 既存 .archive-grid--3col の grid-template-columns: repeat(3, 1fr) が
 * 6 枚を自動的に 2 行に配置するが、行間を明示 */
.journal-section .archive-grid--3col {
  row-gap: clamp(32px, 4vw, 56px);
}

/* No.124: モバイル (max-width: 900px) で JOURNAL ページの上部余白を除去 */
@media (max-width: 900px) {
  .journal-hero.dual-hero,
  .journal-archive .journal-hero {
    padding-top: 0;
  }
  .journal-archive .site-main > .journal-hero:first-child,
  .journal-archive main.site-main > section.journal-hero:first-child {
    margin-top: 0;
  }
}

/* Task S1 (2026-07-04): モバイル JOURNAL KV の crop を左にずらして人物 (青ジャケット) をフレーム内に収める。
   デフォルト object-position: 50% 50% (center) では snow-field 上の2人組のうち青ジャケット側が
   左端でカットされていた。20% center へシフトして両名を左寄りに visible に。 */
@media (max-width: 768px) {
  .journal-hero.dual-hero .dual-hero__img--left {
    object-position: 20% center;
  }
}
/* ===== END WAVE_C_FIXES ===== */

/* ===== WAVE_D_FIXES =====
   Wave D: Guide (BEYOND THE GUIDEBOOK) / BEYOND KV refinements
   Tasks: No.26 (KV precision desktop+mobile) / No.94 (desktop image↔text spacing) /
          No.95 (regions removed → hashbar only) / No.96 (JOURNAL cut) /
          No.107 (mobile BEYOND KV per mockup) / No.120 (mobile overall)
   ============================================================================ */

/* --- No.26 (desktop): BEYOND KV — 左右余白なし + サイズ厳守 ---
   親 dual-hero を全幅で敷いた上で、grid にも overshoot 用の内側 padding を持たせない。
   左画像は左端 flush / 右画像は右端 flush（既存 dual-hero__img--right の margin-left:auto を利用）。 */
body.post-type-archive-guide .guide-hero.dual-hero,
body.page-template-page-en-guide .guide-hero.dual-hero {
  padding-left: 0;
  padding-right: 0;
}
body.post-type-archive-guide .guide-hero .dual-hero__grid,
body.page-template-page-en-guide .guide-hero .dual-hero__grid {
  /* No extra outer padding — flush to viewport edges */
  padding: 0;
}
/* Desktop 実寸 (>=901px): 左右ともベース側で統一済み(fr比率 + gap固定 + 右カラム
   position:absoluteで行サイズ計算から除外)なので、GUIDE専用の個別上書きは不要になり
   撤去。特に旧 height:auto/aspect-ratio:auto の指定はベースの「右画像は
   col--right(position:absolute, top:0/bottom:0)の実高さいっぱいにheight:100%+
   object-fit:coverで詰める」という仕組みと競合するため、残すとGUIDEだけ挙動が
   崩れる。 */

/* --- No.94 (desktop): 画像 ↔ 文字 (guide-hero__lead) の間隔拡張 ---
   従来 clamp(40px, 5vw, 72px) → clamp(72px, 8vw, 120px) に拡張してテキストと画像下端の
   接近を解消。左マージン 36% は左画像右端寄りの位置指定なので維持。 */
@media (min-width: 901px) {
  body.post-type-archive-guide .guide-hero .guide-hero__lead,
  body.page-template-page-en-guide .guide-hero .guide-hero__lead {
    margin-top: clamp(72px, 8vw, 120px);
  }
  /* GUIDE (7/5): BEYOND THE GUIDEBOOK タイトルを左に少しずらして右画像との間隔を確保
     shared caption padding-left clamp(56,7vw,100) → guide のみ縮小して gap +40px 確保 */
  body.post-type-archive-guide .guide-hero .guide-hero__caption,
  body.page-template-page-en-guide .guide-hero .guide-hero__caption {
    padding-left: clamp(40px, 4vw, 60px);
  }
}

/* --- No.95 (region search removed): 削除後もフィルタバー内の縦間隔を最適化 ---
   .guide-regions が消えても .guide-filterbar の gap は 1 要素だけになるため冗長。
   ハッシュバー単独時の余白微調整 (下方向を少し詰める)。 */
.guide-filterbar > .guide-regions { display: none; }        /* 冗長: HTMLでも削除済みだが保険 */
.guide-archive .guide-filterbar { padding-bottom: clamp(4px, 1vw, 12px); }

/* --- No.96 (JOURNAL cut): Guide ページ内 JOURNAL パートの CSS を無効化 ---
   HTML 削除済みだが、キャッシュ経由で残った場合も見えないように保険。
   他ページ (front-page.php 等) の .journal は影響を受けないよう .guide-archive 配下に限定。 */
.guide-archive .journal,
.guide-archive #journal { display: none; }

/* --- No.107 / No.120 (mobile): BEYOND KV をモックアップ通りに再構築 ---
   モックアップ仕様 (0619_ガイドブック_mobile.pdf):
     順序: [左画像 100vh] → [BEYOND THE GUIDEBOOK タイトル] → [リード文] → [右画像 330x265]
   既存 @media(max-width:768px) では guide-hero を flex-column + display:contents で組んでいるが、
   No.120 「デザインが違う」を踏まえてモバイル専用の並び順を明示的に指定する。 */
@media (max-width: 900px) {
  body.post-type-archive-guide .guide-hero.dual-hero,
  body.page-template-page-en-guide .guide-hero.dual-hero {
    display: flex;
    flex-direction: column;
    gap: clamp(20px, 5vw, 32px);
    padding-bottom: clamp(32px, 6vw, 56px);
  }
  body.post-type-archive-guide .guide-hero .dual-hero__grid,
  body.page-template-page-en-guide .guide-hero .dual-hero__grid {
    display: contents;   /* 子要素を guide-hero 直下に flatten */
  }
  /* 左カラム(=左画像+タイトル): 縦 100vh の左画像を最上部に、タイトルは画像直下 */
  body.post-type-archive-guide .guide-hero .dual-hero__col--left,
  body.page-template-page-en-guide .guide-hero .dual-hero__col--left {
    order: 1;
    display: flex;
    flex-direction: column;
    gap: clamp(16px, 4vw, 24px);
    padding: 0;
  }
  body.post-type-archive-guide .guide-hero .dual-hero__img--left,
  body.page-template-page-en-guide .guide-hero .dual-hero__img--left {
    max-width: none;
    width: 100%;
    height: 100vh;                 /* 仕様: 縦 100vh */
    aspect-ratio: auto;
    object-fit: cover;
    margin: 0;
  }
  body.post-type-archive-guide .guide-hero .guide-hero__caption,
  body.page-template-page-en-guide .guide-hero .guide-hero__caption {
    padding-left: clamp(20px, 6vw, 40px);
    padding-right: clamp(20px, 6vw, 40px);
    margin-top: 0;
  }
  /* リード: タイトル直下 → 右画像の前 */
  body.post-type-archive-guide .guide-hero .guide-hero__lead,
  body.page-template-page-en-guide .guide-hero .guide-hero__lead {
    order: 2;
    margin: 0 clamp(20px, 6vw, 40px);
    width: auto;
    max-width: 560px;
    text-align: left;
    font-size: 15px;
    line-height: 31px;             /* 既存 mobile 仕様: 15px / 31px */
  }
  /* 右カラム(=右画像 330x265) */
  body.post-type-archive-guide .guide-hero .dual-hero__col--right,
  body.page-template-page-en-guide .guide-hero .dual-hero__col--right {
    position: static;   /* ベース側の position:absolute(min-width:769px〜)を
                            769-900pxのレンジでも明示的に打ち消す */
    order: 3;
    padding: 0;
    display: flex;
    justify-content: center;
  }
  body.post-type-archive-guide .guide-hero .dual-hero__img--right,
  body.page-template-page-en-guide .guide-hero .dual-hero__img--right {
    width: min(330px, 82vw);
    max-width: 330px;
    aspect-ratio: 330 / 265;       /* 仕様: 330x265 */
    height: auto;
    margin: 0 auto;
    min-height: 0;                 /* Desktop の min-height:550 を打ち消す */
  }
  /* No.120: BEYOND ページ全体の mobile 微調整 (filterbar / tour count の余白削減) */
  .guide-archive .guide-filterbar {
    padding: clamp(24px, 6vw, 40px) clamp(16px, 5vw, 28px) 0;
  }
  .guide-archive .journal-count {
    margin: clamp(16px, 4vw, 24px) 0 -25px 0;
  }
}
/* ===== END WAVE_D_FIXES ===== */

/* ===== WAVE_E_FIXES ===== */

/* Wave E No.70: GUIDE/TOUR archive のサムネカードを JOURNAL と同一 aspect-ratio (4/5) に統一。
 * base の .archive-card__img は 320/420 (≈0.762) で GUIDE では JOURNAL より縦長=大きく見えるため、
 * GUIDE archive scope で 4/5 に合わせ、JOURNAL カード基準のサイズに縮小する。
 * JOURNAL 側は既に .archive-card--journal .archive-card__img { aspect-ratio: 4/5 } で規定済みのため
 * 影響なし (単一責任: 影響範囲は post-type-archive-guide のみ)。
 */
body.post-type-archive-guide .archive-card:not(.archive-card--journal) .archive-card__img {
  aspect-ratio: 4 / 5;
}

/* Wave E No.118 (廃止・justify-content方式に置換): 従来は .dual-hero__grid に
 * max-width:1440px + margin-inline:auto を足して間隔膨張を抑えていたが、
 * 1440pxを境にmargin(左右パディング)がON/OFFする閾値依存の挙動になり、
 * 「左右にパディングが出たり出なかったりする」不安定さの原因になっていた。
 * 上のベース定義(display:grid直下)を grid-template-columns: minmax(0,715px) minmax(0,500px)
 * + justify-content: space-between に変更したことで、画像自体は常に画面端フラッシュのまま
 * 隙間だけが伸縮するようになったため、この max-width/margin-inline 制約は不要になり削除。
 * guidebook__panel-inner（別コンポーネント）はこの問題の対象外なので現状維持。
 */
.guidebook__panel-inner {
  max-width: min(100%, 1440px);
  margin-inline: auto;
}

/* ========== Wave F / No.97 (updated Item 4): Privacy Policy hero overlay bottom-left variant
   PDF mock (0619_プライバシーポリシー_desktop.pdf / mobile) は "PRIVACY / POLICY" を
   ヒーロー左下寄りに 2 行、半透明白の serif で配置。================================== */
.policy-hero__overlay-text--bottom {
  top: auto;
  bottom: clamp(-8px, -0.5vw, 8px);
  transform: none;
  font-size: clamp(52px, 10vw, 160px);
  line-height: 0.9;
  opacity: 0.5;
  letter-spacing: 0.02em;
  font-weight: 400;
  left: clamp(16px, 3vw, 60px);
}

/* ============================================================
 * EN LOCALE OVERRIDES (Phase B / Wave B6 — 2026-07-03)
 *
 * Base CSS defaults many body/lead texts to var(--f-jp-mincho) which is
 * correct for JP glyphs but causes English text to render in a narrower
 * mincho fallback → visually "small" / "wrong" on /en/ pages.
 *
 * This block adds body.is-en overrides for all EN pages where JP-mincho
 * leaks into EN copy. Selector specificity (0,2,1) matches the JP base
 * (0,1,1 -> 0,2,1 with body.is-en), and pages.css loads AFTER
 * front-page.css so front-page.css base rules are cleanly overridden.
 *
 * Root causes documented in en-jp-audit-report.md §3.1.
 * ============================================================ */

/* === EN align: TOP (front-page hero CTA) ===
 * Base: front-page.css:95 `.hero-title__cta { font-family: var(--f-jp-mincho); font-size: clamp(20px,2.6vw,32px); }`
 * EN "Into Japan's unseen depths" renders in mincho fallback → small/narrow. */
body.is-en .hero-title__cta {
  font-family: var(--f-en-serif);
  /* Batch3 item2: EN desktop 30px max, clamp for smaller viewports (mobile floor 20px) */
  font-size: clamp(20px, 2.6vw, 30px);
}

/* === EN align: Guide archive ===
 * [2026-09] base.css の body.is-en .t-body (font-family: en-serif, 18px) に
 * 一本化。guide-hero__lead には既に .t-body クラスが付与されているため、
 * ここでの個別上書きは撤去(1箇所を直せば全部に反映される、という方針)。 */

/* Base pages.css:713 `.archive-card__body` and pages.css:1589 `.archive-card--journal .archive-card__body`
 * both default to JP mincho. EN guide cards + coming-soon bodies need en-serif. */
body.is-en .archive-card__body,
body.is-en .archive-card--journal .archive-card__body {
  font-family: var(--f-en-serif);
  font-style: normal;
}

/* === EN align: Privacy Policy ===
 * Base: pages.css:1273 `.policy-body__intro` and pages.css:1298 `.policy-section__body`
 * both use JP mincho. EN long-form English intro + sections render too small. */
body.is-en .policy-body__intro {
  font-family: var(--f-en-serif);
  font-size: clamp(15px, 1.6vw, 17px);
  line-height: 1.7;
}
body.is-en .policy-section__body {
  font-family: var(--f-en-serif);
}

/* === EN align: Blog article (refactor inline $en_font_style workaround) ===
 * Base: pages.css:2243 `.blog-intro__lead-jp`, 2294 `.blog-entry-card__title`,
 * 2301 `.blog-entry-card__body`, 2334 `.blog-info__list`, 2342 `.blog-info__note`
 * default to JP mincho. Overrides here allow future EN blog templates to drop
 * inline style="font-family:var(--f-en-serif);" attributes. */
body.is-en .blog-intro__lead-jp,
body.is-en .blog-entry-card__title,
body.is-en .blog-entry-card__body,
body.is-en .blog-info__list,
body.is-en .blog-info__note {
  font-family: var(--f-en-serif);
}
/* ===== END EN LOCALE OVERRIDES ===== */

/* ================================================================
 * === Guide card tag chips + Tour placeholder page (2026-07-03) ===
 * ================================================================
 *
 * Client design brief (サイト設計書.xlsx コンテンツ設計_BtoC):
 *   only the leftmost 'hokkaido-niseko' tour has a fully authored single-tour.php
 *   template. The remaining 5 tours (Ryukyu / Niseko Snow / Niki-Yoichi Terroir /
 *   Rebun / Teshikaga Winter) render a shared "Currently in Preparation / 現在準備中"
 *   placeholder page via theme/inc/tour-pages.php.
 *
 * Card-side additions:
 *   .archive-card__tags — hashtag chips shown between .archive-card__body and
 *   .archive-card__more (subtle en-serif at ~13px, wraps).
 *
 * Placeholder single-tour additions:
 *   .tour-page.tour-page--placeholder root wrapper
 *   .tour-placeholder-hero + caption grouping (image + region chip + place + title + tags)
 *   .tour-placeholder-intro (lead subtitle from spec)
 *   .tour-placeholder-prep (the "Currently in Preparation / 現在準備中" section)
 */
.archive-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5em 1em;
  margin: 8px 0 0;
  padding: 0 clamp(8px, 1.2vw, 16px);
  list-style: none;
  font-family: var(--f-en-serif);
  font-size: clamp(0.6875rem, 1.1vw, 0.8125rem);
  letter-spacing: 0.05em;
  /* Layout unification (user directive 2026-07-03): reserve a single-row
     baseline so cards with fewer chips do not collapse vertically and mis-
     align the row below (VIEW MORE etc.). */
  min-height: calc(1.6em * 1);
}
.archive-card__tags li {
  color: var(--c-muted, #7a7a7a);
}

/* Tour placeholder single-tour page (rendered from single-tour.php early-return branch) */
.tour-page--placeholder {
  padding: 0 0 clamp(60px, 8vw, 120px);
}

.tour-placeholder-hero {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(24px, 3vw, 40px);
  padding: clamp(24px, 4vw, 56px) clamp(20px, 5vw, 80px) 0;
}
@media (min-width: 900px) {
  .tour-placeholder-hero {
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    align-items: end;
  }
}
.tour-placeholder-hero__img {
  overflow: hidden;
  aspect-ratio: 3 / 2;
}
.tour-placeholder-hero__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.tour-placeholder-hero__caption {
  display: flex;
  flex-direction: column;
  gap: clamp(10px, 1.2vw, 16px);
  padding-bottom: clamp(6px, 1vw, 14px);
}
.tour-placeholder-hero__region {
  align-self: flex-start;
  padding: 4px 12px;
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 18px);
  color: var(--c-text);
  background: var(--c-gray);
  display: inline-block;
}
.tour-placeholder-hero__region--hokkaido { background: #92B0F1; }
.tour-placeholder-hero__region--okinawa  { background: #DACA9C; }
.tour-placeholder-hero__place {
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.4vw, 16px);
  color: var(--c-text);
  margin: 0;
}
.tour-placeholder-hero__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(22px, 3.4vw, 40px);
  line-height: 1.25;
  margin: 0;
  color: var(--c-text);
}
body.is-jp .tour-placeholder-hero__title {
  font-family: var(--f-jp-mincho);
}
.tour-placeholder-hero__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5em 1em;
  margin: 6px 0 0;
  padding: 0;
  list-style: none;
  font-family: var(--f-en-serif);
  font-size: clamp(12px, 1.3vw, 15px);
  letter-spacing: 0.05em;
  color: var(--c-muted, #7a7a7a);
}

.tour-placeholder-intro {
  padding: clamp(32px, 5vw, 64px) clamp(20px, 8vw, 160px);
  text-align: center;
}
.tour-placeholder-intro__lead {
  font-family: var(--f-en-serif);
  font-size: clamp(15px, 1.6vw, 20px);
  line-height: 1.8;
  color: var(--c-text);
  margin: 0;
}
body.is-jp .tour-placeholder-intro__lead {
  font-family: var(--f-jp-mincho);
}

.tour-placeholder-prep {
  padding: clamp(24px, 4vw, 48px) clamp(20px, 8vw, 160px) clamp(48px, 6vw, 80px);
  text-align: center;
  border-top: 1px solid var(--c-hairline, #e6e2d8);
  border-bottom: 1px solid var(--c-hairline, #e6e2d8);
  margin: 0 clamp(20px, 5vw, 80px);
}
.tour-placeholder-prep__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
  font-size: clamp(20px, 2.6vw, 30px);
  letter-spacing: 0.05em;
  margin: 0 0 clamp(14px, 1.6vw, 20px);
  color: var(--c-text);
}
body.is-jp .tour-placeholder-prep__title {
  font-family: var(--f-jp-mincho);
}
.tour-placeholder-prep__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.3vw, 15px);
  line-height: 1.9;
  color: var(--c-text);
  margin: 0 auto;
  max-width: 720px;
}
body.is-en .tour-placeholder-prep__body {
  font-family: var(--f-en-serif);
}
/* === END Tour placeholder page === */

/* ===== TOURS_LAYOUT_UNIFY (Phase 3 of TOURS content migration) =====
 * SSOT: /tmp/jta-tours-layout-spec.md Section 4 (Recommended CSS Changes).
 * Applied per Section 5 spec deviations G-2 (place row) + T-1 (title hierarchy)
 * + C-1 (badge text color) + concierge #3D385D.
 *
 * Blast-radius scoping (per spec §6 blast-radius note): base .archive-card__region
 * is shared with the journal Coming Soon chip which uses var(--c-gray) background —
 * white text would fail contrast there. So the white text-color override is scoped
 * to region modifiers (--hokkaido / --okinawa) only, keeping journal chip untouched.
 */

/* C-1: Region badge — R81 (2026-09-15) the hokkaido/okinawa-only letter-spacing/
 * padding override (and the color:#FFFFFF before it) has been removed
 * entirely. Every prefecture/region badge now shares the same base
 * .archive-card__region styling — no more special-casing individual
 * cards' spacing. */

/* T-1: swap tour-title label ↔ main font-size hierarchy per mockup measurements.
 *   Mockup: label (NISEKO:) = 116pt, main (Premium ONSEN…) = 96pt. Prior CSS had
 *   main LARGER than label. */
.tour-title__label {
  font-size: clamp(56px, 9vw, 120px);   /* WAS clamp(44px, 6.2vw, 92px). */
}
.tour-title__main {
  font-size: clamp(44px, 7.5vw, 100px); /* WAS clamp(56px, 9vw, 130px). */
}
@media (max-width: 900px) {
  .tour-title__label { font-size: clamp(40px, 10vw, 68px); }
  .tour-title__main  { font-size: clamp(30px, 7.5vw, 52px); }
}

/* Concierge box background on tour CTAs → #3D385D (mockup pixel-sample).
 * Scoped to .concierge--tour so guide/journal/front-page CTAs remain --c-navy. */
.concierge--tour .concierge__box {
  background: #3D385D;
}

/* Data-driven tour renderer (Phase 3 → Phase 2 layout-match hotfix 2026-07-03).
 * Fidelity port of japan-tourism.net's Nuxt tour DOM. Section order and nesting
 * (verticalLong/slider inside concept, per-day route map, early+late CTAs, colorCode
 * as --tour-color-code CSS variable) match the old-site Vue template.
 * These rules only set spacing/typography — no colors/layout that would collide
 * with existing skins. */
.single-tour--data section,
.single-tour--data > header.tour-title {
  padding: clamp(40px, 5vw, 96px) clamp(20px, 5vw, 80px);
  max-width: 1240px;
  margin: 0 auto;
}
/* TOUR-006: title block reverted from grid 2-col to vertical stack (page_title header alone,
   then main_block with lead-image full-width, text, sub-image). */
.single-tour--data .tour-title--data { text-align: center; padding-bottom: clamp(24px, 3vw, 48px); }
.single-tour--data .tour-title__region { display: inline-block; padding: 6px 14px; font-family: var(--f-en-serif); font-size: clamp(13px, 1.4vw, 18px); color: #FFF; letter-spacing: 0.08em; margin-bottom: 12px; }
.single-tour--data .tour-title__region--hokkaido { background: #92B0F1; }
.single-tour--data .tour-title__region--okinawa { background: #DACA9C; }
.single-tour--data .tour-title__place { font-family: var(--f-jp-mincho); font-size: clamp(14px, 1.4vw, 17px); letter-spacing: 0.06em; margin: 0 0 clamp(8px, 1vw, 14px); color: #666; }
/* TOUR-005 + TOUR-015: h1 uses colorCode, text-balance for balanced line wrap. */
.single-tour--data .tour-title__main { font-family: var(--f-en-serif); font-weight: 600; font-size: clamp(28px, 4.4vw, 60px); line-height: 1.2; margin: 0 0 clamp(12px, 1.6vw, 20px); color: var(--tour-color-code, #282828); text-wrap: balance; text-align: center; }
/* TOUR-007: JAPAN TOURISM tagline under h1 */
.single-tour--data .tour-title__brand { font-family: var(--f-en-serif); font-size: clamp(14px, 1.6vw, 20px); letter-spacing: 0.14em; margin: 0; text-transform: uppercase; }
.single-tour--data .tour-title__brand-strong { font-weight: 700; }
/* TOUR-006 main_block: leadImage full-width above text center, subImage small below. */
.single-tour--data .tour-main-block--data { display: block; }
.single-tour--data .tour-main-block__lead-image { width: 100%; max-width: 1800px; margin: 0 auto clamp(32px, 4vw, 64px); aspect-ratio: 1800 / 806; overflow: hidden; }
.single-tour--data .tour-main-block__lead-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.single-tour--data .tour-main-block__text { max-width: 820px; margin: 0 auto clamp(24px, 3vw, 48px); text-align: center; }
.single-tour--data .tour-main-block__lead { font-family: var(--f-jp-mincho); font-size: clamp(16px, 1.7vw, 22px); line-height: 1.6; margin-bottom: clamp(16px, 2vw, 28px); text-wrap: balance; }
.single-tour--data .tour-main-block__body { font-family: var(--f-jp-mincho); font-size: clamp(14px, 1.5vw, 18px); line-height: 1.8; text-align: left; }
.single-tour--data .tour-main-block__tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 14px; padding: 0; margin: clamp(16px, 2vw, 28px) 0 0; list-style: none; }
.single-tour--data .tour-main-block__tags li { font-family: var(--f-en-serif); font-size: 13px; letter-spacing: 0.06em; }
.single-tour--data .tour-main-block__sub-image { max-width: 640px; margin: 0 auto; aspect-ratio: 3/4; overflow: hidden; }
.single-tour--data .tour-main-block__sub-image img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* TOUR-008 + KV: SCROLL anchor on hero (compositor-friendly bounce). */
.single-tour--data .tour-kv { position: relative; }
.single-tour--data .tour-kv--movie { padding: 0; max-width: none; margin: 0; aspect-ratio: 16 / 7; position: relative; overflow: hidden; }
.single-tour--data .tour-kv--movie iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.single-tour--data .tour-kv--image { padding: 0; max-width: none; margin: 0; aspect-ratio: 16 / 7; overflow: hidden; }
.single-tour--data .tour-kv--image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.single-tour--data .tour-kv__scroll { position: absolute; left: 50%; bottom: clamp(16px, 3vw, 40px); transform: translateX(-50%); font-family: var(--f-en-serif); font-size: 12px; letter-spacing: 0.18em; color: #FFF; text-decoration: none; padding-bottom: 40px; transition: opacity 200ms ease; z-index: 2; }
.single-tour--data .tour-kv__scroll:hover { opacity: 0.7; }
.single-tour--data .tour-kv__scroll span { position: absolute; left: 50%; bottom: 0; width: 1px; height: 32px; background: currentColor; transform: translateX(-50%); animation: tour-kv-scroll 1.6s ease-in-out infinite; }
@keyframes tour-kv-scroll { 0% { transform: translate(-50%, -100%); opacity: 0; } 50% { opacity: 1; } 100% { transform: translate(-50%, 0); opacity: 0; } }
.single-tour--data .tour-contents-anchor { display: block; height: 0; visibility: hidden; scroll-margin-top: 80px; }

/* TOUR-011: Concept brand header */
.single-tour--data .tour-concept__section-header { text-align: center; margin-bottom: clamp(24px, 3vw, 48px); }
.single-tour--data .tour-concept__section-title { font-family: var(--f-en-serif); font-size: clamp(14px, 1.6vw, 20px); letter-spacing: 0.18em; text-transform: uppercase; margin: 0 0 clamp(8px, 1vw, 14px); font-weight: 400; }
.single-tour--data .tour-concept__kv-title-list { list-style: none; padding: 0; margin: 0; font-family: var(--f-en-serif); font-weight: 300; font-size: clamp(24px, 3.2vw, 44px); line-height: 1.3; text-wrap: balance; }
.single-tour--data .tour-concept__kv-title { font-family: var(--f-en-serif); font-size: clamp(24px, 3vw, 40px); text-align: center; letter-spacing: 0.05em; } /* legacy fallback */
.single-tour--data .tour-concept__slides { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin: clamp(20px, 3vw, 40px) 0; }
.single-tour--data .tour-concept__slide img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.single-tour--data .tour-concept__contents { max-width: 1040px; margin: clamp(24px, 3vw, 48px) auto 0; }
.single-tour--data .tour-concept__text { max-width: 820px; margin: 0 auto; text-align: center; }
.single-tour--data .tour-concept__title { font-family: var(--f-en-serif); font-size: clamp(20px, 2.4vw, 32px); line-height: 1.4; margin-bottom: clamp(16px, 2vw, 28px); text-wrap: balance; }
.single-tour--data .tour-concept__body { font-family: var(--f-jp-mincho); font-size: clamp(14px, 1.4vw, 17px); line-height: 1.9; text-align: left; }
.single-tour--data .tour-concept__map { max-width: 720px; margin: clamp(24px, 3vw, 48px) auto 0; }
.single-tour--data .tour-concept__map img { width: 100%; height: auto; display: block; }

/* TOUR-003: narrative-list (verticalLong) nested inside concept, with color-coded SVG icons */
.single-tour--data .tour-concept__narrative-list { list-style: none; padding: 0; margin: clamp(32px, 4vw, 64px) 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: clamp(24px, 3vw, 48px); }
.single-tour--data .tour-concept__narrative-item { display: flex; flex-direction: column; }
.single-tour--data .tour-concept__narrative-img { width: 100%; aspect-ratio: 3/4; overflow: hidden; margin-bottom: clamp(12px, 1.5vw, 20px); }
.single-tour--data .tour-concept__narrative-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.single-tour--data .tour-concept__narrative-caption { margin: 0; }
.single-tour--data .tour-concept__narrative-caption dt { display: flex; align-items: center; gap: 12px; margin-bottom: clamp(8px, 1vw, 12px); font-family: var(--f-en-serif); font-weight: 400; }
.single-tour--data .tour-concept__narrative-icon { flex: 0 0 auto; width: clamp(40px, 5vw, 60px); height: clamp(40px, 5vw, 60px); display: inline-flex; }
.single-tour--data .tour-concept__narrative-icon svg { width: 100%; height: 100%; }
.single-tour--data .tour-concept__narrative-title { font-family: var(--f-en-serif); font-weight: 700; font-size: clamp(16px, 1.8vw, 22px); line-height: 1.3; text-wrap: balance; }
.single-tour--data .tour-concept__narrative-body { margin: 0; font-family: var(--f-jp-mincho); font-size: clamp(13px, 1.3vw, 15px); line-height: 1.9; }

/* TOUR-004: Slider nested inside concept as concept_slider */
.single-tour--data .tour-concept__slider { margin-top: clamp(40px, 5vw, 80px); }
.single-tour--data .tour-slider__copy { font-family: var(--f-en-serif); font-weight: 300; font-size: clamp(18px, 2vw, 28px); line-height: 1.5; text-align: center; margin-bottom: clamp(24px, 3vw, 48px); text-wrap: balance; }
.single-tour--data .tour-slider__track { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.single-tour--data .tour-slider__slide img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }

/* Feature (retain current layout; TOUR-013 deferred — see commit rationale) */
.single-tour--data .tour-feature__kv { max-width: 100%; margin-bottom: clamp(24px, 3vw, 48px); }
.single-tour--data .tour-feature__kv img { width: 100%; height: auto; display: block; }
.single-tour--data .tour-feature__title { font-family: var(--f-en-serif); font-size: clamp(28px, 3.6vw, 48px); line-height: 1.3; margin: 0 0 clamp(16px, 2vw, 32px); text-align: center; text-wrap: balance; }
.single-tour--data .tour-feature__body { font-family: var(--f-jp-mincho); font-size: clamp(14px, 1.5vw, 18px); line-height: 1.9; max-width: 820px; margin: 0 auto clamp(24px, 3vw, 48px); }
.single-tour--data .tour-feature__sub-images,
.single-tour--data .tour-feature__below-images { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin-top: clamp(20px, 3vw, 40px); }
.single-tour--data .tour-feature__sub-img img,
.single-tour--data .tour-feature__below-img img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }

/* Plan (TOUR-014: 1-col vertical schedule; TOUR-015: per-day route map at end of day) */
.single-tour--data .tour-plan__title { font-family: var(--f-en-serif); font-size: clamp(24px, 3vw, 40px); text-align: center; letter-spacing: 0.05em; margin-bottom: clamp(16px, 2vw, 28px); text-wrap: balance; }
.single-tour--data .tour-plan__body { font-family: var(--f-jp-mincho); font-size: clamp(14px, 1.5vw, 18px); line-height: 1.9; max-width: 820px; margin: 0 auto clamp(24px, 3vw, 48px); }
.single-tour--data .tour-plan__below-images { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: clamp(32px, 4vw, 56px); }
.single-tour--data .tour-plan__below-img img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.single-tour--data .tour-plan__schedule { display: flex; flex-direction: column; gap: clamp(32px, 4vw, 64px); max-width: 1040px; margin: 0 auto; }
.single-tour--data .tour-plan__day { border-top: 2px solid var(--tour-color-code, var(--c-navy, #282828)); padding-top: clamp(20px, 2.5vw, 32px); }
.single-tour--data .tour-plan__day-label { font-family: var(--f-en-serif); font-size: clamp(28px, 3.6vw, 48px); font-weight: 600; margin: 0 0 clamp(16px, 2vw, 24px); color: var(--tour-color-code, #282828); font-variant-numeric: tabular-nums; letter-spacing: 0.04em; }
.single-tour--data .tour-plan__day-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: clamp(20px, 2.5vw, 40px); }
.single-tour--data .tour-plan__item { display: grid; grid-template-columns: 80px 1fr; gap: 12px 20px; align-items: start; }
.single-tour--data .tour-plan__item-time { font-family: var(--f-en-serif); font-size: clamp(14px, 1.4vw, 16px); font-weight: 600; grid-column: 1; font-variant-numeric: tabular-nums; letter-spacing: 0.04em; }
.single-tour--data .tour-plan__item-title { font-family: var(--f-jp-mincho); font-size: clamp(16px, 1.8vw, 22px); margin: 0; grid-column: 2; }
.single-tour--data .tour-plan__item-img { grid-column: 1 / -1; }
.single-tour--data .tour-plan__item-img img { width: 100%; height: auto; display: block; }
.single-tour--data .tour-plan__item-body { grid-column: 1 / -1; font-family: var(--f-jp-mincho); font-size: clamp(13px, 1.3vw, 16px); line-height: 1.9; }
.single-tour--data .tour-plan__day-map { margin-top: clamp(24px, 3vw, 40px); }
.single-tour--data .tour-plan__day-map img,
.single-tour--data .tour-plan__day-map picture { width: 100%; height: auto; display: block; }

/* Detail (TOUR-016: retain panel bg as design decision, note in commit) */
.single-tour--data .tour-detail__title { font-family: var(--f-en-serif); font-size: clamp(40px, 6vw, 96px); letter-spacing: 0.04em; text-align: center; margin: 0 0 clamp(24px, 3vw, 48px); color: var(--tour-color-code, #282828); text-wrap: balance; }
.single-tour--data .tour-detail__panel { background: #EEECE7; padding: clamp(24px, 3vw, 48px); border-radius: 8px; display: grid; gap: clamp(16px, 2vw, 28px); }
.single-tour--data .tour-detail__row { display: grid; grid-template-columns: minmax(120px, 200px) 1fr; gap: clamp(16px, 2vw, 32px); }
.single-tour--data .tour-detail__row dt { font-family: var(--f-en-serif); font-size: clamp(14px, 1.4vw, 18px); font-weight: 600; letter-spacing: 0.04em; }
.single-tour--data .tour-detail__row dd { margin: 0; font-family: var(--f-jp-mincho); font-size: clamp(13px, 1.3vw, 16px); line-height: 1.8; }
.single-tour--data .tour-detail__access-img img { width: 100%; height: auto; display: block; margin-bottom: 12px; }
/* TOUR-002: Detail map (image + google maps link) */
.single-tour--data .tour-detail__map { margin: clamp(32px, 4vw, 56px) auto 0; max-width: 1040px; text-align: center; }
.single-tour--data .tour-detail__map img { width: 100%; height: auto; display: block; margin-bottom: 12px; }
.single-tour--data .tour-detail__map-link { margin: clamp(12px, 1.5vw, 20px) 0 0; font-family: var(--f-en-serif); font-weight: 700; font-size: clamp(14px, 1.4vw, 18px); letter-spacing: 0.04em; }
.single-tour--data .tour-detail__map-link a { color: var(--tour-color-code, #282828); text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 2px; transition: opacity 200ms ease; }
.single-tour--data .tour-detail__map-link a:hover { opacity: 0.65; }
.single-tour--data .tour-detail__map-link .arrow { display: inline-block; margin-left: 6px; }
.single-tour--data .tour-detail__enquire { text-align: center; margin: clamp(32px, 4vw, 56px) 0 0; }

/* TOUR-001 + TOUR-012: Early + Late Concierge CTAs with per-tour ctaImage */
.single-tour--data .tour-cta { padding: 0; max-width: none; margin: 0; }
.single-tour--data .tour-cta.tour-cta--early { margin-top: clamp(24px, 3vw, 48px); }
.single-tour--data .tour-cta.tour-cta--late { margin-top: clamp(40px, 5vw, 80px); }

@media (max-width: 900px) {
  .single-tour--data .tour-detail__row { grid-template-columns: 1fr; gap: 8px; }
  .single-tour--data .tour-plan__item { grid-template-columns: 60px 1fr; }
  .single-tour--data .tour-concept__narrative-list { grid-template-columns: 1fr; }
  .single-tour--data .tour-main-block__lead-image { aspect-ratio: 4 / 3; }
}
/* ===== END TOURS_LAYOUT_UNIFY ===== */

/* ============================================================================
   JOURNAL detail article (Hokuriku Regional Stories, 2026-07)
   Reuses .archive-card / .journal-card / .blog-* aesthetics.
   ============================================================================ */
.single-journal { background: var(--c-white); }

.journal-article-hero {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 68vh;
  overflow: hidden;
  margin-bottom: clamp(32px, 4vw, 64px);
}
.journal-article-hero__img { position: absolute; inset: 0; }
.journal-article-hero__img img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.journal-article-hero__caption {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: clamp(24px, 4vw, 56px);
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.55) 100%);
  color: var(--c-white);
  display: flex; flex-direction: column; gap: 8px;
}
.journal-article-hero__region {
  display: inline-block;
  align-self: flex-start;
  padding: 4px 12px;
  background: #B0AEA5;
  color: var(--c-white);
  font-family: var(--f-en-serif);
  font-size: clamp(12px, 1.2vw, 14px);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.journal-article-hero__region--hokuriku { background: #6A9BCC; }
.journal-article-hero__tag {
  font-family: var(--f-en-serif);
  font-size: clamp(12px, 1.2vw, 14px);
  letter-spacing: 0.1em;
  margin: 0;
  opacity: 0.9;
}
.journal-article-hero__title {
  font-family: var(--f-jp-mincho);
  font-size: clamp(22px, 3.2vw, 40px);
  line-height: 1.4;
  margin: 4px 0 0;
  max-width: 40em;
}
.single-journal--en .journal-article-hero__title {
  font-family: var(--f-en-serif);
  font-weight: 500;
}
.journal-article-hero__date {
  font-family: var(--f-en-serif);
  font-size: clamp(13px, 1.3vw, 15px);
  letter-spacing: 0.06em;
  margin: 4px 0 0;
  opacity: 0.85;
}

.journal-article-body {
  max-width: 780px;
  margin: 0 auto clamp(48px, 6vw, 96px);
  padding: 0 clamp(20px, 4vw, 40px);
  font-family: var(--f-jp-mincho);
  font-size: clamp(15px, 1.4vw, 17px);
  line-height: 2.0;
  color: var(--c-navy, #141413);
}
.single-journal--en .journal-article-body {
  font-family: var(--f-en-serif);
  line-height: 1.85;
}
.journal-article-body p { margin: 0 0 1.5em; }
.journal-article-body strong { font-weight: 700; }
.journal-article-body a {
  color: #6A9BCC;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.journal-article-body a:hover { color: var(--c-red, #C33); }
.journal-article-body img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: clamp(20px, 3vw, 40px) auto;
  border-radius: 4px;
}
.journal-article-body h2 {
  font-family: var(--f-jp-mincho);
  font-size: clamp(20px, 2.2vw, 28px);
  margin: 2em 0 0.75em;
  padding-left: 14px;
  border-left: 4px solid #6A9BCC;
}
.single-journal--en .journal-article-body h2 { font-family: var(--f-en-serif); font-weight: 500; }
.journal-article-body h3 {
  font-family: var(--f-jp-mincho);
  font-size: clamp(17px, 1.8vw, 22px);
  margin: 1.6em 0 0.5em;
  color: #444;
}
.journal-article-body ul, .journal-article-body ol {
  margin: 0 0 1.5em 1.5em;
  padding: 0;
}
.journal-article-body li { margin-bottom: 0.4em; }

.journal-article-back {
  max-width: 780px;
  margin: 0 auto clamp(48px, 6vw, 96px);
  padding: 0 clamp(20px, 4vw, 40px);
  text-align: center;
}

/* JOURNAL-001: FirstView-style hero overlay ('News' banner + category subtitle) */
.journal-article-hero--firstview::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.32);
  pointer-events: none;
}
.journal-article-hero__firstview {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  color: var(--c-white);
  z-index: 1;
  pointer-events: none;
}
.journal-article-hero__firstview-text {
  font-family: var(--f-en-serif);
  font-size: clamp(40px, 6vw, 88px);
  font-weight: 300;
  letter-spacing: 0.04em;
  line-height: 1;
  margin: 0;
}
.journal-article-hero__firstview-sub {
  font-family: var(--f-en-serif);
  font-size: clamp(14px, 1.5vw, 18px);
  letter-spacing: 0.12em;
  text-transform: lowercase;
  margin: 12px 0 0;
  opacity: 0.92;
}
.journal-article-hero__caption-legacy {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: clamp(20px, 3vw, 40px);
  color: var(--c-white);
  z-index: 2;
  display: flex; flex-direction: column; gap: 6px;
  background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.45) 100%);
}

/* JOURNAL-002: SNS share bar */
.journal-share {
  max-width: 780px;
  margin: 0 auto clamp(20px, 3vw, 32px);
  padding: 0 clamp(20px, 4vw, 40px);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.journal-share__label {
  font-family: var(--f-en-serif);
  font-size: clamp(11px, 1.1vw, 13px);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #7a7a70;
  margin: 0;
}
.journal-share__list {
  display: flex; gap: 14px; list-style: none; padding: 0; margin: 0;
}
.journal-share__btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--c-white);
  color: #141413;
  border: 1px solid #d9d5c8;
  cursor: pointer;
  transition: transform .18s ease, background .18s ease, color .18s ease;
}
.journal-share__btn:hover { transform: translateY(-2px); background: #141413; color: #fff; }
.journal-share__btn--copy.is-copied { background: #6A9BCC; color: #fff; border-color: #6A9BCC; }

/* JOURNAL-003: Categories chips */
.journal-categories {
  max-width: 980px;
  margin: 0 auto clamp(32px, 4vw, 56px);
  padding: clamp(24px, 3vw, 40px) clamp(20px, 4vw, 40px);
  border-top: 1px solid #ecebe3;
  display: flex; flex-direction: column; align-items: center; gap: 14px;
}
.journal-categories__label {
  font-family: var(--f-en-serif);
  font-size: clamp(12px, 1.2vw, 14px);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #7a7a70;
  margin: 0;
}
.journal-categories__list {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-wrap: wrap; justify-content: center; gap: 10px;
}
.journal-categories__chip {
  display: inline-block;
  padding: 6px 16px;
  border: 1px solid #d9d5c8;
  border-radius: 999px;
  font-family: var(--f-en-serif);
  font-size: clamp(12px, 1.1vw, 13px);
  letter-spacing: 0.08em;
  color: #141413;
  text-decoration: none;
  transition: background .18s ease, color .18s ease, border-color .18s ease;
}
.journal-categories__chip:hover,
.journal-categories__chip.is-current { background: #141413; color: #fff; border-color: #141413; }

/* JOURNAL-005: NewsAndBlog related-articles cards */
.journal-related {
  max-width: 1200px;
  margin: 0 auto clamp(48px, 6vw, 96px);
  padding: 0 clamp(20px, 4vw, 40px);
}
.journal-related__head { text-align: center; margin-bottom: clamp(24px, 3vw, 40px); }
.journal-related__kicker {
  font-family: var(--f-en-serif);
  font-size: clamp(24px, 3vw, 36px);
  letter-spacing: 0.06em;
  margin: 0 0 8px;
}
.journal-related__lead {
  font-family: var(--f-jp-mincho);
  font-size: clamp(13px, 1.3vw, 15px);
  color: #5a5a52;
  margin: 0;
}
.single-journal--en .journal-related__lead { font-family: var(--f-en-serif); }
.journal-related__cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: clamp(20px, 2.5vw, 32px);
}
.journal-card--related .journal-card__img img {
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

/* JOURNAL-006: MemberRegister CTA (static substitute — links to /membership/) */
.journal-member {
  background: linear-gradient(180deg, #faf9f5 0%, #f3f0e5 100%);
  padding: clamp(48px, 6vw, 88px) clamp(20px, 4vw, 40px);
  margin-bottom: clamp(48px, 6vw, 96px);
}
.journal-member__inner {
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
}
.journal-member__kicker {
  font-family: var(--f-en-serif);
  font-size: clamp(11px, 1.1vw, 13px);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #7a7a70;
  margin: 0;
}
.journal-member__title {
  font-family: var(--f-jp-mincho);
  font-size: clamp(22px, 2.8vw, 34px);
  color: #141413;
  margin: 0;
}
.single-journal--en .journal-member__title { font-family: var(--f-en-serif); font-weight: 500; }
.journal-member__body {
  font-family: var(--f-jp-mincho);
  font-size: clamp(14px, 1.3vw, 16px);
  color: #46463f;
  margin: 4px 0 16px;
  line-height: 1.8;
}
.single-journal--en .journal-member__body { font-family: var(--f-en-serif); }
.journal-member__cta { margin-top: 4px; }

@media (max-width: 700px) {
  .journal-article-hero { aspect-ratio: 4 / 3; }
  .journal-article-body { font-size: 15px; line-height: 1.85; }
  .journal-article-hero__firstview-text { font-size: 40px; }
  .journal-share { padding: 0 20px; }
  .journal-categories { padding: 20px; }
  .journal-related__cards { grid-template-columns: 1fr; }
}
/* ===== END JOURNAL_DETAIL 2026-07 ===== */

/* ============================================================
 * Item 7 (07/04): Mobile ABOUT philosophy image + Privacy/ASCT KV fixes
 * Per user + mockup PDFs (0619_アバウト_mobile.pdf, 0619_プライバシーポリシー_mobile.pdf,
 * 0619_特定商取引_mobile.pdf).
 *
 * 1. ABOUT mobile OUR PHILOSOPHY image (slide-09.jpg — hand pouring tokkuri → ochoko):
 *    Previously object-position: center 30% put subject at extreme LEFT edge of visible frame
 *    (slide-09 is 1600x1067 landscape, subject at src x=300-500; 3:4 crop at center shows src[400,1200]).
 *    Mockup wants subject "少しだけ左" (slightly left of center of visible frame) — shift viewport
 *    toward left of source. object-position: 15% 30% shows src[105,905] so subject sits ~40% from left.
 * 2. Privacy Policy + ASCT mobile KV:
 *    Base .policy-hero is clamp(380px, 42.5vw, 560px) → 380px on 375px viewport, way taller than
 *    mockup (~210-220px). Reduce height and adjust text overlay position per mockup.
 * ============================================================ */

/* Item 7-1: ABOUT mobile philosophy image — subject slightly left of center */
@media (max-width: 900px) {
  body.page-template-page-about .philosophy__photo img,
  body.page-template-page-en-about .philosophy__photo img {
    /* Overrides No.121 rule above (object-position: center 30%) */
    object-position: 15% 30%;
  }
}

/* Item 7-2: Privacy Policy + ASCT mobile KV — reduce height, adjust overlay text position */
@media (max-width: 767px) {
  .policy-hero {
    height: clamp(200px, 58vw, 240px);
    min-height: 200px;
  }
  /* Privacy Policy (--bottom variant): text lifted slightly from bottom edge per mockup */
  .policy-hero__overlay-text--bottom {
    bottom: clamp(14px, 4vw, 24px);
    font-size: clamp(42px, 11.5vw, 56px);
    line-height: 0.9;
    left: clamp(12px, 4vw, 20px);
  }
  /* ASCT (no --bottom, uses --multi): vertical-center 4-line text on left, smaller font on mobile */
  .policy-hero__overlay-text--multi:not(.policy-hero__overlay-text--bottom) {
    font-size: clamp(26px, 7.5vw, 40px);
    left: clamp(12px, 4vw, 20px);
    gap: 2px;
  }
}

/* ============================================================
 * Item 9 (07/04): Unified thumbnail card sizes — narrower across all archive pages
 * User: 「全てのページのサムネイルカードのサイズを統一して横幅をもう少し狭くしてください。」
 *
 * Diag baseline (staging, 1440vw desktop):
 *   - /journal/, /en/journal/, /guide/, /en/guide/ archive cards: 363px each
 *     (via .archive-grid.archive-grid--3col max-width:1200px)
 *   - /guide/ related-journal section (.guide-archive .journal__cards):
 *     same max-width:1200px → same 363px
 *   - Front page /, /en/ .journal-card: already narrower at 304px
 *
 * Target: unified ~320px per card on desktop
 *   3 * 320 + 2 * 32 gap + 2 * 24 padding = 1072px → set max-width: 1080px
 *
 * NOT CHANGE: card aspect ratios / typography / responsive breakpoints (2-col / 1-col mobile)
 * ============================================================ */
/* R82 (2026-09-15) max-width centering removed — .archive-grid--3col now uses the
   same full-width-plus-padding approach as .guide-filterbar (which wraps
   the hashtag bar), so the two always align exactly at any viewport width
   instead of coincidentally matching only at specific widths. */
.guide-archive .journal__cards {
  max-width: 1080px;
}

/* ============================================================
 * Batch 3 Item 9 (07/04): mobile ABOUT — title area + OUR PHILOSOPHY
 * per 0619_アバウト_mobile.pdf mockup.
 *
 * Mockup analysis (mobile 375px):
 *   1. Title area (ABOUT US + Beyond text):
 *      - "ABOUT US" left-aligned starting ~30px from viewport left
 *      - "Beyond / Luxury / Produced by / JTA." left-aligned, MORE indented
 *        (~55px) than ABOUT US
 *   2. OUR PHILOSOPHY:
 *      - Hand image occupies left ~75% of viewport
 *      - "OUR PHILOSOPHY" written VERTICALLY (writing-mode: vertical-rl,
 *        rotated 90°CW) next to image, on the LEFT of the vertical column
 *      - "Beyond Luxury" (italic, smaller) written vertically on RIGHT of
 *        the vertical column (closer to viewport right edge)
 *      - Below (full-width): pillars → weaving image → welcome text
 *
 * Prior state (before this fix):
 *   - Title area: both title and sub at ~56px padding (no differentiation)
 *   - OUR PHILOSOPHY: horizontal title first, pillars, weaving, hand image
 *     last, welcome text — order backwards vs mockup
 *
 * NOT CHANGE:
 *   - Desktop OUR PHILOSOPHY layout (min-width: 901px+)
 *   - Front-page.php philosophy (only .page-template-page-about scope)
 *   - GUIDE/JOURNAL dual-hero title area
 *   - Any of the pillar / statement / commitment sections
 * ============================================================ */

/* --- Item 9 Part 1: Title area alignment per mockup --- */
@media (max-width: 768px) {
  /* Remove caption's uniform left padding; apply per-element */
  body.page-template-page-about .dual-hero .about-hero__caption,
  body.page-template-page-en-about .dual-hero .about-hero__caption {
    padding-left: 0;
  }
  /* ABOUT US: less-indented per mockup (~30px) */
  body.page-template-page-about .about-hero__title,
  body.page-template-page-en-about .about-hero__title {
    padding-left: clamp(24px, 8vw, 36px);
    margin-left: 0;
  }
  /* Beyond / Luxury / Produced by / JTA.: more-indented (~55px) */
  body.page-template-page-about .about-hero__sub,
  body.page-template-page-en-about .about-hero__sub {
    padding-left: clamp(48px, 15vw, 60px);
    margin-left: 0;
  }
}

/* --- Item 9 Part 2: OUR PHILOSOPHY mobile layout per mockup --- */
@media (max-width: 900px) {
  /* Restructure .philosophy as a 4-row grid:
     Row 1: photo (col 1) + vertical title (col 2) + vertical sub (col 3)
     Row 2: pillars (span all 3 cols)
     Row 3: weaving image (span all 3 cols)
     Row 4: welcome text (span all 3 cols) */
  body.page-template-page-about .philosophy,
  body.page-template-page-en-about .philosophy {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto auto auto auto;
    grid-template-areas:
      "photo    vtitle"
      "photo    vsub"
      "pillars  pillars"
      "weaving  weaving"
      "welcome  welcome";
    row-gap: clamp(28px, 5vw, 40px);
    column-gap: clamp(10px, 3vw, 18px);
    padding-left: 0;
    padding-right: clamp(24px, 7vw, 32px);
  }

  /* Flatten wrapper divs (__col--left, __col--right, __content) so their
     children participate directly in the .philosophy grid via grid-area */
  body.page-template-page-about .philosophy__col--left,
  body.page-template-page-en-about .philosophy__col--left,
  body.page-template-page-about .philosophy__col--right,
  body.page-template-page-en-about .philosophy__col--right,
  body.page-template-page-about .philosophy__content,
  body.page-template-page-en-about .philosophy__content {
    display: contents;
  }

  /* Clear the No.52/111 mobile order flip (front-page.css lines 1083-1084) —
     grid-area handles layout on ABOUT page mobile now */
  body.page-template-page-about .philosophy__col--left,
  body.page-template-page-en-about .philosophy__col--left,
  body.page-template-page-about .philosophy__col--right,
  body.page-template-page-en-about .philosophy__col--right {
    order: 0;
  }

  /* Photo: row 1 col 1 — tall portrait matching mockup.
     Mockup pixel measurement (0619_アバウト_mobile.pdf, PyMuPDF render):
       photo bbox 443w × 953h → aspect 0.465 ≈ 1/2.15.
     Source image slide-09.jpg is 1600×1067 landscape (aspect 1.5). The
     hand+vessel+cup composition sits in the LEFT-CENTER of the source
     (roughly source x=100-500 of 1600, i.e. left 30% of image).
     With object-fit:cover in a 1/2.15 portrait container: source scales
     so height fills → scaled 1608×1073 (from 1600×1067) → excess width
     ~1300px cropped horizontally. object-position: 15% horizontal shows
     source x≈100-600, capturing the full pouring composition (hand top,
     tokkuri vessel, sake stream, ochoko cup) matching the mockup crop.
     Prior state (object-position: center 42%) showed source x=533-1066
     — the DARK right background/sleeve area, missing the composition. */
  body.page-template-page-about .philosophy__photo,
  body.page-template-page-en-about .philosophy__photo {
    grid-area: photo;
    align-self: stretch;
  }
  body.page-template-page-about .philosophy__photo img,
  body.page-template-page-en-about .philosophy__photo img {
    aspect-ratio: auto;
    object-fit: cover;
    object-position: 15% 50%;
    width: 100%;
    height: 100%;
    min-height: 100%;
    max-height: none;
    display: block;
  }

  /* OUR PHILOSOPHY vertical title: row 1 col 2 (immediately right of photo).
     Padding-top allows room for the horizontal divider line + gap above it. */
  body.page-template-page-about .philosophy__title,
  body.page-template-page-en-about .philosophy__title {
    grid-area: vtitle;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    font-family: var(--f-en-serif);
    font-weight: 500;
    font-size: clamp(30px, 9.6vw, 40px);
    letter-spacing: 0.04em;
    line-height: 1.1;
    padding: clamp(45px, 12vw, 60px) 0 0 0;
    margin: 0;
    text-align: start;
    align-self: start;
    justify-self: end;
  }

  /* Beyond Luxury vertical sub: row 2 col 2 (stacked below vtitle, same right column).
     Small negative margin-top offsets grid row-gap → net ~10px gap from title bottom. */
  body.page-template-page-about .philosophy__sub,
  body.page-template-page-en-about .philosophy__sub {
    grid-area: vsub;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    font-family: var(--f-en-serif);
    font-style: normal;
    font-size: clamp(16px, 5.33vw, 22px);
    line-height: 1.4;
    padding: 0;
    margin: calc(-1 * clamp(18px, 4vw, 28px)) 0 0 0;
    text-align: start;
    align-self: start;
    justify-self: end;
  }

  /* Show the horizontal decorative HR line at the top of the right column
     (mockup shows a short horizontal divider abutting the top of the vertical
     text column, aligned near the left edge of that column i.e. touching the
     right edge of the photo). */
  body.page-template-page-about .philosophy__content .hr-decorative,
  body.page-template-page-en-about .philosophy__content .hr-decorative {
    display: block;
    grid-column: 2 / -1;
    grid-row: 1;
    align-self: start;
    justify-self: start;
    width: clamp(30px, 9vw, 48px);
    height: 1px;
    background: #141413;
    margin: clamp(28px, 7vw, 40px) 0 0 clamp(6px, 1.5vw, 12px);
    padding: 0;
    border: 0;
    z-index: 1;
    position: relative;
  }

  /* Pillars: row 2, full width */
  body.page-template-page-about .philosophy__pillars,
  body.page-template-page-en-about .philosophy__pillars {
    grid-area: pillars;
    padding-left: clamp(24px, 6vw, 40px);
    padding-right: clamp(24px, 6vw, 40px);
  }

  /* Weaving image: row 3, full width */
  body.page-template-page-about .philosophy__weaving,
  body.page-template-page-en-about .philosophy__weaving {
    grid-area: weaving;
    width: 100%;
    margin-inline: 0;
  }

  /* Welcome text: row 4, full width */
  body.page-template-page-about .philosophy__welcome-block,
  body.page-template-page-en-about .philosophy__welcome-block {
    grid-area: welcome;
    padding-left: clamp(24px, 6vw, 40px);
    padding-right: clamp(24px, 6vw, 40px);
  }
}

.guide-filterbar,
.journal-hashbar {
  scroll-margin-top: 120px;
}

.archive-card__area {
  color: #666;
  letter-spacing: 0.02em;
  font-size: clamp(0.875rem, 6vh, 1.0625rem);
  margin: 8px 0 2px 0;
}
body.is-en .archive-card__area {
  margin: 16px 0 2px 0;
}

