@charset "UTF-8";
/* ==========================================================================
   さくら葬祭 / 斎場別ランディングページ 共通スタイル
   saijyo-lp.css
   --------------------------------------------------------------------------
   ・浦和斎場ページをモデルケースとして設計した、斎場別LPの共通コンポーネント集。
   ・他斎場（ひかり会館 / 思い出の里会館 / つつじ苑 …）へは本CSSをそのまま流用し、
     HTML側のテキスト・画像・数値のみ差し替えて使用する想定。
   --------------------------------------------------------------------------
   デザインの下敷き： https://rct.tobila.com/
     ・左端に連番レール＋縦ヘアライン
     ・セクション見出しの前に小さな英字ラベル
     ・1pxヘアラインで区切る、角丸・影を使わないフラットな面
     ・大きく太い日本語見出し ＋ 右側に小さめのリード文（2カラム）
     ・左寄せ・フルブリード基調のレイアウト
   配色のみ、さくら葬祭の白＋ピンク（#e40077）を維持しています。
   ========================================================================== */
/* --------------------------------------------------------------------------
   01. デザイントークン
   -------------------------------------------------------------------------- */
:root {
  /* ブランドカラー（本サイト https://sakurasousai.jp/ の #e40077 を基準） */
  --sj-brand:        #e40077;
  --sj-brand-dark:   #b30060;
  --sj-brand-deep:   #7d0042;
  --sj-brand-tint:   #fdf2f7;
  --sj-brand-tint-2: #f9e3ee;

  /* ニュートラル（参照サイトの #0f1524 / #e5e7eb を、ピンクに寄せた色味で） */
  --sj-ink:      #464646;   /* 基本の文字色（真っ黒は使わない） */
  --sj-ink-2:    #5b535e;
  --sj-ink-3:    #8e858f;
  --sj-line:     #e4e1e6;   /* ヘアライン */
  --sj-line-2:   #efedf1;
  --sj-bg:       #ffffff;
  --sj-surface:  #f7f6f8;   /* 極薄グレー面 */
  --sj-surface-2:#faf9fb;

  /* 補助色（事実情報・注記など、CTAと混同させない用途に限定） */
  --sj-info:      #35566e;
  --sj-info-tint: #f1f5f8;
  --sj-note:      #8a6d1f;
  --sj-note-tint: #fdf8e9;

  /* タイポグラフィ（3書体で構成）
       Noto Sans JP  … 本文・UI・カード見出し
       Noto Serif JP … 大見出し（H1 / H2 / H3 / 最終CTA）
       Inter         … 英字ラベル・連番・金額・電話番号など、ラテン文字と数字
     いずれも読み込みに失敗した場合は端末内蔵フォントにフォールバックする */
  --sj-font-sans:  "Noto Sans JP", -apple-system, BlinkMacSystemFont,
                   "Helvetica Neue", "Hiragino Kaku Gothic ProN",
                   "游ゴシック Medium", YuGothic, YuGothicM, Meiryo, sans-serif;
  --sj-font-serif: "Noto Serif JP", "Hiragino Mincho ProN",
                   "ヒラギノ明朝 ProN W3", "游明朝", YuMincho, serif;
  --sj-font-en:    "Inter", -apple-system, BlinkMacSystemFont,
                   "Helvetica Neue", Arial, sans-serif;

  /* 見出し・本文スケール
     SP（375px）の最小値は見やすさ優先で据え置き、PC（1440px）側を引き上げている。
     可変部は「Xvw + Yrem」で375→1440pxを直線で結ぶ形にそろえた
     （vwのみだと1440px付近で最小値に張り付いてしまうため） */
  --sj-fs-display: clamp(2rem, 3.756vw + 1.119rem, 4.5rem);    /* FV見出し 32→72px */
  --sj-fs-h2:      clamp(1.5625rem, 2.16vw + 1.056rem, 3rem);  /* セクション見出し 25→48px */
  --sj-fs-h2-sm:   clamp(1.4rem, 1.277vw + 1.1rem, 2.25rem);   /* 従属的な見出し 22→36px */
  --sj-fs-h3:      clamp(1.125rem, .714vw + .958rem, 1.6rem);  /* 18→26px */
  --sj-fs-lead:    clamp(.875rem, .263vw + .813rem, 1.05rem);  /* 本文パラグラフ 14→16.8px */
  --sj-fs-body:    clamp(.844rem, .188vw + .8rem, .969rem);    /* カード内の本文 13.5→15.5px */
  --sj-fs-sm:      clamp(.78rem, .178vw + .74rem, .9rem);      /* 注記・出典 12.5→14px */
  --sj-fs-label:   clamp(11px, .85vw, 12.5px);                 /* 英字ラベル */

  /* レイアウト
     セクションは画面幅いっぱい。左右の余白は画面幅に対する割合で取る */
  --sj-gutter: 5%;                          /* コンテンツの左右余白 */
  --sj-gutter-section: 10%;                 /* 本文セクションの左右余白（ヘッダー・FV・フッターは --sj-gutter のまま） */

  /* 角丸・影は使わない（フラットな面とヘアラインで構成する） */
  --sj-radius: 0px;

  /* 上下余白（セクションごとに大小をつけてスクロールのリズムを作る） */
  --sj-section-y:    clamp(64px, 10vw, 176px);
  --sj-section-y-lg: clamp(80px, 11.5vw, 216px);
  --sj-section-y-sm: clamp(48px, 6.6vw, 120px);

  /* 追従ヘッダーの高さ（ページ内アンカーの着地位置補正に使用）
     グローバルナビをドロワーに収めたため、全幅で1段 */
  --sj-header-h: 98px;

  /* 画面下部に固定するCTAバーの高さ（body の下余白と共有する） */
  --sj-cta-h: 96px;
}

@media (max-width: 767px) {
  :root { --sj-header-h: 86px; }
}

@media (max-width: 899px) {
  :root { --sj-cta-h: 68px; }
}

/* --------------------------------------------------------------------------
   02. ベース
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  /* 追従ヘッダーに見出しが隠れないようにする */
  scroll-padding-top: calc(var(--sj-header-h) + 12px);
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

body {
  margin: 0;
  font-family: var(--sj-font-sans);
  font-size: 15px;
  font-weight: 400;
  line-height: 1.9;
  color: var(--sj-ink);
  background: var(--sj-bg);
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "palt" 1;
  text-rendering: optimizeLegibility;
  overflow-wrap: break-word;
  /* 画面下部の固定CTAに隠れないよう、ページ全体の下に余白を確保する
     （+1px はバー上辺の罫線ぶん） */
  padding-bottom: calc(var(--sj-cta-h) + 1px);
}

img { max-width: 100%; height: auto; display: block; border: 0; }
a { color: var(--sj-brand-dark); }
a:hover { color: var(--sj-brand); }

h1, h2, h3, h4 { margin: 0; line-height: 1.6; font-weight: 700; }
button { color: inherit; }   /* ブラウザ既定の黒（#000）を使わない */
p { margin: 0 0 1.4em; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0 0 1.4em; padding-left: 1.4em; }
table { border-collapse: collapse; width: 100%; }

:focus-visible { outline: 2px solid var(--sj-brand); outline-offset: 2px; }

.sj-visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip: rect(0 0 0 0); clip-path: inset(50%);
  overflow: hidden; white-space: nowrap;
}

/* セクションの内容領域。幅は常に100%、左右の余白は10%で統一する。
   （幅の出し分けは行わないため --narrow / --wide の修飾は用意していない。
     文章の行長を抑えたい箇所は .sj-faq のように個別に max-width を指定する） */
.sj-container {
  width: 100%;
  max-width: none;
  margin-inline: 0;
  padding-inline: var(--sj-gutter);
}
/* 本文セクション（02以降〜最終CTA・関連リンク）は左右10%。
   ヘッダー・パンくず・FV・固定CTA・フッターは対象外 */
.sj-section > .sj-container,
.sj-finalcta > .sj-container { padding-inline: var(--sj-gutter-section); }
/* スマホでは10%だと本文幅が狭くなりすぎるため、共通の5%に戻す */
@media (max-width: 767px) {
  .sj-section > .sj-container,
  .sj-finalcta > .sj-container { padding-inline: var(--sj-gutter); }
}

/* --------------------------------------------------------------------------
   03. セクション（左端の連番レール ＋ ヘアライン）
   -------------------------------------------------------------------------- */
/* セクションは上辺のヘアラインだけで区切る
   （各セクションの data-num 属性は残してあるので、連番表示を復活させたい場合は
     ここで ::before { content: attr(data-num) } を書けばよい） */
.sj-section {
  padding-block: var(--sj-section-y);
  border-top: 1px solid var(--sj-line);
}

.sj-section--lg { padding-block: var(--sj-section-y-lg); }
/* 上の罫線を消す（FV直下のセクションなど） */
.sj-section--noline { border-top: 0; }
/* 前後のセクションとの間隔を詰める（「浦和斎場とは」→「基本情報」で約100px） */
.sj-section--flush-bottom { padding-bottom: 0; }
.sj-section--tight-top { padding-top: clamp(40px, 5.3vw, 76px); }   /* 見出しの上マージンと合わせて約100px */
.sj-section--sm { padding-block: var(--sj-section-y-sm); }

.sj-section--tint { background-color: var(--sj-surface); }
.sj-section--warm { background-color: var(--sj-surface-2); }
.sj-section--brand { background-color: var(--sj-brand-tint); }

/* --------------------------------------------------------------------------
   04. セクション見出し
   参照サイトにならい、見出しは左寄せで大きく、リード文は右側に小さく置く
   -------------------------------------------------------------------------- */
.sj-section-head { margin-bottom: clamp(36px, 5.5vw, 100px); }

/* リード文があるときは 見出し左 / リード右 の2カラムにする */
@media (min-width: 1024px) {
  .sj-section-head:has(.sj-lead) {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 23em);
    column-gap: clamp(40px, 5.9vw, 133.12px);
    align-items: end;
  }
  .sj-section-head:has(.sj-lead) .sj-eyebrow { grid-column: 1; grid-row: 1; }
  .sj-section-head:has(.sj-lead) .sj-h2,
  .sj-section-head:has(.sj-lead) .sj-h3 { grid-column: 1; grid-row: 2; }
  .sj-section-head:has(.sj-lead) .sj-lead {
    grid-column: 2; grid-row: 1 / span 2;
    align-self: end;
    margin-top: 0;
    padding-bottom: .6em;
  }
}
/* リード文を見出しの下に置く版（2カラムにしない・1行で流す） */
.sj-section-head.sj-section-head--stack { display: block; }
.sj-section-head.sj-section-head--stack .sj-lead { max-width: none; margin-top: clamp(32px, 3.6vw, 50px); padding-bottom: 0; }   /* PCで約50px */
/* 見出し（とリード）を中央寄せにする版。下線のピンクも中央に置く */
.sj-section-head.sj-section-head--center { text-align: center; }
.sj-section-head--center .sj-h2 { margin-inline: auto; padding-inline: .7em; }
.sj-section-head--center .sj-h2::after { left: 50%; transform: translateX(-50%); }
.sj-section-head--center .sj-lead { margin-inline: auto; }

/* 英字ラベル（参照サイトのコードタグ風ラベルの位置・サイズを踏襲） */
.sj-eyebrow {
  display: inline-block;
  padding: 5px 11px;
  background: var(--sj-surface);
  font-family: var(--sj-font-en);
  font-size: var(--sj-fs-label);
  font-weight: 700;
  line-height: 1;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--sj-brand);
}
.sj-section--tint .sj-eyebrow,
.sj-section--warm .sj-eyebrow { background: #fff; }

.sj-h2 {
  position: relative;
  width: fit-content;
  max-width: 100%;
  margin-top: clamp(1rem, 1.89vw, 2.18rem);
  /* 下線：文字幅より少し長いグレーの線＋左端にピンクの短い線 */
  padding: 0 1.4em .3em 0;
  border-bottom: 1px solid var(--sj-line);
  font-family: var(--sj-font-serif);
  font-size: var(--sj-fs-h2);
  font-weight: 500;
  line-height: 1.55;
  letter-spacing: .03em;
}
.sj-h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -1px;
  width: min(3em, 34%);
  height: 2px;
  background: var(--sj-brand);
}
.sj-h2--sm { font-size: var(--sj-fs-h2-sm); }
.sj-h2 em { font-style: normal; color: var(--sj-brand); }

.sj-h3 {
  font-family: var(--sj-font-serif);
  font-size: var(--sj-fs-h3);
  font-weight: 600;
  line-height: 1.6;
  letter-spacing: .03em;
}

.sj-lead {
  margin-top: clamp(1rem, 1.89vw, 2.18rem);
  max-width: 34em;
  font-size: var(--sj-fs-lead);
  line-height: 2;
  color: var(--sj-ink-2);
}

/* 注記・出典表示 */
.sj-note {
  margin-top: 24px;
  padding: 16px 20px;
  border: 1px solid var(--sj-note);
  border-left-width: 3px;
  background: var(--sj-note-tint);
  font-size: var(--sj-fs-sm);
  line-height: 1.85;
  color: #6b551a;
}
.sj-note strong { color: #5a4715; }
.sj-note p { margin-bottom: .6em; }

.sj-source {
  margin-top: 18px;
  font-size: var(--sj-fs-sm);
  line-height: 1.85;
  color: var(--sj-ink-3);
}
.sj-source--xs { font-size: clamp(.75rem, .094vw + .715rem, .8125rem); }   /* 12→13px。料金表まわりの長い注記用 */

/* --------------------------------------------------------------------------
   05. ボタン
   面はフラット。主要CTAのみピル型（参照サイトのヘッダーCTAに準拠）
   -------------------------------------------------------------------------- */
.sj-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  min-height: clamp(56px, 1.5vw + 50px, 66px);
  padding: 12px clamp(28px, 1.3vw + 23px, 36px);
  border: 1px solid transparent;
  border-radius: 999px;
  font-family: var(--sj-font-sans);
  font-size: clamp(.875rem, .263vw + .813rem, 1rem);
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1.5;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s;
}
.sj-btn::after {
  content: "";
  flex: none;
  width: 15px; height: 7px;
  background: currentColor;
  clip-path: polygon(0 40%, 68% 40%, 68% 0, 100% 50%, 68% 100%, 68% 60%, 0 60%);
  transition: transform .2s;
}
.sj-btn:hover::after { transform: translateX(3px); }

.sj-btn--primary {
  background: var(--sj-brand);
  border-color: var(--sj-brand);
  color: #fff;
}
.sj-btn--primary:hover { background: var(--sj-brand-dark); border-color: var(--sj-brand-dark); color: #fff; }

.sj-btn--tel,
.sj-btn--ghost {
  background: transparent;
  border-color: var(--sj-brand);
  color: var(--sj-brand-dark);
}
.sj-btn--tel:hover,
.sj-btn--ghost:hover { background: var(--sj-brand); border-color: var(--sj-brand); color: #fff; }

.sj-btn--light {
  background: #fff;
  border-color: #fff;
  color: var(--sj-brand-dark);
}
.sj-btn--light:hover { background: var(--sj-brand-tint); color: var(--sj-brand-deep); }

.sj-btn--sm { min-height: 48px; padding: 8px 22px; font-size: clamp(.8rem, .188vw + .73rem, .9rem); }
.sj-btn--lg { min-height: 72px; padding-inline: 38px; font-size: clamp(.95rem, .282vw + .879rem, 1.1rem); }
.sj-btn--block { width: 100%; }
.sj-btn--r6 { border-radius: 6px; }   /* 角丸6pxのボタン */

/* カード内の従属ボタンは角のあるフラットな面にする */
.sj-btn--flat { border-radius: 0; border-color: var(--sj-line); color: var(--sj-ink); }
.sj-btn--flat:hover { border-color: var(--sj-brand); background: var(--sj-brand); color: #fff; }
/* プランカードのボタン（白地・角丸6px。全カード共通） */
.sj-btn--plan {
  border-radius: 6px;
  border-color: var(--sj-line);
  background: #fff;
  color: var(--sj-ink);
}
.sj-btn--plan:hover { border-color: var(--sj-brand); background: #fff; color: var(--sj-brand); }

/* テキストリンク（→付き） */
.sj-textlink {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--sj-brand);
  font-size: .9rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-decoration: none;
  color: var(--sj-brand-dark);
}
.sj-textlink::after {
  content: "";
  width: 16px; height: 7px;
  background: currentColor;
  clip-path: polygon(0 40%, 68% 40%, 68% 0, 100% 50%, 68% 100%, 68% 60%, 0 60%);
  transition: transform .2s;
}
.sj-textlink:hover::after { transform: translateX(3px); }

/* 大きめのテキストリンク。矢印を丸囲みにして目立たせる */
.sj-textlink--lg {
  gap: 14px;
  padding-bottom: 8px;
  font-size: clamp(1rem, .28vw + .93rem, 1.2rem);   /* 16→19px */
}
.sj-textlink--lg::after { content: none; }
.sj-textlink__arrow {
  flex: none;
  display: grid;
  place-items: center;
  width: 36px;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--sj-brand);
  transition: transform .2s, background-color .2s;
}
.sj-textlink__arrow::before {
  content: "";
  width: 14px; height: 7px;
  background: #fff;
  clip-path: polygon(0 40%, 68% 40%, 68% 0, 100% 50%, 68% 100%, 68% 60%, 0 60%);
}
.sj-textlink--lg:hover .sj-textlink__arrow { transform: translateX(3px); background: var(--sj-brand-dark); }

/* --------------------------------------------------------------------------
   06. ヘッダー
   -------------------------------------------------------------------------- */
.sj-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: saturate(150%) blur(6px);
}
.sj-header__inner {
  display: flex;
  align-items: center;
  gap: 20px;
  min-height: 98px;
  padding-block: 24px;
  max-width: none;
}
.sj-header__logo { flex: none; line-height: 0; }
.sj-header__logo img { width: 260px; }

/* サイト説明文は現在非表示（再表示する場合は display の行を削除する） */
.sj-header__site-desc {
  display: none;
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-size: 13px;
  font-weight: 400;
  line-height: 1.75;
  color: var(--sj-ink-3);
}

/* ハンバーガーは常に右端に置く */
.sj-header__actions {
  flex: none;
  display: flex;
  align-items: center;
  gap: 14px;
  margin-left: auto;
}

/* 電話番号・お問い合わせボタンは現在非表示
   （再表示する場合はこの2行を削除する。問い合わせ導線はSP固定CTAと各セクションのCTAが担う） */
.sj-header__tel { display: none; }
.sj-header__actions .sj-btn { display: none; }

.sj-header__tel-label {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--sj-brand);
}
.sj-header__tel-num {
  display: block;
  font-family: var(--sj-font-en);
  font-size: 25px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .01em;
  color: var(--sj-ink);
}

/* --- ハンバーガーボタン（全幅で表示） --- */
.sj-navtoggle {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  /* 枠線は出さないが、タップしやすいよう当たり判定は46px角を確保する */
  width: 46px; height: 46px;
  padding: 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.sj-navtoggle span {
  display: block;
  width: 24px; height: 1.5px;
  background: var(--sj-ink);
  transition: transform .2s, opacity .2s, background-color .2s;
}
.sj-navtoggle:hover span { background: var(--sj-brand); }
.sj-navtoggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
.sj-navtoggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.sj-navtoggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

/* --- ドロワーメニュー（右からスライドするパネル＋背景の暗幕） --- */
.sj-drawer {
  position: fixed;
  inset: 0;
  z-index: 200;
  visibility: hidden;
  transition: visibility 0s linear .45s;   /* 閉じるアニメーションが終わってから隠す */
}
.sj-drawer.is-open { visibility: visible; transition-delay: 0s; }
html.is-nav-open { overflow: hidden; }   /* 開いている間は背面をスクロールさせない */

.sj-drawer__overlay {
  position: absolute;
  inset: 0;
  background: rgba(23, 20, 26, .45);
  opacity: 0;
  cursor: pointer;
  transition: opacity .45s ease;
}
.sj-drawer.is-open .sj-drawer__overlay { opacity: 1; }

.sj-gnav {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  display: flex;
  flex-direction: column;
  width: min(440px, 88vw);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 0 clamp(24px, 3vw, 44px) clamp(28px, 3vw, 40px);
  background: #fff;
  box-shadow: -12px 0 40px rgba(23, 20, 26, .12);
  /* スクロールバーは細く・薄く */
  scrollbar-width: thin;
  scrollbar-color: rgba(23, 20, 26, .14) transparent;
  transform: translateX(100%);
  transition: transform .45s cubic-bezier(.22, .61, .36, 1);
}
/* 上辺にブランドカラーの細い帯 */
.sj-gnav::before {
  content: "";
  position: sticky;
  top: 0;
  display: block;
  flex: none;
  height: 4px;
  margin-inline: calc(clamp(24px, 3vw, 44px) * -1);
  background: linear-gradient(90deg, var(--sj-brand), #f06aa8);
}
.sj-drawer.is-open .sj-gnav { transform: none; }
/* Safari など scrollbar-width 非対応のブラウザ向け */
.sj-gnav::-webkit-scrollbar { width: 4px; }
.sj-gnav::-webkit-scrollbar-track { background: transparent; }
.sj-gnav::-webkit-scrollbar-thumb { border-radius: 4px; background: rgba(23, 20, 26, .14); }

.sj-gnav__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 0 26px;
}
.sj-gnav__logo { width: 170px; }
/* 閉じるボタン（×） */
.sj-gnav__close {
  position: relative;
  flex: none;
  width: 44px; height: 44px;
  padding: 0;
  border: 1px solid var(--sj-line);
  border-radius: 50%;
  background: #fff;
  cursor: pointer;
  transition: border-color .2s, background-color .2s;
}
.sj-gnav__close::before,
.sj-gnav__close::after {
  content: "";
  position: absolute;
  top: 50%; left: 50%;
  width: 16px; height: 1.5px;
  background: var(--sj-ink);
  transition: background-color .2s;
}
.sj-gnav__close::before { transform: translate(-50%, -50%) rotate(45deg); }
.sj-gnav__close::after  { transform: translate(-50%, -50%) rotate(-45deg); }
.sj-gnav__close:hover { border-color: var(--sj-brand); background: var(--sj-brand); }
.sj-gnav__close:hover::before,
.sj-gnav__close:hover::after { background: #fff; }

.sj-gnav__list {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top: 1px solid var(--sj-line);
}
.sj-gnav__list li {
  border-bottom: 1px solid var(--sj-line);
  opacity: 0;
  transform: translateX(16px);
  transition: opacity .35s ease, transform .35s ease;
}
/* 開いたとき、上から順にふわっと出す */
.sj-drawer.is-open .sj-gnav__list li {
  opacity: 1;
  transform: none;
  transition-delay: calc(.12s + var(--i, 0) * .04s);
}
.sj-gnav__list a {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 17px 32px 17px 2px;
  text-decoration: none;
  color: var(--sj-ink);
  transition: color .2s, padding-left .25s;
}
.sj-gnav__num {
  flex: none;
  font-family: var(--sj-font-en);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  color: var(--sj-brand);
}
.sj-gnav__label {
  font-family: var(--sj-font-serif);
  font-size: 17px;
  font-weight: 500;
  letter-spacing: .06em;
}
/* 右端の小さな矢印 */
.sj-gnav__list a::after {
  content: "";
  position: absolute;
  right: 6px; top: 50%;
  width: 7px; height: 7px;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  color: var(--sj-ink-3);
  transform: translateY(-50%) rotate(45deg);
  transition: right .25s, color .2s;
}
.sj-gnav__list a:hover { color: var(--sj-brand); padding-left: 8px; }
.sj-gnav__list a:hover::after { right: 2px; color: var(--sj-brand); }

/* 下部の電話・お見積り */
.sj-gnav__contact {
  margin-top: auto;
  padding-top: 28px;
  text-align: center;
}
.sj-gnav__tel {
  display: block;
  margin-bottom: 14px;
  padding: 16px;
  border: 1px solid var(--sj-line);
  border-radius: 6px;
  background: #fff;
  text-decoration: none;
  color: var(--sj-ink);
}
.sj-gnav__tel-label {
  display: block;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--sj-brand);
}
.sj-gnav__tel-num {
  display: block;
  margin-top: 2px;
  font-family: var(--sj-font-en);
  font-size: 28px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .02em;
}

@media (max-width: 767px) {
  .sj-header__inner { min-height: 86px; padding-block: 20px; }
}

@media (max-width: 480px) {
  .sj-header__logo img { width: 205px; }
}

/* --------------------------------------------------------------------------
   07. パンくず
   -------------------------------------------------------------------------- */
/* パンくずは現在非表示。BreadcrumbList の構造化データは残すため、
   マークアップは削除せず CSS で隠している（再表示するときは display を戻す） */
.sj-breadcrumb { display: none; border-bottom: 1px solid var(--sj-line); }
.sj-breadcrumb ol {
  display: flex;
  flex-wrap: wrap;
  gap: 0 8px;
  margin: 0;
  padding-block: 12px;
  list-style: none;
  max-width: none;
  font-family: var(--sj-font-en);
  font-size: 11px;
  letter-spacing: .06em;
  color: var(--sj-ink-3);
}
.sj-breadcrumb li + li::before { content: "/"; margin-right: 8px; color: var(--sj-line); }
.sj-breadcrumb a { color: var(--sj-ink-2); text-decoration: none; }
.sj-breadcrumb a:hover { color: var(--sj-brand); }

/* --------------------------------------------------------------------------
   08. ファーストビュー
   参照サイトにならい、白地に大きな見出しを置き、写真は直下の帯で見せる
   -------------------------------------------------------------------------- */
.sj-hero {
  padding-block: clamp(10px, 1.3vw, 24px) clamp(40px, 5.9vw, 112.64px);
  background: #fff;
}
/* 左：コピー ／ 右：キービジュアル。画像側を少し広く取る */
.sj-hero__inner {
  display: grid;
  grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr);
  gap: clamp(32px, 5.31vw, 102.4px);
  align-items: center;
}
.sj-hero__figure { margin: 0; }
.sj-hero__figure img {
  width: 100%;
  aspect-ratio: 5 / 4.25;
  object-fit: cover;
}
.sj-hero__body { min-width: 0; }

/* 現在 FV では未使用。必要になったら <p class="sj-hero__eyebrow"> を戻せば使える */
.sj-hero__eyebrow {
  display: inline-block;
  padding: 5px 11px;
  background: var(--sj-surface);
  font-family: var(--sj-font-en);
  font-size: var(--sj-fs-label);
  font-weight: 700;
  line-height: 1;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--sj-brand);
}
.sj-hero__title {
  margin-top: clamp(1.1rem, 2.12vw, 2.43rem);
  font-family: var(--sj-font-serif);
  font-size: var(--sj-fs-display);
  font-weight: 500;
  line-height: 1.28;
  letter-spacing: .03em;
  color: var(--sj-ink);
}
.sj-hero__title-s { font-size: .68em; }
/* 3行目「お考えの方へ」は独立ブロック。2行目との間を少しあけて下げている */
.sj-hero__title-s--block {
  display: block;
  line-height: 1.2;
  margin-top: .15em;
}
.sj-hero__title small {
  display: block;
  font-family: var(--sj-font-sans);
  margin-bottom: .9em;
  font-size: .34em;
  font-weight: 700;
  letter-spacing: .1em;
  line-height: 1.6;
  color: var(--sj-brand);
}
/* FVの導入文は現在非表示（再表示する場合は display の行を削除する） */
.sj-hero__text {
  display: none;
  margin-top: clamp(1.4rem, 2.36vw, 2.82rem);
  max-width: none;   /* カラム幅いっぱいに流す */
  font-size: var(--sj-fs-lead);
  line-height: 2.05;
  color: var(--sj-ink-2);
}

/* 特徴ブロック（2×2）。背景なし・グレーの罫線・角丸なし */
.sj-hero__badges {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: clamp(26px, 3.54vw, 56.32px) 0 0;
  padding: 0;
  list-style: none;
}
.sj-hero__badges li {
  display: flex;
  align-items: center;
  gap: clamp(10px, 1vw, 16px);
  padding: clamp(14px, 1.65vw, 25.6px) clamp(16px, 1.89vw, 28.16px);
  border: 1px solid var(--sj-line);
  background: transparent;
}
/* 左のアイコン（装飾なので alt は空）。画像の白地は multiply で背景になじませる */
.sj-hero__badge-icon {
  flex: none;
  width: clamp(34px, 2.6vw, 42px);
  height: auto;
  aspect-ratio: 1;
  mix-blend-mode: multiply;
}
.sj-hero__badge-title {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .02em;
  color: var(--sj-ink);
  /* アイコン横で2行になるとき、語の途中（「公|営斎場」「10|基」）で折れないように */
  word-break: auto-phrase;
  text-wrap: balance;
}
/* 数字だけ大きくブランドカラーで強調する */
.sj-hero__badge-title b {
  font-family: var(--sj-font-en);
  font-size: 1.65em;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0;
  color: var(--sj-brand);
}

@media (max-width: 479px) {
  .sj-hero__badges { grid-template-columns: 1fr; }
}

@media (max-width: 899px) {
  .sj-hero__inner { grid-template-columns: 1fr; gap: clamp(28px, 4.72vw, 56.32px); }
}

/* FV直下の写真帯（現在は未使用。全幅のキービジュアル帯が必要になったら
   <div class="sj-heroband"><img ...></div> を置けば使える） */
.sj-heroband {
  height: clamp(220px, 30vw, 440px);
  border-top: 1px solid var(--sj-line);
}
.sj-heroband img { width: 100%; height: 100%; object-fit: cover; object-position: center 62%; }

/* 画面下部に固定するCTAバー（読み込み直後から常に表示） */
.sj-hero-cta {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 90;
  min-height: var(--sj-cta-h);
  display: flex;
  align-items: center;
  background: var(--sj-brand);
  color: #fff;
  box-shadow: 0 -2px 16px rgba(42, 33, 38, .18);
}
.sj-hero-cta__inner {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 12px 40px;
  padding-block: 12px;
  max-width: none;
}
.sj-hero-cta__msg { margin: 0; font-size: .9rem; font-weight: 700; line-height: 1.6; color: #fff; }
.sj-hero-cta__msg span { display: block; margin-top: 2px; font-size: .78rem; font-weight: 400; color: rgba(255, 255, 255, .85); }
.sj-hero-cta__btns { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; }
.sj-hero-cta .sj-btn { min-height: 48px; border-radius: 6px; }
.sj-hero-cta .sj-telblock,
.sj-hero-cta .sj-telblock__num { color: #fff; }
/* ピンク地の上なので、小さな文字ほど不透明な白にしてコントラストを確保する */
.sj-hero-cta .sj-telblock__label { color: #fff; }
.sj-hero-cta .sj-telblock__num { font-size: clamp(22px, 1.9vw, 30px); }
.sj-hero-cta .sj-telblock__note { display: none; }

/* ピンクの帯の上なので、ボタンは白抜きに置き換える */
.sj-hero-cta .sj-btn--primary {
  background: #fff;
  border-color: #fff;
  color: var(--sj-brand-dark);
}
.sj-hero-cta .sj-btn--primary:hover {
  background: var(--sj-brand-tint);
  border-color: var(--sj-brand-tint);
  color: var(--sj-brand-deep);
}
.sj-hero-cta .sj-btn--ghost {
  background: transparent;
  border-color: rgba(255, 255, 255, .6);
  color: #fff;
}
.sj-hero-cta .sj-btn--ghost:hover {
  background: #fff;
  border-color: #fff;
  color: var(--sj-brand-dark);
}

.sj-telblock { text-align: left; text-decoration: none; color: inherit; }
.sj-telblock__label {
  display: block;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .1em;
  color: var(--sj-brand);
}
.sj-telblock__num {
  display: block;
  font-family: var(--sj-font-en);
  font-size: clamp(27px, 2.2vw, 36px);
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .01em;
  color: var(--sj-ink);
}
.sj-telblock__note { display: block; font-size: 11.5px; color: var(--sj-ink-2); }

@media (max-width: 899px) {
  /* 幅が足りないので、説明文とメール導線は畳んで「電話 ／ お見積り」の2分割にする
     （メールでのお問い合わせは、ヘッダーのメニューと最終CTAから辿れます） */
  .sj-hero-cta__inner {
    grid-template-columns: 1fr;
    padding-inline: 0;
    padding-block: 0;
  }
  .sj-hero-cta__msg { display: none; }
  .sj-hero-cta__btns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
    gap: 8px;
    padding: 8px;
  }
  .sj-hero-cta__btns .sj-btn--ghost { display: none; }
  .sj-hero-cta__btns .sj-btn {
    min-height: calc(var(--sj-cta-h) - 16px);
    padding-inline: 10px;
    border-width: 0;
    /* ボタン名が2行に折り返さないよう、文字と矢印を詰める */
    font-size: .8rem;
    letter-spacing: .02em;
  }
  .sj-hero-cta__btns .sj-btn::after { content: none; }
  .sj-telblock {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: calc(var(--sj-cta-h) - 16px);
    padding-inline: 4px;
    text-align: center;
  }
  .sj-hero-cta .sj-telblock__num { font-size: 21px; }
  /* 1行に収めてバーの高さ（--sj-cta-h）を超えないようにする */
  .sj-telblock__label { font-size: 9.5px; letter-spacing: .02em; white-space: nowrap; }
}

/* --------------------------------------------------------------------------
   09. 2カラム（画像＋テキスト）
   -------------------------------------------------------------------------- */
.sj-media {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(36px, 5.9vw, 112.64px);
  align-items: start;
}
.sj-media__figure { margin: 0; }
.sj-media__figure img { width: 100%; }
.sj-media__figure figcaption {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--sj-line);
  font-family: var(--sj-font-en);
  font-size: 11px;
  letter-spacing: .08em;
  color: var(--sj-ink-3);
}
.sj-media__body > * + * { margin-top: 2em; }
.sj-media__body > .sj-checklist { margin-top: 3em; }   /* 本文とチェックリストの間は広めに */
/* 本文カラムを写真の上端にそろえる（見出しの上マージンと行間の余白を詰める） */
.sj-media__body > .sj-section-head:first-child .sj-h2 { margin-top: -.28em; }
.sj-media__body p { font-size: var(--sj-fs-lead); line-height: 2.05; }

/* 補足リスト（チェック付き） */
.sj-checklist { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--sj-line); }
.sj-checklist li {
  position: relative;
  padding: 13px 0 13px 28px;
  border-bottom: 1px solid var(--sj-line);
  font-size: var(--sj-fs-lead);
  line-height: 1.8;
}
.sj-checklist li::before {
  content: "";
  position: absolute;
  left: 0; top: 21px;
  width: 15px; height: 15px;
  background: var(--sj-brand);
  clip-path: polygon(41% 76%, 12% 48%, 22% 38%, 41% 56%, 78% 20%, 88% 30%);
}

/* 画像側をスライダーにした版。画像エリアはセクション幅の40% */
.sj-media--slider { grid-template-columns: 40% minmax(0, 1fr); }

/* 施設写真スライダー（Swiper）。メイン＋下部サムネイル
   min-width:0 がないとグリッド内で Swiper が横に広がり続けるので必須 */
.sj-slider { min-width: 0; }
.sj-slider__main { position: relative; }
.sj-slider__main figure { margin: 0; }
.sj-slider__main img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}
.sj-slider__main figcaption {
  margin-top: 14px;
  padding-top: 0;
  border-top: 0;                      /* .sj-media__figure figcaption の罫線・英字書体を打ち消す */
  font-family: var(--sj-font-sans);
  letter-spacing: .02em;
  font-size: 14.5px;
  line-height: 1.75;
  color: var(--sj-ink-2);
}
.sj-slider__main figcaption b {
  display: block;
  margin-bottom: 3px;
  font-size: 16px;
  color: var(--sj-ink);
}
/* 前後ボタン。写真の縦中央（キャプションを除いた位置）に置く */
.sj-slider__nav {
  position: absolute;
  top: 0;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 40px;
  aspect-ratio: 1;
  margin-top: calc(100% / 3 - 20px);   /* 3:2 の写真の高さ ÷ 2 − 半径 */
  padding: 0;
  border: 0;
  background: rgba(255, 255, 255, .9);
  color: var(--sj-ink);
  cursor: pointer;
  transition: background-color .2s, color .2s;
}
.sj-slider__nav:hover { background: var(--sj-brand); color: #fff; }
.sj-slider__nav::before {
  content: "";
  width: 9px; height: 9px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
}
.sj-slider__nav--prev { left: 0; }
.sj-slider__nav--prev::before { transform: translateX(2px) rotate(-135deg); }
.sj-slider__nav--next { right: 0; }
.sj-slider__nav--next::before { transform: translateX(-2px) rotate(45deg); }
.sj-slider__nav.swiper-button-disabled { opacity: .35; cursor: default; }

.sj-slider__thumbs {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));   /* 4列。6枚なら4枚＋2枚の2段 */
  gap: clamp(10px, 1vw, 16px);
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
}
.sj-slider__thumbs button {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  opacity: .5;
  transition: opacity .2s;
}
.sj-slider__thumbs button:hover { opacity: .8; }
.sj-slider__thumbs button.is-active { opacity: 1; outline: 2px solid var(--sj-brand); outline-offset: -2px; }
.sj-slider__thumbs button:focus-visible { opacity: 1; outline: 2px solid var(--sj-ink); outline-offset: 2px; }
.sj-slider__thumbs img {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
}

@media (max-width: 899px) {
  .sj-media,
  .sj-media--slider { grid-template-columns: minmax(0, 1fr); gap: 28px; }
}

/* --------------------------------------------------------------------------
   メッセージ（浦和斎場とは と 基本情報 の間）
   -------------------------------------------------------------------------- */
.sj-message {
  position: relative;
  padding: clamp(36px, 4.4vw, 64px) clamp(20px, 4vw, 64px);
  border-radius: 6px;
  background: #fef9fb;   /* --sj-brand-tint（#fdf2f7）を白で半分に薄めた色 */
  text-align: center;
}
.sj-message__title {
  font-family: var(--sj-font-serif);
  font-size: clamp(1.3rem, 1.4vw + .95rem, 2.1rem);   /* 21→34px */
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: .04em;
}
.sj-message__title em { font-style: normal; color: var(--sj-brand); }
.sj-message__text {
  margin-top: clamp(16px, 1.8vw, 24px);
  font-size: var(--sj-fs-lead);
  line-height: 2;
  color: var(--sj-ink-2);
}
@media (max-width: 767px) {
  .sj-message__text { text-align: left; }
}

/* --------------------------------------------------------------------------
   10. 基本情報テーブル
   -------------------------------------------------------------------------- */
.sj-datatable { border-top: 1px solid var(--sj-ink); }
.sj-datatable table { font-size: var(--sj-fs-lead); }
.sj-datatable th, .sj-datatable td {
  padding: clamp(14px, 1.89vw, 28.16px) clamp(14px, 1.89vw, 30.72px);
  border-bottom: 1px solid var(--sj-line);
  text-align: left;
  vertical-align: top;
  line-height: 1.85;
}
.sj-datatable th {
  width: clamp(170px, 16vw, 230px);
  padding-left: 0;
  font-weight: 700;
  color: var(--sj-ink);
  white-space: nowrap;
}
.sj-datatable td ul { margin: 0; padding-left: 1.2em; }
.sj-datatable td ul li { margin-bottom: .2em; }
.sj-datatable .sj-tel-inline { font-family: var(--sj-font-en); font-weight: 600; white-space: nowrap; }

/* 設備タグ */
.sj-taglist { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.sj-taglist li {
  padding: 6px 15px;
  border: 1px solid var(--sj-line);
  background: #fff;
  font-size: var(--sj-fs-sm);
  line-height: 1.6;
}

/* 2列表示（表を2つ並べる）。罫線は各表の上辺に付け、列間には引かない */
.sj-datatable--2col {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: clamp(32px, 4vw, 72px);
  align-items: start;
  border-top: 0;
}
.sj-datatable--2col table { border-top: 1px solid var(--sj-ink); }
.sj-datatable--2col th { width: clamp(88px, 7.5vw, 120px); }
/* 1列に戻すときは、2つ目の表を1つ目の続きに見せる */
@media (max-width: 1023px) {
  .sj-datatable--2col { grid-template-columns: minmax(0, 1fr); }
  .sj-datatable--2col table + table { border-top: 0; }
}

@media (max-width: 599px) {
  .sj-datatable th, .sj-datatable td { display: block; width: auto; padding-inline: 0; }
  .sj-datatable th { border-bottom: 0; padding-bottom: 2px; font-family: var(--sj-font-en); font-size: 11px; letter-spacing: .08em; color: var(--sj-brand); }
  .sj-datatable td { padding-top: 0; }
}

/* タブ（施設利用料金の切り替え）。JSが動いたときだけタブを出し、
   動かない環境ではすべてのパネルを縦に並べて表示する */
.sj-tabs { margin-top: clamp(24px, 2.6vw, 40px); }
.sj-tabs__list {
  display: none;
  border-bottom: 1px solid var(--sj-line);
}
.sj-tabs.is-ready .sj-tabs__list { display: flex; }
.sj-tabs__list [role="tab"] {
  flex: 0 1 auto;
  margin-bottom: -1px;
  padding: 14px clamp(14px, 1.6vw, 26px);
  border: 0;
  border-bottom: 3px solid transparent;
  background: none;
  font: inherit;
  font-size: var(--sj-fs-body);
  font-weight: 700;
  letter-spacing: .03em;
  line-height: 1.5;
  color: var(--sj-ink-3);
  cursor: pointer;
  transition: color .2s, border-color .2s;
}
.sj-tabs__list [role="tab"]:hover { color: var(--sj-ink); }
.sj-tabs__list [role="tab"][aria-selected="true"] { color: var(--sj-brand); border-bottom-color: var(--sj-brand); }
.sj-tabs__panel + .sj-tabs__panel { margin-top: clamp(24px, 2.6vw, 40px); }
.sj-tabs.is-ready .sj-tabs__panel { margin-top: clamp(20px, 2vw, 32px); }
.sj-tabs.is-ready .sj-tabs__panel[hidden] { display: none; }
/* スマホはタブを3等分し、長い名前は折り返す */
@media (max-width: 599px) {
  .sj-tabs__list [role="tab"] { flex: 1 1 0; padding-inline: 6px; font-size: 13px; }
}

/* 料金テーブル */
.sj-feetable { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.sj-feetable table {
  min-width: 460px;
  background: #fff;
  border: 1px solid var(--sj-line);
  font-size: var(--sj-fs-body);
}
.sj-feetable caption {
  padding: 0 0 12px;
  text-align: left;
  font-weight: 700;
  font-size: var(--sj-fs-lead);
  letter-spacing: .03em;
  color: var(--sj-ink);
}
.sj-feetable th, .sj-feetable td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--sj-line);
  border-right: 1px solid var(--sj-line);
  text-align: left;
}
.sj-feetable thead th {
  background: var(--sj-surface);
  color: var(--sj-ink);
  font-size: var(--sj-fs-sm);
  letter-spacing: .04em;
  white-space: nowrap;
}
.sj-feetable tbody th { font-weight: 700; white-space: nowrap; }
.sj-feetable td { text-align: right; font-family: var(--sj-font-en); font-variant-numeric: tabular-nums; white-space: nowrap; }
.sj-feetable th:last-child, .sj-feetable td:last-child { border-right: 0; }
.sj-feetable tbody tr:last-child th,
.sj-feetable tbody tr:last-child td { border-bottom: 0; }

/* スマホ：横スクロールさせず、余白・字間・文字サイズを詰めて画面幅に収める */
@media (max-width: 599px) {
  .sj-feetable { overflow-x: visible; }
  .sj-feetable table { min-width: 0; width: 100%; font-size: 12.5px; }
  .sj-feetable th, .sj-feetable td { padding: 10px 7px; letter-spacing: 0; }
  .sj-feetable thead th { font-size: 11.5px; letter-spacing: 0; white-space: normal; }
  /* 区分名（「第1葬祭場／第2葬祭場／第3葬祭場」など）は折り返してよい */
  .sj-feetable tbody th { white-space: normal; word-break: auto-phrase; line-height: 1.55; }
  .sj-feetable td { padding-inline: 6px; }
}

/* --------------------------------------------------------------------------
   11. 選ばれる理由（番号付き・ヘアライン区切り）
   -------------------------------------------------------------------------- */
/* 囲みではなく「上辺の罫線＋広い行間」で区切る */
.sj-reasons {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));   /* 2×2 */
  column-gap: clamp(32px, 4vw, 72px);
  row-gap: clamp(48px, 5vw, 88px);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sj-reason {
  padding: 0;
  background: transparent;
}
.sj-reason__img { margin-bottom: clamp(20px, 2vw, 30px); }
.sj-reason__img img {
  display: block;
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}
.sj-reason__num {
  display: block;
  margin-bottom: clamp(12px, 1.4vw, 20px);
  font-family: var(--sj-font-en);
  font-size: clamp(52px, 5.2vw, 76px);   /* 以前の約2倍 */
  font-weight: 500;
  line-height: 1;
  letter-spacing: .02em;
  color: var(--sj-brand);
}
.sj-reason__title {
  margin-bottom: .7em;
  font-size: clamp(1.1rem, 1.35vw, 1.3rem);
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: .03em;
}
.sj-reason__text { font-size: var(--sj-fs-body); line-height: 2; color: var(--sj-ink-2); }
@media (max-width: 767px) {
  .sj-reasons { grid-template-columns: minmax(0, 1fr); }
}

/* --------------------------------------------------------------------------
   12. 対応できる葬儀（プラン）
   -------------------------------------------------------------------------- */
.sj-plans {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));   /* 7プランを4列（4枚＋3枚） */
  column-gap: clamp(24px, 2.6vw, 40px);
  row-gap: clamp(40px, 4.2vw, 64px);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sj-plan {
  display: flex;
  flex-direction: column;
  padding-top: clamp(18px, 1.8vw, 26px);
  border-top: 1px solid var(--sj-ink);
}
/* 画像（元画像が160×115pxと小さいため拡大せず小さめに置く）＋名前・価格 */
.sj-plan__head {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--sj-line);
}
.sj-plan__img {
  flex: none;
  width: clamp(100px, 8.6vw, 132px);
  aspect-ratio: 1;   /* 正方形に切り抜く */
  object-fit: cover;
}
.sj-plan__name {
  font-size: clamp(1rem, .5vw + .75rem, 1.05rem);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0;
  word-break: auto-phrase;   /* 収まらない幅では「168万円／セット」の区切りで折り返す */
  color: var(--sj-ink);
}
.sj-plan__price {
  margin-top: 4px;
  font-size: var(--sj-fs-sm);
  color: var(--sj-ink-2);
}
.sj-plan__price b {
  font-family: var(--sj-font-en);
  font-size: clamp(24px, 2.1vw, 30px);
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0;
  color: var(--sj-brand);
  font-variant-numeric: tabular-nums;
}
.sj-plan__price span { font-size: 11.5px; color: var(--sj-ink-3); }
.sj-plan__body { display: flex; flex-direction: column; flex: 1 1 auto; }
.sj-plan__text { flex: 1 1 auto; margin-bottom: 1.4em; font-size: var(--sj-fs-body); line-height: 1.95; color: var(--sj-ink-2); }
.sj-plan .sj-btn { margin-top: auto; }
@media (max-width: 1199px) { .sj-plans { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px)  { .sj-plans { grid-template-columns: minmax(0, 1fr); } }

/* --------------------------------------------------------------------------
   13. 費用の考え方（内訳）
   -------------------------------------------------------------------------- */
.sj-formula {
  display: flex;
  align-items: stretch;
  gap: clamp(8px, 1vw, 16px);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sj-formula__item {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: clamp(20px, 2.2vw, 34px) clamp(6px, .8vw, 14px);
  border: 2px solid var(--sj-brand-tint-2);
  border-radius: 10px;
  background: #fff;
  text-align: center;
}
.sj-formula__icon {
  --icon-w: clamp(64px, 6.8vw, 100px);   /* 左4つのアイコン */
  display: block;
  width: var(--icon-w);
  height: auto;
  aspect-ratio: 1;
  margin: calc(var(--icon-w) * -.12) 0 calc(var(--icon-w) * -.04);   /* 画像の上下の余白を詰める */
}
.sj-formula__item--total .sj-formula__icon { --icon-w: clamp(80px, 9vw, 132px); }   /* 総額はそのまま */
.sj-formula__title {
  font-size: clamp(.9rem, .35vw + .75rem, 1.15rem);
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: .02em;
  word-break: auto-phrase;   /* 狭いときは語の区切りで折り返す */
  text-wrap: balance;
}
.sj-formula__text {
  margin-top: .6em;
  word-break: auto-phrase;
  text-wrap: balance;
  font-size: clamp(.78rem, .2vw + .72rem, .92rem);
  line-height: 1.6;
  color: var(--sj-ink-2);
}
/* ＋ ＝ */
.sj-formula__op {
  flex: none;
  align-self: center;
  font-family: var(--sj-font-en);
  font-size: clamp(28px, 2.6vw, 40px);
  font-weight: 700;
  line-height: 1;
  color: var(--sj-brand);
}
.sj-formula__item--total {
  border-color: var(--sj-brand);
  background: var(--sj-brand);
  color: #fff;
}
.sj-formula__item--total .sj-formula__title { font-size: clamp(1.05rem, .75vw + .8rem, 1.4rem); }
.sj-formula__note {
  margin-top: clamp(20px, 2.2vw, 32px);
  text-align: center;
  font-size: var(--sj-fs-lead);
  color: var(--sj-ink-2);
}
/* 狭い画面は縦に積む（アイコン左・文字右、間に＋を挟む） */
@media (max-width: 899px) {
  .sj-formula { flex-direction: column; gap: 6px; }
  .sj-formula__item {
    flex-direction: row;
    justify-content: flex-start;
    gap: 16px;
    padding: 14px 18px;
    text-align: left;
  }
  .sj-formula__body { min-width: 0; }
  .sj-formula__icon,
  .sj-formula__item--total .sj-formula__icon { --icon-w: 56px; margin: -6px 0; }
  .sj-formula__text { margin-top: .2em; }
  .sj-formula__item--total { justify-content: center; }
  .sj-formula__note { text-align: left; }
}

/* 費用の内訳メモ */
.sj-costnotes {
  display: grid;
  grid-template-columns: minmax(0, 1fr);   /* 縦に1列で並べる */
  row-gap: clamp(28px, 3vw, 44px);
  width: 70%;                              /* セクション幅の約70%・中央寄せ */
  margin: clamp(48px, 5.5vw, 88px) auto 0;
  padding: 0;
  list-style: none;
}
.sj-costnote {
  --sj-costnote-h: clamp(1.05rem, .45vw + .96rem, 1.3rem);   /* 見出し 17→21px */
  padding: clamp(20px, 2.2vw, 30px) 0 0;
  border-top: 1px solid var(--sj-line);
  background: transparent;
}
.sj-costnote h4 {
  position: relative;
  margin-bottom: .7em;
  padding-left: 1.7em;
  font-size: var(--sj-costnote-h);
  letter-spacing: .03em;
  color: var(--sj-info);
}
/* 見出し頭のピンクのチェック（.sj-checklist と同じ形） */
.sj-costnote h4::before {
  content: "";
  position: absolute;
  left: 0; top: .28em;
  width: 1.1em; height: 1.1em;
  background: var(--sj-brand);
  clip-path: polygon(41% 76%, 12% 48%, 22% 38%, 41% 56%, 78% 20%, 88% 30%);
}
.sj-costnote p { padding-left: calc(var(--sj-costnote-h) * 1.7); }
@media (max-width: 899px) { .sj-costnotes { width: 100%; } }
.sj-costnote p { font-size: var(--sj-fs-body); line-height: 2; color: var(--sj-ink-2); }

/* --------------------------------------------------------------------------
   14. お見積り事例
   -------------------------------------------------------------------------- */
.sj-estimates {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(340px, 100%), 1fr));
  gap: clamp(16px, 2vw, 32px);
  align-items: start;
}
/* 白いカード（グレー背景のセクション上に置く） */
.sj-estimate {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--sj-line);
  border-top: 2px solid var(--sj-ink);
  background: #fff;
}
.sj-estimate__head {
  position: relative;
  padding: clamp(24px, 3.07vw, 43.52px) clamp(20px, 2.83vw, 40.96px) clamp(20px, 2.6vw, 35.84px);
}
/* 見出し内のボタンのクリック範囲をヘッダー全体に広げる */
.sj-estimate__toggle {
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  letter-spacing: inherit;
  text-align: left;
  color: inherit;
  cursor: pointer;
}
.sj-estimate__toggle::after { content: ""; position: absolute; inset: 0; }
.sj-estimate__toggle:disabled { cursor: default; opacity: 1; }   /* PCでは開閉しない（見た目は通常の見出しのまま） */
.sj-estimate__toggle:disabled::after { content: none; }
.sj-estimate__toggle:focus-visible { outline: none; }
.sj-estimate__head:has(.sj-estimate__toggle:focus-visible) { outline: 2px solid var(--sj-brand); outline-offset: -2px; }
.sj-estimates.is-ready .sj-estimate__head:hover { background: var(--sj-brand-tint); }
/* 「内訳を見る／閉じる」の表示（JSが動いたときだけ） */
.sj-estimate__more {
  display: none;
  align-items: center;
  gap: 10px;
  justify-content: center;
  margin-top: 22px;
  font-size: clamp(.95rem, .2vw + .9rem, 1.05rem);   /* 15→17px */
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--sj-brand-dark);
}
.sj-estimates.is-ready .sj-estimate__more { display: flex; }   /* 中央寄せ */
.sj-estimate__more::after {
  content: "";
  width: 9px; height: 9px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform .2s;
}
.sj-estimate__head:has([aria-expanded="true"]) .sj-estimate__more::after { transform: translateY(2px) rotate(-135deg); }
.sj-estimate__body[hidden] { display: none; }
.sj-estimate__body { padding-bottom: 8px; }
.sj-estimate__type {
  display: inline-block;
  margin-bottom: 14px;
  padding: 4px 12px;
  background: var(--sj-brand);
  color: #fff;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1.6;
}
.sj-estimate__title { font-size: clamp(1.15rem, 1.4vw, 1.35rem); font-weight: 700; line-height: 1.6; letter-spacing: .03em; }
.sj-estimate__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 16px 0 0;
  padding: 0;
  list-style: none;
  font-size: var(--sj-fs-sm);
  color: var(--sj-ink-2);
}
.sj-estimate__meta li { padding: 4px 12px; border: 1px solid var(--sj-line); }

.sj-estimate__body { flex: 1 1 auto; padding: 0 clamp(20px, 2.83vw, 40.96px); }
.sj-breakdown { margin: 0; font-size: var(--sj-fs-body); border-top: 1px solid var(--sj-line); }
.sj-breakdown > div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  border-bottom: 1px solid var(--sj-line-2);
}
.sj-breakdown dt, .sj-breakdown dd { padding: 10px 0; }
.sj-breakdown dt { flex: 1 1 auto; min-width: 0; color: var(--sj-ink-2); }
.sj-breakdown dd {
  margin: 0;
  font-family: var(--sj-font-en);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sj-breakdown .is-minus dd { color: var(--sj-info); }

.sj-estimate__total {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 4px 16px;
  margin-inline: clamp(20px, 2.4vw, 32px);
  padding-block: 18px;
  border-top: 2px solid var(--sj-ink);
}
.sj-estimate__total dt { font-size: var(--sj-fs-body); font-weight: 700; letter-spacing: .03em; }
.sj-estimate__total dd {
  margin: 0;
  font-family: var(--sj-font-en);
  font-size: clamp(30px, 2.6vw, 38px);
  font-weight: 600;
  line-height: 1.1;
  color: var(--sj-brand);
  font-variant-numeric: tabular-nums;
}
.sj-estimate__total dd small { font-family: var(--sj-font-sans); font-size: 12px; font-weight: 400; color: var(--sj-ink-2); }
.sj-estimate__foot { padding: 0 clamp(20px, 2.83vw, 40.96px) clamp(24px, 3.07vw, 40.96px); }
.sj-estimate__foot .sj-btn { border-radius: 5px; }

/* --------------------------------------------------------------------------
   15. 葬儀事例カード
   -------------------------------------------------------------------------- */
.sj-cases {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(290px, 100%), 1fr));
  column-gap: clamp(24px, 3.2vw, 48px);
  row-gap: clamp(40px, 4.6vw, 72px);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sj-case {
  display: flex;
  flex-direction: column;
  background: transparent;
}
.sj-case__figure { margin: 0; aspect-ratio: 3 / 2; background: var(--sj-surface); }
.sj-case__figure img { width: 100%; height: 100%; object-fit: cover; }
.sj-case__body {
  display: flex; flex-direction: column; flex: 1 1 auto;
  padding: clamp(18px, 2vw, 26px) 0 0;
}
.sj-case__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 14px;
  padding: 0;
  list-style: none;
  font-size: 11.5px;
}
.sj-case__tags li { padding: 3px 10px; background: var(--sj-brand-tint); color: var(--sj-brand-dark); font-weight: 700; letter-spacing: .04em; }
.sj-case__title { margin-bottom: .7em; font-size: clamp(1.05rem, 1.3vw, 1.25rem); font-weight: 700; line-height: 1.6; letter-spacing: .03em; }
.sj-case__text { flex: 1 1 auto; margin-bottom: 1.5em; font-size: var(--sj-fs-body); line-height: 2; color: var(--sj-ink-2); }

/* 準備中（実績データ未確定）のカード表現 */
.sj-case--placeholder .sj-case__figure { background: var(--sj-surface); }
.sj-case--placeholder .sj-case__title { color: var(--sj-ink-3); }
.sj-case--placeholder .sj-case__tags li { background: var(--sj-line-2); color: var(--sj-ink-3); }

/* --------------------------------------------------------------------------
   16. 葬儀の流れ（STEP）
   -------------------------------------------------------------------------- */
.sj-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));   /* 3枚×2段（タイトルを1行で大きく見せるため） */
  column-gap: clamp(24px, 3.2vw, 48px);
  row-gap: clamp(40px, 4.6vw, 64px);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sj-step {
  container-type: inline-size;   /* タイトルの文字サイズをカード幅に合わせるため */
  padding: 0;
  background: transparent;
}
.sj-step__num {
  display: block;
  margin-bottom: clamp(14px, 1.8vw, 22px);
  font-family: var(--sj-font-en);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .16em;
  color: var(--sj-brand);
}
.sj-step__num b {
  display: flex;
  align-items: center;
  gap: clamp(16px, 1.7vw, 24px);
  margin-top: 4px;
  font-size: clamp(26px, 3.07vw, 48.64px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: .02em;
}
/* 番号の右から次のSTEPへ向かう細い矢印（線＋上側だけの返し）。最後のSTEPには付けない */
.sj-step__num b::after {
  content: "";
  flex: 1 1 auto;
  height: 16px;   /* 線（上から8px）が番号の中央に来る高さ */
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 9'%3E%3Cpath d='M0 .5 13.5 8.5' fill='none' stroke='%23e40077' stroke-width='1'/%3E%3C/svg%3E") no-repeat right 0 top 0 / 14px 9px,
    linear-gradient(var(--sj-brand), var(--sj-brand)) no-repeat left 0 top 8px / 100% 1px;   /* 返しは横14px×高さ9px（約33°） */
}
.sj-step:last-child .sj-step__num b::after { content: none; }
@media (max-width: 1023px) { .sj-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 599px)  { .sj-steps { grid-template-columns: minmax(0, 1fr); } }
/* 最長のタイトル（13文字）がカード幅に収まる大きさを上限に、最大22pxまで大きくする。改行はしない */
.sj-step__title {
  margin-bottom: .7em;
  font-size: min(1.375rem, 7cqi);
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: .03em;
  white-space: nowrap;
}
.sj-step__text { font-size: var(--sj-fs-body); line-height: 2; color: var(--sj-ink-2); }
.sj-step__tel {
  display: inline-block;
  margin-top: 12px;
  font-family: var(--sj-font-en);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--sj-brand-dark);
}

/* --------------------------------------------------------------------------
   17. 施設ギャラリー
   -------------------------------------------------------------------------- */
.sj-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  gap: clamp(24px, 3.3vw, 56.32px) clamp(20px, 2.83vw, 46.08px);
  margin: 0;
  padding: 0;
  list-style: none;
}
.sj-gallery figure { margin: 0; }
.sj-gallery img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.sj-gallery figcaption {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--sj-ink);
  font-size: var(--sj-fs-lead);
  font-weight: 700;
  letter-spacing: .03em;
}
.sj-gallery figcaption span {
  display: block;
  margin-top: .5em;
  font-size: var(--sj-fs-body);
  font-weight: 400;
  line-height: 1.95;
  color: var(--sj-ink-2);
}

/* --------------------------------------------------------------------------
   18. アクセス
   -------------------------------------------------------------------------- */
/* 1段：地図（コンテンツ幅100%・2:1）の下に情報を2列 */
.sj-access { display: block; }
.sj-access__map { aspect-ratio: 5 / 2.5; background: var(--sj-surface); border: 1px solid var(--sj-line); }
.sj-access__map iframe { width: 100%; height: 100%; border: 0; display: block; }

.sj-access__info {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: clamp(32px, 4vw, 72px);
  align-items: start;
  margin-top: clamp(32px, 3.6vw, 56px);
}
.sj-access__list { margin: 0; border-top: 1px solid var(--sj-ink); }
.sj-access__list > div { padding: clamp(16px, 2.12vw, 30.72px) 0; border-bottom: 1px solid var(--sj-line); }
.sj-access__list dt {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  font-size: clamp(.95rem, .2vw + .9rem, 1.05rem);   /* 15→17px */
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--sj-brand);
}
.sj-access__list dt svg { flex: none; width: 22px; height: 22px; }
.sj-access__list dd { margin: 0; font-size: var(--sj-fs-lead); line-height: 1.95; }
.sj-access__list dd small { display: block; margin-top: 6px; font-size: 12.5px; color: var(--sj-ink-2); }

@media (max-width: 899px) {
  .sj-access__map { aspect-ratio: 4 / 3; }   /* 狭い画面で地図が低くなりすぎないように */
  .sj-access__info { grid-template-columns: minmax(0, 1fr); }
  .sj-access__info .sj-access__list + .sj-access__list { border-top: 0; }
}

/* --------------------------------------------------------------------------
   19. FAQ（details/summary – JS不要）
   -------------------------------------------------------------------------- */
/* 幅は .sj-costnotes と同じ（セクション幅の70%・中央寄せ。899px以下は100%） */
.sj-faq { width: 70%; margin-inline: auto; border-top: 1px solid var(--sj-ink); }
@media (max-width: 899px) { .sj-faq { width: 100%; } }
.sj-faq__item { border-bottom: 1px solid var(--sj-line); }
.sj-faq__q {
  display: flex;
  align-items: baseline;   /* 大きくした Q を1行目の文字にそろえる */
  gap: 16px;
  padding: clamp(20px, 3.07vw, 46.08px) 48px clamp(20px, 3.07vw, 46.08px) 0;
  position: relative;
  font-size: clamp(1rem, .376vw + .912rem, 1.25rem);
  font-weight: 700;
  line-height: 1.75;
  letter-spacing: .03em;
  cursor: pointer;
  list-style: none;
}
.sj-faq__q::-webkit-details-marker { display: none; }
.sj-faq__q:hover { color: var(--sj-brand-dark); }
.sj-faq__q::before {
  content: "Q";
  flex: none;
  width: .9em;
  font-family: var(--sj-font-en);
  font-size: clamp(1.4rem, .6vw + 1.25rem, 1.75rem);   /* 22→28px */
  font-weight: 700;
  line-height: 1;
  color: var(--sj-brand);
}
.sj-faq__q::after {
  content: "";
  position: absolute;
  right: 8px; top: 50%;
  width: 13px; height: 1px;
  background: var(--sj-brand);
  box-shadow: 0 0 0 0 transparent;
}
.sj-faq__item .sj-faq__q .sj-faq__plus {
  position: absolute;
  right: 8px; top: 50%;
  width: 13px; height: 1px;
  background: var(--sj-brand);
  transform: rotate(90deg);
  transition: transform .2s;
}
.sj-faq__item[open] .sj-faq__q .sj-faq__plus { transform: rotate(0deg); }

.sj-faq__a {
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 0 48px clamp(22px, 2.83vw, 38.4px) 0;
  font-size: var(--sj-fs-lead);
  line-height: 2.05;
  color: var(--sj-ink-2);
}
.sj-faq__a::before {
  content: "A";
  flex: none;
  width: .9em;   /* Q と A の幅をそろえて本文の頭を合わせる */
  font-family: var(--sj-font-en);
  font-size: clamp(1.4rem, .6vw + 1.25rem, 1.75rem);
  font-weight: 700;
  line-height: 1;
  color: var(--sj-ink-3);
}
.sj-faq__a > div { flex: 1 1 auto; min-width: 0; }

/* --------------------------------------------------------------------------
   20. 最終CTA
   -------------------------------------------------------------------------- */
.sj-finalcta {
  padding-block: var(--sj-section-y);
  background: var(--sj-brand-deep);
  color: #fff;
}
.sj-finalcta__eyebrow {
  display: inline-block;
  padding: 5px 11px;
  background: rgba(255, 255, 255, .14);
  font-family: var(--sj-font-en);
  font-size: var(--sj-fs-label);
  font-weight: 700;
  line-height: 1;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #fff;
}
.sj-finalcta { text-align: center; }
.sj-finalcta__title {
  font-family: var(--sj-font-serif);
  font-size: var(--sj-fs-h2);
  font-weight: 600;
  line-height: 1.55;
  letter-spacing: .03em;
}
.sj-finalcta__text {
  margin: clamp(1rem, 1.89vw, 2.18rem) auto 0;
  font-size: var(--sj-fs-lead);
  line-height: 2.05;
  color: rgba(255, 255, 255, .88);
}
/* 白いパネル：左に電話、右にボタン（並列） */
.sj-finalcta__panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
  align-items: center;
  gap: clamp(24px, 3vw, 48px);
  max-width: 1040px;
  margin: clamp(32px, 4.25vw, 66.56px) auto 0;
  padding: clamp(26px, 3.54vw, 51.2px);
  background: #fff;
  color: var(--sj-ink);
}
.sj-finalcta__panel .sj-telblock {
  display: block;
  padding-right: clamp(24px, 3vw, 48px);
  border-right: 1px solid var(--sj-line);
  text-align: center;
}
.sj-finalcta__btns { display: flex; flex-direction: column; gap: 12px; }
/* 無料お見積りボタンは、お見積り事例セクションのボタンと同じ見た目（角丸6px・大きめ） */
.sj-finalcta__btns .sj-btn--lg { width: 100%; min-height: clamp(68px, 1.5vw + 62px, 80px); }
.sj-finalcta__sub { display: flex; gap: 12px; }
.sj-finalcta__sub .sj-btn { flex: 1 1 0; white-space: nowrap; }

@media (max-width: 899px) {
  .sj-finalcta__text br { display: none; }
  .sj-finalcta__panel { grid-template-columns: minmax(0, 1fr); }
  .sj-finalcta__panel .sj-telblock {
    padding: 0 0 24px;
    border-right: 0;
    border-bottom: 1px solid var(--sj-line);
  }
}
@media (max-width: 599px) {
  .sj-finalcta__sub { flex-direction: column; }
  .sj-finalcta__sub .sj-btn { white-space: normal; }
}

/* --------------------------------------------------------------------------
   21. 関連リンク
   -------------------------------------------------------------------------- */
/* セクション末尾の補助リンク。カードにせず、テキストリンクを横に並べる */
.sj-morelinks {
  display: flex;
  flex-wrap: wrap;
  gap: 14px clamp(24px, 3vw, 48px);
  margin: clamp(32px, 3.6vw, 56px) 0 0;
}
/* 1つのボタンを中央に置く */
.sj-cta-center { display: flex; justify-content: center; margin-top: clamp(30px, 3.4vw, 48px); }
.sj-cta-center .sj-btn--lg { min-width: min(26em, 100%); min-height: clamp(68px, 1.5vw + 62px, 80px); }

/* ボタン形状で中央に並べる版 */
.sj-morelinks--buttons { justify-content: center; gap: 14px 20px; }
.sj-morelinks--buttons .sj-btn { min-width: 19em; min-height: clamp(60px, 1.5vw + 54px, 72px); }
@media (max-width: 599px) {
  .sj-morelinks--buttons .sj-btn { width: 100%; min-width: 0; }
}

/* 他斎場リンク */
.sj-otherhalls { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.sj-otherhalls a {
  display: inline-block;
  padding: 9px 18px;
  border: 1px solid var(--sj-line);
  background: #fff;
  font-size: 13.5px;
  letter-spacing: .03em;
  text-decoration: none;
  color: var(--sj-ink-2);
}
.sj-otherhalls a:hover { border-color: var(--sj-brand); background: var(--sj-brand); color: #fff; }
.sj-otherhalls .is-current {
  display: inline-block;
  padding: 9px 18px;
  border: 1px solid var(--sj-ink);
  background: var(--sj-ink);
  color: #fff;
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: .03em;
}

/* --------------------------------------------------------------------------
   22. フッター
   -------------------------------------------------------------------------- */
.sj-footer { background: #fff; border-top: 1px solid var(--sj-ink); font-size: 14px; color: var(--sj-ink-2); }
.sj-footer a { color: var(--sj-ink-2); text-decoration: none; }
.sj-footer a:hover { color: var(--sj-brand); }

.sj-footer__main {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: clamp(36px, 4.72vw, 81.92px);
  padding-block: clamp(44px, 5.9vw, 97.28px) clamp(32px, 4.13vw, 66.56px);
  max-width: none;
}
.sj-footer__logo img { width: 176px; }
.sj-footer__addr { margin-top: 22px; font-style: normal; font-size: 13px; line-height: 2.05; }
.sj-footer__addr b { display: block; margin-bottom: 4px; color: var(--sj-ink); font-size: 14px; letter-spacing: .04em; }

.sj-footer__nav {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(160px, 100%), 1fr));
  gap: 28px;
}
.sj-footer__navtitle {
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--sj-line);
  font-family: var(--sj-font-sans);
  font-size: 15px;   /* リンク（13px）より一回り大きく */
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--sj-brand);
}
.sj-footer__nav ul { margin: 0; padding: 0; list-style: none; font-size: 13px; line-height: 2.2; }

.sj-footer__area {
  padding: 22px 0;
  border-top: 1px solid var(--sj-line);
  font-size: 12px;
  line-height: 1.95;
  color: var(--sj-ink-3);
}
.sj-footer__area b { display: block; margin-bottom: 4px; color: var(--sj-ink-2); letter-spacing: .04em; }

.sj-footer__copy {
  padding: 16px 0;
  border-top: 1px solid var(--sj-line);
  font-family: var(--sj-font-en);
  font-size: 11px;
  letter-spacing: .04em;
  color: var(--sj-ink-3);
}

@media (max-width: 899px) { .sj-footer__main { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   23. 印刷
   -------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------
   スマホ（767px以下）だけの調整
   -------------------------------------------------------------------------- */
/* スマホだけで効かせる改行 */
.sj-br-sp { display: none; }
/* PCだけで効かせる改行 */
@media (max-width: 767px) { .sj-br-pc { display: none; } }

@media (max-width: 767px) {
  .sj-br-sp { display: inline; }

  /* FV：画像を先に、その下にコピー */
  .sj-hero__figure { order: -1; }

  /* 浦和斎場とは：見出し → スライダー → 本文の順に並べ替える */
  .sj-media--slider { display: flex; flex-direction: column; align-items: stretch; gap: 0; }   /* stretch がないと Swiper が横に広がり続ける */
  .sj-media--slider .sj-media__body { display: contents; }
  .sj-media--slider .sj-section-head { order: -2; text-align: center; }
  /* 「浦和斎場とは」も他の見出しと同じく中央寄せ（下線のピンクも中央） */
  .sj-media--slider .sj-h2 { margin-inline: auto; padding-inline: .7em; }
  .sj-media--slider .sj-h2::after { left: 50%; transform: translateX(-50%); }
  .sj-media--slider .sj-slider { order: -1; margin: 24px 0 4px; }

  /* 料金タブ：2行のラベルを縦中央にそろえる */
  .sj-tabs__list [role="tab"] {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1.45;
    text-align: center;
  }

  /* 「浦和斎場で葬儀をすると、／実際にいくらかかる？」を2行に収める
     （左右の余白と字間を詰め、文字サイズは画面幅に合わせて上限を設ける） */
  .sj-h2--fit,
  .sj-section-head--center .sj-h2--fit {
    padding-inline: 0;
    letter-spacing: 0;
    font-size: min(var(--sj-fs-h2), 7.2vw);
  }
}
/* 基本情報の項目名（th）：縦積みになる599px以下でラベルとして大きく見せる */
@media (max-width: 599px) {
  .sj-datatable th { font-family: var(--sj-font-sans); font-size: 14px; letter-spacing: .04em; }
}

/* --------------------------------------------------------------------------
   ページトップボタン（右下・固定CTAバーの上。スクロールすると表示）
   -------------------------------------------------------------------------- */
.sj-pagetop {
  position: fixed;
  right: clamp(16px, 2vw, 32px);
  bottom: calc(var(--sj-cta-h) + clamp(16px, 2vw, 24px));
  z-index: 95;
  display: grid;
  place-items: center;
  width: clamp(48px, 3.6vw, 56px);
  aspect-ratio: 1;
  padding: 0;
  border: 1px solid var(--sj-brand);
  border-radius: 50%;
  background: #fff;
  color: var(--sj-brand);
  box-shadow: 0 4px 14px rgba(0, 0, 0, .12);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity .25s, visibility .25s, transform .25s, background-color .2s, color .2s;
}
.sj-pagetop.is-visible { opacity: 1; visibility: visible; transform: none; }
.sj-pagetop:hover { background: var(--sj-brand); color: #fff; }
/* 上向きの山形 */
.sj-pagetop::before {
  content: "";
  width: 12px; height: 12px;
  margin-top: 5px;
  border-top: 2px solid currentColor;
  border-left: 2px solid currentColor;
  transform: rotate(45deg);
}

@media print {
  .sj-hero-cta, .sj-navtoggle, .sj-drawer, .sj-pagetop { display: none !important; }
  .sj-header { position: static; }
  body { padding-bottom: 0; }
  .sj-faq__item > .sj-faq__a { display: flex !important; }
  .sj-finalcta { background: #fff !important; color: #000 !important; }
}
