/* =============================================================
   Infini Components & Overrides
   - Kadence Global 設定で表現できないものだけをここに書く
   - クラスは .infini-* 接頭辞で名前空間を分ける
   ============================================================= */

/* ---------- Base 微調整 ---------- */
html { -webkit-text-size-adjust: 100%; overflow-x: clip; }  /* 横スクロール防止（sticky を壊さない clip） */
body { overflow-x: clip; }
img, svg, video, iframe { max-width: 100%; }
.entry-content > *,
.wp-block-group__inner-container { max-width: 100%; }

/* 和文の長い見出し・段落が折り返さず横はみ出しするのを防ぐ */
h1, h2, h3, h4, h5, h6,
.entry-title, .site-title,
p, li, dd, dt, figcaption {
  overflow-wrap: anywhere;
}

body {
  /* Kadence が読み込むのは Google フォント名のみ。OS標準の和文フォントを
     フォールバックとして確実に効かせるため、ここでフルスタックを指定する。 */
  font-family: var(--infini-font-body);
  font-feature-settings: "palt" 1;              /* 和文の詰め */
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6,
.wp-block-heading,
.entry-title,
.site-title {
  font-family: var(--infini-font-head);
}

img, video { max-width: 100%; height: auto; }

/* 見出しは明朝 + わずかに字送り。Kadence側でfamily/sizeは設定済みだが字送りだけ補う */
h1, h2, h3, h4,
.wp-block-heading {
  letter-spacing: var(--infini-tracking-head);
  font-feature-settings: "palt" 1;
}

/* 本文リンクの下線（可読性重視：色だけに頼らない） */
.entry-content a:not(.wp-block-button__link):not(.button):not(.kb-button) {
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
}

/* ---------- アクセシビリティ ---------- */
:where(a, button, input, select, textarea, .wp-block-button__link, summary):focus-visible {
  outline: none;
  box-shadow: var(--infini-focus-ring);
  border-radius: var(--infini-radius-s);
}

.infini-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 999;
  padding: 0.75rem 1.25rem;
  background: var(--infini-surface);
  color: var(--infini-primary);
  font-weight: 700;
  box-shadow: var(--infini-shadow-m);
}
.infini-skip-link:focus { left: 0.5rem; top: 0.5rem; }

/* ---------- レイアウトヘルパー ---------- */
.infini-container { max-width: var(--infini-container); margin-inline: auto; padding-inline: var(--infini-gutter); }
.infini-prose     { max-width: var(--infini-prose); }
.infini-prose p   { line-height: var(--infini-lh-body); }

.infini-section--xl { padding-block: var(--infini-section-xl); }
.infini-section--l  { padding-block: var(--infini-section-l); }
.infini-section--m  { padding-block: var(--infini-section-m); }
.infini-section--s  { padding-block: var(--infini-section-s); }

.infini-bg-alt  { background: var(--infini-surface-alt); }
.infini-bg-deep { background: var(--infini-surface-deep); }

/* ---------- Eyebrow（セクション小見出しラベル） ---------- */
.infini-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--infini-space-2xs);
  font-family: var(--infini-font-body);
  font-size: var(--infini-text-xs);
  font-weight: 700;
  letter-spacing: var(--infini-tracking-label);
  color: var(--infini-primary);
  margin: 0 0 var(--infini-space-xs);
}
.infini-eyebrow::before {
  content: "";
  width: 1.75rem;
  height: 2px;
  background: var(--infini-gold);
  display: inline-block;
}

/* ---------- Section heading ---------- */
.infini-heading {
  font-family: var(--infini-font-head);
  font-size: var(--infini-h2);
  line-height: var(--infini-lh-heading);
  color: var(--infini-ink);
  margin-block: 0 var(--infini-space-m);   /* inline margin は空けておく（--center の auto を効かせる） */
  max-width: 24ch;
  text-wrap: balance;   /* 和文見出しの行数を均等に（"いかない" の孤立などを防ぐ） */
  line-break: strict;        /* 禁則処理を厳格に（小書き仮名・長音符の行頭を防ぐ） */
  word-break: auto-phrase;   /* 和文は文節単位で折り返す（"リラクゼーシ／ョン" のような語中改行を防ぐ・非対応ブラウザは無視） */
}
.infini-heading--center { margin-inline: auto; text-align: center; }
.infini-heading__lead {
  font-size: var(--infini-text-lg);
  line-height: var(--infini-lh-lead);
  color: var(--infini-muted);
  max-width: 46ch;
  margin: 0 0 var(--infini-space-l);
}
.infini-heading--center + .infini-heading__lead { margin-inline: auto; text-align: center; }

/* ---------- Buttons ----------
   Kadence の Global Button 設定（塗り色・角丸・タイポ）に加え、
   最低高さ・アイコン整列・モバイル全幅だけを補強する */
.wp-block-button__link,
.kb-button,
.button,
.infini-btn {
  min-height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--infini-space-2xs);
  font-weight: 700;
  line-height: 1.3;
  transition: transform var(--infini-dur) var(--infini-ease),
              box-shadow var(--infini-dur) var(--infini-ease),
              background-color var(--infini-dur) var(--infini-ease);
}
.wp-block-button__link:hover,
.infini-btn:hover { transform: translateY(-1px); box-shadow: var(--infini-shadow-s); }
.wp-block-button__link:active,
.infini-btn:active { transform: translateY(0); box-shadow: none; }

/* モバイルでコンテンツ内CTAは全幅 */
@media (max-width: 767px) {
  .infini-btn-block .wp-block-button,
  .infini-btn-block .wp-block-button__link { width: 100%; }
}

/* Secondary（アウトライン）ボタン */
.infini-btn--outline,
.wp-block-button.is-style-outline > .wp-block-button__link {
  background: transparent;
  color: var(--infini-primary);
  border: 1.5px solid var(--infini-primary);
}
.infini-btn--outline:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
  background: var(--infini-primary-tint);
  color: var(--infini-primary-strong);
  border-color: var(--infini-primary-strong);
}

/* LINE ボタン（淡いグリーン面 + 濃文字 + グリーングリフ：AA準拠） */
.infini-btn--line {
  background: var(--infini-line-green-tint);
  color: var(--infini-ink);
  border: 1.5px solid var(--infini-line-green);
}
.infini-btn--line .infini-btn__glyph { color: var(--infini-line-green); }
.infini-btn--line:hover { background: #DBF3E5; }

/* Tel ボタン */
.infini-btn--tel {
  background: transparent;
  color: var(--infini-primary);
  border: 1.5px solid var(--infini-primary);
}

/* ---------- Card ---------- */
.infini-card {
  background: var(--infini-surface);
  border: 1px solid var(--infini-border);
  border-radius: var(--infini-radius-m);
  padding: clamp(1.25rem, 1rem + 1.4vw, 1.75rem);
}
.infini-card--link { transition: transform var(--infini-dur) var(--infini-ease), box-shadow var(--infini-dur) var(--infini-ease), border-color var(--infini-dur) var(--infini-ease); }
.infini-card--link:hover { transform: translateY(-2px); box-shadow: var(--infini-shadow-s); border-color: var(--infini-border-strong); }

/* 主力商品カード：他より一段強く見せる */
.infini-card--flagship {
  border-radius: var(--infini-radius-l);
  border-color: var(--infini-gold-soft);
  box-shadow: var(--infini-shadow-m);
  padding: clamp(1.5rem, 1rem + 2.5vw, 2.5rem);
}
.infini-card--flagship .infini-card__title { font-size: var(--infini-h3); }

/* 補助商品カード：控えめに */
.infini-card--sub { padding: clamp(1rem, 0.9rem + 0.8vw, 1.25rem); }
.infini-card--sub .infini-card__title { font-size: var(--infini-h4); }

.infini-card__title {
  font-family: var(--infini-font-head);
  color: var(--infini-ink);
  line-height: var(--infini-lh-heading);
  margin: 0 0 var(--infini-space-2xs);
}

/* ---------- Price ---------- */
.infini-price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem 0.75rem; }
.infini-price__num {
  font-family: var(--infini-font-head);
  font-size: clamp(1.75rem, 1.3rem + 2.2vw, 2.5rem);
  font-weight: 700;
  color: var(--infini-ink);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.infini-price__unit { font-size: var(--infini-text-s); color: var(--infini-muted); }
.infini-price__ref {
  font-size: var(--infini-text-s);
  color: var(--infini-faint);
  text-decoration: line-through;
}
.infini-price__note { width: 100%; font-size: var(--infini-text-s); color: var(--infini-muted); }

/* ---------- Badge / Tag ---------- */
.infini-badge {
  display: inline-block;
  font-size: var(--infini-text-xs);
  font-weight: 700;
  letter-spacing: 0.04em;
  padding: 0.25rem 0.75rem;
  border-radius: var(--infini-radius-pill);
  background: var(--infini-surface-alt);
  color: var(--infini-primary);
}
.infini-badge--flag { background: var(--infini-primary); color: #fff; border-radius: var(--infini-radius-s); }

/* 制作中の「要素材」プレースホルダー（公開前に除去する目印） */
.infini-placeholder {
  border: 1px dashed var(--infini-gold);
  background: #FBF6EC;
  color: #8A6A2F;
  border-radius: var(--infini-radius-m);
  padding: var(--infini-space-m);
  font-size: var(--infini-text-s);
}
.infini-placeholder::before { content: "要素材："; font-weight: 700; }

/* ---------- Accordion（KadenceのFAQ/アコーディオンを上品に） ---------- */
.infini-faq .wp-block-details,
.infini-faq details {
  border-bottom: 1px solid var(--infini-border);
  padding: var(--infini-space-m) 0;
}
.infini-faq summary {
  font-weight: 700;
  color: var(--infini-ink);
  font-size: var(--infini-text-base);
  cursor: pointer;
  list-style: none;
  position: relative;
  padding-right: 2rem;
  min-height: 32px;
}
.infini-faq summary::-webkit-details-marker { display: none; }
.infini-faq summary::after {
  content: "";
  position: absolute;
  right: 0.25rem;
  top: 0.55em;
  width: 0.6rem;
  height: 0.6rem;
  border-right: 2px solid var(--infini-primary);
  border-bottom: 2px solid var(--infini-primary);
  transform: rotate(45deg);
  transition: transform var(--infini-dur) var(--infini-ease);
}
.infini-faq details[open] summary { color: var(--infini-primary); }
.infini-faq details[open] summary::after { transform: rotate(225deg); top: 0.75em; }
.infini-faq details > *:not(summary) {
  margin-top: var(--infini-space-s);
  line-height: var(--infini-lh-body);
  color: var(--infini-body);
  max-width: 60ch;
}

/* ---------- スマホ固定CTA ---------- */
.infini-sticky-cta {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: var(--infini-z-sticky-cta);
  display: none;                 /* ≤767px かつ hero 通過後にJSで表示 */
  gap: var(--infini-space-2xs);
  padding: 0.5rem 0.75rem calc(0.5rem + env(safe-area-inset-bottom));
  background: var(--infini-surface);
  border-top: 1px solid var(--infini-border);
  box-shadow: 0 -4px 16px rgba(46, 42, 38, .08);
  transform: translateY(110%);
  transition: transform .28s var(--infini-ease);
}
.infini-sticky-cta.is-visible { transform: translateY(0); }
.infini-sticky-cta a {
  flex: 1 1 0;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--infini-space-2xs);
  border-radius: var(--infini-radius-m);
  font-size: var(--infini-text-s);
  font-weight: 700;
  text-decoration: none;
}
.infini-sticky-cta .infini-sticky-cta__line { background: var(--infini-line-green-tint); color: var(--infini-ink); border: 1.5px solid var(--infini-line-green); }
.infini-sticky-cta .infini-sticky-cta__line svg { color: var(--infini-line-green); }
.infini-sticky-cta .infini-sticky-cta__tel  { background: transparent; color: var(--infini-primary); border: 1.5px solid var(--infini-primary); }
.infini-sticky-cta svg { width: var(--infini-icon-m); height: var(--infini-icon-m); flex: none; }

@media (max-width: 767px) {
  body.infini-has-sticky-cta { padding-bottom: 76px; }
  .infini-sticky-cta { display: flex; }
}

/* ---------- Motion 配慮 ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    transition-duration: .001ms !important;
  }
  .infini-sticky-cta { transition: none; }
}

/* =============================================================
   TOP ページ セクション（S01–S03）
   構造: section.infini-sec[.--variant] > .infini-wrap
         （Kadence は wp:group を .wp-block-group > .wp-block-group__inner-container
          という二重構造で出力する点に注意。レイアウトは __inner-container を狙う）
   ============================================================= */

/* Kadence の .single-content 既定スペーシングを TOP セクション内で解除し、
   Infini のリズムで組み直す（!important は使わず、読み込み順で上書き） */
.single-content .infini-sec { margin: 0; }
.infini-sec .wp-block-group,
.infini-sec p,
.infini-sec h1, .infini-sec h2, .infini-sec h3,
.infini-sec ul, .infini-sec ol,
.infini-sec span,
.infini-sec .wp-block-buttons {
  margin-top: 0;
  margin-bottom: 0;
}
/* Kadence の group 二重ラッパーを素通しさせる */
.infini-sec .wp-block-group,
.infini-sec .wp-block-group__inner-container { display: block; }
/* 各ラッパーの最後の子は下マージンを持たせない */
.infini-sec .infini-wrap > *:last-child,
.infini-sec .infini-wrap > .wp-block-group__inner-container > *:last-child { margin-bottom: 0; }

/* 全幅セクションの共通枠。フロントページは Kadence 側で
   Layout=Fullwidth / Content Style=Unboxed / 縦パディング=Hide にしている前提。 */
.infini-sec {
  width: 100%;
  padding-block: var(--infini-section-l);
}
.infini-sec--hero {
  /* 画像なしヒーロー: 上は広め、下は詰めて重心が上に寄りすぎないように */
  padding-block: var(--infini-section-xl) var(--infini-section-m);
  background: linear-gradient(176deg, var(--infini-bg) 0%, var(--infini-surface-alt) 100%);
}
.infini-sec--alt   { background: var(--infini-surface-alt); }
.infini-sec--plain { background: var(--infini-surface); }

/* 中身の最大幅と左右ガター */
.infini-sec > .wp-block-group__inner-container > .infini-wrap,
.infini-sec .infini-wrap {
  max-width: var(--infini-container);
  margin-inline: auto;
  padding-inline: var(--infini-gutter);
}

/* Unboxed のフロントページで Kadence が残す内側パディングを無効化 */
/* .infini-sec を含むページ（TOP・各サービスLP）は Unboxed の内側余白を無効化 */
.entry-content-wrap:has(.infini-sec) { padding: 0; }

/* ---------- S01 HERO ---------- */
.infini-hero__kicker {
  font-size: var(--infini-text-s);
  letter-spacing: 0.06em;
  color: var(--infini-muted);
  margin-bottom: var(--infini-space-s);
}
.infini-sec--hero h1,
.infini-hero__title {
  font-family: var(--infini-font-head);
  font-size: var(--infini-display);
  line-height: 1.32;
  letter-spacing: -0.035em;   /* Zen Old Mincho の仮名は字送りが広めなので詰める */
  font-feature-settings: "palt" 1;
  color: var(--infini-ink);
  margin-bottom: var(--infini-space-m);
  text-wrap: balance;
  line-break: strict;
  word-break: auto-phrase;
}
.infini-hero__lead {
  font-size: var(--infini-text-lg);
  line-height: 1.9;
  color: var(--infini-body);
  max-width: 34em;
}
.infini-hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--infini-space-s);
  margin-top: var(--infini-space-l);
}
.infini-textlink {
  font-weight: 700;
  color: var(--infini-primary);
  text-decoration: none;
  text-underline-offset: 0.2em;
}
.infini-textlink:hover { text-decoration: underline; }

@media (max-width: 767px) {
  .infini-hero__actions { flex-direction: column; align-items: stretch; }
  .infini-hero__actions .wp-block-button,
  .infini-hero__actions .wp-block-button__link { width: 100%; }
  .infini-hero__actions .infini-textlink { text-align: center; padding-block: var(--infini-space-2xs); }
}

/* ---------- 見出し（TOP セクション共通） ---------- */
.infini-sec .infini-eyebrow  { margin-bottom: var(--infini-space-xs); }
.infini-sec .infini-heading  { margin-bottom: var(--infini-space-m); }
.infini-sec .infini-headblock--center { text-align: center; margin-bottom: var(--infini-space-m); }
.infini-headblock--center .infini-eyebrow { justify-content: center; }
.infini-heading--center      { margin-inline: auto; text-align: center; }

/* ---------- S02 共感（チェックリスト） ---------- */
.infini-sec .infini-check {
  list-style: none;
  margin-top: var(--infini-space-l);
  padding: 0;
  display: grid;
  gap: var(--infini-space-s);
}
@media (min-width: 768px) {
  .infini-sec .infini-check {
    grid-template-columns: 1fr 1fr;
    gap: var(--infini-space-s) var(--infini-space-xl);
  }
}
.infini-check li {
  position: relative;
  padding-left: 2rem;
  line-height: 1.8;
  color: var(--infini-body);
}
.infini-check li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.3em;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 50%;
  background: var(--infini-primary-tint);
}
.infini-check li::after {
  content: "";
  position: absolute;
  left: 0.42rem;
  top: 0.62em;
  width: 0.42rem;
  height: 0.22rem;
  border-left: 2px solid var(--infini-primary);
  border-bottom: 2px solid var(--infini-primary);
  transform: rotate(-45deg);
}
.infini-sec .infini-empathy__note {
  margin-top: var(--infini-space-l);
  color: var(--infini-muted);
  max-width: 30em;
}

/* ---------- S03 Infiniの考え方（3本柱） ---------- */
.infini-sec .infini-lead-center {
  text-align: center;
  max-width: 34em;
  margin: 0 auto var(--infini-space-l);
  color: var(--infini-body);
  line-height: 1.95;
}
/* Kadence の二重ラッパーを grid コンテナにする */
.infini-pillars > .wp-block-group__inner-container {
  display: grid;
  gap: var(--infini-space-l);
}
@media (min-width: 768px) {
  .infini-pillars > .wp-block-group__inner-container {
    grid-template-columns: repeat(3, 1fr);
    gap: var(--infini-space-xl);
  }
}
.infini-sec .infini-pillar { margin: 0; text-align: center; }
.infini-pillar .infini-pillar__icon {
  display: block;
  width: 44px;
  height: 44px;
  margin: 0 auto var(--infini-space-s);
  color: var(--infini-gold);
}
.infini-sec .infini-pillar h3 {
  font-family: var(--infini-font-head);
  font-size: var(--infini-h4);
  color: var(--infini-ink);
  margin-bottom: var(--infini-space-2xs);
}
.infini-sec .infini-pillar p {
  color: var(--infini-muted);
  font-size: var(--infini-text-s);
  line-height: 1.8;
}

/* =============================================================
   TOP ページ セクション（S04–S13）
   S01–S03 と同じ型: section.infini-sec[.--variant] > .infini-wrap
   ============================================================= */

/* Kadence は wp:group を .wp-block-group > .wp-block-group__inner-container の
   二重構造で出力する。グリッド/フレックスのコンテナは常に __inner-container を狙う。 */

/* 汎用 2カラム（テキスト | 画像）。SPで縦積み */
.infini-split > .wp-block-group__inner-container { display: grid; gap: var(--infini-space-l); align-items: start; }
@media (min-width: 900px) {
  .infini-split > .wp-block-group__inner-container { grid-template-columns: 1.15fr 0.85fr; gap: var(--infini-space-2xl); }
  .infini-split--rev > .wp-block-group__inner-container { grid-template-columns: 0.85fr 1.15fr; }
  .infini-split--rev .infini-split__media { order: -1; }
}
.infini-split__media img { display: block; width: 100%; height: auto; border-radius: var(--infini-radius-l); }

.infini-sec figure.wp-block-image { margin: 0; }
.infini-sec figure.wp-block-image img { border-radius: var(--infini-radius-l); display: block; }

/* 左寄せリード文 */
.infini-sec .infini-lead {
  font-size: var(--infini-text-lg);
  line-height: 1.95;
  color: var(--infini-body);
  max-width: 34em;
  margin-bottom: var(--infini-space-l);
}

/* ---------- S04 主力① 3ヶ月ボディメイク（主役セクション） ---------- */
.infini-sec--feature { padding-block: var(--infini-section-xl); }
.infini-sec--feature .infini-heading {
  font-size: clamp(1.75rem, 1.4rem + 1.9vw, 2.4rem);
  max-width: none;          /* 主役見出しは中央寄せ・幅制限なし */
  text-align: center;
  margin-inline: auto;
}

.infini-steps { counter-reset: step; }
.infini-steps > .wp-block-group__inner-container { display: grid; gap: var(--infini-space-l); }
@media (min-width: 768px) { .infini-steps > .wp-block-group__inner-container { grid-template-columns: repeat(4, 1fr); gap: var(--infini-space-m); } }
.infini-step { position: relative; padding-top: var(--infini-space-s); }
.infini-step::before {
  counter-increment: step;
  content: "0" counter(step);
  font-family: var(--infini-font-head);
  font-size: 1rem; letter-spacing: 0.08em;
  color: var(--infini-gold);
  display: block; margin-bottom: var(--infini-space-2xs);
}
@media (min-width: 768px) {
  .infini-step:not(:last-child)::after {
    content: ""; position: absolute; top: 1.15rem;
    right: calc(var(--infini-space-m) / -2);
    width: 6px; height: 6px;
    border-top: 1.5px solid var(--infini-gold-soft);
    border-right: 1.5px solid var(--infini-gold-soft);
    transform: rotate(45deg);
  }
}
.infini-step__label {
  font-family: var(--infini-font-head);
  font-size: var(--infini-h4);
  color: var(--infini-ink);
  margin-bottom: var(--infini-space-2xs);
}
.infini-step__desc { font-size: var(--infini-text-s); color: var(--infini-muted); line-height: 1.8; }

/* 特徴リスト（ゴールドの小ドット / 2カラム） */
.infini-featlist { list-style: none; margin: 0 0 var(--infini-space-l); padding: 0; display: grid; gap: var(--infini-space-xs); }
@media (min-width: 768px) { .infini-featlist { grid-template-columns: 1fr 1fr; gap: var(--infini-space-xs) var(--infini-space-xl); } }
.infini-featlist li { position: relative; padding-left: 1.5rem; color: var(--infini-body); line-height: 1.75; }
.infini-featlist li::before {
  content: ""; position: absolute; left: 0; top: 0.7em;
  width: 6px; height: 6px; border-radius: 50%; background: var(--infini-gold);
}

/* 情報ノート（料金など・後から差し替え可能な枠） */
.infini-notebox {
  border: 1px solid var(--infini-border-strong);
  border-radius: var(--infini-radius-m);
  background: var(--infini-bg);
  padding: var(--infini-space-m);
  max-width: 34em;
  margin-bottom: var(--infini-space-l);
}
.infini-notebox__label {
  font-size: var(--infini-text-xs);
  font-weight: 700; letter-spacing: 0.06em;
  color: var(--infini-primary);
  margin-bottom: var(--infini-space-2xs);
}
.infini-notebox p:last-child { margin-bottom: 0; color: var(--infini-body); }

/* セクション内 CTA 行（左寄せ・ボタン＋補助リンク） */
.infini-cta-row { margin-top: var(--infini-space-m); }
.infini-cta-row > .wp-block-group__inner-container {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: var(--infini-space-s) var(--infini-space-m);
}
@media (max-width: 767px) {
  .infini-cta-row > .wp-block-group__inner-container { flex-direction: column; align-items: stretch; }
  .infini-cta-row .wp-block-button,
  .infini-cta-row .wp-block-button__link { width: 100%; }
  .infini-cta-row .infini-textlink { text-align: center; padding-block: var(--infini-space-2xs); }
}

/* ---------- S06 選ばれる理由（2×2 の番号付き） ---------- */
.infini-reasons { margin-top: var(--infini-space-l); }
.infini-reasons > .wp-block-group__inner-container { display: grid; gap: var(--infini-space-l); }
@media (min-width: 768px) { .infini-reasons > .wp-block-group__inner-container { grid-template-columns: 1fr 1fr; gap: var(--infini-space-xl) var(--infini-space-2xl); } }
.infini-reason__num {
  font-family: var(--infini-font-head);
  font-size: 1.05rem; letter-spacing: 0.08em;
  color: var(--infini-gold);
  display: block; margin-bottom: var(--infini-space-2xs);
}
.infini-reason h3 {
  font-family: var(--infini-font-head);
  font-size: var(--infini-h4);
  color: var(--infini-ink);
  margin-bottom: var(--infini-space-2xs);
}
.infini-reason p { color: var(--infini-muted); font-size: var(--infini-text-s); line-height: 1.85; }

/* ---------- S07 お客様の声（写真グリッド） ---------- */
.infini-voices { margin-top: var(--infini-space-l); }
.infini-voices > .wp-block-group__inner-container { display: grid; gap: var(--infini-card-gap); }
@media (min-width: 768px) { .infini-voices > .wp-block-group__inner-container { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 768px) { .infini-voices--2 > .wp-block-group__inner-container { grid-template-columns: repeat(2, 1fr); max-width: 40rem; } }
.infini-voice {
  background: var(--infini-surface);
  border: 1px solid var(--infini-border);
  border-radius: var(--infini-radius-m);
  padding: var(--infini-space-2xs);
}
.infini-voice img { display: block; width: 100%; height: auto; border-radius: calc(var(--infini-radius-m) - 2px); }
.infini-voices__note { margin-top: var(--infini-space-m); font-size: var(--infini-text-s); color: var(--infini-muted); }

/* ---------- S08 その他のメニュー（控えめなミニカード） ---------- */
.infini-minicards { margin-top: var(--infini-space-l); }
.infini-minicards > .wp-block-group__inner-container { display: grid; gap: var(--infini-card-gap); }
@media (min-width: 600px) { .infini-minicards > .wp-block-group__inner-container { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px) { .infini-minicards > .wp-block-group__inner-container { grid-template-columns: repeat(3, 1fr); } }
.infini-minicard {
  background: var(--infini-surface);
  border: 1px solid var(--infini-border);
  border-radius: var(--infini-radius-m);
  padding: var(--infini-space-m);
}
.infini-minicard h3 {
  font-family: var(--infini-font-head);
  font-size: var(--infini-h4);
  color: var(--infini-ink);
  margin-bottom: var(--infini-space-3xs);
}
.infini-minicard p { font-size: var(--infini-text-s); color: var(--infini-muted); line-height: 1.75; margin-bottom: var(--infini-space-xs); }
.infini-minicard a { font-weight: 700; color: var(--infini-primary); text-decoration: none; font-size: var(--infini-text-s); }
.infini-minicard a:hover { text-decoration: underline; }

/* ---------- S09 ご利用の流れ（縦タイムライン） ---------- */
.infini-flow { list-style: none; margin: var(--infini-space-l) 0 0; padding: 0; max-width: 40em; counter-reset: flow; }
.infini-flow li { position: relative; padding: 0 0 var(--infini-space-l) var(--infini-space-xl); counter-increment: flow; }
.infini-flow li:last-child { padding-bottom: 0; }
.infini-flow li::before {
  content: counter(flow, decimal-leading-zero);
  position: absolute; left: 0; top: -0.15em;
  width: 2rem; height: 2rem;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--infini-font-head);
  font-size: 0.9rem;
  color: var(--infini-primary);
  background: var(--infini-primary-tint);
  border-radius: 50%;
}
.infini-flow li::after {
  content: ""; position: absolute;
  left: calc(1rem - 1px); top: 2rem; bottom: 0.4rem;
  width: 2px; background: var(--infini-gold-soft);
}
.infini-flow li:last-child::after { display: none; }
.infini-flow__label { font-weight: 700; color: var(--infini-ink); }
.infini-flow__desc { display: block; margin-top: 2px; font-size: var(--infini-text-s); color: var(--infini-muted); line-height: 1.8; }

/* ---------- S10 Infiniについて ---------- */
.infini-sec--about { padding-block: var(--infini-section-xl); }
.infini-about__band { margin-top: var(--infini-space-l); }
.infini-about__band img { display: block; width: 100%; height: auto; border-radius: var(--infini-radius-l); }

/* ---------- S12 アクセス（NAP・差し替え可能） ---------- */
.infini-nap { margin-top: var(--infini-space-l); border-top: 1px solid var(--infini-border); max-width: 40em; }
.infini-nap__row {
  display: grid; grid-template-columns: 7rem 1fr; gap: var(--infini-space-s);
  padding: var(--infini-space-s) 0;
  border-bottom: 1px solid var(--infini-border);
  line-height: 1.7;
}
.infini-nap__row dt { font-weight: 700; color: var(--infini-muted); font-size: var(--infini-text-s); }
.infini-nap__row dd { margin: 0; color: var(--infini-body); }
.infini-nap__todo { color: var(--infini-faint); }
.infini-map-placeholder {
  margin-top: var(--infini-space-l);
  border: 1px dashed var(--infini-border-strong);
  border-radius: var(--infini-radius-m);
  background: var(--infini-bg);
  min-height: 180px;
  display: flex; align-items: center; justify-content: center;
  color: var(--infini-faint); font-size: var(--infini-text-s);
}

/* ---------- S13 最終CTA ---------- */
.infini-sec--finalcta {
  padding-block: var(--infini-section-xl);
  background: linear-gradient(184deg, var(--infini-surface-alt) 0%, var(--infini-bg) 100%);
  text-align: center;
}
.infini-sec--finalcta .infini-heading { margin-inline: auto; max-width: 24ch; margin-bottom: var(--infini-space-s); }
.infini-sec--finalcta .infini-finalcta__text {
  max-width: 34em; margin: 0 auto var(--infini-space-l);
  color: var(--infini-body); line-height: 1.95;
}
.infini-finalcta__buttons { display: flex; gap: var(--infini-space-s); justify-content: center; flex-wrap: wrap; }
@media (max-width: 767px) {
  .infini-finalcta__buttons { flex-direction: column; align-items: stretch; }
  .infini-finalcta__buttons .wp-block-button,
  .infini-finalcta__buttons .wp-block-button__link { width: 100%; }
}

/* =============================================================
   S04–S13 コンポーネント間の縦リズム
   （.infini-sec の一括マージン解除より高い詳細度で明示）
   ============================================================= */
.infini-sec .infini-lead        { margin-bottom: var(--infini-space-l); }
.infini-sec .infini-feature__fig { margin-block: var(--infini-space-l); }
.infini-sec .infini-steps       { margin-block: var(--infini-space-xl); }
.infini-sec .infini-subhead     { margin: var(--infini-space-l) 0 var(--infini-space-m); }
.infini-sec .infini-featlist    { margin-bottom: var(--infini-space-l); }
.infini-sec .infini-notebox     { margin-bottom: var(--infini-space-l); }
.infini-sec .infini-cta-row     { margin-top: var(--infini-space-l); }
.infini-sec .infini-cta-row + p { margin-top: var(--infini-space-s); font-size: var(--infini-text-s); color: var(--infini-muted); }
.infini-sec .infini-reasons     { margin-top: var(--infini-space-xl); }
.infini-sec .infini-voices      { margin-top: var(--infini-space-l); }
.infini-sec .infini-voices__note { margin-top: var(--infini-space-m); }
.infini-sec .infini-minicards   { margin-top: var(--infini-space-l); }
.infini-sec .infini-flow        { margin-top: var(--infini-space-l); }
.infini-sec .infini-flow + p    { margin-top: var(--infini-space-m); font-size: var(--infini-text-s); color: var(--infini-muted); }
.infini-sec .infini-breadcrumb  { margin-bottom: var(--infini-space-m); }
.infini-sec .infini-bignum      { margin-bottom: var(--infini-space-m); }
.infini-sec .infini-qa          { margin-top: var(--infini-space-l); }
/* 料金ブロック内部の行間（.infini-sec の一括マージン解除で潰れるぶんを明示的に戻す）。
   価格未確定ページ（名称→補足→注記の3行のみ）でも行がくっつかないように。 */
.infini-sec .infini-priceblock__name { margin-bottom: var(--infini-space-2xs); }
.infini-sec .infini-priceblock__meta { margin-bottom: var(--infini-space-xs); }
.infini-sec .infini-priceblock__note { margin: 0; }
.infini-sec .infini-about__band { margin-top: var(--infini-space-l); }
.infini-sec .infini-about__band + p { margin-top: var(--infini-space-m); }
.infini-sec .infini-nap         { margin-top: var(--infini-space-l); }
.infini-sec .infini-map-placeholder { margin-top: var(--infini-space-l); }

/* S04 主役セクション: 施術画像は横長バンド（人物のプライバシーはボケで担保） */
.infini-feature__fig {
  max-width: 640px;
}
.infini-feature__fig img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  object-position: 12% 58%;   /* 左下寄り＝前景の観葉植物をできるだけ画角外へ */
  border-radius: var(--infini-radius-l);
}

/* S04 小見出し（プログラムに含まれるもの） */
.infini-sec .infini-subhead {
  font-family: var(--infini-font-head);
  font-size: var(--infini-h4);
  color: var(--infini-ink);
}

/* S11 FAQ: 見出しとの間隔＋リスト上端の罫線 */
.infini-faq .infini-heading { margin-bottom: var(--infini-space-l); }
.infini-faq .wp-block-details:first-of-type,
.infini-faq details:first-of-type { border-top: 1px solid var(--infini-border); }

/* --- 仕上げ（STEP6-C 自己改善） --- */

/* 余白を大きく取るセクション（S03 / S06 など） */
.infini-sec--xl { padding-block: var(--infini-section-xl); }

/* 和文のフレーズ単位の折り返し（対応ブラウザのみ・非対応は無視される） */
.infini-hero__lead,
.infini-sec .infini-lead,
.infini-sec .infini-lead-center,
.infini-sec .infini-empathy__note,
.infini-sec .infini-finalcta__text,
.infini-step__desc,
.infini-reason p,
.infini-flow__desc,
.infini-minicard p,
.infini-notebox p {
  word-break: auto-phrase;
}

/* ページ内アンカー（#s04）へのスムーズスクロール＋固定ヘッダー分のオフセット */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}
[id="s04"],
.infini-sec[id] { scroll-margin-top: 88px; }

/* S04 施術画像: 下部にごく淡いビネットを足して“作品として仕上げた”印象に */
.infini-feature__fig { position: relative; max-width: 560px; }
.infini-feature__fig::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: var(--infini-radius-l);
  background: linear-gradient(180deg, rgba(46, 42, 38, 0) 55%, rgba(46, 42, 38, 0.14) 100%);
  pointer-events: none;
}
.infini-flow__label { display: block; }

/* =============================================================
   サービスLP（/diet/ ほか）向けコンポーネント
   ============================================================= */

/* パンくず（Rank Math 出力を整形） */
.infini-breadcrumb { margin-bottom: var(--infini-space-m); }
.infini-breadcrumb .rank-math-breadcrumb p,
.infini-breadcrumb p {
  margin: 0;
  font-size: var(--infini-text-s);
  color: var(--infini-muted);
}
.infini-breadcrumb a { color: var(--infini-muted); text-decoration: none; }
.infini-breadcrumb a:hover { color: var(--infini-primary); text-decoration: underline; }
.infini-breadcrumb .separator { margin: 0 0.4em; color: var(--infini-faint); }

/* D5 大きな数字（全24回・約3ヶ月） */
.infini-bignum {
  font-family: var(--infini-font-head);
  font-size: clamp(1.5rem, 1.2rem + 1.6vw, 2rem);
  color: var(--infini-ink);
  margin-bottom: var(--infini-space-m);
}
.infini-bignum strong { color: var(--infini-primary); font-weight: 700; }

/* D8 料金ブロック（枠付き・差し替え可能） */
.infini-priceblock {
  border: 1px solid var(--infini-gold-soft);
  border-radius: var(--infini-radius-l);
  background: var(--infini-surface);
  padding: clamp(1.5rem, 1rem + 2vw, 2.5rem);
  max-width: 34em;
}
.infini-priceblock__name { font-weight: 700; color: var(--infini-ink); margin-bottom: var(--infini-space-2xs); }
.infini-priceblock__meta { font-size: var(--infini-text-s); color: var(--infini-muted); margin-bottom: var(--infini-space-s); }
.infini-priceblock .infini-price { margin-bottom: var(--infini-space-s); }
.infini-priceblock__note { font-size: var(--infini-text-s); color: var(--infini-muted); margin: 0; }
.infini-sec .infini-priceblock { margin-bottom: var(--infini-space-l); }

/* D9 Q&A（アコーディオンにしない・常時表示） */
.infini-qa { margin-top: var(--infini-space-l); display: grid; gap: var(--infini-space-m); max-width: 44em; }
.infini-qa__item { border-left: 2px solid var(--infini-gold-soft); padding-left: var(--infini-space-m); }
.infini-sec .infini-qa__item h3 {
  font-family: var(--infini-font-body);
  font-size: var(--infini-text-base);
  font-weight: 700;
  color: var(--infini-ink);
  margin-bottom: var(--infini-space-3xs);
}
.infini-sec .infini-qa__item p { color: var(--infini-body); line-height: 1.85; margin: 0; }

/* サービスLP: 施術の説明カード（TOP の minicard を流用しつつ内部リンク無し版も許容） */
.infini-sec .infini-minicard p:last-child { margin-bottom: 0; }
