/*
Theme Name: JSSA Theme
Theme URI: https://jssa.jp/
Description: 日本セルフストレージ協会公式サイト用テーマ。モック（mockup/）のデザインを完全再現。
Author: JSSA
Author URI: https://jssa.jp/
Version: 1.0.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: jssa-theme
*/

/* ========================================
   デザイン変数（カラー・フォント）
   - 本文ベース: Yu Gothic Medium・18px、ナビ等は個別指定
   ======================================== */

:root {
  /* モック globals.css の CSS 変数 */
  --font-sans: "Yu Gothic Medium", "Yu Gothic", YuGothic, "游ゴシック体", "Hiragino Kaku Gothic ProN", "Hiragino Sans", Meiryo, sans-serif;
  --font-size-body: 1.125rem; /* 18px（html 16px 想定） */
  --font-size-nav: 1rem;     /* 16px */
  --font-size-fluid-24: clamp(1rem, 0.45rem + 2.8vw, 1.5rem); /* 最大 24px */
  --font-size-fluid-28: clamp(1rem, 0.4rem + 3.6vw, 1.75rem); /* 最大 28px */
  --hero-btn-height: clamp(2.75rem, 2.35rem + 2.2vw, 3.5rem); /* 最大 56px */
  --color-background: hsl(0, 0%, 100%);
  --color-foreground: hsl(220, 20%, 15%);
  --color-primary: hsl(215, 70%, 45%);
  --color-primary-hover: hsl(215, 70%, 40%);
  --color-muted-foreground: hsl(220, 10%, 45%);
  --color-border: hsl(220, 15%, 90%);
  --color-input: hsl(220, 15%, 90%);
  --color-accent: hsl(215, 70%, 45%);      /* モック: accent = primary（青） */
  --color-accent-foreground: hsl(0, 0%, 100%);  /* 白文字 */
  --color-muted: hsl(220, 15%, 96%);       /* セクション背景（bg-muted） */
  --header-height: 4.5rem;               /* ロゴ 40px + ナビ上下 padding */
  --radius: 0.5rem;
  --radius-md: calc(var(--radius) - 2px);
  --radius-sm: calc(var(--radius) - 4px);
}
@media (min-width: 1024px) {
  :root {
    --header-height: 4.5rem;
  }
}

* {
  box-sizing: border-box;
}

html {
  overflow-x: hidden; /* 1024〜1144px で右端に余白が出るのを防ぐ */
}

body {
  margin: 0;
  padding-top: 4.5rem;                     /* 固定ヘッダー分（ロゴ 40px 基準） */
  font-family: var(--font-sans);
  font-size: var(--font-size-body);
  line-height: 1.5;
  color: var(--color-foreground);
  background: var(--color-background);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
@media (min-width: 1024px) {
  body {
    padding-top: 4.5rem;                   /* 固定ヘッダー分（ロゴ 40px 基準） */
  }
}

/* ==================== ヘッダー（モック header.tsx 準拠） ==================== */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 40;
  width: 100%;
  border-bottom: 1px solid var(--color-border);
  background: rgba(255, 255, 255, 0.95);
  backdrop-filter: blur(8px);
}
@supports (backdrop-filter: blur(8px)) {
  .site-header {
    background: rgba(255, 255, 255, 0.6);
  }
}

.site-nav {
  max-width: 80rem; /* max-w-7xl */
  margin: 0 auto;
  padding: 1rem 1rem; /* py-4 px-4 */
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-width: 0; /* 1024〜1144px でのオーバーフロー防止 */
}
@media (min-width: 1024px) {
  .site-nav {
    padding-left: 2rem;  /* lg:px-8 */
    padding-right: 2rem;
    justify-content: space-between;
  }
}

.site-nav__brand {
  flex: 0 1 auto;
  display: flex;
  align-items: center;
}

/* ハンバーガーボタン（1024px未満でのみ表示） */
.site-nav__hamburger {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: -0.625rem;
  padding: 0.625rem;
  border: none;
  background: transparent;
  color: var(--color-foreground);
  cursor: pointer;
  border-radius: 0.375rem;
}
.site-nav__hamburger:hover {
  color: var(--color-primary);
}
@media (min-width: 1024px) {
  .site-nav__hamburger {
    display: none;
  }
}
.site-nav__hamburger-icon {
  display: block;
  width: 1.5rem;
  height: 1.5rem;
}
.site-nav__hamburger-icon svg {
  width: 100%;
  height: 100%;
}

.site-logo {
  display: inline-flex;
  align-items: center;
  margin: -0.375rem; /* -m-1.5 = -6px */
  padding: 0.375rem;  /* p-1.5 = 6px */
  text-decoration: none;
  color: var(--color-foreground);
}
.site-logo__img {
  display: block;
  height: 2.5rem; /* 40px */
  width: auto;
  object-fit: contain;
  flex-shrink: 0;
}

/* メニュー＋ボタン用ラッパー（等間隔の対象、ロゴは含まない） */
.site-nav__nav-group {
  display: none;
  min-width: 0; /* 1024〜1144px でのオーバーフロー防止 */
}
@media (min-width: 1024px) {
  .site-nav__nav-group {
    display: flex;
    align-items: center;
    gap: 1rem;            /* 16px */
    margin-left: 2rem;    /* ロゴとの間隔を少なくとも2rem確保 */
  }
}

.site-nav__menu {
  display: none;
}
@media (min-width: 1024px) {
  .site-nav__menu {
    display: flex;
    align-items: center;
    gap: 1rem;            /* 16px */
    min-width: 0;         /* オーバーフロー防止 */
  }
}
.site-nav__menu a {
  font-size: var(--font-size-nav); /* 16px */
  font-weight: 500;      /* font-medium */
  color: var(--color-foreground);
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s;
}
.site-nav__menu a:hover {
  color: var(--color-primary);
}

.site-nav__buttons {
  display: none;
  align-items: center;
  gap: 1rem;              /* 16px */
}
@media (min-width: 1024px) {
  .site-nav__buttons {
    display: flex;
  }
  .site-nav__buttons .btn-outline,
  .site-nav__buttons .btn-primary {
    font-size: var(--font-size-nav);
  }
}

/* 1024〜1280px: ナビ項目が多いときも読みやすさを優先（16px・16px gap を維持） */
@media (min-width: 1024px) and (max-width: 1280px) {
  .site-nav__nav-group {
    gap: 1rem;
    margin-left: 1.25rem;
  }
  .site-nav__menu {
    gap: 1rem;
  }
  .site-nav__menu a {
    font-size: var(--font-size-nav);
  }
  .site-nav__buttons {
    gap: 1rem;
  }
  .site-nav__buttons .btn-outline,
  .site-nav__buttons .btn-primary {
    font-size: var(--font-size-nav);
    padding: 0 0.625rem;
  }
}

/* ボタン（モック Button size="sm" 準拠: h-9 px-3 rounded-md） */
.btn-outline,
.btn-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 2.25rem;       /* h-9 = 36px */
  padding: 0 0.75rem;    /* px-3 = 12px */
  font-size: 0.875rem;   /* text-sm */
  font-weight: 500;      /* font-medium */
  text-decoration: none;
  border-radius: var(--radius-md);  /* rounded-md = 6px */
  white-space: nowrap;
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}
.btn-outline {
  border: 1px solid var(--color-input);
  background: var(--color-background);
  color: var(--color-foreground);
}
/* ==================== モバイルメニュー（1024px未満、モック header.tsx 準拠） ==================== */
.mobile-menu {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 50;
}
@media (min-width: 1024px) {
  .mobile-menu {
    display: none !important;
  }
}
.mobile-menu.is-open {
  display: block;
}
.mobile-menu__overlay {
  position: fixed;
  inset: 0;
  z-index: 1;
  background: rgba(0, 0, 0, 0.5);
  cursor: pointer;
}
.mobile-menu__panel {
  position: fixed;
  z-index: 2;
  top: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  max-width: 24rem;
  overflow-y: auto;
  background: var(--color-background);
  box-shadow: -4px 0 12px rgba(0, 0, 0, 0.1);
}
@media (min-width: 640px) {
  .mobile-menu__panel {
    border-left: 1px solid var(--color-border);
  }
}
.mobile-menu__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.5rem 0.5rem; /* 上1rem: ヘッダーロゴと水平位置を揃える（site-nav padding と同じ） */
}
/* 管理バー表示時: ヘッダーが下にずれるため、モバイルメニューのロゴも同様に下げる */
.admin-bar .mobile-menu__header {
  padding-top: 4rem; /* 管理バー32px + 1rem ≈ 3rem */
}
.mobile-menu__logo {
  display: inline-block;
  margin: -0.375rem;
  padding: 0.375rem;
  text-decoration: none;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-foreground);
}
.mobile-menu__logo-img {
  display: block;
  height: 2.5rem; /* ヘッダーと同じ 40px */
  width: auto;
  object-fit: contain;
}
.mobile-menu__close {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: -0.625rem;
  padding: 0.625rem;
  border: none;
  background: transparent;
  color: var(--color-foreground);
  cursor: pointer;
  border-radius: 0.375rem;
}
.mobile-menu__close:hover {
  color: var(--color-primary);
}
.mobile-menu__close svg {
  width: 1.5rem;
  height: 1.5rem;
}
.mobile-menu__content {
  padding: 0 1.5rem 1.5rem;
}
.mobile-menu__links {
  padding: 0.5rem 0 1.5rem; /* 上0.5rem→ロゴとの合計1rem（他メニュー同様）、下: 区切り線前の余白 */
  border-bottom: 1px solid var(--color-border);
  display: flex;
  flex-direction: column;
  gap: 0;
}
.mobile-menu__link {
  display: block;
  margin: 0 -0.75rem;
  padding: 0.5rem 0.75rem;
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-foreground);
  text-decoration: none;
  border-radius: 0.5rem;
  transition: background-color 0.15s;
}
.mobile-menu__link:hover {
  background: var(--color-muted);
}
.mobile-menu__buttons {
  padding: 1.5rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.mobile-menu__btn {
  width: 100%;
  justify-content: center;
}

.btn-outline:hover {
  background: var(--color-accent);
  color: var(--color-accent-foreground);
  border-color: var(--color-accent);
}
.btn-primary {
  border: 1px solid var(--color-primary);
  background: var(--color-primary);
  color: white;
}
.btn-primary:hover {
  background: var(--color-primary-hover);
  border-color: var(--color-primary-hover);
}

/* ==================== メインコンテンツ ==================== */
.site-main {
  max-width: 80rem;
  margin: 0 auto;
  padding: 2rem 1rem;
  min-height: 50vh;
}
@media (min-width: 1024px) {
  .site-main {
    padding-left: 2rem;
    padding-right: 2rem;
  }
}
/* フロントページ: セクションがフル幅で表示されるよう制約を解除 */
.front-page .site-main {
  max-width: none;
  padding: 0;
}
/* トップ: ブルーオーシャンを意識したプライマリ */
.front-page {
  --color-primary: hsl(198, 72%, 42%);
  --color-primary-hover: hsl(198, 72%, 35%);
  --color-accent: hsl(198, 72%, 42%);
}
/* カスタム固定ページ: セクションを画面幅いっぱいに表示 */
.page-custom-view .site-main {
  max-width: none;
  padding: 0;
}
.page-about {
  max-width: none;
  padding: 0;
  min-height: auto;
}

/* ==================== JSSAとはページ（page-about.php） ==================== */
.page-about__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .page-about__inner { padding: 0 2rem; }
}

/* Hero */
.page-about__hero {
  background: var(--color-foreground);
  color: var(--color-background);
  padding: 4rem 0;
}
@media (min-width: 1024px) {
  .page-about__hero { padding: 6rem 0; }
}
.page-about__hero-label {
  font-size: 16px;
  font-weight: 500;
  color: var(--color-primary);
  margin: 0 0 0.5rem 0;
}
.page-about__hero-title {
  font-size: 1.875rem; /* 30px */
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  .page-about__hero-title { font-size: 2.25rem; } /* 36px */
}
@media (min-width: 640px) {
  .page-about__hero-title { font-size: 2.5rem; } /* 40px */
}
@media (min-width: 768px) {
  .page-about__hero-title { font-size: 3rem; } /* 48px */
}
@media (min-width: 1024px) {
  .page-about__hero-title { font-size: 3.75rem; } /* 60px */
}
.page-about__hero-lead {
  margin: 1rem 0 0 0;
  font-size: 24px;
  color: hsla(0, 0%, 100%, 0.8);
  max-width: 42rem;
  line-height: 1.6;
}
@media (max-width: 589px) {
  .page-about__hero-br { display: none; }
}

/* Mission */
.page-about__mission {
  padding: 4rem 0;
  background: var(--color-background);
}
@media (min-width: 1024px) {
  .page-about__mission { padding: 6rem 0; }
}
.page-about__mission-inner { max-width: 48rem; }
.page-about__mission .page-about__section-title {
  font-size: 36px;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 0 0 40px 0;
}

/* 協会概要・倫理・関連資料の見出し（活動セクションは下記で別指定） */
.page-about__overview .page-about__section-title,
.page-about__ethics .page-about__section-title,
.page-about__documents .page-about__section-title {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 0 0 2.5rem 0;
}
@media (min-width: 640px) {
  .page-about__overview .page-about__section-title,
  .page-about__ethics .page-about__section-title,
  .page-about__documents .page-about__section-title {
    font-size: 1.875rem;
  }
}
.page-about__mission-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-about__mission-item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 1rem;
  margin-bottom: 1rem;
  border-radius: 0.5rem;
  background: var(--color-muted);
}
.page-about__mission-item:last-child { margin-bottom: 0; }
.page-about__mission-num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: 50%;
  background: var(--color-primary);
  color: white;
  font-size: 0.875rem;
  font-weight: 700;
  flex-shrink: 0;
}
.page-about__mission-item p {
  margin: 0;
  font-weight: 500;
  color: var(--color-foreground);
}

/* Activities */
.page-about__activities {
  padding: 4rem 0;
  background: var(--color-muted);
}
@media (min-width: 1024px) {
  .page-about__activities { padding: 6rem 0; }
}
/* 活動内容: トップ .about-section（JSSAの活動内容）と同タイポ */
.page-about__activities .page-about__section-title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
}
@media (min-width: 640px) {
  .page-about__activities .page-about__section-title { font-size: 2.25rem; }
}
.page-about__activities .page-about__section-lead {
  margin: 1rem 0 2.5rem 0;
  font-size: 1.125rem;
  color: var(--color-muted-foreground);
}
.page-about__activities-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
  .page-about__activities-grid { grid-template-columns: 1fr 1fr; }
}
.page-about__activity-card {
  background: var(--color-background);
  border: 1px solid var(--color-border);
  border-radius: 0.5rem;
  padding: 1.5rem;
  transition: border-color 0.15s;
}
.page-about__activity-card:hover {
  border-color: hsla(215, 70%, 45%, 0.5);
}
.page-about__activity-title {
  margin: 0 0 1rem 0;
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--color-primary);
}
.page-about__activity-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-about__activity-item {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: var(--font-size-body);
  color: var(--color-muted-foreground);
  line-height: 1.6;
  margin-bottom: 0.5rem;
}
.page-about__activity-item:last-child { margin-bottom: 0; }
.page-about__activity-item::before {
  content: "•";
  color: var(--color-primary);
  flex-shrink: 0;
}

/* Overview */
.page-about__overview {
  padding: 4rem 0;
  background: var(--color-background);
}
@media (min-width: 1024px) {
  .page-about__overview { padding: 6rem 0; }
}
.page-about__table-wrap {
  overflow: hidden;
  border-radius: 0.5rem;
  border: 1px solid var(--color-border);
}
.page-about__table {
  width: 100%;
  border-collapse: collapse;
}
.page-about__table th {
  width: 25%;
  padding: 1rem 1.5rem;
  text-align: left;
  font-size: 18px;
  font-weight: 500;
  background: var(--color-muted);
  color: var(--color-foreground);
}
.page-about__table td {
  padding: 1rem 1.5rem;
  font-size: 18px;
  color: var(--color-muted-foreground);
}
.page-about__table td a {
  color: var(--color-primary);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.page-about__table td a:hover {
  color: hsl(215, 70%, 38%);
}
.page-about__table tr {
  border-bottom: 1px solid var(--color-border);
}
.page-about__table tr:last-child {
  border-bottom: none;
}
/* .entry-content の th/td 全周ボーダーがラッパー枠と二重になるのを防ぐ */
.page-about .entry-content .page-about__table {
  margin: 0;
}
.page-about .entry-content .page-about__table th,
.page-about .entry-content .page-about__table td {
  border: none;
  padding: 1rem 1.5rem;
}

/* Ethics */
.page-about__ethics {
  padding: 4rem 0;
  background: var(--color-muted);
}
@media (min-width: 1024px) {
  .page-about__ethics { padding: 6rem 0; }
}
.page-about__ethics-card {
  background: var(--color-background);
  border: 1px solid var(--color-border);
  border-radius: 0.5rem;
  padding: 2rem;
}
.page-about__ethics-intro {
  color: var(--color-muted-foreground);
  margin: 0 0 1.5rem 0;
}
.page-about__ethics-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-about__ethics-item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  margin-bottom: 1rem;
}
.page-about__ethics-item:last-child { margin-bottom: 0; }
.page-about__ethics-mark {
  flex-shrink: 0;
  color: var(--color-primary);
  font-size: 0.875rem;
  line-height: 1.5;
  padding-top: 0.2em;
}
.page-about__ethics-item p {
  margin: 0;
  color: var(--color-foreground);
}

/* Documents */
.page-about__documents {
  padding: 4rem 0;
  background: var(--color-background);
}
@media (min-width: 1024px) {
  .page-about__documents { padding: 6rem 0; }
}
.page-about__documents-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 640px) {
  .page-about__documents-grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1024px) {
  .page-about__documents-grid { grid-template-columns: repeat(3, 1fr); }
}
.page-about__doc-link {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 1rem;
  border: 1px solid var(--color-border);
  border-radius: 0.5rem;
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s;
}
.page-about__doc-link:hover {
  border-color: hsla(215, 70%, 45%, 0.5);
}
.page-about__doc-link:hover .page-about__doc-title {
  color: var(--color-primary);
}
.page-about__doc-icon {
  color: var(--color-primary);
  flex-shrink: 0;
}
.page-about__doc-title {
  margin: 0;
  font-weight: 500;
  color: var(--color-foreground);
  transition: color 0.15s;
}
.page-about__doc-meta {
  margin: 0.25rem 0 0 0;
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
}
.page-about__documents-note {
  margin: 2rem 0 0 0;
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
}
.page-about__documents-note a {
  color: var(--color-primary);
  text-decoration: underline;
}
.page-about__documents-note a:hover {
  color: var(--color-primary-hover);
}

/* CTA */
.page-about__cta {
  padding: 4rem 0;
  background: var(--color-foreground);
  color: var(--color-background);
}
@media (min-width: 1024px) {
  .page-about__cta { padding: 6rem 0; }
}
.page-about__cta-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
.page-about__cta-title {
  font-size: 1.5rem;
  font-weight: 700;
  margin: 0;
}
@media (min-width: 640px) {
  .page-about__cta-title { font-size: 1.875rem; }
}
/* 379px未満で「JSSAへの入会を」の後で改行し中央揃え */
.page-about__cta-title-break {
  display: inline;
}
@media (max-width: 378px) {
  .page-about__cta-title-break { display: block; }
}
/* ブロックはテキスト幅に合わせて中央配置、折り返しテキストはブロック内で左寄せ */
.page-about__cta-lead {
  width: fit-content;
  max-width: 42rem;
  margin: 1rem auto 0;
  font-size: 1.125rem;
  color: hsla(0, 0%, 100%, 0.8);
  line-height: 1.6;
  text-align: left;
}
.page-about__cta-buttons {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  justify-content: center;
  align-items: stretch;
  width: 100%;
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .page-about__cta-buttons {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
  }
  .page-about__cta-buttons .btn-about-primary,
  .page-about__cta-buttons .btn-about-outline {
    min-height: 3rem;
    min-width: 0;
  }
}
.page-about__cta .btn-about-primary,
.page-about__cta .btn-about-outline {
  font-size: 18px;
}
.btn-about-primary,
.btn-about-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  font-weight: 500;
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}
.btn-about-primary {
  background: var(--color-primary);
  color: white;
  border: 1px solid var(--color-primary);
}
.btn-about-primary:hover {
  background: hsl(215, 70%, 40%);
}
.btn-about-outline {
  border: 1px solid hsla(0, 0%, 100%, 0.3);
  background: transparent;
  color: var(--color-background);
}
.btn-about-outline:hover {
  background: hsla(0, 0%, 100%, 0.1);
}
.btn-about-primary span { margin-left: 0.5rem; }

/* ==================== 汎用カスタムページ（Hero / Section / CTA） ==================== */
.page-custom-main {
  max-width: none;
  padding: 0;
  min-height: auto;
}

/* ブロックエディタのレイアウト（is-layout-constrained）が子にコンテンツ幅をかけ、
   page-section / page-cta / HTMLブロック内の全幅セクションが狭く見えるのを防ぐ */
.site-main .entry-content.is-layout-constrained > .wp-block-html,
.site-main .entry-content.is-layout-constrained > .wp-block-freeform,
.site-main .entry-content .is-layout-constrained > .wp-block-html,
.site-main .entry-content .is-layout-constrained > .wp-block-freeform {
  max-width: none;
  width: 100%;
}
.site-main .entry-content.is-layout-constrained > .page-section,
.site-main .entry-content.is-layout-constrained > .page-cta,
.site-main .entry-content.is-layout-constrained > .page-about__mission,
.site-main .entry-content.is-layout-constrained > .page-about__activities,
.site-main .entry-content.is-layout-constrained > .page-about__overview,
.site-main .entry-content.is-layout-constrained > .page-about__ethics,
.site-main .entry-content.is-layout-constrained > .page-about__documents,
.site-main .entry-content.is-layout-constrained > .page-about__cta,
.site-main .entry-content .is-layout-constrained > .page-section,
.site-main .entry-content .is-layout-constrained > .page-cta,
.site-main .entry-content .is-layout-constrained > .page-about__mission,
.site-main .entry-content .is-layout-constrained > .page-about__activities,
.site-main .entry-content .is-layout-constrained > .page-about__overview,
.site-main .entry-content .is-layout-constrained > .page-about__ethics,
.site-main .entry-content .is-layout-constrained > .page-about__documents,
.site-main .entry-content .is-layout-constrained > .page-about__cta {
  max-width: none;
  width: 100%;
}

.page-hero {
  background: var(--color-foreground);
  color: var(--color-background);
  padding: 4rem 0;
}
@media (min-width: 1024px) {
  .page-hero { padding: 6rem 0; }
}
/* KV 付きヒーロー（トップ以外: 枠の高さは hero-kv-crop.js＝__inner 高。画像は常に object-fit: cover） */
.page-hero.hero-kv,
.page-about__hero.hero-kv {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  align-content: start;
  padding: 0;
  overflow: visible;
  background-color: var(--color-foreground);
  background-image: none;
}
.hero-kv__crop {
  grid-row: 1;
  grid-column: 1;
  place-self: start center;
  position: relative;
  width: 100%;
  max-width: 100%;
  overflow: hidden;
  z-index: 0;
  align-self: start;
  /* JS 前の暫定（読み込み完了後に上書き） */
  min-height: 4rem;
}
.hero-kv__crop .hero-kv__img {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center center;
  display: block;
  margin: 0;
  pointer-events: none;
}
.hero-kv__crop .hero-kv__credit {
  position: absolute;
  right: 0.5rem;
  bottom: 0.35rem;
  z-index: 2;
  margin: 0;
  padding: 0.2rem 0.45rem;
  max-width: min(100% - 1rem, 20rem);
  font-size: 0.625rem;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: 0.02em;
  color: rgba(255, 255, 255, 0.95);
  text-align: right;
  pointer-events: none;
  box-sizing: border-box;
  background: rgba(15, 23, 42, 0.55);
  border-radius: 0.25rem;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
}
@media (min-width: 640px) {
  .hero-kv__crop .hero-kv__credit {
    right: 0.75rem;
    bottom: 0.5rem;
    font-size: 0.6875rem;
    padding: 0.25rem 0.5rem;
  }
}
.page-hero.hero-kv::before,
.page-about__hero.hero-kv::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(to right, rgba(30, 41, 59, 0.7) 0%, rgba(30, 41, 59, 0.6) 50%, rgba(30, 41, 59, 0.25) 100%);
}
.page-hero.hero-kv .page-hero__inner,
.page-about__hero.hero-kv .page-about__inner {
  grid-row: 1;
  grid-column: 1;
  align-self: start;
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 80rem;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
  padding: 4rem 1rem;
}
@media (min-width: 1024px) {
  .page-hero.hero-kv .page-hero__inner,
  .page-about__hero.hero-kv .page-about__inner {
    padding: 6rem 2rem;
  }
}
.page-hero.hero-kv .page-hero__label,
.page-hero.hero-kv .page-hero__title,
.page-hero.hero-kv .page-hero__lead,
.page-about__hero.hero-kv .page-about__hero-label,
.page-about__hero.hero-kv .page-about__hero-title,
.page-about__hero.hero-kv .page-about__hero-lead {
  position: relative;
  z-index: 2;
}
.page-hero.hero-kv .page-hero__label,
.page-about__hero.hero-kv .page-about__hero-label {
  color: var(--color-background);
  text-shadow:
    0 0 2px rgba(0, 0, 0, 0.95),
    0 0 4px rgba(0, 0, 0, 0.85),
    0 0 8px rgba(0, 0, 0, 0.6),
    1px 1px 2px rgba(0, 0, 0, 0.6),
    2px 2px 4px rgba(0, 0, 0, 0.4);
}
.page-hero.hero-kv .page-hero__title,
.page-about__hero.hero-kv .page-about__hero-title {
  text-shadow:
    0 0 2px rgba(0, 0, 0, 0.95),
    0 0 4px rgba(0, 0, 0, 0.85),
    0 0 8px rgba(0, 0, 0, 0.7),
    0 0 16px rgba(0, 0, 0, 0.5),
    0 0 24px rgba(0, 0, 0, 0.35),
    -1px -1px 0 rgba(0, 0, 0, 0.7),
    -1px 1px 0 rgba(0, 0, 0, 0.7),
    1px -1px 0 rgba(0, 0, 0, 0.7),
    1px 1px 0 rgba(0, 0, 0, 0.7);
}
.page-hero.hero-kv .page-hero__lead,
.page-about__hero.hero-kv .page-about__hero-lead {
  color: rgba(255, 255, 255, 0.92);
  text-shadow:
    0 0 1px rgba(0, 0, 0, 0.9),
    0 0 3px rgba(0, 0, 0, 0.8),
    0 0 6px rgba(0, 0, 0, 0.6),
    0 0 12px rgba(0, 0, 0, 0.4),
    -1px -1px 0 rgba(0, 0, 0, 0.6),
    -1px 1px 0 rgba(0, 0, 0, 0.6),
    1px -1px 0 rgba(0, 0, 0, 0.6),
    1px 1px 0 rgba(0, 0, 0, 0.6);
}
.page-hero__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .page-hero__inner { padding: 0 2rem; }
}
.page-hero__label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
  margin: 0 0 0.5rem 0;
}
.page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
}
@media (min-width: 640px) {
  .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 1024px) {
  .page-hero__title { font-size: 3rem; }
}
.page-hero__lead {
  margin: 1rem 0 0 0;
  font-size: 1.125rem;
  color: hsla(0, 0%, 100%, 0.8);
  max-width: 42rem;
  line-height: 1.6;
}
/* デスクトップ専用 <br class="u-desktop">（狭い幅では無効。折り返し済み時は JS が u-desktop--suppressed） */
@media (max-width: 1023px) {
  .page-hero__lead br.u-desktop,
  .page-about__hero-lead br.u-desktop {
    display: none;
  }
}
@media (min-width: 1024px) {
  .page-hero__lead br.u-desktop,
  .page-about__hero-lead br.u-desktop {
    display: inline;
  }
}
.page-hero__lead br.u-desktop--suppressed,
.page-about__hero-lead br.u-desktop--suppressed {
  display: none;
}
.page-section {
  padding: 4rem 0;
}
@media (min-width: 1024px) {
  .page-section { padding: 6rem 0; }
}
.page-section__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .page-section__inner { padding: 0 2rem; }
}
.page-section__title {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 0 0 2rem 0;
}
@media (min-width: 640px) {
  .page-section__title { font-size: 1.875rem; }
}
.page-cta {
  padding: 4rem 0;
  background: var(--color-foreground);
  color: var(--color-background);
}
@media (min-width: 1024px) {
  .page-cta { padding: 6rem 0; }
}
.page-cta__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
  text-align: center;
}
@media (min-width: 1024px) {
  .page-cta__inner { padding: 0 2rem; }
}
/* 768px未満: 折り返しが必要なため意図改行を外しリードは左寄せ。タイトルは常に中央 */
@media (max-width: 767px) {
  .page-cta__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  .page-cta__title {
    width: 100%;
    max-width: 48rem;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    box-sizing: border-box;
  }
  .page-cta__lead {
    width: 100%;
    max-width: 48rem;
    margin-left: auto;
    margin-right: auto;
    text-align: left;
    box-sizing: border-box;
  }
  .page-cta .page-cta__lead-break {
    display: none;
  }
}
.page-cta__title {
  font-size: 1.5rem;
  font-weight: 700;
  margin: 0 auto;
  width: fit-content;
  max-width: 48rem;
  text-align: center;
}
@media (min-width: 640px) {
  .page-cta__title { font-size: 1.875rem; }
}
.page-cta__lead {
  margin: 1rem auto 0;
  font-size: 1.125rem;
  color: hsla(0, 0%, 100%, 0.8);
  width: fit-content;
  max-width: 48rem;
  line-height: 1.6;
  text-align: center;
}
@media (min-width: 665px) and (max-width: 768px) {
  .page-what-is-self-storage-main .page-cta__lead {
    text-align: center;
    white-space: normal;
  }
  .page-what-is-self-storage-main .page-cta__lead br {
    display: revert;
  }
}
@media (min-width: 769px) {
  .page-what-is-self-storage-main .page-cta__lead {
    text-align: center;
    white-space: nowrap;
  }
}
.page-cta__buttons {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  justify-content: center;
  align-items: stretch;
  width: 100%;
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .page-cta__buttons {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
  }
  .page-cta__buttons .btn-page-primary,
  .page-cta__buttons .btn-page-outline {
    flex: unset;
    width: auto;
    min-width: 0;
    min-height: 3rem;
  }
}
.btn-page-primary,
.btn-page-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  font-weight: 500;
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
  box-sizing: border-box;
}
.btn-page-primary {
  background: var(--color-primary);
  color: white;
  border: 1px solid var(--color-primary);
}
.btn-page-primary:hover {
  background: hsl(215, 70%, 40%);
}
.btn-page-outline {
  border: 1px solid hsla(0, 0%, 100%, 0.3);
  background: transparent;
  color: var(--color-background);
}
.btn-page-outline:hover {
  background: hsla(0, 0%, 100%, 0.1);
}
.btn-page-outline-light {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  font-weight: 500;
  text-decoration: none;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  background: transparent;
  color: var(--color-foreground);
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}
.btn-page-outline-light:hover {
  background: var(--color-primary);
  color: white;
  border-color: var(--color-primary);
}
.btn-page-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  font-weight: 500;
  text-decoration: none;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  background: hsla(220, 10%, 45%, 0.1);
  color: var(--color-foreground);
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}
.btn-page-secondary:hover {
  background: hsla(220, 10%, 45%, 0.2);
}
.btn-page-primary span,
.btn-page-secondary .page-events-detail__btn-icon,
.btn-page-outline-light .page-events-detail__btn-icon { margin-left: 0.5rem; }

/* イベント詳細ページ（モック app/events/[id]/page.tsx 準拠） */
.page-events-detail__hero {
  background-color: var(--color-foreground);
  color: var(--color-background);
  padding: 4rem 0;
}
.page-events-detail__hero.hero-kv {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  align-content: start;
  padding: 0;
  overflow: visible;
  background-color: var(--color-foreground);
  background-image: none;
}
.page-events-detail__hero.hero-kv::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(to right, rgba(30, 41, 59, 0.7) 0%, rgba(30, 41, 59, 0.6) 50%, rgba(30, 41, 59, 0.25) 100%);
}
.page-events-detail__hero.hero-kv .page-events-detail__hero-inner {
  grid-row: 1;
  grid-column: 1;
  align-self: start;
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 80rem;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
  padding: 4rem 1rem;
}
@media (min-width: 1024px) {
  .page-events-detail__hero.hero-kv .page-events-detail__hero-inner {
    padding: 6rem 2rem;
  }
}
.page-events-detail__hero.hero-kv .page-events-detail__back,
.page-events-detail__hero.hero-kv .page-events-detail__meta,
.page-events-detail__hero.hero-kv .page-events-detail__title,
.page-events-detail__hero.hero-kv .page-events-detail__hero-excerpt {
  position: relative;
  z-index: 2;
}
.page-events-detail__hero.hero-kv .page-events-detail__back,
.page-events-detail__hero.hero-kv .page-events-detail__date {
  text-shadow: 0 0 2px rgba(0, 0, 0, 0.8), 0 0 4px rgba(0, 0, 0, 0.6), 1px 1px 2px rgba(0, 0, 0, 0.5);
}
.page-events-detail__hero.hero-kv .page-events-detail__title {
  text-shadow: 0 0 2px rgba(0, 0, 0, 0.95), 0 0 4px rgba(0, 0, 0, 0.85), 0 0 8px rgba(0, 0, 0, 0.7), 0 0 16px rgba(0, 0, 0, 0.5), 1px 1px 2px rgba(0, 0, 0, 0.6);
}
@media (min-width: 1024px) {
  .page-events-detail__hero { padding: 6rem 0; }
}
.page-events-detail__hero-inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .page-events-detail__hero-inner { padding: 0 2rem; }
}
.page-events-detail__back {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  color: hsla(0, 0%, 100%, 0.7);
  text-decoration: none;
  margin-bottom: 1.5rem;
  transition: color 0.15s;
}
.page-events-detail__back:hover {
  color: var(--color-background);
}
.page-events-detail__back-icon {
  display: inline-flex;
}
.page-events-detail__meta {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.page-events-detail__date-icon {
  display: inline-flex;
  color: var(--color-primary);
}
.page-events-detail__date {
  font-size: 1rem;
  color: hsla(0, 0%, 100%, 0.8);
}
.page-events-detail__badge {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.75rem;
  font-size: 0.875rem;
  font-weight: 500;
  border-radius: 9999px;
}
.page-events-detail__badge--accepting {
  background: var(--color-primary);
  color: var(--color-primary-foreground, white);
}
.page-events-detail__title {
  font-size: 1.875rem;
  font-weight: 700;
  margin: 0;
  line-height: 1.2;
}
@media (min-width: 640px) {
  .page-events-detail__title { font-size: 2.25rem; }
}
@media (min-width: 1024px) {
  .page-events-detail__title { font-size: 3rem; }
}
.page-events-detail__hero-excerpt {
  margin-top: 1rem;
  max-width: none;
  width: 100%;
  box-sizing: border-box;
  font-size: 1rem;
  line-height: 1.65;
  color: hsla(0, 0%, 100%, 0.88);
  text-shadow: 0 0 2px rgba(0, 0, 0, 0.85), 0 0 6px rgba(0, 0, 0, 0.45);
}
.page-events-detail__hero-excerpt p {
  margin: 0 0 0.5rem 0;
}
.page-events-detail__hero-excerpt p:last-child {
  margin-bottom: 0;
}
.page-member-news-detail .page-events-detail__hero-excerpt {
  word-break: keep-all;
  overflow-wrap: break-word;
}
@media (min-width: 1024px) {
  .page-member-news-detail .page-events-detail__content-inner {
    grid-template-columns: 1fr;
  }
}
.page-member-news-detail .page-member-news-detail__pdf {
  margin-top: 1.5rem;
}
/* 会員向けお知らせ: お知らせ内容（プレーンテキスト）の改行をテキストエリアと同数に反映 */
.jssa-member-news-notice-plain {
  white-space: pre-line;
  max-width: 100%;
  word-break: break-word;
  overflow-wrap: break-word;
}
.page-member-news-detail__notice-images {
  width: 100%;
  margin-top: 1.5rem;
}
.page-member-news-detail__notice-figure {
  margin: 1.25rem 0;
  display: block;
}
.page-member-news-detail__notice-figure--left {
  margin-left: 0;
  margin-right: auto;
}
.page-member-news-detail__notice-figure--center {
  margin-left: auto;
  margin-right: auto;
}
.page-member-news-detail__notice-figure--right {
  margin-left: auto;
  margin-right: 0;
}
.page-member-news-detail__notice-figure--wide {
  margin-left: 0;
  margin-right: 0;
  width: 100%;
  max-width: 100% !important;
}
.page-member-news-detail__notice-img-wrap {
  position: relative;
  display: block;
  line-height: 0;
}
.page-member-news-detail__notice-img-wrap .page-member-news-detail__notice-img-el {
  line-height: normal;
}
.page-member-news-detail__notice-img-link {
  position: absolute;
  right: 0.5rem;
  bottom: 0.5rem;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.35rem 0.6rem;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.2;
  color: var(--color-background, #fff);
  background: rgba(30, 41, 59, 0.82);
  border-radius: 4px;
  text-decoration: none;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
  max-width: calc(100% - 1rem);
}
.page-member-news-detail__notice-img-link:hover {
  color: var(--color-background, #fff);
  background: rgba(30, 41, 59, 0.92);
  text-decoration: none;
}
.page-member-news-detail__notice-img-link-icon {
  display: inline-flex;
  flex-shrink: 0;
  opacity: 0.95;
}
.page-member-news-detail__notice-img-link-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.page-member-news-detail__notice-img-el {
  width: 100%;
  height: auto;
  display: block;
}
.page-member-news-detail__material--attach-thumb {
  margin: 1.25rem 0 0;
  max-width: 100%;
}
.page-member-news-detail__material-thumb-link {
  display: block;
  text-decoration: none;
  border-radius: var(--radius-md);
  overflow: hidden;
  border: 1px solid var(--color-border);
  background: var(--color-muted);
}
.page-member-news-detail__material-thumb-link:hover {
  opacity: 0.92;
}
.page-member-news-detail__material-thumb-crop {
  display: block;
  max-height: 14rem;
  overflow: hidden;
  line-height: 0;
}
.page-member-news-detail__material-thumb-img {
  width: 100%;
  height: 14rem;
  object-fit: cover;
  object-position: top center;
  display: block;
}
.page-member-news-detail__material--attach-btn {
  margin-top: 1.25rem;
}
.page-member-news-detail__material-pdf-object-wrap {
  width: 100%;
  min-height: 12rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-muted);
}
.page-member-news-detail__material-pdf-object {
  display: block;
  min-height: 360px;
}
.page-member-news-detail__related-links {
  margin-top: 1.5rem;
  width: 100%;
}
.page-member-news-detail__related-links-title {
  margin: 0 0 0.75rem 0;
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--color-text, #1e293b);
}
.page-member-news-detail__related-links-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
  align-items: flex-start;
}
.page-member-news-detail__related-link-item {
  margin: 0;
}
.page-member-news-detail__related-link-anchor {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  max-width: 100%;
  min-width: 0;
  text-align: left;
}
.page-member-news-detail__related-link-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: min(100%, 42rem);
  min-width: 0;
}
.page-member-news-detail__related-link-icon {
  display: inline-flex;
  flex-shrink: 0;
  opacity: 0.9;
}
.page-events-detail__content {
  padding: 4rem 0;
  background: var(--color-background);
}
@media (min-width: 1024px) {
  .page-events-detail__content { padding: 6rem 0; }
}
.page-events-detail__content-inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .page-events-detail__content-inner {
    padding: 0 2rem;
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 3rem;
  }
}
.page-events-detail__main {
  min-width: 0;
  width: 100%;
  max-width: 100%;
}
.page-events-detail__section-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 0 0 1rem 0;
}
/* イベント概要の見出し下マージン（1rem）で間隔確保済みのため、本文上側の余白なし */
.page-events-detail__description {
  font-size: 1.125rem;
  line-height: 1.6;
  color: var(--color-muted-foreground);
  white-space: pre-line;
  display: inline-block;
  width: fit-content;
  max-width: 100%;
  margin: 0;
  padding: 0;
}
.page-events-detail__description.entry-content {
  display: block;
  width: 100%;
  max-width: 100%;
  white-space: normal;
}
.page-events-detail__description.entry-content p {
  margin: 0 0 1rem 0;
}
.page-events-detail__description.entry-content p:last-child {
  margin-bottom: 0;
}
.page-events-detail__description.entry-content img {
  max-width: 100%;
  height: auto;
}
.page-events-detail__description.entry-content a {
  color: var(--color-primary);
  text-decoration: underline;
}
.page-events-detail__description.entry-content ul,
.page-events-detail__description.entry-content ol {
  margin: 0 0 1rem 1.25rem;
  padding: 0;
}
.page-events-detail__description.entry-content h3.page-events-detail__section-title {
  font-size: 1.125rem;
  font-weight: 700;
  margin: 1.5rem 0 0.75rem 0;
}
.page-events-detail__description.entry-content h3.page-events-detail__section-title:first-of-type {
  margin-top: 0;
}
.page-events-detail__description.entry-content .page-events-detail__anniversary-ol {
  list-style-position: outside;
  padding-left: 1.5rem;
}
.page-events-detail__description.entry-content .page-events-detail__anniversary-note {
  display: inline-block;
  margin-top: 0.25rem;
}
.page-events-detail__description.entry-content .page-events-detail__cert-figure {
  margin: 1rem 0 0;
  padding: 0;
  max-width: 100%;
}
.page-events-detail__description.entry-content .page-events-detail__cert-figure figcaption {
  font-size: 0.9375rem;
  margin-top: 0.5rem;
  color: var(--color-muted-foreground);
}
.page-events-detail__flyer {
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 1px solid var(--color-border);
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.page-events-detail__flyer-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 0 0 1rem 0;
}
.page-events-detail__flyer-figure {
  margin: 0;
  padding: 0;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  border: 1px solid var(--color-border);
  background: var(--color-muted);
}
.page-events-detail__flyer-img-link {
  display: block;
  outline-offset: 4px;
}
.page-events-detail__flyer-img-link:focus-visible {
  outline: 2px solid var(--color-primary);
}
.page-events-detail__flyer-img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  vertical-align: middle;
  object-fit: contain;
  box-sizing: border-box;
}
.page-events-detail__flyer-img-link:hover .page-events-detail__flyer-img {
  opacity: 0.92;
}
.page-events-detail__flyer-hint {
  margin: 0.75rem 0 0 0;
  font-size: 0.8125rem;
  color: var(--color-muted-foreground);
  line-height: 1.5;
}
.page-events-detail__flyer-pdf-fallback {
  margin: 0;
  font-size: 1rem;
}
.page-events-detail__flyer-link {
  color: var(--color-primary);
  font-weight: 500;
  text-decoration: underline;
}
.page-events-detail__flyer-link:hover {
  color: var(--color-primary-hover);
}
.page-events-detail__flyer-link--primary {
  font-size: 1.0625rem;
  font-weight: 600;
}
.page-events-detail__flyer-note {
  margin: 1rem 0 0 0;
  padding: 0.75rem 1rem;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: var(--color-muted-foreground);
  background: var(--color-muted);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}
.page-events-detail__sidebar {
  margin-top: 2rem;
}
@media (min-width: 1024px) {
  .page-events-detail__sidebar {
    margin-top: 0;
    position: sticky;
    top: 6rem;
  }
}
.page-events-detail__detail-card {
  background: var(--color-muted);
  border-radius: 0.75rem;
  border: 1px solid var(--color-border);
  padding: 1.5rem;
}
.page-events-detail__detail-title {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--color-foreground);
  margin: 0 0 1.5rem 0;
}
.page-events-detail__dl {
  margin: 0;
}
.page-events-detail__dl-row {
  margin-bottom: 1rem;
}
.page-events-detail__dl-row:last-of-type {
  margin-bottom: 0;
}
.page-events-detail__dt {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-muted-foreground);
  margin: 0 0 0.25rem 0;
}
.page-events-detail__dd {
  font-size: 1rem;
  color: var(--color-foreground);
  margin: 0;
}
.page-events-detail__buttons {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.page-events-detail__buttons-divider {
  border-top: 1px solid var(--color-border);
  padding-top: 0.75rem;
  margin-top: 0.25rem;
}
.page-events-detail__btn {
  width: 100%;
  justify-content: center;
}
.page-events-detail__btn .page-events-detail__btn-icon {
  margin-left: 0.5rem;
}

/* benefits カードグリッド（モック app/benefits/page.tsx 準拠） */
.page-benefits__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem; /* gap-8 */
}
@media (min-width: 768px) {
  .page-benefits__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (min-width: 1024px) {
  .page-benefits__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.page-benefits__card {
  background: var(--color-muted);
  border-radius: 0.75rem; /* rounded-xl */
  padding: 2rem; /* p-8 */
  border: 1px solid var(--color-border);
  transition: border-color 0.15s;
  text-align: left;
}
.page-benefits__card:hover {
  border-color: hsla(215, 70%, 45%, 0.3);
}
.page-benefits__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem; /* h-14 w-14 */
  height: 3.5rem;
  border-radius: 50%;
  background: hsla(215, 70%, 45%, 0.1); /* bg-primary/10 */
  color: var(--color-primary);
  margin-bottom: 1.5rem; /* mb-6 */
  flex-shrink: 0;
}
.page-benefits__icon svg {
  display: block;
  width: 1.75rem; /* h-7 w-7 */
  height: 1.75rem;
}
.page-benefits__card-title {
  font-size: 24px;
  font-weight: 600; /* font-semibold */
  color: var(--color-foreground);
  margin: 0 0 0.75rem 0; /* mb-3 */
}
.page-benefits__card-desc {
  font-size: 18px;
  color: var(--color-muted-foreground);
  line-height: 1.625; /* leading-relaxed */
  margin: 0;
}

/* benefits 会員資格セクション（モック Additional Info） */
.page-benefits__qualification-inner {
  max-width: 48rem;
  margin: 0 auto;
  text-align: center;
}
.page-benefits__qualification-title {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 0 0 1.5rem 0;
}
@media (min-width: 640px) {
  .page-benefits__qualification-title { font-size: 1.875rem; }
}
.page-benefits__qualification-text {
  color: var(--color-muted-foreground);
  line-height: 1.625;
  margin: 0 0 2rem 0;
  text-align: left;
}
.page-benefits__qualification-buttons {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  justify-content: center;
  align-items: stretch;
  width: 100%;
  max-width: 48rem;
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .page-benefits__qualification-buttons {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: stretch;
  }
  .page-benefits__qualification-buttons .btn-page-primary,
  .page-benefits__qualification-buttons .btn-page-outline-light {
    min-height: 3rem;
    min-width: 0;
  }
}

/* events カード・お知らせ */
.page-events__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}
@media (min-width: 768px) {
  .page-events__grid { grid-template-columns: 1fr 1fr; }
}
.page-events__card {
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  background: var(--color-muted);
  border-radius: 0.75rem;
  border: 1px solid var(--color-border);
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s;
}
.page-events__card:hover {
  border-color: hsla(215, 70%, 45%, 0.5);
}
.page-events__card-body {
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}
.page-events__card-media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--color-border);
}
.page-events__card-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.page-events__meta {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  flex-wrap: wrap;
}
.page-events__date-icon {
  display: inline-flex;
  color: var(--color-primary);
  flex-shrink: 0;
}
.page-events__date {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-muted-foreground);
}
.page-events__badge {
  display: inline-flex;
  padding: 0.125rem 0.5rem;
  font-size: 0.75rem;
  font-weight: 500;
  border-radius: 9999px;
}
.page-events__badge--accepting {
  background: var(--color-primary);
  color: white;
}
.page-events__badge--ended {
  background: hsla(220, 10%, 45%, 0.2);
  color: var(--color-muted-foreground);
}
.page-events__card-title {
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
}
.page-events__card:hover .page-events__card-title {
  color: var(--color-primary);
}
.page-events__card-desc {
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
  margin: 0 0 1rem 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.page-events__link-wrap {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: auto;
  padding-top: 1rem;
}
.page-events__link-wrap svg {
  flex-shrink: 0;
}
.page-events__link {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
}
.page-events__news-list {
  background: var(--color-background);
  border: 1px solid var(--color-border);
  border-radius: 0.5rem;
  overflow: hidden;
}
.page-events__news-item {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 1rem;
  border-bottom: 1px solid var(--color-border);
}
@media (min-width: 640px) {
  .page-events__news-item {
    flex-direction: row;
    align-items: center;
    gap: 1.5rem;
    padding: 1.25rem;
  }
}
.page-events__news-item:last-child {
  border-bottom: none;
}
.page-events__news-date {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-muted-foreground);
  min-width: 90px;
}
.page-events__news-item--link {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 1rem;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
  color: var(--color-primary, #2563eb);
  transition: background-color 0.15s, color 0.15s;
  box-sizing: border-box;
}
.page-events__news-item--link .page-events__news-date {
  color: var(--color-primary, #2563eb);
}
.page-events__news-item--link .page-events__news-title {
  color: var(--color-primary, #2563eb);
}
@media (min-width: 640px) {
  .page-events__news-item--link {
    flex-direction: row;
    align-items: center;
    gap: 1.5rem;
    padding: 1.25rem;
  }
}
.page-events__news-item--link:last-child {
  border-bottom: none;
}
.page-events__news-item--link:hover {
  background: var(--color-muted);
}
.page-events__news-item--link:hover .page-events__news-title,
.page-events__news-item--link:hover .page-events__news-date {
  color: var(--color-primary-hover, #1d4ed8);
}
.page-events__news-item--static {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 1rem;
  border-bottom: 1px solid var(--color-border);
  cursor: default;
  user-select: text;
  box-sizing: border-box;
}
@media (min-width: 640px) {
  .page-events__news-item--static {
    flex-direction: row;
    align-items: center;
    gap: 1.5rem;
    padding: 1.25rem;
  }
}
.page-events__news-item--static:last-child {
  border-bottom: none;
}
.page-events__news-title {
  flex: 1;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--color-foreground);
}
.page-events__news-empty {
  margin: 0;
  padding: 1.25rem 0.5rem;
  color: var(--color-muted-foreground);
  font-size: 0.9375rem;
}
.page-events-news-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0 0 1.25rem 0;
  padding: 0;
  border-bottom: 1px solid var(--color-border);
  padding-bottom: 0.75rem;
}
.page-events-news-tab {
  margin: 0;
  padding: 0.5rem 0.875rem;
  font-size: 0.875rem;
  font-weight: 500;
  font-family: inherit;
  color: var(--color-muted-foreground);
  background: var(--color-background);
  border: 1px solid var(--color-border);
  border-radius: 0.375rem;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s, background 0.15s;
}
.page-events-news-tab:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
}
.page-events-news-tab.is-active {
  color: #fff;
  background: var(--color-primary);
  border-color: var(--color-primary);
}
.page-events-news-tab:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
.page-events-news-panels {
  margin-top: 0.25rem;
}
.page-events-news-panel[hidden] {
  display: none !important;
}
.page-events-news-panel.is-active:not([hidden]) {
  display: block;
}

/* future: 成長する市場・JSSAの役割は page-section__inner（max-width: 80rem）幅いっぱい */
.page-future__section-inner {
  width: 100%;
  box-sizing: border-box;
}

/* 将来展望ページ: セクション見出し h2（成長する市場・業界のトレンド・JSSAの役割）36px */
body.page-future-view .entry-content h2.page-section__title {
  font-size: 36px;
}

/* future 成長する市場（米国比較グラフ・本文） */
.page-future__market-subtitle {
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--color-foreground);
  margin: 0 0 1rem 0;
  line-height: 1.4;
}
.page-section__title + .page-future__market-subtitle {
  margin-top: 0.5rem;
}
.page-future__market-figure {
  margin: 0 0 1.25rem 0;
  padding: 0;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.page-future__market-graph-wrap {
  position: relative;
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
.page-future__market-graph {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
}
.page-future__market-graph-credit {
  position: absolute;
  right: 0.5rem;
  bottom: 0.5rem;
  max-width: min(92%, 28rem);
  padding: 0.25rem 0.5rem;
  font-size: 0.6875rem;
  line-height: 1.4;
  color: var(--color-muted-foreground);
  text-align: right;
  background: hsla(0, 0%, 100%, 0.92);
  border-radius: 0.25rem;
  box-shadow: 0 1px 2px hsla(220, 10%, 20%, 0.12);
  box-sizing: border-box;
}
.page-future__market-body .page-future__market-text:last-child {
  margin-bottom: 0;
}
.page-future__market-body .page-future__market-text + .page-future__market-text {
  margin-top: 0.875rem;
}

/* future 成長する市場・JSSAの役割 本文（行間を詰める） */
.page-future__market-text,
.page-future__role-text {
  color: var(--color-muted-foreground);
  line-height: 1.5;
  margin: 0;
}

/* future 業界のトレンド（2行2列・768px未満で1列・カード単位で分離表示） */
.page-future__trends-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
  .page-future__trends-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
.page-future__trends-card {
  background: var(--color-background);
  border-radius: 0.75rem;
  padding: 2rem;
  border: 1px solid var(--color-border);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.page-future__trends-card:hover {
  border-color: hsla(215, 70%, 45%, 0.3);
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.07);
}
.page-future__trends-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background: hsla(215, 70%, 45%, 0.1);
  color: var(--color-primary);
  margin-bottom: 1.5rem;
  flex-shrink: 0;
}
.page-future__trends-icon svg {
  display: block;
  width: 1.75rem;
  height: 1.75rem;
}
.page-future__trends-title {
  font-size: 24px;
  font-weight: 600;
  color: var(--color-foreground);
  margin: 0 0 0.75rem 0;
}
.page-future__trends-desc {
  font-size: 18px;
  color: var(--color-muted-foreground);
  line-height: 1.625;
  margin: 0;
}

/* future / ssa トレンド・パートナーカード */
.page-trends__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
  .page-trends__grid { grid-template-columns: 1fr 1fr; }
}
.page-trends__card {
  background: var(--color-background);
  border-radius: 0.75rem;
  padding: 2rem;
  border: 1px solid var(--color-border);
}
.page-trends__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background: hsla(215, 70%, 45%, 0.1);
  color: var(--color-primary);
  margin-bottom: 1.5rem;
}
.page-trends__card-title {
  font-size: 1.25rem;
  font-weight: 600;
  margin: 0 0 0.75rem 0;
}
.page-trends__card-desc {
  color: var(--color-muted-foreground);
  line-height: 1.6;
  margin: 0;
}
.page-partners__card {
  background: var(--color-background);
  border-radius: 0.75rem;
  padding: 1.5rem;
  border: 1px solid var(--color-border);
}
.page-partners__country {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
}
.page-partners__country svg {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.page-partners__name {
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
}
.page-partners__desc {
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
  margin: 0;
}
.page-benefits-list__item {
  display: flex;
  gap: 1rem;
}
.page-benefits-list__icon {
  flex-shrink: 0;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background: hsla(215, 70%, 45%, 0.1);
  color: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
}
.page-benefits-list__icon svg {
  display: block;
  width: 1.5rem;
  height: 1.5rem;
  flex-shrink: 0;
}
.page-benefits-list__title {
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
}
.page-benefits-list__desc {
  color: var(--color-muted-foreground);
  margin: 0;
}

/* ssa SSAとの国際提携（mockup 準拠） — リード改行は br.u-desktop + hero-lead-breaks.js で制御 */
.page-ssa__about-inner {
  width: 100%;
  max-width: none;
  text-align: left;
}
.entry-content .page-ssa__about h2.page-section__title {
  font-size: clamp(1.5rem, 2.8vw + 0.5rem, 1.875rem);
  margin-bottom: 1.5rem;
}
.page-ssa__about-text {
  color: var(--color-muted-foreground);
  line-height: 1.625;
  margin: 0;
  text-align: left;
  font-size: clamp(0.9375rem, 0.35vw + 0.9rem, 1.0625rem);
}
.page-ssa__cooperation-stack {
  margin-top: 2.5rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--color-border);
}
.page-ssa__cooperation-block--second {
  margin-top: 2.5rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--color-border);
}
.page-ssa__cooperation-subtitle {
  font-size: clamp(1rem, 0.5vw + 0.95rem, 1.125rem);
  font-weight: 600;
  line-height: 1.4;
  color: var(--color-foreground);
  margin: 0 0 1rem 0;
}
.entry-content .page-ssa__cooperation-subtitle {
  margin-top: 0;
  margin-bottom: 1rem;
}
.page-ssa__cooperation-block--second .page-ssa__cooperation-subtitle {
  margin-top: 0;
}
.page-ssa__cooperation-figure {
  margin: 0;
  width: 100%;
}
.page-ssa__cooperation-figure-img {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  border-radius: 0.5rem;
  border: 1px solid var(--color-border);
  box-sizing: border-box;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
.page-ssa__partners .page-section__inner {
  text-align: left;
}
.page-ssa__partners .page-section__title,
.page-ssa__benefits .page-section__title {
  margin-bottom: 2.5rem;
}
.page-ssa__partners-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}
@media (min-width: 768px) {
  .page-ssa__partners-grid {
    grid-template-columns: 1fr 1fr;
  }
}
.page-ssa__partners-grid .page-partners__card {
  text-align: left;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
.page-ssa__partners-grid .page-partners__desc {
  line-height: 1.6;
  text-align: left;
}
.page-ssa__benefits-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
  .page-ssa__benefits-grid {
    grid-template-columns: 1fr 1fr;
  }
}

/*
 * SSAページ（body.page-ssa-view）: ヒーローは上記セレクタ。
 * 国際提携について・提携団体・国際提携のメリットの h2 は 36px、本文・提携カード・CTA ボタンは方針どおり固定 px。
 */
body.page-ssa-view .entry-content .page-ssa__about h2.page-section__title,
body.page-ssa-view .entry-content .page-ssa__partners h2.page-section__title,
body.page-ssa-view .entry-content .page-ssa__benefits h2.page-section__title {
  font-size: 36px;
}
body.page-ssa-view .page-ssa__about-text {
  font-size: 18px;
}
body.page-ssa-view .page-ssa__cooperation-subtitle,
body.page-ssa-view .entry-content .page-ssa__cooperation-subtitle {
  font-size: 24px;
}
body.page-ssa-view .page-partners__name,
body.page-ssa-view .entry-content h3.page-partners__name {
  font-size: 24px;
}
body.page-ssa-view .page-partners__desc,
body.page-ssa-view .entry-content .page-partners__desc {
  font-size: 18px;
}
body.page-ssa-view .entry-content .page-cta a.btn-page-primary,
body.page-ssa-view .entry-content .page-cta a.btn-page-outline {
  font-size: 18px;
}

/* members 会員グリッド */
.page-members__header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 2rem;
}
.page-members__header svg {
  color: var(--color-primary);
}
.page-members__title {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 0;
}
@media (min-width: 640px) {
  .page-members__title { font-size: 1.875rem; }
}
.page-members__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 640px) {
  .page-members__grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1024px) {
  .page-members__grid { grid-template-columns: repeat(3, 1fr); }
}
.page-members-main .page-members__section + .page-members__section--sponsors {
  padding-top: 3rem;
}
.page-members__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
  border-radius: 0.5rem;
  border: 1px solid var(--color-border);
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s, background-color 0.15s;
}
.page-members__link:hover {
  border-color: hsla(215, 70%, 45%, 0.5);
  background: var(--color-muted);
}
.page-members__link:hover .page-members__link-text {
  color: var(--color-primary);
}
.page-members__link-icon {
  flex-shrink: 0;
  color: var(--color-muted-foreground);
}
.page-members__link:hover .page-members__link-icon {
  color: var(--color-primary);
}

/* what-is-self-storage features */
/* 概要本文はセクション内（.page-section__inner）の表示幅いっぱい */
.page-features__overview {
  max-width: none;
  width: 100%;
}
.page-features__overview .page-section__title { margin-bottom: 1.5rem; }
.page-features__overview .page-content__body {
  color: var(--color-muted-foreground);
  line-height: 1.75;
}
.page-features__overview .page-content__body p { margin: 0 0 1rem 0; }
.page-features__overview .page-content__body p:last-child { margin-bottom: 0; }
.page-features__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
  .page-features__grid { grid-template-columns: 1fr 1fr; }
}
.page-features .page-section__title {
  margin-bottom: 2.5rem;
}
.page-features__card {
  background: var(--color-background);
  border-radius: 0.75rem;
  padding: 2rem;
  border: 1px solid var(--color-border);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  text-align: left;
}
.page-features__icon-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  border-radius: 50%;
  background: hsla(215, 70%, 45%, 0.1);
  color: var(--color-primary);
  margin-bottom: 1.5rem;
}
.page-features__icon-wrap svg { display: block; }
.page-features__card-title {
  font-size: 1.25rem;
  font-weight: 600;
  margin: 0 0 0.75rem 0;
  color: var(--color-foreground);
}
.page-features__card-desc {
  color: var(--color-muted-foreground);
  margin: 0;
  line-height: 1.625;
}
.page-usage__wrap .page-section__title { margin-bottom: 1.5rem; }
.page-usage__list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-usage__item {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.page-usage__item:last-child { margin-bottom: 0; }
.page-usage__num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: var(--color-primary);
  color: white;
  font-size: 0.875rem;
  font-weight: 600;
  flex-shrink: 0;
}

/* join 会費表（legacy appli.html 準拠） */
.page-join__fee-table-wrap {
  overflow: hidden;
  border-radius: 0.5rem;
  border: 1px solid var(--color-border);
  max-width: 48rem;
}
.page-join__fee-table {
  width: 100%;
  border-collapse: collapse;
}
.page-join__fee-table th {
  padding: 1rem 1.25rem;
  text-align: center;
  font-size: 0.875rem;
  font-weight: 600;
  background: var(--color-muted);
  color: var(--color-foreground);
  vertical-align: middle;
  width: 28%;
  border: none;
}
.page-join__fee-table td {
  padding: 1rem 1.25rem;
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
  border: none;
}
.page-join__fee-table tr {
  border-bottom: 1px solid var(--color-border);
}
.page-join__fee-table tbody tr:last-child {
  border-bottom: none;
}
.page-join__fee-table .page-join__fee-amount {
  font-weight: 600;
  color: var(--color-foreground);
  text-align: right;
  white-space: nowrap;
  width: 1%;
}
/* 年会費ブロック: 条件と金額の間に縦線（入会金行は対象外） */
.page-join__fee-table tbody tr:nth-child(n + 2) td.page-join__fee-amount {
  border-left: 1px solid var(--color-border);
}
@media (max-width: 639px) {
  .page-join__fee-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .page-join__fee-table {
    min-width: 20rem;
  }
}

/* join 特典・注意 */
.page-join__benefits-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 640px) {
  .page-join__benefits-grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1024px) {
  .page-join__benefits-grid { grid-template-columns: repeat(3, 1fr); }
}
.page-join__benefit-item {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  background: var(--color-background);
  border-radius: 0.5rem;
  padding: 1rem;
  border: 1px solid var(--color-border);
}
.page-join__benefit-icon {
  flex-shrink: 0;
  margin-top: 0.125rem;
  color: var(--color-primary);
}
.page-join__benefit-icon svg { display: block; }
.page-join__benefit-text { color: var(--color-foreground); }
.page-join__notice {
  background: hsla(215, 70%, 45%, 0.05);
  border: 1px solid hsla(215, 70%, 45%, 0.2);
  border-radius: 0.5rem;
  padding: 1.5rem;
}
.page-join__notice-title {
  font-weight: 600;
  margin: 0 0 0.5rem 0;
}
.page-join__notice-list {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
}
.page-join__notice-list li { margin-bottom: 0.5rem; }

/* form ページ */
.page-form__inner {
  max-width: 48rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .page-form__inner { padding: 0 2rem; }
}
.page-form__content {
  font-size: 1rem;
  line-height: 1.75;
}
.page-form__content label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
}
.page-form__content input[type="text"],
.page-form__content input[type="email"],
.page-form__content input[type="tel"],
.page-form__content textarea {
  width: 100%;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 1rem;
}
.page-form__content .wpcf7 { margin-top: 2rem; }

/* contact（mockup/app/contact/page.tsx 準拠） */
.page-contact__form {
  font-size: 1rem;
  line-height: 1.75;
}
.page-contact__form fieldset.page-contact__field {
  margin: 0 0 2rem 0;
  padding: 0;
  border: none;
}
.page-contact__legend {
  display: block;
  margin-bottom: 0.75rem;
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-foreground);
}
.page-contact__type-radios {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}
.page-contact__form label.page-contact__radio-label {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0;
  font-weight: 400;
  cursor: pointer;
}
.page-contact__form input[type="radio"] {
  width: 1rem;
  height: 1rem;
  margin: 0;
  accent-color: var(--color-primary);
}
.page-contact__field {
  margin: 0 0 2rem 0;
}
.page-contact__label {
  display: block;
  margin-bottom: 0.5rem;
  font-weight: 500;
  color: var(--color-foreground);
}
.page-contact__required {
  color: hsl(0, 65%, 45%);
}
.page-contact__form .page-contact__input,
.page-contact__form .page-contact__textarea {
  width: 100%;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 1rem;
  font-family: inherit;
  box-sizing: border-box;
}
.page-contact__form .page-contact__textarea {
  resize: vertical;
  min-height: 8rem;
}
.page-contact__privacy {
  margin-bottom: 2rem;
  padding: 1rem;
  background: var(--color-muted);
  border-radius: var(--radius);
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
}
.page-contact__privacy-text {
  margin: 0;
}
.page-contact__privacy a {
  color: var(--color-primary);
  text-decoration: none;
}
.page-contact__privacy a:hover {
  text-decoration: underline;
}
.page-contact__submit {
  display: flex;
  justify-content: center;
}
.page-contact__submit .page-contact__submit-btn.btn-page-primary {
  min-width: 12.5rem;
  min-height: 3rem;
  cursor: pointer;
  font-family: inherit;
}

.page-contact__notice {
  margin-bottom: 1.5rem;
  padding: 1rem 1.25rem;
  border-radius: var(--radius-md);
  border: 1px solid hsl(0, 50%, 85%);
  background: hsl(0, 40%, 97%);
  color: hsl(0, 40%, 25%);
  font-size: 0.9375rem;
}
.page-contact__step-title {
  margin-top: 0;
}
.page-contact__confirm-lead,
.page-contact__complete-lead,
.page-contact__complete-sub {
  margin: 0 0 1rem 0;
  color: var(--color-muted-foreground);
  font-size: 1rem;
  line-height: 1.75;
}
.page-contact__complete-sub {
  margin-bottom: 2rem;
  font-size: 0.9375rem;
}
.page-contact__confirm-dl {
  margin: 0 0 2rem 0;
  padding: 1.25rem 1.5rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-background);
}
.page-contact__confirm-row {
  display: grid;
  grid-template-columns: minmax(8rem, 11rem) 1fr;
  gap: 0.75rem 1.5rem;
  padding: 0.75rem 0;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.9375rem;
}
.page-contact__confirm-row:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.page-contact__confirm-row:first-child {
  padding-top: 0;
}
.page-contact__confirm-row dt {
  margin: 0;
  font-weight: 600;
  color: var(--color-foreground);
}
.page-contact__confirm-row dd {
  margin: 0;
  color: var(--color-muted-foreground);
  word-break: break-word;
}
.page-contact__confirm-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.page-contact__send-form {
  margin: 0;
}
.page-contact__back-btn {
  min-width: 7.5rem;
  min-height: 3rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
.page-contact__confirm-actions .page-contact__submit-btn {
  min-width: 12.5rem;
  min-height: 3rem;
}
.page-contact__complete-actions {
  display: flex;
  justify-content: center;
  margin-top: 0.5rem;
}
.page-contact__complete-actions .btn-page-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 12.5rem;
  min-height: 3rem;
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  font-weight: 500;
  text-decoration: none;
  border-radius: var(--radius-md);
  background: var(--color-primary);
  color: white;
  border: 1px solid var(--color-primary);
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
  box-sizing: border-box;
}
.page-contact__complete-actions .btn-page-primary:hover {
  background: hsl(215, 70%, 40%);
}
@media (max-width: 639px) {
  .page-contact__confirm-row {
    grid-template-columns: 1fr;
    gap: 0.25rem;
  }
  .page-contact__confirm-actions {
    flex-direction: column-reverse;
    align-items: stretch;
  }
  .page-contact__confirm-actions .page-contact__submit-btn,
  .page-contact__back-btn {
    width: 100%;
  }
}

/* privacy */
.page-privacy__inner {
  max-width: 48rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .page-privacy__inner { padding: 0 2rem; }
}
.page-privacy__body {
  color: var(--color-muted-foreground);
  line-height: 1.625;
}
.page-privacy__body p {
  margin: 0 0 1rem 0;
}
.page-privacy__body p:last-child {
  margin-bottom: 0;
}
.page-privacy__body h2 {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--color-foreground);
  margin: 2.5rem 0 1rem 0;
  padding-bottom: 0;
  border-bottom: none;
}
.page-privacy__body h2:first-child {
  margin-top: 0;
}
.page-privacy__body ul {
  margin: 0.5rem 0 1rem 0;
  padding-left: 1.5rem;
  list-style-type: disc;
}
.page-privacy__body li {
  margin-bottom: 0.5rem;
}
.page-privacy__body blockquote,
.page-privacy__body .wp-block-quote {
  margin: 1rem 0;
  padding: 1.5rem;
  background: var(--color-muted);
  border-radius: 0.5rem;
  border-left: none;
}
.page-privacy__body blockquote p,
.page-privacy__body .wp-block-quote p {
  margin: 0;
  color: var(--color-foreground);
}
.page-privacy__body blockquote p + p,
.page-privacy__body .wp-block-quote p + p {
  margin-top: 0.5rem;
}
.page-privacy__contact-box {
  margin: 1rem 0;
  padding: 1.5rem;
  background: var(--color-muted);
  border-radius: 0.5rem;
}
.page-privacy__contact-box p {
  margin: 0;
  color: var(--color-foreground);
}
.page-privacy__contact-box p:first-child {
  font-weight: 600;
}
.page-privacy__contact-box p + p {
  margin-top: 0.5rem;
  color: var(--color-muted-foreground);
  font-weight: 400;
}
.page-join__notice-section {
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--color-border);
}
.page-section.page-join__notice-band {
  padding-top: 2rem;
  padding-bottom: 2rem;
}
@media (min-width: 1024px) {
  .page-section.page-join__notice-band {
    padding-top: 2rem;
    padding-bottom: 2rem;
  }
}
.page-join__form-title {
  margin-top: 0;
}
.page-request__form-title {
  margin-top: 0;
}
.page-request__intro {
  margin: 0 0 2rem 0;
  font-size: 1rem;
  line-height: 1.75;
  color: var(--color-muted-foreground);
}
.page-request__address-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.75rem;
}
.page-request__postal-mark {
  font-weight: 600;
  color: var(--color-foreground);
}
.page-request__postal-input {
  max-width: 10rem;
}
.page-request__address-rest {
  flex: 1 1 min(100%, 16rem);
  min-width: min(100%, 12rem);
}
.page-request__contact-fieldset {
  margin: 0 0 2rem 0;
  padding: 0;
  border: none;
}
.page-request__contact-fieldset > .page-contact__legend {
  margin-bottom: 0.75rem;
}
.page-request__nested-field {
  margin-bottom: 1.25rem;
}
.page-request__nested-field:last-child {
  margin-bottom: 0;
}
.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* sitemap */
/* コンテナ幅で切替: 列間は常に column-gap 2.5rem。3列+2ギャップが収まるまで2行3列を維持 */
.page-sitemap__container {
  container-type: inline-size;
  container-name: sitemap;
}
.page-sitemap__grid {
  display: grid;
  grid-template-columns: max-content;
  column-gap: 2.5rem;
  row-gap: 2.5rem;
  justify-items: start;
  width: max-content;
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
}
.page-sitemap__group {
  width: max-content;
  max-width: 100%;
}
/* 2列: コンテナが狭く3列+2.5rem×2ギャップを維持できない幅帯（約480px〜719px） */
@container sitemap (min-width: 480px) and (max-width: 719px) {
  .page-sitemap__grid {
    grid-template-columns: repeat(2, max-content);
    justify-content: center;
    justify-items: start;
    width: 100%;
  }
}
/* 3列（2行）: コンテナ幅が 720px 以上なら横間隔 2.5rem を保ったまま3列を維持 */
@container sitemap (min-width: 720px) {
  .page-sitemap__grid {
    grid-template-columns: repeat(3, max-content);
    justify-content: space-between;
    justify-items: start;
    width: 100%;
  }
}
@supports not (container-type: inline-size) {
  @media (min-width: 768px) and (max-width: 1023px) {
    .page-sitemap__grid {
      grid-template-columns: repeat(2, max-content);
      justify-content: center;
      justify-items: start;
      width: 100%;
    }
  }
  @media (min-width: 1024px) {
    .page-sitemap__grid {
      grid-template-columns: repeat(3, max-content);
      justify-content: space-between;
      justify-items: start;
      width: 100%;
    }
  }
}
.page-sitemap__group-title {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--color-foreground);
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 1rem;
}
.page-sitemap__links {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-sitemap__links li { margin-bottom: 0.75rem; }
.page-sitemap__links a {
  color: var(--color-muted-foreground);
  text-decoration: none;
}
.page-sitemap__links a:hover {
  color: var(--color-primary);
}

/* ==================== 固定ページ ==================== */
.page-content {
  padding: 0;
}
.page-content__header {
  margin-bottom: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--color-border);
}
.page-content__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  color: var(--color-foreground);
}
@media (min-width: 640px) {
  .page-content__title { font-size: 2.25rem; }
}
@media (min-width: 1024px) {
  .page-content__title { font-size: 2.5rem; }
}
/* 記事本文 .page-links（ページネーション） */
.page-content__body .page-links,
.entry-content .page-links {
  margin-top: 2rem;
  font-size: 0.875rem;
}

/* ==================== フッター（モック footer.tsx 準拠） ==================== */
.site-footer {
  background: var(--color-foreground);
  color: var(--color-background);
  margin-top: auto;
}
.site-footer__inner {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  padding: 3rem 1rem;     /* py-12 px-4 */
}
@media (min-width: 1024px) {
  .site-footer__inner {
    padding: 4rem 2rem;  /* lg:py-16 lg:px-8 */
  }
}
/* フッター: 767px以下=中央寄せ1列・先頭左端揃え、768~1023px=中央寄せ2列・縦横同じ間隔、1024px以上=4列・画面幅いっぱい */
.site-footer__grid {
  display: grid;
  grid-template-columns: max-content; /* 最長テキスト幅に合わせて左端を揃える */
  gap: 2rem;
  justify-items: start;     /* 767px以下: 左端揃え（「一般社団法人…」の左端に合わせる） */
  width: max-content;
  margin-left: auto;
  margin-right: auto;
}
@media (min-width: 768px) and (max-width: 1023px) {
  .site-footer__grid {
    grid-template-columns: repeat(2, max-content);
    justify-content: center; /* 中央寄せ */
    justify-items: start;
    width: 100%;
    gap: 2rem;              /* 縦横同じ間隔 */
  }
}
@media (min-width: 1024px) {
  .site-footer__grid {
    grid-template-columns: repeat(4, max-content); /* 各ボックスは最長テキスト幅に合わせる */
    justify-content: space-between; /* 画面幅いっぱいに等間隔配置 */
    justify-items: start;
    width: 100%;
    gap: 2rem;
  }
}

.site-footer__logo {
  font-size: 1.25rem;    /* text-xl = 20px */
  font-weight: 700;
  color: var(--color-background);
  text-decoration: none;
}
.site-footer__logo-img {
  display: block;
  height: 2.5rem; /* 40px */
  width: auto;
  object-fit: contain;
  filter: brightness(0) invert(1); /* 暗背景用に白で表示 */
}
.site-footer__org {
  margin-top: 0.5rem;    /* mt-2 = 8px */
  font-size: var(--font-size-body);
  color: rgba(255, 255, 255, 0.8);  /* text-background/80 */
  line-height: 1.5;
}
.site-footer__desc {
  margin-top: 1rem;      /* mt-4 = 16px */
  font-size: var(--font-size-body);
  color: rgba(255, 255, 255, 0.6);  /* text-background/60 */
  line-height: 1.5;
}

.site-footer__section h3 {
  font-size: 1.25rem; /* 20px */
  font-weight: 600;      /* font-semibold */
  color: var(--color-background);
  margin: 0 0 1rem 0;    /* mt-4 相当 */
}
.site-footer__section ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.site-footer__section li {
  margin-bottom: 0.75rem;  /* space-y-3 = 12px */
}
.site-footer__section li:last-child {
  margin-bottom: 0;
}
.site-footer__section a {
  font-size: var(--font-size-body);
  color: rgba(255, 255, 255, 0.7);  /* text-background/70 */
  text-decoration: none;
  transition: color 0.15s;
}
.site-footer__section a:hover {
  color: var(--color-background);
}

.site-footer__copyright {
  margin-top: 3rem;      /* mt-12 = 48px */
  padding-top: 2rem;     /* pt-8 = 32px */
  border-top: 1px solid rgba(255, 255, 255, 0.2);  /* border-background/20 */
  text-align: center;
  font-size: var(--font-size-body);
  color: rgba(255, 255, 255, 0.6);  /* text-background/60 */
}

/* ==================== フロントページ セクション ==================== */

/* --- Hero --- */
.front-page .hero-section {
  margin-top: 0; /* ヘッダー下端とKV上端を密着させる */
}
.hero-section {
  position: relative;
  background-color: var(--color-foreground); /* 画像読み込み前・フォールバック */
  background-size: cover;
  background-position: center top; /* 青空（画像上部）が切り取られないよう上寄せ */
  background-repeat: no-repeat;
  color: var(--color-background);
  overflow: hidden;
}
/* PC/SP 差し替え（48rem=768px: SP → PC）＋ cover でビューポートに合わせて拡大縮小 */
.hero-section.hero-kv--responsive-bg:not(.hero-kv--rotate) {
  background-image: var(--hero-kv-url-sp);
}
@media (min-width: 48rem) {
  .hero-section.hero-kv--responsive-bg:not(.hero-kv--rotate) {
    background-image: var(--hero-kv-url-pc);
  }
}
/* 四季ローテーション時はセクション本体の背景はスライド側に任せる */
.hero-section.hero-kv--rotate {
  background-image: none;
}
.hero-section__kv-slides {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}
.hero-section__kv-slide {
  position: absolute;
  inset: 0;
  background-image: var(--hero-kv-url-sp);
  background-size: cover;
  background-position: center top;
  background-repeat: no-repeat;
  opacity: 0;
  transition: opacity 0.9s ease-in-out;
  pointer-events: none;
}
@media (min-width: 48rem) {
  .hero-section__kv-slide {
    background-image: var(--hero-kv-url-pc);
  }
}
.hero-section__kv-slide--active {
  opacity: 1;
}
/* 画像の上に載せるオーバーレイ（管理画面: 黒 / 青 / 橙） */
.hero-section::before {
  content: "";
  position: absolute;
  inset: 0;
  /* クラス未指定時のフォールバック（黒系） */
  background: linear-gradient(to right, rgba(30, 41, 59, 0.75) 0%, rgba(30, 41, 59, 0.58) 50%, rgba(30, 41, 59, 0.26) 100%);
  z-index: 1;
}
.hero-section.hero-overlay--black::before {
  background: linear-gradient(to right, rgba(30, 41, 59, 0.75) 0%, rgba(30, 41, 59, 0.58) 50%, rgba(30, 41, 59, 0.26) 100%);
}
.hero-section.hero-overlay--blue::before {
  background: linear-gradient(to right, rgba(18, 75, 105, 0.78) 0%, rgba(28, 110, 135, 0.55) 50%, rgba(55, 140, 165, 0.28) 100%);
}
.hero-section.hero-overlay--orange::before {
  background: linear-gradient(to right, rgba(75, 38, 18, 0.78) 0%, rgba(120, 62, 28, 0.58) 48%, rgba(200, 95, 40, 0.34) 100%);
}
.hero-section__inner {
  position: relative;
  z-index: 2;
  max-width: 80rem;
  margin: 0 auto;
  padding: 6rem 1rem; /* py-24 px-4 */
}
@media (min-width: 640px) {
  .hero-section__inner { padding-top: 8rem; padding-bottom: 8rem; } /* sm:py-32 */
}
@media (min-width: 1024px) {
  .hero-section__inner { padding: 10rem 2rem; } /* lg:py-40 lg:px-8 */
}
.hero-section__content { max-width: 48rem; }
.hero-section__catch {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  font-size: 2rem;
  font-weight: 500;
  color: var(--color-background); /* タイトル同様に白 */
  margin: 0 0 1rem 0;
  /* 影のみで可読性を確保（白アウトラインなし） */
  text-shadow:
    0 0 2px rgba(0, 0, 0, 0.95),
    0 0 4px rgba(0, 0, 0, 0.85),
    0 0 8px rgba(0, 0, 0, 0.6),
    1px 1px 2px rgba(0, 0, 0, 0.6),
    2px 2px 4px rgba(0, 0, 0, 0.4);
}
.hero-section__catch-logo {
  flex-shrink: 0;
  height: 2.75rem;
  width: auto;
  max-width: 5rem;
  object-fit: contain;
  /* 文字色（白）に合わせてロゴを単色化 */
  filter: brightness(0) invert(1) drop-shadow(0 1px 2px rgba(0, 0, 0, 0.45));
}
.hero-section__catch-text {
  flex: 1 1 12rem;
  min-width: 0;
}
.hero-section__title {
  font-size: 2.25rem; /* text-4xl */
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.2;
  margin: 0;
  /* 濃い影＋グラデーションで伸ばして可読性を向上 */
  text-shadow:
    0 0 2px rgba(0, 0, 0, 0.95),
    0 0 4px rgba(0, 0, 0, 0.85),
    0 0 8px rgba(0, 0, 0, 0.7),
    0 0 16px rgba(0, 0, 0, 0.5),
    0 0 24px rgba(0, 0, 0, 0.35),
    -1px -1px 0 rgba(0, 0, 0, 0.7),
    -1px 1px 0 rgba(0, 0, 0, 0.7),
    1px -1px 0 rgba(0, 0, 0, 0.7),
    1px 1px 0 rgba(0, 0, 0, 0.7);
}
@media (min-width: 640px) {
  .hero-section__title { font-size: 3rem; } /* sm:text-5xl */
}
@media (min-width: 1024px) {
  .hero-section__title { font-size: 3.75rem; } /* lg:text-6xl */
}
@media (max-width: 417px) {
  .hero-section__title br { display: none; } /* 狭幅では改行させない */
}
.hero-section__lead {
  margin: 1.5rem 0 0 0;
  font-size: var(--font-size-fluid-24);
  line-height: 1.75;
  max-width: 42rem;
  color: rgba(255, 255, 255, 0.92); /* タイトルよりやや薄く、読みやすく */
  /* 濃い影＋グラデーションで伸ばして可読性を向上 */
  text-shadow:
    0 0 1px rgba(0, 0, 0, 0.9),
    0 0 3px rgba(0, 0, 0, 0.8),
    0 0 6px rgba(0, 0, 0, 0.6),
    0 0 12px rgba(0, 0, 0, 0.4),
    -1px -1px 0 rgba(0, 0, 0, 0.6),
    -1px 1px 0 rgba(0, 0, 0, 0.6),
    1px -1px 0 rgba(0, 0, 0, 0.6),
    1px 1px 0 rgba(0, 0, 0, 0.6);
}
.hero-section__buttons {
  margin-top: 2.5rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
@media (min-width: 640px) {
  .hero-section__buttons { flex-direction: row; }
}
.btn-hero-primary,
.btn-hero-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  height: var(--hero-btn-height);
  padding: 0 1.5rem;
  font-size: var(--font-size-fluid-24);
  font-weight: 500;
  text-decoration: none;
  border-radius: var(--radius-md);
  white-space: nowrap;
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}
.btn-hero-primary {
  background: var(--color-primary);
  color: white;
  border: 1px solid var(--color-primary);
}
.btn-hero-primary:hover {
  background: var(--color-primary-hover);
}
.btn-hero-outline {
  border: 1px solid rgba(255, 255, 255, 0.3);
  background: transparent;
  color: var(--color-background);
}
.btn-hero-outline:hover {
  background: rgba(255, 255, 255, 0.1);
}
.hero-section__arrow { margin-left: 0.5rem; }

/* トップ: フェス告知（ヒーローと About の間） */
.fest-banner-section {
  padding: 3.5rem 0;
  background: var(--color-muted, #f4f4f5);
  border-top: 1px solid var(--color-border, #e4e4e7);
  border-bottom: 1px solid var(--color-border, #e4e4e7);
}
.front-page .fest-banner-section {
  background: linear-gradient(180deg, hsl(200, 38%, 97.5%) 0%, hsl(210, 28%, 96%) 100%);
  border-top-color: hsl(205, 28%, 90%);
  border-bottom-color: hsl(205, 28%, 90%);
}
@media (min-width: 1024px) {
  .fest-banner-section { padding: 5rem 0; }
}
.fest-banner-section__inner {
  max-width: 72rem;
  margin: 0 auto;
  padding: 0 1.5rem;
}
@media (min-width: 1024px) {
  .fest-banner-section__inner { padding: 0 2rem; }
}
.fest-banner-section__header {
  max-width: 43rem;
  margin: 0 0 2rem 0;
  text-align: left;
}
.fest-banner-section__label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
  margin: 0 0 0.5rem 0;
}
.fest-banner-section__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
}
@media (min-width: 640px) {
  .fest-banner-section__title { font-size: 2.25rem; }
}
.fest-banner-section__grid {
  display: grid;
  gap: 2rem;
  align-items: center;
}
@media (min-width: 768px) {
  .fest-banner-section__grid--two {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: 2.5rem;
  }
}
.fest-banner-section__flyer {
  text-align: center;
}
.fest-banner-section__img {
  max-width: 100%;
  width: auto;
  max-height: min(70vh, 36rem);
  height: auto;
  object-fit: contain;
  border-radius: 0.375rem;
  box-shadow: 0 10px 40px -12px rgb(0 0 0 / 0.18);
}
.fest-banner-section__content {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.fest-banner-section__summary {
  font-size: var(--font-size-fluid-28);
  line-height: 1.75;
  color: var(--color-foreground, #18181b);
}
.fest-banner-section__summary p:last-child { margin-bottom: 0; }
.fest-banner-section__buttons {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.fest-banner-section__cta-wrap {
  margin: 0;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}
.fest-banner-section__button {
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 3rem;
  height: auto;
  padding: 0.75rem 1.75rem;
  font-size: var(--font-size-fluid-24);
  font-weight: 600;
  text-decoration: none;
  color: #fff;
  background: var(--color-primary, #2563eb);
  border-radius: 0.5625rem;
  transition: background 0.15s ease, transform 0.15s ease;
}
.fest-banner-section__button:hover {
  background: var(--color-primary-hover, #1d4ed8);
  color: #fff;
}
.fest-banner-section__button:focus-visible {
  outline: 2px solid var(--color-primary, #2563eb);
  outline-offset: 2px;
}

/* --- About --- */
.about-section {
  padding: 5rem 0; /* py-20 */
  background: var(--color-background);
}
.front-page .about-section {
  background: linear-gradient(180deg, hsl(200, 42%, 99%) 0%, var(--color-background) 16rem);
}
@media (min-width: 1024px) {
  .about-section { padding: 7rem 0; } /* lg:py-28 */
}
.about-section__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .about-section__inner { padding: 0 2rem; }
}
.about-section__header { max-width: 43rem; }
.about-section__label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
  margin: 0 0 0.5rem 0;
}
.about-section__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
}
@media (min-width: 640px) {
  .about-section__title { font-size: 2.25rem; }
}
.about-section__lead {
  margin: 1rem 0 2.5rem 0;
  font-size: 1.125rem;
  color: var(--color-muted-foreground);
}
.about-section__grid {
  margin-top: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
  .about-section__grid { grid-template-columns: 1fr 1fr; }
}
.about-section__card {
  border: 1px solid var(--color-border);
  border-radius: 0.5rem;
  padding: 1.5rem;
  background: var(--color-background);
  transition: border-color 0.15s;
}
.about-section__card:hover {
  border-color: hsla(215, 70%, 45%, 0.5);
}
.about-section__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.75rem;
  height: 2.75rem;
  margin: 0 0 1rem 0;
  border-radius: 50%;
  background: hsla(198, 72%, 42%, 0.12);
  color: var(--color-primary);
}
.about-section__icon svg {
  flex-shrink: 0;
}
.about-section__card-title {
  margin: 0 0 1rem 0;
  font-size: 1.5rem; /* 24px */
  font-weight: 600;
  color: var(--color-primary);
}
.about-section__list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.about-section__list-item {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: var(--font-size-body); /* 18px */
  color: var(--color-muted-foreground);
  line-height: 1.6;
  margin-bottom: 0.5rem;
}
.about-section__list-item:last-child {
  margin-bottom: 0;
}
.about-section__list-item::before {
  content: "•";
  color: var(--color-primary);
  flex-shrink: 0;
}
.about-section__link-wrap {
  margin-top: 3rem;
  text-align: center;
}
.about-section__link {
  display: inline-flex;
  align-items: center;
  font-size: 1.25rem; /* 20px */
  font-weight: 500;
  color: var(--color-primary);
  text-decoration: none;
  transition: color 0.15s;
}
.about-section__link:hover { color: var(--color-primary-hover); }
.about-section__link span { margin-left: 0.5rem; }

/* --- Mission --- */
.mission-section {
  padding: 5rem 0;
  background: var(--color-muted);
}
@media (min-width: 1024px) {
  .mission-section { padding: 7rem 0; }
}
.mission-section__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .mission-section__inner { padding: 0 2rem; }
}
.mission-section__header {
  text-align: center;
  max-width: 42rem;
  margin: 0 auto;
}
.mission-section__label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
  margin: 0 0 0.5rem 0;
}
.mission-section__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
}
@media (min-width: 640px) {
  .mission-section__title { font-size: 2.25rem; }
}
.mission-section__grid {
  margin-top: 4rem; /* mt-16 */
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
  .mission-section__grid {
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  }
}
.mission-section__card {
  background: var(--color-background);
  border-radius: 0.75rem;
  padding: 2rem;
  text-align: center;
  box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}
.mission-section__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3.5rem;
  height: 3.5rem;
  margin: 0 auto;
  border-radius: 50%;
  background: hsla(215, 70%, 45%, 0.1);
  color: var(--color-primary);
}
.front-page .mission-section__icon {
  background: hsla(198, 72%, 42%, 0.12);
}
.mission-section__card-title {
  margin: 1.5rem 0 0.75rem 0;
  font-size: 1.5rem; /* 24px */
  font-weight: 600;
}
.mission-section__card-desc {
  margin: 0;
  font-size: var(--font-size-body); /* 18px */
  color: var(--color-muted-foreground);
  line-height: 1.6;
  text-align: left;        /* SPで最下段テキストが不自然に中央寄せになるのを防ぐ */
}

/* --- News --- */
.news-section {
  padding: 5rem 0;
  background: var(--color-background);
}
@media (min-width: 1024px) {
  .news-section { padding: 7rem 0; }
}
.news-section__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .news-section__inner { padding: 0 2rem; }
}
.news-section__header {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin-bottom: 2.5rem;
}
@media (min-width: 640px) {
  .news-section__header {
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-between;
  }
}
.news-section__label {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
  margin: 0 0 0.5rem 0;
}
.news-section__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
}
@media (min-width: 640px) {
  .news-section__title { font-size: 2.25rem; }
}
.news-section__link {
  display: inline-flex;
  align-items: center;
  font-size: var(--font-size-nav); /* 16px */
  font-weight: 500;
  color: var(--color-primary);
  text-decoration: none;
  transition: color 0.15s;
}
.news-section__link:hover { color: var(--color-primary-hover); }
.news-section__link span { margin-left: 0.5rem; }
.news-section__list {
  border: 1px solid var(--color-border);
  border-radius: 0.5rem;
  overflow: hidden;
}
.news-section__item {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1rem;
  text-decoration: none;
  color: inherit;
  border-bottom: 1px solid var(--color-border);
  transition: background-color 0.15s;
}
.news-section__item:last-child { border-bottom: none; }
.news-section__item:hover { background: var(--color-muted); }
/* 詳細などへリンクあり: デフォルトでテーマのリンク色（青系） */
.news-section__item--link {
  color: var(--color-primary, #2563eb);
}
.news-section__item--link .news-section__date {
  color: var(--color-primary, #2563eb);
}
.news-section__item--link .news-section__item-title {
  color: var(--color-primary, #2563eb);
}
.news-section__item--link:hover .news-section__date,
.news-section__item--link:hover .news-section__item-title {
  color: var(--color-primary-hover, #1d4ed8);
}
@media (min-width: 640px) {
  .news-section__item {
    flex-direction: row;
    align-items: center;
    gap: 1.5rem;
    padding: 1.25rem;
  }
}
.news-section__date {
  font-size: var(--font-size-body);
  font-weight: 500;
  color: var(--color-muted-foreground);
  min-width: 90px;
}
.news-section__item-title {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: var(--font-size-body);
  transition: color 0.15s;
}
.news-section__item:hover .news-section__item-title { color: var(--color-primary); }
.news-section__badge {
  display: inline-flex;
  padding: 0.125rem 0.5rem;
  font-size: 0.75rem;
  font-weight: 500;
  background: var(--color-primary);
  color: white;
  border-radius: 9999px;
}
.news-section__empty {
  margin: 0;
  padding: 1.25rem 0;
  color: var(--color-muted-foreground);
  font-size: var(--font-size-body);
}
.news-section__item--static {
  cursor: default;
  pointer-events: none;
  user-select: text;
}
.news-section__item--static .news-section__item-title {
  color: var(--color-foreground);
}
.news-section__item--static:hover {
  background: transparent;
}

/* --- CTA --- */
.cta-section {
  padding: 5rem 0;
  background: var(--color-muted);
}
@media (min-width: 1024px) {
  .cta-section { padding: 7rem 0; }
}
.cta-section__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding: 0 1rem;
}
@media (min-width: 1024px) {
  .cta-section__inner { padding: 0 2rem; }
}
.cta-section__header {
  text-align: center;
  max-width: 42rem;
  margin: 0 auto 3rem;
}
.cta-section__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
}
@media (min-width: 640px) {
  .cta-section__title { font-size: 2.25rem; }
}
@media (min-width: 558px) {
  .cta-section__title-br { display: none; } /* 558px以上では改行しない */
}
.cta-section__lead {
  margin: 1rem 0 0 0;
  font-size: 1.125rem;
  color: var(--color-muted-foreground);
  line-height: 1.6;
  text-align: left;
}
.cta-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  max-width: 48rem;
  margin: 0 auto;
}
@media (min-width: 768px) {
  .cta-section__grid { grid-template-columns: 1fr 1fr; }
}
.cta-section__card {
  background: var(--color-background);
  border-radius: 0.75rem;
  padding: 2rem;
  border: 1px solid var(--color-border);
}
.cta-section__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  background: hsla(215, 70%, 45%, 0.1);
  color: var(--color-primary);
  margin-bottom: 1.5rem;
}
.front-page .cta-section__icon {
  background: hsla(198, 72%, 42%, 0.12);
}
.cta-section__card-title {
  font-size: 1.5rem; /* 24px */
  font-weight: 600;
  margin: 0 0 0.75rem 0;
}
.cta-section__card-desc {
  margin: 0 0 1.5rem 0;
  font-size: var(--font-size-body); /* 18px */
  color: var(--color-muted-foreground);
  line-height: 1.6;
}
.cta-section__card-desc li {
  font-size: inherit;
}
.btn-cta-primary,
.btn-cta-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: auto;
  min-height: 2.5rem;
  padding: 0.5rem 1rem;
  font-size: var(--font-size-body); /* 18px */
  font-weight: 500;
  text-decoration: none;
  border-radius: var(--radius-md);
  transition: background-color 0.15s, color 0.15s, border-color 0.15s;
}
.btn-cta-primary {
  background: var(--color-primary);
  color: white;
  border: 1px solid var(--color-primary);
}
.btn-cta-primary:hover {
  background: var(--color-primary-hover);
}
.btn-cta-outline {
  border: 1px solid var(--color-input);
  background: transparent;
  color: var(--color-foreground);
}
.btn-cta-outline:hover {
  background: var(--color-accent);
  color: var(--color-accent-foreground);
  border-color: var(--color-accent);
}

/* ==================== 投稿・固定ページ ==================== */
.entry-header {
  margin-bottom: 1rem;
}
.entry-title {
  font-size: 1.5rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
  line-height: 1.3;
}
.entry-title a {
  color: var(--color-foreground);
  text-decoration: none;
}
.entry-title a:hover {
  color: var(--color-primary);
}
.entry-meta {
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
}
.entry-meta time {
  font-weight: 500;
}
/* 記事本文（WordPress差し込みコンテンツ）全ページ共通スタイル
   .entry-content, .page-content__body の両方に適用 */
.entry-content,
.page-content__body {
  font-size: var(--font-size-body);
  line-height: 1.75;
  color: var(--color-foreground);
}
.entry-content p,
.page-content__body p {
  margin: 0 0 1rem 0;
}
.entry-content p:last-child,
.page-content__body p:last-child {
  margin-bottom: 0;
}
.entry-content h1,
.page-content__body h1 {
  font-size: 1.75rem;
  font-weight: 700;
  margin: 2rem 0 1rem 0;
  line-height: 1.3;
  color: var(--color-foreground);
}
.entry-content h1:first-child,
.page-content__body h1:first-child {
  margin-top: 0;
}
.entry-content h2,
.page-content__body h2 {
  font-size: 1.5rem;
  font-weight: 700;
  margin: 2rem 0 0.75rem 0;
  line-height: 1.35;
  color: var(--color-foreground);
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border);
}
.entry-content h2:first-child,
.page-content__body h2:first-child {
  margin-top: 0;
}

/* テーマのセクション見出し: 上記 .entry-content h2 の下線・余白を打ち消し */
.entry-content h2.page-section__title {
  margin: 0 0 2rem 0;
  padding-bottom: 0;
  border-bottom: none;
}
@media (min-width: 640px) {
  .entry-content h2.page-section__title {
    font-size: 1.875rem;
  }
}
.page-about .entry-content h2.page-about__section-title {
  padding-bottom: 0;
  border-bottom: none;
  line-height: 1.35;
}
.page-about .entry-content h3.page-about__activity-title {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--color-primary);
  margin: 0 0 1rem 0;
}
.entry-content h2.page-benefits__qualification-title {
  margin: 0 0 1.5rem 0;
  padding-bottom: 0;
  border-bottom: none;
  font-size: 1.5rem;
  line-height: 1.35;
}
@media (min-width: 640px) {
  .entry-content h2.page-benefits__qualification-title {
    font-size: 1.875rem;
  }
}
.entry-content h2.page-sitemap__group-title {
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0 0 1rem 0;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border);
  line-height: 1.4;
  color: var(--color-foreground);
}
.entry-content ul.page-sitemap__links {
  margin: 0;
  padding: 0;
  list-style: none;
}
.entry-content .page-sitemap__links a {
  color: var(--color-muted-foreground);
  text-decoration: none;
}
.entry-content .page-sitemap__links a:hover {
  color: var(--color-primary);
}
.entry-content ul.page-about__ethics-list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.page-about .entry-content .page-about__ethics-item p {
  margin: 0;
}
.entry-content .page-about__doc-link {
  text-decoration: none;
  color: inherit;
}
.entry-content .page-about__doc-link .page-about__doc-title {
  margin: 0;
}
.entry-content .page-about__doc-link .page-about__doc-meta {
  margin: 0.25rem 0 0 0;
}
.entry-content .page-about__cta h2.page-about__cta-title {
  color: inherit;
  border-bottom: none;
  padding-bottom: 0;
  margin: 0;
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.35;
}
@media (min-width: 640px) {
  .entry-content .page-about__cta h2.page-about__cta-title {
    font-size: 1.875rem;
  }
}
.entry-content .page-about__cta p.page-about__cta-lead {
  color: inherit;
  width: fit-content;
  max-width: 42rem;
  margin: 1rem auto 0;
  font-size: 1.125rem;
  line-height: 1.6;
  text-align: left;
}
.entry-content .page-about__cta a.btn-about-primary,
.entry-content .page-about__cta a.btn-about-outline {
  text-decoration: none;
  font-size: 18px;
}
.entry-content .page-about__cta a.btn-about-primary {
  color: white;
}
.entry-content .page-about__cta a.btn-about-outline {
  color: var(--color-background);
}
.entry-content .page-benefits__qualification a.btn-page-primary,
.entry-content .page-benefits__qualification a.btn-page-outline-light {
  text-decoration: none;
  font-size: 18px;
}
.entry-content .page-benefits__qualification a.btn-page-primary {
  color: white;
}
.entry-content .page-benefits__qualification a.btn-page-outline-light {
  color: var(--color-foreground);
}
.entry-content h3.page-benefits__card-title {
  font-size: 24px;
  font-weight: 600;
  color: var(--color-foreground);
  margin: 0 0 0.75rem 0;
  line-height: 1.4;
}
.entry-content a.page-events__card {
  text-decoration: none;
  color: inherit;
}
.entry-content h3.page-events__card-title {
  font-size: 1.125rem;
  font-weight: 600;
  margin: 0 0 0.5rem 0;
  line-height: 1.4;
  color: inherit;
}
.entry-content h2.page-members__title {
  margin: 0;
  padding-bottom: 0;
  border-bottom: none;
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--color-foreground);
}
@media (min-width: 640px) {
  .entry-content h2.page-members__title {
    font-size: 1.875rem;
  }
}
.entry-content a.page-members__link {
  text-decoration: none;
  color: inherit;
}
.entry-content .page-cta h2.page-cta__title,
.entry-content .page-cta p.page-cta__lead {
  color: inherit;
  border-bottom: none;
  padding-bottom: 0;
}
/* .entry-content h2 の margin が margin:auto を潰し、CTA 見出し・本文が左寄せになるのを防ぐ */
.entry-content .page-cta h2.page-cta__title {
  margin: 0 auto;
  width: fit-content;
  max-width: 48rem;
  text-align: center;
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.35;
}
@media (min-width: 640px) {
  .entry-content .page-cta h2.page-cta__title {
    font-size: 1.875rem;
  }
}
.entry-content .page-cta h2.page-cta__title:first-child {
  margin-top: 0;
}
.entry-content .page-cta p.page-cta__lead {
  margin: 1rem auto 0;
  width: fit-content;
  max-width: 48rem;
  font-size: 1.125rem;
  line-height: 1.6;
  text-align: center;
}
@media (max-width: 767px) {
  .entry-content .page-cta h2.page-cta__title,
  .entry-content .page-cta p.page-cta__lead {
    width: 100%;
    max-width: 48rem;
    box-sizing: border-box;
  }
  .entry-content .page-cta p.page-cta__lead {
    text-align: left;
  }
}
/* セルフストレージとは: 従来の .page-what-is-self-storage-main .page-cta__lead 調整を entry-content でも維持 */
@media (max-width: 768px) {
  .page-what-is-self-storage-main .entry-content .page-cta p.page-cta__lead br {
    display: none;
  }
}
@media (min-width: 665px) and (max-width: 768px) {
  .page-what-is-self-storage-main .entry-content .page-cta p.page-cta__lead {
    text-align: center;
    white-space: normal;
  }
  .page-what-is-self-storage-main .entry-content .page-cta p.page-cta__lead br {
    display: revert;
  }
}
@media (min-width: 769px) {
  .page-what-is-self-storage-main .entry-content .page-cta p.page-cta__lead {
    text-align: center;
    white-space: nowrap;
  }
}
.entry-content .page-cta a.btn-page-primary,
.entry-content .page-cta a.btn-page-outline,
.entry-content .page-cta a.btn-page-secondary {
  text-decoration: none;
}
.entry-content .page-cta a.btn-page-primary {
  color: white;
}
.entry-content .page-cta a.btn-page-outline {
  color: var(--color-background);
}
body.page-future-view .entry-content .page-cta a.btn-page-primary,
body.page-future-view .entry-content .page-cta a.btn-page-outline {
  font-size: 18px;
}

body.page-future-view .entry-content h3.page-future__trends-title {
  font-size: 24px;
  font-weight: 600;
  color: var(--color-foreground);
  margin: 0 0 0.75rem 0;
  line-height: 1.4;
}
body.page-future-view .entry-content .page-future__trends-desc {
  font-size: 18px;
}

.entry-content h3,
.page-content__body h3 {
  font-size: 1.25rem;
  font-weight: 600;
  margin: 1.5rem 0 0.5rem 0;
  line-height: 1.4;
  color: var(--color-foreground);
}
.entry-content h3:first-child,
.page-content__body h3:first-child {
  margin-top: 0;
}
.entry-content h4,
.entry-content h5,
.entry-content h6,
.page-content__body h4,
.page-content__body h5,
.page-content__body h6 {
  font-size: 1.125rem;
  font-weight: 600;
  margin: 1.25rem 0 0.5rem 0;
  line-height: 1.4;
  color: var(--color-foreground);
}
.entry-content h4:first-child,
.entry-content h5:first-child,
.entry-content h6:first-child,
.page-content__body h4:first-child,
.page-content__body h5:first-child,
.page-content__body h6:first-child {
  margin-top: 0;
}
.entry-content a,
.page-content__body a {
  color: var(--color-primary);
  text-decoration: underline;
}
.entry-content a:hover,
.page-content__body a:hover {
  color: var(--color-primary-hover);
}
.entry-content ul,
.entry-content ol,
.page-content__body ul,
.page-content__body ol {
  margin: 0 0 1rem 0;
  padding-left: 1.5rem;
}
.entry-content ul,
.page-content__body ul {
  list-style-type: disc;
}
.entry-content ol,
.page-content__body ol {
  list-style-type: decimal;
}
.entry-content li,
.page-content__body li {
  margin-bottom: 0.25rem;
}
.entry-content li:last-child,
.page-content__body li:last-child {
  margin-bottom: 0;
}
.entry-content ul ul,
.entry-content ol ol,
.entry-content ul ol,
.entry-content ol ul,
.page-content__body ul ul,
.page-content__body ol ol,
.page-content__body ul ol,
.page-content__body ol ul {
  margin: 0.5rem 0 0;
  padding-left: 1.25rem;
}
.entry-content img,
.page-content__body img {
  max-width: 100%;
  height: auto;
  vertical-align: middle;
}
.entry-content blockquote,
.page-content__body blockquote {
  margin: 1.5rem 0;
  padding: 1rem 1.5rem;
  border-left: 4px solid var(--color-primary);
  background: var(--color-muted);
  color: var(--color-foreground);
  font-style: italic;
}
.entry-content blockquote p:last-child,
.page-content__body blockquote p:last-child {
  margin-bottom: 0;
}
.entry-content strong,
.page-content__body strong {
  font-weight: 700;
}
.entry-content em,
.page-content__body em {
  font-style: italic;
}
.entry-content table,
.page-content__body table {
  width: 100%;
  margin: 1rem 0;
  border-collapse: collapse;
}
.entry-content th,
.entry-content td,
.page-content__body th,
.page-content__body td {
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--color-border);
  text-align: left;
}
.entry-content th,
.page-content__body th {
  background: var(--color-muted);
  font-weight: 600;
}
.entry-content dl,
.page-content__body dl {
  margin: 1rem 0;
}
.entry-content dt,
.page-content__body dt {
  font-weight: 600;
  margin-top: 0.75rem;
}
.entry-content dt:first-child,
.page-content__body dt:first-child {
  margin-top: 0;
}
.entry-content dd,
.page-content__body dd {
  margin-left: 1.5rem;
  margin-bottom: 0.5rem;
}
.entry-content hr,
.page-content__body hr {
  margin: 2rem 0;
  border: none;
  border-top: 1px solid var(--color-border);
}
article {
  padding-bottom: 2rem;
  margin-bottom: 2rem;
  border-bottom: 1px solid var(--color-border);
}
article:last-of-type {
  border-bottom: none;
}

/* 会員向け（URL 分離・ナビ非表示） */
.page-member-intro {
  max-width: 48rem;
  margin: 0 auto;
}
.page-member-intro__body {
  margin-bottom: 2rem;
}
.page-member-intro__cta {
  margin: 0;
}
.page-member-intro__cta .btn-page-primary {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.page-member-back {
  margin: 0 0 1.5rem 0;
}
.page-member-back__link {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-primary);
  text-decoration: none;
}
.page-member-back__link:hover {
  text-decoration: underline;
}
.page-member-news-list {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--color-border);
}
.page-member-news-list__item {
  border-bottom: 1px solid var(--color-border);
}
.page-member-news-list__link {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.75rem 1rem;
  padding: 1rem 0.25rem;
  text-decoration: none;
  color: inherit;
  transition: background 0.15s ease;
}
.page-member-news-list__link:hover {
  background: hsla(215, 70%, 45%, 0.06);
}
.page-member-news-list__date {
  flex-shrink: 0;
  font-size: 0.875rem;
  color: var(--color-muted-foreground);
}
.page-member-news-list__title {
  flex: 1 1 12rem;
  font-weight: 600;
  color: var(--color-foreground);
}
.page-member-news-list__arrow {
  flex-shrink: 0;
  color: var(--color-primary);
}
.page-member-news-list__nolink {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.75rem 1rem;
  padding: 1rem 0.25rem;
  color: var(--color-muted-foreground);
}
.page-member-news-empty {
  margin: 0;
  color: var(--color-muted-foreground);
}
.page-member-news-archive .navigation.pagination,
.page-member-news-archive .nav-links {
  margin-top: 2rem;
  display: flex;
  justify-content: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.page-member-news-article__pdf {
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--color-border);
}
.page-member-news-article__pdf .btn-page-outline {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.page-member-news-single .page-member-news-article {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}

/* 代表挨拶: ヒーローは main.page-greeting-main の外にあるため body.page-greeting-view で指定 */
body.page-greeting-view .page-hero__label {
  font-size: 16px;
}
body.page-greeting-view .page-hero__title {
  font-size: 1.875rem; /* 30px */
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-greeting-view .page-hero__title { font-size: 2.25rem; } /* 36px */
}
@media (min-width: 640px) {
  body.page-greeting-view .page-hero__title { font-size: 2.5rem; } /* 40px */
}
@media (min-width: 768px) {
  body.page-greeting-view .page-hero__title { font-size: 3rem; } /* 48px */
}
@media (min-width: 1024px) {
  body.page-greeting-view .page-hero__title { font-size: 60px; }
}
body.page-greeting-view .page-hero__lead {
  font-size: 24px;
}
@media (max-width: 589px) {
  body.page-greeting-view .page-hero__lead br:first-of-type {
    display: none;
  }
}

/* 参加のメリット: ヒーローは main の外（body.page-benefits-view） */
body.page-benefits-view .page-hero__label {
  font-size: 16px;
}
body.page-benefits-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-benefits-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-benefits-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-benefits-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-benefits-view .page-hero__title { font-size: 60px; }
}
body.page-benefits-view .page-hero__lead {
  font-size: 24px;
}

/* 将来展望: ヒーローは main の外（body.page-future-view） */
body.page-future-view .page-hero__label {
  font-size: 16px;
}
body.page-future-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-future-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-future-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-future-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-future-view .page-hero__title { font-size: 60px; }
}
body.page-future-view .page-hero__lead {
  font-size: 24px;
}

/* SSAとの国際提携: ヒーローは main の外（body.page-ssa-view） */
body.page-ssa-view .page-hero__label {
  font-size: 16px;
}
body.page-ssa-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-ssa-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-ssa-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-ssa-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-ssa-view .page-hero__title { font-size: 60px; }
}
body.page-ssa-view .page-hero__lead {
  font-size: 24px;
}

/* 会員一覧: ヒーローは main の外（body.page-members-view） */
body.page-members-view .page-hero__label {
  font-size: 16px;
}
body.page-members-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-members-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-members-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-members-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-members-view .page-hero__title { font-size: 60px; }
}
body.page-members-view .page-hero__lead {
  font-size: 24px;
}
body.page-members-view .page-members__title,
body.page-members-view h2.page-members__title,
body.page-members-view .entry-content h2.page-members__title {
  font-size: 36px;
}
body.page-members-view .page-members__link .page-members__link-text {
  font-size: 18px;
}
body.page-members-view .entry-content .page-cta a.btn-page-primary,
body.page-members-view .entry-content .page-cta a.btn-page-outline {
  font-size: 18px;
}

/* セルフストレージとは: ヒーロー・各セクション（body.page-what-is-self-storage-view） */
body.page-what-is-self-storage-view .page-hero__label {
  font-size: 16px;
}
body.page-what-is-self-storage-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-what-is-self-storage-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-what-is-self-storage-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-what-is-self-storage-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-what-is-self-storage-view .page-hero__title { font-size: 60px; }
}
body.page-what-is-self-storage-view .page-hero__lead {
  font-size: 24px;
}
/* 概要セクション見出し */
body.page-what-is-self-storage-view .page-features__overview .page-section__title,
body.page-what-is-self-storage-view .entry-content .page-features__overview h2.page-section__title {
  font-size: 36px;
}
/* 種類と特徴: トップ「JSSAの活動内容」.page-about__activities と同タイポ */
body.page-what-is-self-storage-view section.page-features .page-section__title,
body.page-what-is-self-storage-view .entry-content section.page-features h2.page-section__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  margin-bottom: 2.5rem;
}
@media (min-width: 640px) {
  body.page-what-is-self-storage-view section.page-features .page-section__title,
  body.page-what-is-self-storage-view .entry-content section.page-features h2.page-section__title {
    font-size: 2.25rem;
  }
}
body.page-what-is-self-storage-view .page-features__card-title {
  margin: 0 0 1rem 0;
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--color-primary);
}
body.page-what-is-self-storage-view .page-features__card-desc {
  margin: 0;
  font-size: var(--font-size-body);
  color: var(--color-muted-foreground);
  line-height: 1.6;
}
/* こんな方におすすめ */
body.page-what-is-self-storage-view .page-usage__wrap .page-section__title,
body.page-what-is-self-storage-view .entry-content .page-usage__wrap h2.page-section__title {
  font-size: 36px;
}
body.page-what-is-self-storage-view .entry-content .page-cta a.btn-page-primary,
body.page-what-is-self-storage-view .entry-content .page-cta a.btn-page-outline {
  font-size: 18px;
}

/* お問い合わせ: ヒーロー + .page-form-section 内を 18px に統一（body.page-contact-view） */
body.page-contact-view .page-hero__label {
  font-size: 16px;
}
body.page-contact-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-contact-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-contact-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-contact-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-contact-view .page-hero__title { font-size: 60px; }
}
body.page-contact-view .page-hero__lead {
  font-size: 24px;
}
body.page-contact-view main.site-main .page-section.page-form-section,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__form {
  font-size: 18px;
  line-height: 1.75;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-section__title,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__step-title {
  font-size: 18px;
}
body.page-contact-view main.site-main .page-section.page-form-section h2.page-contact__step-title--confirm,
body.page-contact-view main.site-main .page-section.page-form-section h2.page-contact__step-title--complete {
  font-size: 24px;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__legend {
  font-size: 18px;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__form .page-contact__input,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__form .page-contact__textarea {
  font-size: 18px;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__privacy {
  font-size: 18px;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__notice {
  font-size: 18px;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__confirm-lead,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__complete-lead,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__complete-sub {
  font-size: 18px;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__confirm-row {
  font-size: 18px;
}
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__submit .page-contact__submit-btn.btn-page-primary,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__confirm-actions .page-contact__submit-btn,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__back-btn,
body.page-contact-view main.site-main .page-section.page-form-section .page-contact__complete-actions .btn-page-primary {
  font-size: 18px;
}

/* 資料請求（body.page-request-view）：ヒーロー・フォーム欄 */
body.page-request-view .page-hero__label {
  font-size: 16px;
}
body.page-request-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-request-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-request-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-request-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-request-view .page-hero__title { font-size: 60px; }
}
body.page-request-view .page-hero__lead {
  font-size: 24px;
}
body.page-request-view main.site-main .page-section.page-form-section,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__form {
  font-size: 18px;
  line-height: 1.75;
}
body.page-request-view main.site-main .page-section.page-form-section .page-section__title,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__step-title {
  font-size: 18px;
}
body.page-request-view main.site-main .page-section.page-form-section h2.page-request__form-title {
  font-size: 30px;
}
body.page-request-view main.site-main .page-section.page-form-section h2.page-contact__step-title--confirm,
body.page-request-view main.site-main .page-section.page-form-section h2.page-contact__step-title--complete {
  font-size: 24px;
}
body.page-request-view main.site-main .page-section.page-form-section .page-contact__legend {
  font-size: 18px;
}
body.page-request-view main.site-main .page-section.page-form-section .page-contact__form .page-contact__input,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__form .page-contact__textarea {
  font-size: 18px;
}
body.page-request-view main.site-main .page-section.page-form-section .page-contact__privacy {
  font-size: 18px;
}
body.page-request-view main.site-main .page-section.page-form-section .page-contact__notice {
  font-size: 18px;
}
body.page-request-view main.site-main .page-section.page-form-section .page-contact__confirm-lead,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__complete-lead,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__complete-sub {
  font-size: 18px;
}
body.page-request-view main.site-main .page-section.page-form-section .page-contact__confirm-row {
  font-size: 18px;
}
body.page-request-view main.site-main .page-section.page-form-section .page-contact__submit .page-contact__submit-btn.btn-page-primary,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__confirm-actions .page-contact__submit-btn,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__back-btn,
body.page-request-view main.site-main .page-section.page-form-section .page-contact__complete-actions .btn-page-primary {
  font-size: 18px;
}

/* プライバシーポリシー（body.page-privacy-view）：ヒーロー・本文幅80%・可変タイポ */
body.page-privacy-view .page-hero__label {
  font-size: 16px;
}
body.page-privacy-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-privacy-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-privacy-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-privacy-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-privacy-view .page-hero__title { font-size: 60px; }
}
body.page-privacy-view main.site-main .page-section.page-privacy .page-privacy__inner {
  width: 80%;
  max-width: none;
  margin-left: auto;
  margin-right: auto;
  padding-left: 0;
  padding-right: 0;
  box-sizing: border-box;
}
body.page-privacy-view .page-privacy__body {
  font-size: clamp(1.0625rem, 0.75vw + 0.8rem, 1.5rem);
  line-height: 1.625;
}
body.page-privacy-view .page-privacy__body h2,
body.page-privacy-view .page-privacy__body .wp-block-heading {
  font-size: clamp(1.375rem, 1vw + 1rem, 2rem);
  font-weight: 700;
  color: var(--color-foreground);
}
body.page-privacy-view .page-privacy__body .page-privacy__contact-box,
body.page-privacy-view .page-privacy__body .page-privacy__contact-box p {
  font-size: inherit;
  line-height: inherit;
}

/* サイトマップ（body.page-sitemap-view）：ヒーロー・リンク一覧の可変タイポ */
body.page-sitemap-view .page-hero__label {
  font-size: 16px;
}
body.page-sitemap-view .page-hero__title {
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
  font-size: clamp(1.875rem, 5vw + 0.625rem, 3.75rem);
}
body.page-sitemap-view .entry-content h2.page-sitemap__group-title,
body.page-sitemap-view .page-sitemap__group-title {
  font-size: clamp(1.25rem, 1.6vw + 0.95rem, 2.5rem);
  font-weight: 600;
  line-height: 1.35;
}
body.page-sitemap-view .entry-content .page-sitemap__links li,
body.page-sitemap-view .page-sitemap__links li {
  font-size: clamp(1rem, 1.1vw + 0.72rem, 1.5rem);
}
body.page-sitemap-view .entry-content .page-sitemap__links a,
body.page-sitemap-view .page-sitemap__links a {
  font-size: inherit;
}

/* イベント情報（body.page-events-view）：ヒーロー・イベント一覧・お知らせの可変タイポ */
body.page-events-view .page-hero__label {
  font-size: 16px;
}
body.page-events-view .page-hero__title {
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
  font-size: clamp(1.875rem, 5vw + 0.625rem, 3.75rem);
}
body.page-events-view .page-hero__lead {
  font-size: clamp(1.0625rem, 0.85vw + 0.82rem, 1.5rem);
}
body.page-events-view .page-section__title,
body.page-events-view .entry-content h2.page-section__title {
  font-size: clamp(1.5rem, 1.5vw + 1.1rem, 2.25rem);
  line-height: 1.25;
}
body.page-events-view .page-events__date {
  font-size: clamp(0.8125rem, 0.35vw + 0.74rem, 1rem);
}
body.page-events-view .page-events__badge.page-events__badge--accepting,
body.page-events-view .page-events__badge.page-events__badge--ended {
  font-size: clamp(0.8125rem, 0.35vw + 0.74rem, 1rem);
}
body.page-events-view .page-events__card-title {
  font-size: clamp(1.0625rem, 1.1vw + 0.82rem, 1.5rem);
}
body.page-events-view .page-events__card-desc {
  font-size: clamp(0.9375rem, 0.65vw + 0.78rem, 1.125rem);
}
body.page-events-view .page-events__link {
  font-size: clamp(0.9375rem, 0.65vw + 0.78rem, 1.125rem);
}
body.page-events-view .page-events-news-tab {
  font-size: clamp(0.9375rem, 0.65vw + 0.78rem, 1.125rem);
}
body.page-events-view .page-events__news-date,
body.page-events-view .page-events__news-title {
  font-size: clamp(1rem, 0.75vw + 0.82rem, 1.25rem);
}

/* 会員向けトップ固定ページ（/special-member/news/）：ヒーロー・お知らせ。最大サイズは指定 px に合わせ、画面幅で clamp */
body.page-member-top-view .page-hero__label {
  font-size: clamp(0.8125rem, 0.45vw + 0.7rem, 1rem);
  line-height: 1.4;
}
body.page-member-top-view .page-hero__title {
  font-size: clamp(1.875rem, 4vw + 1rem, 3.75rem);
  line-height: 1.2;
}
body.page-member-top-view .page-hero__lead {
  font-size: clamp(1rem, 1.25vw + 0.78rem, 1.5rem);
  line-height: 1.65;
}
body.page-member-top-view .page-section__title,
body.page-member-top-view .entry-content h2.page-section__title {
  font-size: clamp(1.5rem, 2vw + 0.9rem, 2.25rem);
  line-height: 1.25;
}
body.page-member-top-view .page-events-news-tab {
  font-size: clamp(1rem, 0.75vw + 0.82rem, 1.25rem);
}
body.page-member-top-view .page-events__news-date,
body.page-member-top-view .page-events__news-title {
  font-size: clamp(1rem, 0.75vw + 0.82rem, 1.25rem);
}
body.page-member-top-view .page-events__badge.page-events__badge--accepting,
body.page-member-top-view .page-events__badge.page-events__badge--ended {
  font-size: clamp(1rem, 0.75vw + 0.82rem, 1.25rem);
}

/* 会員向けお知らせ詳細（single jssa_member_news）：ヒーロー・本文。イベント詳細（page-events-detail-view）とは body を分離 */
body.page-member-news-detail-view .page-events-detail__back,
body.page-member-news-detail-view .page-events-detail__date {
  font-size: clamp(1rem, 1.25vw + 0.78rem, 1.5rem);
  line-height: 1.5;
}
body.page-member-news-detail-view .page-events-detail__title {
  font-size: clamp(1.875rem, 4vw + 1rem, 3.75rem);
  line-height: 1.2;
}
body.page-member-news-detail-view .page-events-detail__hero-excerpt {
  font-size: clamp(1rem, 1.25vw + 0.78rem, 1.5rem);
  line-height: 1.65;
}
body.page-member-news-detail-view .page-events-detail__hero-excerpt p {
  font-size: inherit;
}
body.page-member-news-detail-view h2.page-events-detail__section-title {
  font-size: clamp(1.5rem, 2vw + 0.9rem, 2.25rem);
  line-height: 1.3;
}
body.page-member-news-detail-view .page-events-detail__description,
body.page-member-news-detail-view .page-events-detail__description.entry-content {
  font-size: clamp(1rem, 1.25vw + 0.78rem, 1.5rem);
  line-height: 1.65;
}
body.page-member-news-detail-view .page-events-detail__description.entry-content p,
body.page-member-news-detail-view .page-events-detail__description.entry-content li,
body.page-member-news-detail-view .page-events-detail__description.entry-content td,
body.page-member-news-detail-view .page-events-detail__description.entry-content th {
  font-size: inherit;
}
body.page-member-news-detail-view .page-events-detail__btn,
body.page-member-news-detail-view .btn-page-primary.page-events-detail__btn {
  font-size: clamp(1rem, 1.25vw + 0.78rem, 1.5rem);
  line-height: 1.45;
}
body.page-member-news-detail-view .page-events-detail__meta {
  font-size: clamp(1rem, 1.25vw + 0.78rem, 1.5rem);
  line-height: 1;
  align-items: center;
}
body.page-member-news-detail-view .page-events-detail__date-icon {
  display: inline-flex;
  align-items: center;
  font-size: 1em;
  line-height: 1;
}
body.page-member-news-detail-view .page-events-detail__date-icon svg {
  width: 1em;
  height: 1em;
  display: block;
  flex-shrink: 0;
}
body.page-member-news-detail-view .page-events-detail__back-icon {
  display: inline-flex;
  align-items: center;
  font-size: 1em;
  line-height: 1;
}
body.page-member-news-detail-view .page-events-detail__back-icon svg {
  width: 1em;
  height: 1em;
  display: block;
  flex-shrink: 0;
}
body.page-member-news-detail-view .btn-page-primary.page-events-detail__btn .page-events-detail__btn-icon,
body.page-member-news-detail-view .btn-page-outline-light.page-events-detail__btn .page-events-detail__btn-icon {
  display: inline-flex;
  align-items: center;
  line-height: 1;
  font-size: 1em;
}
body.page-member-news-detail-view .btn-page-primary.page-events-detail__btn .page-events-detail__btn-icon svg,
body.page-member-news-detail-view .btn-page-outline-light.page-events-detail__btn .page-events-detail__btn-icon svg {
  width: 1em;
  height: 1em;
  display: block;
  flex-shrink: 0;
}

/* イベント詳細（body.page-events-detail-view）：CPT／レガシー event_id。会員ニュース詳細は別 body のため対象外 */
body.page-events-detail-view .page-events-detail__back,
body.page-events-detail-view .page-events-detail__date,
body.page-events-detail-view .page-events-detail__badge {
  font-size: clamp(0.9375rem, 1.1vw + 0.82rem, 1.5rem);
}
body.page-events-detail-view .page-events-detail__title {
  font-size: clamp(1.875rem, 5vw + 0.625rem, 3.75rem);
  line-height: 1.2;
}
body.page-events-detail-view .page-events-detail__section-title,
body.page-events-detail-view .page-events-detail__flyer-title,
body.page-events-detail-view .page-events-detail__description.entry-content h3.page-events-detail__section-title {
  font-size: clamp(1.5rem, 1.5vw + 1.1rem, 2.25rem);
  line-height: 1.3;
}
body.page-events-detail-view .page-events-detail__description,
body.page-events-detail-view .page-events-detail__description.entry-content {
  font-size: clamp(1.0625rem, 0.85vw + 0.82rem, 1.5rem);
  line-height: 1.6;
}
body.page-events-detail-view .page-events-detail__detail-title {
  font-size: clamp(1.375rem, 1vw + 1rem, 2rem);
  line-height: 1.3;
}
body.page-events-detail-view .page-events-detail__dd {
  font-size: clamp(0.9375rem, 0.65vw + 0.78rem, 1.125rem);
  line-height: 1.55;
}
body.page-events-detail-view .btn-page-primary.page-events-detail__btn {
  font-size: clamp(1.0625rem, 0.85vw + 0.78rem, 1.5rem);
}
body.page-events-detail-view .page-events-detail__date-icon {
  font-size: clamp(0.9375rem, 1.1vw + 0.82rem, 1.5rem);
  line-height: 1;
}
body.page-events-detail-view .page-events-detail__date-icon svg {
  width: 1em;
  height: 1em;
  display: block;
  flex-shrink: 0;
}
body.page-events-detail-view .btn-page-primary.page-events-detail__btn .page-events-detail__btn-icon {
  display: inline-flex;
  align-items: center;
  line-height: 1;
}
body.page-events-detail-view .btn-page-primary.page-events-detail__btn .page-events-detail__btn-icon svg {
  width: 1em;
  height: 1em;
  display: block;
  flex-shrink: 0;
}

/* 入会案内（body.page-join-view） */
body.page-join-view .page-hero__label {
  font-size: 16px;
}
body.page-join-view .page-hero__title {
  font-size: 1.875rem;
  font-weight: 700;
  letter-spacing: -0.025em;
  margin: 0;
  line-height: 1.15;
}
@media (min-width: 480px) {
  body.page-join-view .page-hero__title { font-size: 2.25rem; }
}
@media (min-width: 640px) {
  body.page-join-view .page-hero__title { font-size: 2.5rem; }
}
@media (min-width: 768px) {
  body.page-join-view .page-hero__title { font-size: 3rem; }
}
@media (min-width: 1024px) {
  body.page-join-view .page-hero__title { font-size: 60px; }
}
body.page-join-view .page-hero__lead {
  font-size: 24px;
}
body.page-join-view main.site-main .page-join__fee-section h2.page-section__title {
  font-size: 36px;
}
body.page-join-view main.site-main .page-join__fee-section .page-join__fee-table th,
body.page-join-view main.site-main .page-join__fee-section .page-join__fee-table td {
  font-size: 24px;
}
body.page-join-view main.site-main .page-join__benefits-section h2.page-section__title {
  font-size: 36px;
}
body.page-join-view main.site-main .page-join__benefits-section .page-join__benefit-text,
body.page-join-view main.site-main .page-join__benefits-section li {
  font-size: 20px;
}
body.page-join-view main.site-main .page-join__notice-section .page-section__title.page-join__notice-title {
  font-size: 24px;
}
body.page-join-view main.site-main .page-join__notice-section .page-join__notice-list li {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__form {
  font-size: 18px;
  line-height: 1.75;
}
body.page-join-view main.site-main .page-section.page-form-section .page-section__title,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__step-title {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section h2.page-contact__step-title--confirm,
body.page-join-view main.site-main .page-section.page-form-section h2.page-contact__step-title--complete {
  font-size: 24px;
}
body.page-join-view main.site-main .page-section.page-form-section h2.page-join__form-title {
  font-size: 30px;
}
body.page-join-view main.site-main .page-section.page-form-section .page-contact__legend {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section .page-contact__form .page-contact__input,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__form .page-contact__textarea {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section .page-contact__privacy {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section .page-contact__notice {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section .page-contact__confirm-lead,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__complete-lead,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__complete-sub {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section .page-contact__confirm-row {
  font-size: 18px;
}
body.page-join-view main.site-main .page-section.page-form-section .page-contact__submit .page-contact__submit-btn.btn-page-primary,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__confirm-actions .page-contact__submit-btn,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__back-btn,
body.page-join-view main.site-main .page-section.page-form-section .page-contact__complete-actions .btn-page-primary {
  font-size: 18px;
}

.page-greeting__layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  align-items: start;
  width: 100%;
  max-width: none;
  margin: 0;
}
/* 代表写真あり: 写真→本文の縦積み。801px 以上はセクション内で幅 80%（中央寄せ）、800px 以下は 100% */
.page-greeting__layout--with-photo {
  width: 100%;
  margin-left: auto;
  margin-right: auto;
}
@media (min-width: 801px) {
  .page-greeting__layout--with-photo {
    width: 80%;
  }
}
.page-greeting__layout--no-photo {
  grid-template-columns: 1fr;
  gap: 0;
}
.page-greeting__content--full {
  width: 100%;
  max-width: none;
  min-width: 0;
}
/* 代表写真ブロック: グリッド1列で幅いっぱい */
.page-greeting__figure {
  margin: 0;
  width: 100%;
  max-width: none;
  text-align: center;
}
.page-greeting__photo {
  width: 100%;
  max-width: none;
  height: auto;
  border-radius: 0.375rem;
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
  vertical-align: middle;
}
.page-greeting__caption {
  margin-top: 1rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-muted-foreground);
  line-height: 1.5;
}
/* 写真非表示時: 本文末尾の肩書き（詳細度で上書き、内側の span も明示） */
.page-greeting__caption.page-greeting__caption--after-body {
  margin-top: 1.5rem;
  margin-bottom: 0;
  text-align: left;
  font-size: 1rem;
  font-weight: 700;
  color: var(--color-foreground);
  line-height: 1.6;
}
.page-greeting__caption.page-greeting__caption--after-body .page-greeting__caption-part1,
.page-greeting__caption.page-greeting__caption--after-body .page-greeting__caption-part2 {
  font-weight: 700;
}
.page-greeting__caption-part1,
.page-greeting__caption-part2 {
  display: inline;
}
@media (max-width: 466px) {
  .page-greeting__caption-part2 {
    display: block;
    margin-top: 0.35em;
  }
}
.page-greeting__content .page-greeting__body {
  color: var(--color-foreground);
  line-height: 1.8;
  text-align: left;
}
/*
 * 本文・写真下キャプション・本文後肩書き: 草書風（別途 Yuji Syuku を読込）
 */
.page-greeting-main .page-greeting__caption,
.page-greeting-main .page-greeting__content .page-greeting__body {
  font-family:
    "Yuji Syuku",
    "Hannotate TC",
    "HanziPen SC",
    "STXingkai",
    "STXingkai SC",
    "KaiTi",
    "Kaiti SC",
    serif;
  font-size: 20px;
  line-height: 1.8;
}
.page-greeting-main .page-greeting__caption {
  font-weight: 500;
  color: var(--color-muted-foreground);
}
.page-greeting-main .page-greeting__caption.page-greeting__caption--after-body {
  font-weight: 700;
  color: var(--color-foreground);
  line-height: 1.6;
}
.page-greeting__content .page-greeting__body p {
  margin: 0 0 1rem 0;
}
.page-greeting__content .page-greeting__body p:last-child {
  margin-bottom: 0;
}
