@charset "utf-8";
/* ELEVEN FITNESS LP
 * 設計の前提（触る前に読むこと）
 *  - モバイルファースト。基準は Figma「SPレイアウト」= 1440px幅のキャンバスで
 *    実機430pxを表している。したがって CSS px = Figma px ÷ 3.348837
 *  - デスクトップは Figma「PCレイアウト」= 1440px幅で 1:1
 *  - 768〜1023px は SP レイアウトのまま中央寄せ（幅が間延びしないよう上限を付ける）
 *  - 色は変数で持つ。元画像の実測値は #161616 系だが、Figma の承認済みデザインは
 *    #333 系。ここを切り替えるときは変数だけ直せば全体に効く
 */

/* ============ トークン ============ */
:root {
  /* カンプ幅430pxを基準にした縮小率。430px以上では 1px なので見た目は変わらず、
     375/390px などの端末だけ全体が比例縮小される（zoom と違い position:fixed が壊れない）。
     CSSの px 値は原則 calc(N * var(--k)) で書く。 */
  --k: calc(min(100vw, 430px) / 430);
  /* フォント専用の拡大率。レイアウトの --k は据え置き、文字だけ 1.05 倍（客先 2026-09-01「デフォルトの文字をもう少し大きく」）。改行はspan/brでハードコードのため枠は不変 */
  --fk: calc(var(--k) * 1.05);

  /* 色 */
  --c-ink: #333333;          /* 見出し・強い文字（Figma準拠。元画像実測は #161616） */
  --c-body: #7a7a7b;         /* 本文 */
  --c-mute: #9a9a9a;         /* 補助・注記 */
  --c-accent: #fbcb2e;       /* 黄（Figma準拠。実サイトは #ffcc00） */
  --c-accent-deep: #e6b800;
  --c-white: #ffffff;
  --c-dark: #1c1c1c;         /* ダート背景 */
  --c-dark-2: #232323;
  --c-line: #e5e5e5;

  /* 書体 */
  --f-sans: "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN",
    "Yu Gothic", Meiryo, sans-serif;
  --f-brush: "Yuji Syuku", serif;
  /* 透かしの筆記体。元画像の書き出しSVGが線の欠けた状態だったため実体をフォントに変えた（DEVIATIONS.md 参照） */
  --f-script: "Ephesis", cursive;

  /* レイアウト */
  --pad-sp: calc(24 * var(--k));            /* SPの左右余白 */
  --w-pc: calc(1200 * var(--k));            /* PCのコンテナ既定値（節ごとに上書きする） */
  --header-h: calc(66.4 * var(--k));   /* 実サイト: ロゴ y19.2 + 高さ28 + 下19.2 */

  /* 動き */
  --ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

/* ============ リセット ============ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  /* macOSのサブピクセルAAは白抜き文字を太らせる。カンプ（Figmaのグレースケールレンダリング）
     と見え方を揃えるため、全体をグレースケールAAにする */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-family: var(--f-sans);
  font-weight: 400;
  color: var(--c-body);
  background: var(--c-white);
  line-height: 1.8;
  letter-spacing: 0.04em;
  /* 横スクロールは overflow-x:hidden で塞がない。塞ぐと検査がすり抜ける */
}
img, svg, video { max-width: 100%; height: auto; vertical-align: bottom; }
a { color: inherit; text-decoration: none; }
ul, ol { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, h4, p, figure, blockquote { margin: 0; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }

/* ============ 共通パーツ ============ */
.l-inner {
  width: 100%;
  max-width: calc(560 * var(--k));          /* 768〜1023px で間延びさせない */
  margin-inline: auto;
  padding-inline: var(--pad-sp);
}

.c-label {                    /* 節の英字ラベル（CONCEPT など） */
  font-size: calc(10.3 * var(--fk));
  font-weight: 500;   /* Figmaで Bold なのは concept だけ。他は全部 Medium */
  line-height: 1.2;          /* Figmaのy値=文字上端 と揃えるため */
  letter-spacing: 0.2em;
  color: var(--c-mute);
  text-align: center;
}
.c-h2 {
  font-size: calc(26.9 * var(--fk));
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.15em;
  color: var(--c-ink);
  text-align: center;
}

/* ============ スクロール連動アニメーション ============ */
/* JSが無効でも内容が読めるよう、既定は可視。JSが .js-reveal を付けてから隠す */
.js .reveal { opacity: 0; transform: translateY(calc(24 * var(--k))); }
.js .reveal.is-in {
  opacity: 1;
  transform: none;
  transition: opacity 0.8s var(--ease), transform 0.8s var(--ease);
}
.js .reveal-d1.is-in { transition-delay: 0.12s; }
.js .reveal-d2.is-in { transition-delay: 0.24s; }
.js .reveal-d3.is-in { transition-delay: 0.36s; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .reveal, .js .reveal.is-in {
    opacity: 1; transform: none; transition: none;
  }
}

/* ============ デスクトップ ============ */
@media (min-width: 1024px) {
  /* PCカンプは幅1440前提。1024〜1439ではPC版の縮小率に切り替える */
  :root { --k: calc(min(100vw, 1440px) / 1440); }

  body { letter-spacing: 0.04em; }
  .l-inner { max-width: var(--w-pc); padding-inline: calc(40 * var(--k)); }
  .c-label { font-size: calc(13 * var(--fk)); letter-spacing: calc(3.2 * var(--k)); line-height: calc(22 * var(--k)); }
  .c-h2 { font-size: calc(44 * var(--fk)); letter-spacing: calc(6.6 * var(--k)); line-height: calc(60 * var(--k)); }
}

/* ============ ユーティリティ ============ */
/* 改行位置がSPとPCで違う箇所で使う。既定はSPの改行だけを表示する */
.u-pcbr { display: none; }
.u-vh {
  position: absolute; width: calc(1 * var(--k)); height: calc(1 * var(--k)); margin: calc(-1 * var(--k));
  padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
body.is-locked { overflow: hidden; }

/* ============ ボタン ============ */
.c-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: calc(10 * var(--k)); min-width: calc(209.5 * var(--k)); height: calc(59.2 * var(--k)); padding: 0 calc(24 * var(--k));
  border-radius: calc(60 * var(--k));
  font-size: calc(15.2 * var(--fk)); font-weight: 700; letter-spacing: 0.08em; line-height: 1;
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease), opacity 0.3s var(--ease);
}
.c-btn--gold { background: var(--c-accent); color: #161616; }
.c-btn__arrow { font-style: normal; font-size: 1em; transition: transform 0.3s var(--ease); }
@media (hover: hover) {
  .c-btn:hover { transform: translateY(calc(-2 * var(--k))); box-shadow: 0 calc(10 * var(--k)) calc(24 * var(--k)) rgba(0, 0, 0, 0.22); }
  .c-btn:hover .c-btn__arrow { transform: translateX(calc(4 * var(--k))); }
}

/* ============ ヘッダー ============ */
.l-header {
  /* absolute だとスクロールで流れてメニューが押せなくなる。固定して常に出す */
  position: fixed; inset: 0 0 auto; z-index: 50;
  display: flex; align-items: center; justify-content: space-between;
  height: var(--header-h); padding: 0 calc(19.2 * var(--k));
  transition: height 0.3s var(--ease), background 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
/* FVを過ぎたら地色を敷く（白いロゴ・白い線が明るい節で見えなくなるため） */
.l-header.is-stuck {
  height: calc(52 * var(--k));
  background: rgba(20, 20, 20, 0.92);
  -webkit-backdrop-filter: blur(calc(6 * var(--k))); backdrop-filter: blur(calc(6 * var(--k)));
  box-shadow: 0 calc(2 * var(--k)) calc(12 * var(--k)) rgba(0, 0, 0, 0.25);
}
.l-header.is-stuck .l-header__logo img { width: calc(124 * var(--k)); }
.l-header__logo img { width: calc(146.6 * var(--k)); height: auto; }
.l-header__nav { display: none; }

.l-header__burger {
  /* 開いたドロワー(.l-header__nav.is-open は z-index:40)より前面に置く。
     そうしないと×アイコンがオーバーレイの下に潜って押せず、閉じられなくなる（客先 2026-09-07 指摘） */
  position: relative; z-index: 45; width: calc(24 * var(--k)); height: calc(16 * var(--k)); padding: 0;
  display: flex; flex-direction: column; justify-content: space-between;
}
.l-header__burger span:not(.u-vh) {
  display: block; width: calc(24 * var(--k)); height: calc(2 * var(--k)); background: #fff;
  transition: transform 0.3s var(--ease), opacity 0.2s var(--ease);
}
.l-header__burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(calc(7 * var(--k))) rotate(45deg); }
.l-header__burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.l-header__burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(calc(-7 * var(--k))) rotate(-45deg); }

/* ★ドロワーを開いている間はヘッダーの backdrop-filter を外す。
   backdrop-filter は子孫の position:fixed の基準(containing block)をヘッダーに変えてしまい、
   全画面のはずのドロワーがヘッダー(52px)の中に潰れる（客先 2026-09-07「スクロール後にメニューがおかしい」の真因）。
   ドロワーは全面を覆うので、開いている間はぼかしが無くても見た目は変わらない。 */
body.is-locked .l-header,
body.is-locked .l-header.is-stuck {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

/* 追従ボタン・固定CTAバー(z-index:60)はドロワー(40)より前面なので、
   開いている間はメニューの上に重なって見える。開いている間だけ隠す。2026-09-08 */
body.is-locked .l-float,
body.is-locked .l-fixedbar { opacity: 0; visibility: hidden; pointer-events: none; }

/* ドロワー（SP） */
.l-header__nav.is-open {
  position: fixed; inset: 0; z-index: 40;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: calc(32 * var(--k));
  /* 半透明(0.96)だと背後のセクション境界が横帯として透けるため不透明にする。2026-09-08 */
  background: #141414;
  animation: drawerIn 0.28s var(--ease) both;
}
@keyframes drawerIn { from { opacity: 0; } to { opacity: 1; } }
.l-header__nav.is-open .l-header__list {
  display: flex; flex-direction: column; align-items: center; gap: calc(26 * var(--k));
}
.l-header__nav.is-open a { font-size: calc(16 * var(--fk)); font-weight: 500; letter-spacing: 0.12em; color: #fff; }
.l-header__nav.is-open .l-header__cta {
  padding: calc(12 * var(--k)) calc(32 * var(--k)); border: calc(1 * var(--k)) solid rgba(255, 255, 255, 0.6); border-radius: calc(40 * var(--k));
}

/* ============ 01 FV ============ */
.p-hero {
  position: relative; z-index: 1;
  display: flex; align-items: center; justify-content: center;
  /* iOSでURLバー開閉により表示高が変わる。100svh(小)固定だとバーが縮んだ時にKVが足りず
     下に白余白が出る（客先 2026-09-07 指摘）。dvh(現在のビューポートに追従)を最優先にする。
     未対応ブラウザ向けに vh→svh の順でフォールバック。 */
  height: 100vh;
  height: 100svh;
  height: 100dvh;
  min-height: calc(560 * var(--k));
  overflow: hidden;
  background: linear-gradient(#1a1a1a 0%, #2a2a2a 50%, #111 100%);
}
.p-hero__media { position: absolute; inset: 0; }
.p-hero__media picture { display: block; width: 100%; height: 100%; }
/* タブレット幅（768〜1023）はKV画像をPC用に切り替えるので、枠の比もPCと同じ 1440:1000 にそろえる。
   ここだけ 100svh のままにすると、縦長のSP用画像を横長の枠に cover して人物が上下とも切れる */
@media (min-width: 768px) and (max-width: 1023.98px) {
  .p-hero { height: calc(100vw / 1.44); min-height: 0; }
}
/* 客先モックアップの追加コピー。KVの左下に置く（SPは分割線の下＝柔術側） */
.p-hero__motto {
  /* 位置は客先モックアップ(58993697.png)の実測に合わせている（2026-08-28） */
  position: absolute; left: calc(36 * var(--k)); bottom: calc(125.4 * var(--k)); z-index: 2;
  font-size: calc(21 * var(--fk)); font-weight: 800; line-height: 1.45; letter-spacing: 0.02em; color: #fff;
  text-shadow: 0 calc(2 * var(--k)) calc(10 * var(--k)) rgba(0, 0, 0, 0.5);
}
.p-hero__motto span { display: block; }
.p-hero__motto--accent { color: var(--c-accent); }
.p-hero__motto::after {
  content: ""; display: block; width: calc(34 * var(--k)); height: calc(2 * var(--k));
  margin-top: calc(10 * var(--k)); background: var(--c-accent);
}
/* PC（2026-08-28 PM指示「PCのKVにも入れてほしい」）。
   左端はヘッダーのロゴと同じ48px＋広い画面の余白ぶん（--gut）にそろえる。
   文字サイズは見出しの比率（SP41.6 / PC80 = 1.92倍）に合わせて 21→38。
   ★1024px未満は --k が 1 のままなので、ここをPCと同じ 768px 起点にすると
     1023pxで38px・1024pxで27pxと逆転する。PCの版組みが始まる1024pxからにする */
@media (min-width: 1024px) {
  .p-hero__motto {
    /* --gut は1024px以上のブロックでしか定義されないので、768〜1023では 0 に落とす。
       フォールバック無しだと calc() ごと無効になり left:auto（中央）になる */
    left: calc(48 * var(--k) + var(--gut, 0px)); bottom: calc(120 * var(--k));
    font-size: calc(38 * var(--fk)); line-height: 1.4;
  }
  .p-hero__motto::after { width: calc(62 * var(--k)); height: calc(3 * var(--k)); margin-top: calc(16 * var(--k)); }
}
.p-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.p-hero::after {
  /* 画像の上に載せる暗幕。2026-08-28、客先モックと比べて暗すぎた（全体で-19.5/255）ため
     従来値の0.35倍にした。この値でモックとの明るさの差が -3.2/255 まで縮む（extract/luma_cmp.py で実測） */
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(rgba(0,0,0,0.193) 0%, rgba(0,0,0,0.088) 40%, rgba(0,0,0,0.21) 100%);
}
/* PCはSP用KVと別画像で、暗幕を同じだけ薄くするとバッジ行のコントラストが3.3:1まで落ちる。
   PCだけ従来の0.7倍にとどめる（この値でバッジ4.1:1） */
@media (min-width: 768px) {
  .p-hero::after {
    background: linear-gradient(rgba(0,0,0,0.385) 0%, rgba(0,0,0,0.175) 40%, rgba(0,0,0,0.42) 100%);
  }
}
.p-hero__body {
  position: relative; z-index: 2;
  width: 100%; padding: 0 var(--pad-sp);
  text-align: center; color: #fff;
}
.p-hero__badge {
  font-size: calc(13.12 * var(--fk)); font-weight: 400; line-height: 1.9; letter-spacing: 0.2em;
  /* 2026-08-28 暗幕を薄くしたぶん背景が明るくなり、rgba(255,255,255,0.7) ではPCで
     コントラスト比が2.68:1まで落ちた（AAは4.5必要）。白＋影で持ち上げる */
  color: #fff;
  text-shadow: 0 calc(1 * var(--k)) calc(6 * var(--k)) rgba(0, 0, 0, 0.8),
               0 0 calc(2 * var(--k)) rgba(0, 0, 0, 0.65);
}
.p-hero__badge-jp {
  font-family: var(--f-brush); font-size: calc(17.06 * var(--fk)); letter-spacing: 0.08em;
  color: var(--c-accent); margin-right: 0.72em;
}
.p-hero__title {
  margin-top: calc(32 * var(--k));
  font-size: calc(41.6 * var(--fk)); font-weight: 900; line-height: 1.3; letter-spacing: 0.06em;
}
.p-hero__title span { display: block; }
.p-hero__lead {
  margin-top: calc(22 * var(--k));
  font-size: calc(14.4 * var(--fk)); font-weight: 300; line-height: 1.9; letter-spacing: 0.12em;
}
.p-hero__cta { margin-top: calc(38 * var(--k)); }
/* SPは文字ブロックを分割線より上（キックボクシング側）に収める。
   位置・間隔・CTAの寸法は客先モックアップ(58993667.png)の実測値
   （extract/text_rows.py / extract/find_yellow.py で計測。2026-08-28）。
   ★ align-items:center による中央寄せだと、画面の高さが変わったときに
     分割線（画像の高さに比例して動く）との関係が崩れる。
     分割線と同じく「高さに対する割合」で置くため absolute にしている。 */
@media (max-width: 767.98px) {
  .p-hero__body {
    /* 上端ではなく下端を割合で固定する。分割線は画像の高さに比例して動くので、
       上端基準にすると画面が低い端末（375x667など）でCTAを分割線が横切る */
    position: absolute; left: 0; right: 0; bottom: 48.04%;
  }
  /* バッジ行の大きさはモック実測に合わせる。位置は右寄せではなく中央（PM指示 2026-08-28）。
     他の要素（h1・リード・CTA）と横中心をそろえる */
  .p-hero__badge { font-size: calc(9.86 * var(--fk)); }
  .p-hero__badge-jp { font-size: calc(12.82 * var(--fk)); }
  .p-hero__title { margin-top: calc(26.6 * var(--k)); line-height: 1.16; }
  .p-hero__lead {
    margin-top: calc(10.8 * var(--k));
    font-size: calc(12.2 * var(--fk)); line-height: 1.69;
  }
  .p-hero__cta {
    margin-top: calc(15.6 * var(--k));
    min-width: calc(172.7 * var(--k)); height: calc(40.3 * var(--k));
    padding: 0 calc(16.2 * var(--k));
  }
}
.p-hero__scroll {
  position: absolute; left: 50%; bottom: calc(74 * var(--k)); z-index: 2;
  writing-mode: vertical-rl;
  font-size: calc(11.2 * var(--fk)); font-weight: 300; letter-spacing: 0.2em;
  color: rgba(255, 255, 255, 0.85);
  transform: translateX(-50%);
}
.p-hero__scroll::after {              /* 下へ伸びる線（ゆっくり流れる） */
  content: ""; display: none; width: calc(1 * var(--k)); height: calc(46 * var(--k)); margin: calc(10 * var(--k)) auto 0;
  background: rgba(255, 255, 255, 0.6);
  transform-origin: top; animation: scrollLine 2.4s var(--ease) infinite;
}
@keyframes scrollLine {
  0% { transform: scaleY(0); opacity: 0; }
  35% { opacity: 1; }
  100% { transform: scaleY(1); opacity: 0; }
}

/* ============ 追従ボタン（電話 / LINE） ============ */
.l-float {
  position: fixed; right: calc(12 * var(--k)); bottom: calc(78 * var(--k)); z-index: 60;
  display: flex; flex-direction: column; gap: calc(8 * var(--k));
}
.l-float__btn {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  width: calc(50 * var(--k)); height: calc(50 * var(--k)); border-radius: 50%;
  font-size: calc(9.28 * var(--fk)); font-weight: 700; letter-spacing: 0.02em; line-height: 1;
  box-shadow: 0 calc(4 * var(--k)) calc(12 * var(--k)) rgba(0, 0, 0, 0.25);
  transition: transform 0.3s var(--ease);
}
.l-float__btn svg { width: calc(22 * var(--k)); height: calc(22 * var(--k)); fill: currentColor; }
.l-float__btn span { margin-top: calc(2 * var(--k)); }
.l-float__btn--tel { background: var(--c-accent); color: #161616; }
.l-float__btn--line { background: #06c755; color: #fff; }
@media (hover: hover) { .l-float__btn:hover { transform: scale(1.06); } }

/* ============ 固定CTAバー（SP） ============ */
.l-fixedbar {
  position: fixed; inset: auto 0 0; z-index: 60;
  display: flex; height: calc(65.7 * var(--k));
}
.l-fixedbar__main {
  flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: var(--c-accent); color: #161616; line-height: 1.3;
}
.l-fixedbar__sub { font-size: calc(10.4 * var(--k)); font-weight: 500; letter-spacing: 0.08em; }
.l-fixedbar__label { font-size: calc(14.08 * var(--fk)); font-weight: 800; letter-spacing: 0.06em; }
.l-fixedbar__label i { font-style: normal; margin-left: calc(6 * var(--k)); }
.l-fixedbar__tel {
  flex: 0 0 calc(60 * var(--k));
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: #161616; color: #fff;
  font-size: calc(8.8 * var(--fk)); font-weight: 700; line-height: 1;
}
.l-fixedbar__tel svg { width: calc(20 * var(--k)); height: calc(20 * var(--k)); fill: currentColor; margin-bottom: calc(3 * var(--k)); }

/* 固定バーのぶん、最後の要素が隠れないように逃がす */
body { padding-bottom: calc(65.7 * var(--k)); }

/* ============ デスクトップ：ヘッダー・FV ============ */
@media (min-width: 1024px) {
  :root { --header-h: calc(80 * var(--k)); }
  body { padding-bottom: 0; }

  .l-header { padding: 0 calc(48 * var(--k)); }
  .l-header__burger { display: none; }
  .l-header__nav { display: flex; align-items: center; gap: calc(32 * var(--k)); }
  .l-header__list { display: flex; align-items: center; gap: calc(32 * var(--k)); }
  .l-header__list a {
    font-size: calc(13.6 * var(--fk)); font-weight: 500; letter-spacing: 0.06em;
    color: rgba(255, 255, 255, 0.9); transition: color 0.25s var(--ease);
  }
  .l-header__list a:hover { color: var(--c-accent); }
  .l-header__cta {
    padding: calc(11 * var(--k)) calc(22 * var(--k)); border: calc(1 * var(--k)) solid rgba(255, 255, 255, 0.6); border-radius: calc(40 * var(--k));
    font-size: calc(13.12 * var(--fk)); font-weight: 500; letter-spacing: 0.08em; color: #fff;
    transition: background 0.25s var(--ease), color 0.25s var(--ease), border-color 0.25s var(--ease);
  }
  .l-header__cta:hover { background: var(--c-accent); border-color: var(--c-accent); color: #161616; }

  .p-hero { height: calc(1000 * var(--k)); }
  .p-hero__badge { font-size: calc(13.12 * var(--fk)); }
  .p-hero__title { margin-top: calc(27 * var(--k)); font-size: calc(80 * var(--fk)); line-height: 1.3; }
  .p-hero__lead { margin-top: calc(28 * var(--k)); font-size: calc(16.8 * var(--fk)); line-height: 1.9; }
  .p-hero__cta { margin-top: calc(40 * var(--k)); min-width: calc(213.3 * var(--k)); }
  .p-hero__scroll { bottom: calc(20 * var(--k)); color: rgba(255, 255, 255, 0.6); }
  .p-hero__scroll::after { display: block; }   /* SPは固定バーと干渉するので線はPCだけ */

  .l-fixedbar { display: none; }
  .l-float { right: calc(16 * var(--k)); bottom: calc(40 * var(--k)); gap: calc(10 * var(--k)); }
  .l-float__btn { width: calc(56 * var(--k)); height: calc(56 * var(--k)); }
}

/* 見出し下の黄色い短い下線（節見出しの共通パーツ） */
.c-h2__line {
  display: block; width: calc(31.1 * var(--k)); height: calc(3.3 * var(--k)); margin: calc(16.6 * var(--k)) auto 0;
  border-radius: calc(1.8 * var(--k)); background: #fec909;
}

/* ============ 02 concept ============ */
.p-concept {
  position: relative; z-index: 1; overflow: hidden;
  padding: calc(109.9 * var(--k)) 0 calc(34.9 * var(--k)); background: #fff;
}
.p-concept__deco { position: absolute; inset: 0; pointer-events: none; }
/* 装飾はすべてFigmaの書き出しSVGをそのまま置く。
   CSSで近似すると線の太さ・色・角度が原本とずれる（リングは1px線ではなく
   幅32px相当の極薄ストローク、斜線・ドットも本数と間隔が決まっている） */
.p-concept__deco img { position: absolute; display: block; }
.p-concept__ring--tr { top: calc(39.5 * var(--k)); left: calc(325.6 * var(--k)); width: calc(186.3 * var(--k)); height: calc(186.3 * var(--k)); }
.p-concept__ring--bl { top: calc(671.8 * var(--k)); left: calc(-93.7 * var(--k)); width: calc(171.7 * var(--k)); height: calc(171.7 * var(--k)); }
.p-concept__slash--tr, .p-concept__slash--bl { top: 0; left: 0; width: calc(430 * var(--k)); height: calc(792.5 * var(--k)); }
.p-concept__dots--l  { top: calc(133.2 * var(--k)); left: calc(6.4 * var(--k));   width: calc(29.7 * var(--k)); height: calc(73.3 * var(--k)); }
.p-concept__dots--br { top: calc(705 * var(--k));   left: calc(357.1 * var(--k)); width: calc(54.4 * var(--k)); height: calc(68.8 * var(--k)); }
.p-concept__wm { position: absolute; top: calc(81.3 * var(--k)); left: calc(53.5 * var(--k)); width: calc(251 * var(--k)); height: calc(101.7 * var(--k));
  display: flex; align-items: center; padding-left: calc(7 * var(--k));
  font-family: var(--f-script); font-size: calc(96 * var(--k)); line-height: 1; white-space: nowrap; color: #f0f0f0; pointer-events: none; }

.p-concept__head { position: relative; z-index: 2; text-align: center; }
/* 見出しの色と天地はFigmaの実測値。共通の c-label/c-h2 から節ごとにずらす */
.p-concept__head .c-label { font-weight: 700; color: #89898a; }
.p-concept__head .c-h2 { margin-top: calc(12.5 * var(--k)); color: #1c1c1c; }
.p-concept__head .c-h2__line { position: relative; top: calc(0.37 * var(--k)); margin-top: calc(15.6 * var(--k)); }
.p-concept__lead {
  margin-top: calc(16.5 * var(--k)); padding-left: calc(6.4 * var(--k));
  font-size: calc(14.8 * var(--fk)); font-weight: 500; line-height: 1.83; letter-spacing: 0.09em;
  color: var(--c-ink);
}

/* 白いカード */
.p-concept__card {
  position: relative; z-index: 2;
  margin: calc(24.1 * var(--k)) calc(17.9 * var(--k)) 0 calc(16.4 * var(--k));
  padding: calc(31.7 * var(--k)) 0 calc(30.1 * var(--k));
  border: calc(0.66 * var(--k)) solid #e8e8e8; border-radius: calc(7.17 * var(--k));
  background: #fff;
  box-shadow: 0 calc(6 * var(--k)) calc(24 * var(--k)) rgba(0, 0, 0, 0.03);
  text-align: center;
}
.p-concept__cardTitle {
  display: flex; align-items: center; justify-content: center; gap: 0;
  padding: 0 calc(27.8 * var(--k));
  font-size: calc(12.6 * var(--fk)); font-weight: 500; letter-spacing: 0.14em; color: var(--c-dark);
}
/* 罫線は左右で長さが違い、文字との間隔も非対称（原本の実測） */
.p-concept__cardTitle::before,
.p-concept__cardTitle::after { content: ""; flex: none; height: calc(0.66 * var(--k)); background: #dcdcdd; }
.p-concept__cardTitle span { flex: none; white-space: nowrap; }   /* 罫線を固定幅にした分、文字を縮ませない */
.p-concept__cardTitle::before { width: calc(83.9 * var(--k)); margin-right: calc(13.9 * var(--k)); }
.p-concept__cardTitle::after  { width: calc(80.6 * var(--k)); margin-left: calc(8.1 * var(--k)); }

.p-concept__courses {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  margin-top: calc(20.1 * var(--k)); padding: 0 calc(17.8 * var(--k));   /* アイコン枠の上下余白(7.9/7.3)ぶんを差し引く */
}
.p-concept__course { display: flex; flex-direction: column; align-items: center; }
/* 円・線画・黄色い円弧・集中線は、すべて原本の書き出しSVGを実測位置に置く。
   黄色い部分は「線」ではなく塗りのドーナツ片（内径94.5% / 約119度）なので
   stroke-dasharray では再現できない */
.p-concept__icon {
  position: relative; width: calc(91.8 * var(--k)); height: calc(93.8 * var(--k)); margin-inline: auto;
}
.p-concept__icon img { position: absolute; display: block; }
.p-concept__circle { left: calc(7.2 * var(--k));  top: calc(7.9 * var(--k));  width: calc(77.9 * var(--k)); height: calc(78.6 * var(--k)); }
.p-concept__arc    { left: calc(38.9 * var(--k)); top: calc(7.9 * var(--k));  width: calc(46.3 * var(--k)); height: calc(51.5 * var(--k)); }
.p-concept__glyph  { left: calc(27.8 * var(--k)); top: calc(33.3 * var(--k)); width: calc(35.6 * var(--k)); height: calc(32.3 * var(--k)); }
.p-concept__impact { left: calc(3 * var(--k));    top: calc(2.9 * var(--k));  width: calc(86.6 * var(--k)); height: calc(88.7 * var(--k)); }
/* 3つ目だけ円が一回り小さい */
.p-concept__icon--3 { width: calc(89.2 * var(--k)); }
.p-concept__icon--3 .p-concept__circle { left: calc(6.6 * var(--k));  top: calc(9.2 * var(--k));  width: calc(76 * var(--k));   height: calc(76 * var(--k)); }
.p-concept__icon--3 .p-concept__arc    { left: calc(37.5 * var(--k)); top: calc(9.2 * var(--k));  width: calc(45.1 * var(--k)); height: calc(49.7 * var(--k)); }
.p-concept__icon--3 .p-concept__glyph  { left: calc(24.5 * var(--k)); top: calc(35.9 * var(--k)); width: calc(38.8 * var(--k)); height: calc(22.6 * var(--k)); }
.p-concept__course:nth-child(3) .p-concept__jp { letter-spacing: -0.054em; }
.p-concept__jp {
  margin-top: calc(4.7 * var(--k));
  font-size: calc(11 * var(--fk)); font-weight: 700; letter-spacing: 0.1em; line-height: 1.2;
  color: var(--c-dark);
}
.p-concept__en {
  position: relative;
  /* margin-top を詰めた分は padding-bottom で返し、下の要素の位置は変えない */
  margin-top: calc(5.7 * var(--k)); padding-bottom: calc(14.3 * var(--k));
  font-size: calc(7.8 * var(--fk)); font-weight: 500; letter-spacing: 0.1em; color: #e0b032;
}
.p-concept__en::after {
  content: ""; position: absolute; left: 50%; bottom: calc(3.27 * var(--k));
  width: calc(23.1 * var(--k)); height: calc(2 * var(--k)); border-radius: calc(1 * var(--k)); background: #fedd62;
  transform: translateX(-50%);
}

/* 上の点線は原本では「2.6pxの線を5.3px間隔」。CSSのdashedとは刻みが違う */
.p-concept__body {
  margin: calc(11.3 * var(--k)) calc(15.8 * var(--k)) 0; padding-top: calc(25 * var(--k));
  background-image: repeating-linear-gradient(to right, #dcdcdd 0 calc(2.63 * var(--k)), transparent calc(2.63 * var(--k)) calc(5.28 * var(--k)));
  background-size: 100% calc(0.66 * var(--k)); background-repeat: no-repeat; background-position: 0 0;
}
.p-concept__body p {
  font-size: calc(10.6 * var(--fk)); font-weight: 400; line-height: 2.65; letter-spacing: 0.2em;
  color: var(--c-ink);
}
/* 筆記体は「塗り」「手書き文字」「ピリオド」の3枚重ね（原本の構成どおり） */
.p-concept__brush { position: relative; display: block; width: calc(231.2 * var(--k)); height: calc(37 * var(--k)); margin: calc(11.1 * var(--k)) auto 0; }
.p-concept__brush img { position: absolute; display: block; }
.p-concept__brushFill, .p-concept__brushText { left: 0; top: 0; width: calc(231.2 * var(--k)); height: calc(37 * var(--k)); }
.p-concept__brushDot { left: calc(225.2 * var(--k)); top: calc(20.3 * var(--k)); width: calc(1.64 * var(--k)); height: calc(1.79 * var(--k)); }

/* ============ 03 service ============ */
.p-service {
  position: relative; z-index: 1; overflow: hidden;
  padding: 0; background: #fff;
}
/* 右上に抜ける大判写真（右端までブリード） */
.p-service__photo { position: absolute; top: 0; right: 0; width: calc(262.8 * var(--k)); height: calc(373.3 * var(--k)); }
.p-service__photo img { width: 100%; height: 100%; object-fit: cover; }
.p-service__photo::after {          /* 左側を白へなじませる */
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, #fff 0%, rgba(255,255,255,0) 42%);
}

/* 見出し背面の筆記体の透かし「Course」（Figma: 透かし Course / 77:12） */
.p-service__wm {
  position: absolute; left: 0; top: calc(-0.1 * var(--k));
  width: calc(215 * var(--k)); height: calc(137.6 * var(--k)); z-index: 1; pointer-events: none;
  display: flex; align-items: center; padding-left: 0;
  font-family: var(--f-script); font-size: calc(94.6 * var(--k)); line-height: 1; white-space: nowrap; color: #f1e6d0;
}
.p-service__head-area { position: relative; z-index: 2; padding: calc(13.1 * var(--k)) 0 0 calc(19.3 * var(--k)); }
.p-service__brand { line-height: 1.25; }
.p-service__brand span:first-child {
  display: block; font-size: calc(14.2 * var(--fk)); font-weight: 300; letter-spacing: 0.29em; color: #3f4142;
}
.p-service__brand span:last-child {
  display: block; padding-left: calc(15.3 * var(--k));
  font-size: calc(7 * var(--fk)); font-weight: 400; letter-spacing: 0.3em; color: #5e6062;
}
.c-label--left, .c-h2--left { text-align: left; }
.p-service__head-area .c-label { margin-top: calc(34.1 * var(--k)); margin-left: calc(11.8 * var(--k)); font-size: calc(7.5 * var(--fk)); letter-spacing: 0.25em; color: #a5a097; }
.p-service__head-area .c-h2 { margin-top: calc(3.3 * var(--k)); margin-left: calc(9.5 * var(--k)); font-size: calc(19.3 * var(--fk)); letter-spacing: 0.08em; color: #111213; }
.p-service__lead {
  margin-top: calc(8.8 * var(--k)); margin-left: calc(12.1 * var(--k));
  font-size: calc(7.7 * var(--fk)); font-weight: 400; line-height: calc(12.42 * var(--k)); letter-spacing: 0.08em; color: #2c2d2e;
}

.p-service__cards { position: relative; z-index: 2; margin-top: calc(26.6 * var(--k)); padding: 0 calc(34.4 * var(--k)); }
.p-service__card {
  position: relative; border-radius: calc(4.8 * var(--k)); background: #fdfdfd;
  box-shadow: 0 calc(2 * var(--k)) calc(10 * var(--k)) rgba(0, 0, 0, 0.05), inset 0 0 0 calc(0.48 * var(--k)) #efefef;
  transition: background 0.4s var(--ease), box-shadow 0.4s var(--ease);
}
.p-service__card + .p-service__card { margin-top: calc(12 * var(--k)); }
/* 原本はカード2→3の間だけ詰まっている */
.p-service__card:nth-child(3) { margin-top: calc(5.7 * var(--k)); }
.p-service__card.is-open {
  border-radius: calc(7.2 * var(--k)); background: #1e2022;
  box-shadow: 0 calc(2 * var(--k)) calc(10 * var(--k)) rgba(0, 0, 0, 0.05), inset 0 0 0 calc(0.39 * var(--k)) #e6c46a;
}

.p-service__head {
  position: relative; display: grid; grid-template-columns: calc(130.9 * var(--k)) 1fr;
  width: 100%; text-align: left;
}
.p-service__thumb {
  position: relative; display: block; align-self: stretch;
  overflow: hidden; border-radius: calc(4.8 * var(--k)) 0 0 0;
}
.p-service__card.is-open .p-service__thumb { border-radius: calc(7.2 * var(--k)) 0 0 0; }
.p-service__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* 写真の高さは明示する。height:100% は親に高さが無いと画像の元比率になり、
   カードが写真の縦横比に引きずられて伸びる（実測で364pxまで伸びていた） */
.p-service__card .p-service__thumb { height: calc(87 * var(--k)); }
.p-service__card.is-open .p-service__thumb { height: calc(106.6 * var(--k)); }
/* 暗さは書き出した写真自体に含まれているので、CSS側で重ねると二重に暗くなる
   （実測: Figma平均152 に対し 46%の黒を重ねると84まで落ちる） */
.p-service__no {
  position: absolute; left: calc(19.7 * var(--k)); top: calc(36.4 * var(--k)); z-index: 2;
  font-size: calc(8.7 * var(--fk)); font-weight: 700; letter-spacing: 0.08em; color: #fdd220;
}
.p-service__en {
  position: absolute; left: calc(20 * var(--k)); top: calc(55.5 * var(--k)); z-index: 2;
  font-size: calc(10 * var(--fk)); font-weight: 500; line-height: 1.56; letter-spacing: 0.068em; color: #f0f0f0;
}
.p-service__card.is-open .p-service__en { font-size: calc(9.4 * var(--fk)); letter-spacing: 0.12em; color: #f2f2f2; top: calc(55.5 * var(--k)); }
/* 閉じているカードは写真が低いぶん、番号と英字も上に来る */
.p-service__card:not(.is-open) .p-service__no { top: calc(26.7 * var(--k)); }
.p-service__card:not(.is-open) .p-service__en { top: calc(48.1 * var(--k)); }
/* 原本ではカード3だけ番号がさらに7pxほど上にある */
.p-service__card:nth-child(3) .p-service__no { top: calc(18.9 * var(--k)); }
.p-service__card:nth-child(3) .p-service__en { top: calc(40.9 * var(--k)); }
.p-service__body { display: block; padding: calc(17.2 * var(--k)) calc(34 * var(--k)) calc(13.5 * var(--k)) calc(17.9 * var(--k)); }
/* 開いているカードの下端の三角。原本は金色(#e6c46a)の細い縁付きなのでFigmaの書き出しをそのまま置く */
.p-service__card.is-open { position: relative; }
.p-service__card.is-open::after {
  content: ""; position: absolute; left: calc(169.2 * var(--k)); top: 100%;
  width: calc(20.47 * var(--k)); height: calc(9.6 * var(--k));
  background: url(../svg/svc-notch.svg) no-repeat center / 100% 100%;
}
.p-service__card.is-open .p-service__body { padding: calc(22.2 * var(--k)) calc(34 * var(--k)) calc(14 * var(--k)) calc(17.9 * var(--k)); }
.p-service__jp {
  display: block; line-height: 1.2; font-size: calc(11.75 * var(--fk)); font-weight: 700; letter-spacing: 0.042em; color: #111213;
  transition: color 0.4s var(--ease);
}
.p-service__text { display: block; margin-top: calc(4.7 * var(--k)); }
/* チーム名 EN BJJ（客先指示 2026-08-29）。ゴシック体で名前の下に小さく添える */
.p-service__team {
  display: block; font-family: var(--f-sans); font-weight: 700;
  font-size: calc(8 * var(--fk)); letter-spacing: 0.1em; line-height: 1;
  margin-top: calc(2.4 * var(--k)); color: #248bc0;
}
.p-service__card.is-open .p-service__team { color: #7fd0f2; }
.p-service__card.is-open .p-service__text { margin-top: calc(6.3 * var(--k)); }
.p-service__card.is-open .p-service__jp { font-size: calc(11 * var(--fk)); letter-spacing: 0.104em; }
.p-service__text span {
  display: block;
  font-size: calc(8.3 * var(--fk)); font-weight: 400; line-height: calc(12.42 * var(--k)); letter-spacing: -0.01em; color: #2c2d2e;
  transition: color 0.4s var(--ease);
}
/* 開いているカードだけ写真の上に載るので、書体も別（Figmaの実測値） */
.p-service__card.is-open .p-service__text span {
  font-size: calc(7 * var(--fk)); font-weight: 500; line-height: calc(12.9 * var(--k)); letter-spacing: 0.174em; color: #e2e3e3;
}
.p-service__card.is-open .p-service__jp { color: #fff; }

/* ＋ / − の開閉マーク（原本: 横 10.51×0.96 / 縦 0.96×10.51、開いたカードは横 10.03px） */
.p-service__mark {
  position: absolute; right: calc(20.7 * var(--k)); top: calc(23.2 * var(--k)); width: calc(10.51 * var(--k)); height: calc(10.51 * var(--k));
}
/* 閉じたカードでは原本はカードの上下中央（+0.65px）にある */
.p-service__card:not(.is-open) .p-service__mark { top: 50%; margin-top: calc(-4.6 * var(--k)); }
.p-service__mark::before, .p-service__mark::after {
  content: ""; position: absolute; background: #666769;
}
/* 横棒に transform の遷移を付けると合成レイヤーになり、小数位置でぼけて1px下にずれる */
.p-service__mark::before { transition: background 0.35s var(--ease), width 0.35s var(--ease); }
.p-service__mark::after  { transition: transform 0.35s var(--ease), opacity 0.35s var(--ease); }
/* top/margin だと Chrome が 1px 単位に丸めて塗るため小数位置にできない。transform で置く */
.p-service__mark::before { left: 0; top: 0; transform: translateY(calc(4.35 * var(--k))); width: calc(10.51 * var(--k)); height: calc(0.96 * var(--k)); }
.p-service__mark::after  { top: 0; left: 50%; margin-left: calc(-0.48 * var(--k)); width: calc(0.96 * var(--k)); height: calc(10.51 * var(--k)); }
.p-service__card.is-open .p-service__mark::before { background: #dcdcdc; width: calc(10.03 * var(--k)); }
.p-service__card.is-open .p-service__mark::after { transform: scaleY(0); opacity: 0; }

/* 開いたときに出る特徴3つ */
.p-service__panel {
  display: grid; grid-template-rows: 0fr;
  /* 中の ul に上下パディングがあると 0fr でも高さが残るので、親側でも切る */
  overflow: hidden;
  transition: grid-template-rows 0.45s var(--ease);
}
.p-service__card.is-open .p-service__panel { grid-template-rows: 1fr; }
.p-service__panel > * { overflow: hidden; }
.p-service__feats {
  display: grid; grid-template-columns: repeat(3, 1fr);
  padding: calc(17.2 * var(--k)) 0 calc(22.9 * var(--k));
}
.p-service__feat {
  /* 元デザインはアイコンの右に文字が2行。縦積みにすると行が3倍以上に伸びる */
  position: relative; display: flex; align-items: center; justify-content: center; gap: calc(6.8 * var(--k));
  color: #fff;
}
.p-service__feat > span:not(.p-service__featIcon) { display: block; }
.p-service__featText { display: block; }
/* 原本は等分配置ではないので、実測ぶんだけ横にずらす */
.p-service__feat:nth-child(1) { transform: translateX(calc(11.9 * var(--k))); }
.p-service__feat:nth-child(3) { transform: translateX(calc(-9.9 * var(--k))); }
.p-service__feat + .p-service__feat::before {
  content: ""; position: absolute; top: 50%;
  width: calc(1 * var(--k)); height: calc(28.7 * var(--k)); background: #515253; transform: translateY(-50%);
}
.p-service__feat:nth-child(2)::before { left: calc(5.1 * var(--k)); }
.p-service__feat:nth-child(3)::before { left: calc(5.7 * var(--k)); }
/* 1つ目だけ字形が細い（原本の実測） */
.p-service__feat:nth-child(1) .p-service__featIcon { width: calc(24.8 * var(--k)); }
.p-service__featIcon {
  width: calc(28.7 * var(--k)); height: calc(27.7 * var(--k)); background: #dcdcdc;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain;
  mask: var(--icon) no-repeat center / contain;
}
.p-service__featName {
  display: block;          /* span は既定でinline。ブロックにしないと説明文と横に並ぶ */
  font-size: calc(7 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.16em; color: #fdd220;
  white-space: nowrap;          /* 元デザインは1行。折り返すと行が倍になる */
}
.p-service__featDesc {
  display: block;
  margin-top: calc(3.3 * var(--k)); font-size: calc(6.2 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.06em; color: #c2c3c3;
  white-space: nowrap;
}

/* 下部バーは全幅ではなく、右端が斜めに落ちる台形（原本のベクター実測）。
   斜めは右下がりではなく「下に行くほど右へ」伸びる向き */
.p-service__band {
  position: relative; margin-top: calc(16.2 * var(--k)); height: calc(21 * var(--k));
}
.p-service__band::before {         /* 濃色の台形 */
  content: ""; position: absolute; left: 0; top: 0; width: calc(177.8 * var(--k)); height: calc(21 * var(--k));
  background: #2a2d2e;
  clip-path: polygon(0 0, calc(143.2 * var(--k)) 0, calc(177.8 * var(--k)) calc(21 * var(--k)), 0 calc(21 * var(--k)));
}
.p-service__band::after {          /* その右肩に重なる黄色い斜め */
  content: ""; position: absolute; left: calc(143.2 * var(--k)); top: 0; width: calc(42.7 * var(--k)); height: calc(21 * var(--k));
  background: #fbcb3c;
  clip-path: polygon(0 0, calc(8.1 * var(--k)) 0, calc(42.7 * var(--k)) calc(21 * var(--k)), calc(34.6 * var(--k)) calc(21 * var(--k)));
}
.p-service__sign {
  position: absolute; left: calc(19.9 * var(--k)); top: 50%; z-index: 2;
  font-size: calc(6.6 * var(--fk)); font-weight: 500; letter-spacing: 0.67em; color: #e8c243;
  transform: translateY(-50%);
}

/* ============ 04 facility ============ */
.p-facility { padding: calc(57.6 * var(--k)) 0 calc(22 * var(--k)); background: #fff; text-align: center; }
.p-facility__h2 {
  font-size: calc(15.3 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.085em;
  color: #3a3a3a;
}
.c-h2__line--sm { width: calc(27.6 * var(--k)); height: calc(2.1 * var(--k)); margin-top: calc(8.3 * var(--k)); background: #f9cd53; }
.p-facility__lead {
  margin-top: calc(9.5 * var(--k)); padding-inline: calc(24 * var(--k));
  font-size: calc(7 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.015em; color: #6f6f6f;
}
.p-facility__card {
  position: relative; margin: calc(9.2 * var(--k)) calc(19 * var(--k)) 0; overflow: hidden; border-radius: calc(7.2 * var(--k));
}
.p-facility__card img { display: block; width: 100%; height: calc(185.3 * var(--k)); object-fit: cover; }
.p-facility__bar {
  position: absolute; inset: auto 0 0; height: calc(30.1 * var(--k));
  display: grid; grid-template-columns: repeat(3, 1fr); align-items: center;
  background: rgba(0, 0, 0, 0.346);
}
.p-facility__item {
  position: relative; display: flex; align-items: center; justify-content: center; gap: calc(4.5 * var(--k));
  font-size: calc(6.2 * var(--fk)); font-weight: 500; letter-spacing: 0.08em; color: #e6e5e4; line-height: 1.2;
}
/* 3等分の升目の中央ではなく、原本の実測位置に置く（原本は等分になっていない）。
   区切り線は項目にぶら下がっているので、項目をずらした分を差し引いた left を持たせる */
.p-facility__item:nth-of-type(1) { gap: calc(3.5 * var(--k)); transform: translate(calc(8.5 * var(--k)), calc(2.5 * var(--k))); }
.p-facility__item:nth-of-type(2) { gap: calc(3.9 * var(--k)); transform: translate(calc(-2.6 * var(--k)), calc(3.3 * var(--k))); }
.p-facility__item:nth-of-type(3) { gap: calc(5.2 * var(--k)); transform: translate(calc(-21.2 * var(--k)), calc(3.2 * var(--k))); }
.p-facility__item + .p-facility__item::before {
  content: ""; position: absolute; top: 50%;
  width: calc(0.4 * var(--k)); height: calc(13.3 * var(--k)); background: #8f8b88; transform: translateY(-50%);
}
.p-facility__item:nth-of-type(2)::before { left: calc(1.2 * var(--k)); }
.p-facility__item:nth-of-type(3)::before { left: calc(11.0 * var(--k)); }
.p-facility__icon {
  width: var(--iw); height: var(--ih); flex: none; background: #f7c119;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain;
  mask: var(--icon) no-repeat center / contain;
}

/* ============ 05 about ============ */
.p-about { padding: calc(62.3 * var(--k)) 0 calc(9 * var(--k)); background: #fafafa; text-align: center; }
.p-about__label { color: var(--c-accent); font-size: calc(9.8 * var(--fk)); letter-spacing: 0.26em; font-weight: 500; }
.p-about__h2 { margin-top: calc(10.1 * var(--k)); font-size: calc(23.5 * var(--fk)); letter-spacing: 0.045em; }
.p-about .c-h2__line { width: calc(33.3 * var(--k)); height: calc(3.2 * var(--k)); margin-top: calc(12.9 * var(--k)); background: var(--c-accent); }

.p-about__cards {
  display: grid; grid-template-columns: repeat(3, minmax(0, calc(125.2 * var(--k)))); gap: calc(8.1 * var(--k)) calc(8 * var(--k));
  justify-content: center; width: min(calc(391.6 * var(--k)), calc(100% - calc(24 * var(--k)))); margin: calc(18 * var(--k)) auto 0;
  position: relative; top: calc(-1.3 * var(--k));
}
.p-about__card {
  /* 元デザインの縦位置に合わせる: 番号12.3 / 円23.9 / h3 79.7 / 本文101.4（カード上端から） */
  position: relative; padding: calc(25.2 * var(--k)) calc(2 * var(--k)) calc(15.1 * var(--k));
  border-radius: calc(4.8 * var(--k)); background: #fff;
  box-shadow: 0 calc(2 * var(--k)) calc(10 * var(--k)) rgba(0, 0, 0, 0.04);
  text-align: center;
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease);
}
@media (hover: hover) {
  .p-about__card:hover { transform: translateY(calc(-3 * var(--k))); box-shadow: 0 calc(10 * var(--k)) calc(22 * var(--k)) rgba(0, 0, 0, 0.08); }
}
.p-about__no {
  position: absolute; left: calc(11.8 * var(--k)); top: calc(14.2 * var(--k));
  padding-bottom: calc(4.5 * var(--k));
  font-size: calc(11.3 * var(--fk)); font-weight: 500; line-height: 1; letter-spacing: 0.02em; color: var(--c-accent);
}
.p-about__card:nth-child(n+4) .p-about__no::after { bottom: calc(0.24 * var(--k)); }
.p-about__no::after {
  content: ""; position: absolute; left: 0; bottom: calc(0.8 * var(--k));
  width: calc(13.4 * var(--k)); height: calc(1.3 * var(--k)); background: var(--c-accent);
}
/* 円は #f6f6f6 の細い輪郭（1枚目だけ塗りつき）。
   字形は円いっぱいではなく、カードごとに実寸が違う（原本の実測） */
.p-about__icon {
  position: relative; left: calc(1.6 * var(--k)); display: block; width: calc(45.1 * var(--k)); height: calc(45.1 * var(--k)); margin: 0 auto;
  border: calc(1.49 * var(--k)) solid #f6f6f6; border-radius: 50%;
}
/* 1枚目もカンプの描画は白抜き（塗りは不透明度0）なので輪郭だけにする */
.p-about__icon > span {
  position: absolute; display: block; background: var(--c-accent);
  -webkit-mask: var(--icon) no-repeat center / contain;
  mask: var(--icon) no-repeat center / contain;
}
.p-about__card:nth-child(1) .p-about__icon > span { left: calc(7.5 * var(--k));  top: calc(9.0 * var(--k));  width: calc(27.9 * var(--k)); height: calc(25.3 * var(--k)); }
.p-about__card:nth-child(2) .p-about__icon > span { left: calc(10.2 * var(--k)); top: calc(8.6 * var(--k));  width: calc(22 * var(--k));   height: calc(24.7 * var(--k)); }
.p-about__card:nth-child(3) .p-about__icon > span { left: calc(10.2 * var(--k)); top: calc(5.3 * var(--k));  width: calc(23.1 * var(--k)); height: calc(31.7 * var(--k)); }
.p-about__card:nth-child(4) .p-about__icon > span { left: calc(7.5 * var(--k));  top: calc(7.3 * var(--k));  width: calc(27.9 * var(--k)); height: calc(26.9 * var(--k)); }
.p-about__card:nth-child(5) .p-about__icon > span { left: calc(6.5 * var(--k));  top: calc(5.7 * var(--k));  width: calc(29 * var(--k));   height: calc(29.6 * var(--k)); }
.p-about__card:nth-child(6) .p-about__icon > span { left: calc(4.9 * var(--k));  top: calc(9.4 * var(--k));  width: calc(32.3 * var(--k)); height: calc(23.6 * var(--k)); }
.p-about__h3 {
  margin-top: calc(10.7 * var(--k));
  font-size: calc(12.7 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: -0.07em; color: #3a3a3a;
}
.p-about__text {
  margin-top: calc(6.5 * var(--k));
  font-size: calc(10.6 * var(--fk)); font-weight: 400; line-height: 1.65; letter-spacing: -0.08em; color: #828282;
  white-space: nowrap;          /* 改行位置は <br> で決める。勝手に折り返させない */
}

.p-about__note {
  display: flex; align-items: flex-start; gap: calc(14 * var(--k));
  margin: calc(10.4 * var(--k)) calc(19.5 * var(--k)) 0; padding: calc(9.3 * var(--k)) calc(16 * var(--k));
  border-radius: calc(4.8 * var(--k)); background: #fff; text-align: left;
  box-shadow: 0 calc(2 * var(--k)) calc(10 * var(--k)) rgba(0, 0, 0, 0.04);
}
.p-about__check {
  position: relative; left: calc(1.5 * var(--k)); top: calc(0.6 * var(--k));
  flex: none; width: calc(21.5 * var(--k)); height: calc(22 * var(--k)); margin-top: calc(5.9 * var(--k)); background: var(--c-accent);
  -webkit-mask: var(--icon) no-repeat center / contain;
  mask: var(--icon) no-repeat center / contain;
}
.p-about__noteMain {
  font-size: calc(10.4 * var(--fk)); font-weight: 400; line-height: 1.65; letter-spacing: -0.02em; color: #6a6a6a;
}
.p-about__noteSub {
  margin-top: calc(3.6 * var(--k)); padding-top: calc(8 * var(--k)); border-top: calc(1 * var(--k)) dashed #dcdcdd;
  font-size: calc(9.1 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: -0.02em; color: #a0a0a0;
}

/* ============ 06 mission ============ */
.p-mission {
  position: relative; z-index: 1; overflow: hidden;
  padding: calc(86.6 * var(--k)) 0 calc(49.8 * var(--k)); color: #fff; text-align: center; background: #111;
}
/* 背景写真はFigmaの表示範囲そのままを書き出して使う（節の外にはみ出す分は含まれない） */
.p-mission__media { position: absolute; inset: 0; }
.p-mission__media img { width: 100%; height: 100%; object-fit: cover; }
.p-mission::after {
  content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, 0.86);
}
/* 左上・右下の黄色い斜線（Figma: 斜線 左上 / 斜線 右） */
.p-mission__deco {
  position: absolute; inset: 0; z-index: 1;
  width: 100%; height: 100%; pointer-events: none;
}
.p-mission__inner { position: relative; z-index: 2; padding-inline: calc(20 * var(--k)); }
.p-mission__label { color: var(--c-accent-deep); font-size: calc(12.3 * var(--fk)); letter-spacing: 0.28em; font-weight: 500; }
.p-mission__h2 {
  margin-top: calc(8.7 * var(--k));
  font-size: calc(45.6 * var(--fk)); font-weight: 900; line-height: 1.24; letter-spacing: 0.075em; color: #fafafa;
}
/* 原本では2行とも画面中央より右寄り（1行目 +8.5px / 2行目 +2.8px）。実測値に合わせる */
.p-mission__h2 span { display: block; }
.p-mission__h2 span:nth-child(1) { padding-left: calc(17 * var(--k)); }
.p-mission__h2 span:nth-child(2) { padding-left: calc(5.6 * var(--k)); }
.p-mission__line { position: relative; top: calc(0.36 * var(--k)); width: calc(39.9 * var(--k)); height: calc(2.8 * var(--k)); margin-top: calc(12.9 * var(--k)); background: var(--c-accent-deep); }
.p-mission__body { margin-top: calc(15.2 * var(--k)); }
.p-mission__row { display: contents; }
.p-mission__body p {
  position: relative; padding: calc(7.2 * var(--k)) 0;   /* 罫線を含めて行の間隔を原本の約30.5pxに合わせる */
  font-size: calc(13.4 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.02em; color: #c9c9c9;
}
/* SPとPCで行の割り方が違う。SPは1行=1<p>、PCは <br class="u-brPc"> の位置で3行にする */
.u-brPc { display: none; }
/* 罫線は各行の「下」に1本ずつ（原本は行間ではなく行ごとに引かれている）。
   幅は全幅ではなく中央寄せの固定幅 */
.p-mission__body p::after {
  content: ""; position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
  width: calc(213 * var(--k)); height: calc(0.9 * var(--k)); background: #303030;
}
/* 罫線の幅と縦位置は原本では行ごとに違う（トレース由来）。1本ずつ実測値で置く */
.p-mission__body p:nth-child(1)::after { width: calc(213.5 * var(--k)); bottom: calc(0.23 * var(--k)); }
.p-mission__body p:nth-child(2)::after { width: calc(212 * var(--k));   bottom: calc(0.64 * var(--k)); }
.p-mission__body p:nth-child(3)::after { width: calc(226 * var(--k));   bottom: calc(1.22 * var(--k)); }
.p-mission__body p:nth-child(4)::after { width: calc(221 * var(--k));   bottom: calc(0.35 * var(--k)); }
.p-mission__body p:last-child::after   { width: calc(169.3 * var(--k)); bottom: calc(0.37 * var(--k)); }

.p-mission__points {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  margin-top: calc(19.6 * var(--k));
}
.p-mission__points li {
  position: relative; display: flex; flex-direction: column; align-items: center;
}
/* 3等分ではなく原本の実測位置（円の中心 97.7 / 215 / 331.3）に寄せる */
.p-mission__points li:nth-child(1) { transform: translateX(calc(12.7 * var(--k))); }
.p-mission__points li:nth-child(3) { transform: translateX(calc(-13.7 * var(--k))); }
.p-mission__points li + li::before {
  content: ""; position: absolute; top: calc(2.7 * var(--k));
  width: calc(0.9 * var(--k)); height: calc(78.3 * var(--k)); background: #343434;
}
.p-mission__points li:nth-child(2)::before { left: calc(5.8 * var(--k)); }
.p-mission__points li:nth-child(3)::before { left: calc(7.4 * var(--k)); }
.p-mission__icon {
  position: relative; top: calc(0.9 * var(--k));
  display: grid; place-items: center; width: calc(50.6 * var(--k)); height: calc(50.2 * var(--k));
  border: calc(1.19 * var(--k)) solid #e6b800; border-radius: 50%;
}
/* 字形は3つとも寸法が違う（原本の実測） */
.p-mission__points li:nth-child(1) .p-mission__icon::after { width: calc(31.4 * var(--k)); height: calc(29.5 * var(--k)); }
.p-mission__points li:nth-child(2) .p-mission__icon::after { width: calc(29.5 * var(--k)); height: calc(26.7 * var(--k)); }
.p-mission__points li:nth-child(3) .p-mission__icon::after { width: calc(30 * var(--k));   height: calc(30 * var(--k)); }
/* 字形の中心は原本では円の中心と少しずれる（項目ごとに違う） */
.p-mission__points li:nth-child(1) .p-mission__icon::after { top: calc(0.5 * var(--k)); }
.p-mission__points li:nth-child(2) .p-mission__icon::after { top: calc(1.4 * var(--k)); }
.p-mission__icon::after {
  content: ""; position: relative; width: calc(30 * var(--k)); height: calc(29.5 * var(--k)); background: #f0f0f0;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain;
  mask: var(--icon) no-repeat center / contain;
}
.p-mission__pt {
  position: relative; margin-top: calc(8.3 * var(--k)); padding-bottom: calc(6.7 * var(--k));
  font-size: calc(11.6 * var(--fk)); font-weight: 500; letter-spacing: 0.03em; color: #dcdcdc;
}
.p-mission__pt::after {
  content: ""; position: absolute; left: 50%; bottom: calc(-0.75 * var(--k));
  width: calc(20.2 * var(--k)); height: calc(1.4 * var(--k)); background: var(--c-accent-deep); transform: translateX(-50%);
}

/* ============ 07 coach ============ */
.p-coach { position: relative; z-index: 1; overflow: hidden; padding: calc(113 * var(--k)) 0 0; background: #fff; text-align: center; }
/* 見出し背面の大きな透かし「COACH」（Figma: 透かし COACH / 97:2）。
   絶対配置なので、上に乗る文字側にも position を持たせて描画順を保つ */
.p-coach__wm {
  position: absolute; left: calc(15.5 * var(--k)); top: calc(64.8 * var(--k));
  width: calc(406.8 * var(--k)); height: calc(94.5 * var(--k)); pointer-events: none;
  /* COACH は筆記体ではなく本文書体の大文字（原本どおり） */
  display: flex; align-items: center; padding-left: calc(36.5 * var(--k));
  font-family: var(--f-sans); font-weight: 500; font-size: calc(102.7 * var(--k)); line-height: 1;
  letter-spacing: 0.06em; white-space: nowrap; color: #f2f2f2;
}
.p-coach__label, .p-coach__h2, .p-coach__lead { position: relative; z-index: 1; }
.p-coach__label { color: #adadad; font-size: calc(12.2 * var(--fk)); letter-spacing: 0.14em; font-weight: 500; }
.p-coach__h2 { margin-top: calc(11 * var(--k)); font-size: calc(32.9 * var(--fk)); letter-spacing: 0.09em; color: #333; }
/* 見出し下の手描き風の黄色い線（Figma: 見出しの手描き線 / 97:9）。
   フロー外なのでリードの margin-top は h2 の直下から数える */
.p-coach__underline {
  position: absolute; left: calc(141.8 * var(--k)); top: calc(174.4 * var(--k));
  width: calc(162.7 * var(--k)); height: calc(18.6 * var(--k)); pointer-events: none;
}
.p-coach__lead {
  margin-top: calc(20.5 * var(--k));
  font-size: calc(12.6 * var(--fk)); font-weight: 400; line-height: calc(20.16 * var(--k)); letter-spacing: -0.05em; color: #7e7e7e;
}

.p-coach__cards {
  display: grid; grid-template-columns: repeat(2, minmax(0, calc(192.1 * var(--k)))); gap: calc(8.6 * var(--k));
  justify-content: center; width: min(calc(392.8 * var(--k)), calc(100% - calc(24 * var(--k)))); margin: calc(32 * var(--k)) auto 0;
}
.p-coach__card {
  overflow: hidden; border-radius: calc(4.8 * var(--k)); background: #fff;
  box-shadow: 0 calc(3 * var(--k)) calc(14 * var(--k)) rgba(0, 0, 0, 0.07);
  text-align: left;
}
.p-coach__thumb { position: relative; }
.p-coach__photo { display: block; width: 100%; height: calc(138 * var(--k)); object-fit: cover; }
.p-coach__no {
  position: absolute; left: calc(7.7 * var(--k)); top: calc(2.7 * var(--k)); z-index: 3;
  font-size: calc(13.2 * var(--fk)); font-weight: 700; letter-spacing: 0.03em; color: #f2c400;
}
.p-coach__thumb::before {            /* 左上の黒い三角 */
  content: ""; position: absolute; left: 0; top: 0; z-index: 2;
  border-style: solid; border-width: calc(46 * var(--k)) calc(46 * var(--k)) 0 0; border-color: #1d1d1d transparent transparent;
}
.p-coach__thumb::after {             /* 三角の斜辺の黄色い線（原本: M(46,0)→(0,46) の辺そのもの） */
  content: ""; position: absolute; left: calc(-0.6 * var(--k)); top: calc(47.5 * var(--k)); z-index: 2;
  width: calc(66.7 * var(--k)); height: calc(2.4 * var(--k)); background: var(--c-accent);
  transform: rotate(-45deg); transform-origin: 0 0;
}
.p-coach__badge {
  position: absolute; right: calc(8.5 * var(--k)); top: calc(16.7 * var(--k)); z-index: 3;
  display: grid; place-items: center; width: calc(46 * var(--k)); height: calc(46 * var(--k));
  border-radius: 50%; background: #fff;
}
.p-coach__card:nth-child(2) .p-coach__badge > span { width: calc(29.9 * var(--k)); height: calc(26.9 * var(--k)); }
.p-coach__badge > span {
  display: block; width: calc(27.6 * var(--k)); height: calc(33.4 * var(--k)); background: #f7c400;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain;
  mask: var(--icon) no-repeat center / contain;
}
/* 筆記体は原本のベクター。ラスターだと高解像度画面で線が掠れる */
.p-coach__script {
  position: absolute; left: calc(2.7 * var(--k)); bottom: calc(-14 * var(--k)); z-index: 3;
  width: calc(108.5 * var(--k)); height: calc(41.8 * var(--k));
}
/* 柔術側は「J」の下の輪が欠けていたので元画像から継ぎ足した。
   viewBoxが縦に伸びたぶん高さを足し、足した分だけ下へずらして元の位置を保つ */
.p-coach__script--2 { width: calc(100.7 * var(--k)); height: calc(43.95 * var(--k)); bottom: calc(-16.15 * var(--k)); }
.p-coach__body { padding: calc(37 * var(--k)) calc(13.5 * var(--k)) calc(24.7 * var(--k)) calc(17.4 * var(--k)); text-align: center; }   /* 右13.5/左17.4＝元デザインの実測 */
/* 原本では講師名の中心がカード中心より約5.6px左。右に余白を足して寄せる。
   パディングで詰めると項目リストが折り返してしまうので margin で行う */
.p-coach__course, .p-coach__name, .p-coach__roman { margin-right: calc(11.3 * var(--k)); }
.p-coach__course { font-size: calc(13.3 * var(--fk)); font-weight: 500; line-height: 1.19; letter-spacing: 0.03em; color: #6d6d6d; }
.p-coach__name {
  margin-top: calc(4.8 * var(--k)); font-size: calc(19.6 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.08em; color: #3a3a3a;
}
.p-coach__roman {
  margin-top: calc(6 * var(--k)); font-size: calc(8.1 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.08em; color: #f2c400;
}
.p-coach__items { margin-top: calc(18 * var(--k)); padding-top: calc(8.2 * var(--k)); border-top: calc(1 * var(--k)) solid #e2e2e2; text-align: left; }
.p-coach__items li { display: flex; gap: calc(5.5 * var(--k)); }
.p-coach__items li + li { margin-top: calc(2.9 * var(--k)); }
.p-coach__items li:last-child { margin-top: calc(5.7 * var(--k)); }
.p-coach__items span:last-child {
  font-size: calc(11.3 * var(--fk)); font-weight: 400; line-height: calc(18.6 * var(--k)); letter-spacing: -0.05em; color: #8a8a8a;
}
/* ここは以前 line-height: inherit で body(1.8) に戻していたが、
   Figmaの行送りを打ち消してしまうため各所で個別指定に変更した */
.p-coach__items li:nth-child(1) .p-coach__check { margin-top: calc(3.25 * var(--k)); }
.p-coach__items li:nth-child(2) .p-coach__check { margin-top: calc(4.25 * var(--k)); }
.p-coach__items li:nth-child(3) .p-coach__check { margin-top: calc(2.4 * var(--k)); }
.p-coach__check {
  flex: none; width: calc(12.4 * var(--k)); height: calc(12.4 * var(--k)); margin-top: calc(2 * var(--k)); background: #f7c400;   /* 原本の塗り色 */
  -webkit-mask: var(--icon) no-repeat center / contain;
  mask: var(--icon) no-repeat center / contain;
}

.p-coach__dots { display: flex; justify-content: center; gap: calc(12.4 * var(--k)); margin-top: calc(18.7 * var(--k)); }
.p-coach__dots li { width: calc(7.7 * var(--k)); height: calc(7.7 * var(--k)); border-radius: 50%; background: #dadada; }
.p-coach__dots li.is-on { background: #fad33d; }

.p-coach__cta {
  display: flex; align-items: center; justify-content: center; gap: calc(14 * var(--k));
  width: calc(186.7 * var(--k)); height: calc(40.3 * var(--k)); margin: calc(15.6 * var(--k)) auto 0;
  /* 原本は文字が矢印のぶん右に寄っている（文字の中心 208.6 / ボタン中心 215） */
  padding-left: calc(14.8 * var(--k));
  border-radius: calc(20.1 * var(--k)); background: #1d1d1d;
  font-size: calc(12.3 * var(--fk)); font-weight: 700; letter-spacing: 0.07em; color: #f0f0f0;
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
.p-coach__cta i { position: relative; display: block; width: calc(10.15 * var(--k)); height: calc(10.15 * var(--k)); font-style: normal; transition: transform 0.3s var(--ease); }
.p-coach__cta i img { display: block; width: 100%; height: 100%; }
@media (hover: hover) {
  .p-coach__cta:hover { transform: translateY(calc(-2 * var(--k))); box-shadow: 0 calc(8 * var(--k)) calc(20 * var(--k)) rgba(0,0,0,0.2); }
  .p-coach__cta:hover i { transform: translateX(calc(4 * var(--k))); }
}

.p-coach__note {
  position: relative; display: table; margin: calc(20.1 * var(--k)) auto 0;
  font-size: calc(11.8 * var(--fk)); font-weight: 400; line-height: 1.7; letter-spacing: 0.01em; color: #9a9a9a;
}
/* 「＼ ─ ／」の飾り。元画像は内向き（左は ＼─／、右は ／─＼） */
.p-coach__deco { position: absolute; top: 50%; width: calc(18.6 * var(--k)); height: calc(31 * var(--k)); transform: translateY(-50%);
  /* 真ん中の横線（原本にはあるが実装で抜けていた） */
  background: linear-gradient(#b5b5b5, #b5b5b5) no-repeat center / calc(17.1 * var(--k)) calc(1.2 * var(--k)); }
.p-coach__deco--l { left: calc(-34 * var(--k)); }
.p-coach__deco--r { right: calc(-34 * var(--k)); }
.p-coach__deco::before, .p-coach__deco::after {
  content: ""; position: absolute; left: calc(2.5 * var(--k)); width: calc(15 * var(--k)); height: calc(1.2 * var(--k)); background: #b5b5b5;
}
.p-coach__deco::before { top: calc(2 * var(--k)); }
.p-coach__deco::after { bottom: calc(2 * var(--k)); }
.p-coach__deco--l::before { transform: rotate(34deg); }
.p-coach__deco--l::after  { transform: rotate(-34deg); }
.p-coach__deco--r::before { transform: rotate(-34deg); }
.p-coach__deco--r::after  { transform: rotate(34deg); }

.p-coach__band {
  margin-top: calc(37.8 * var(--k)); height: calc(43.9 * var(--k)); overflow: hidden;
  display: flex; align-items: center; background: #2c2e31;
}
.p-coach__band span {
  padding-left: calc(94.1 * var(--k));
  font-size: calc(32.8 * var(--fk)); font-weight: 500; letter-spacing: 0.24em; color: #3a3c3f; white-space: nowrap;
}

/* ============ 08 voice ============ */
.p-voice { position: relative; z-index: 1; overflow: hidden; padding: calc(84.9 * var(--k)) 0 calc(11.9 * var(--k)); background: #fff; text-align: center; }
/* ドット格子は原本の書き出しSVG（点の数・間隔・色が決まっている） */
.p-voice__dots { position: absolute; display: block; }
/* 見出し右の筆記体の透かし「Voice」（Figma: 透かし Voice / 127:60） */
.p-voice__wm {
  position: absolute; left: calc(295.6 * var(--k)); top: calc(86 * var(--k));
  width: calc(134.4 * var(--k)); height: calc(80.6 * var(--k)); pointer-events: none;
}
.p-voice__label, .p-voice__h2, .p-voice__line, .p-voice__lead { position: relative; z-index: 1; }
.p-voice__dots--l { top: calc(130.25 * var(--k)); left: calc(8.99 * var(--k)); width: calc(40.55 * var(--k)); height: calc(44.91 * var(--k)); }
.p-voice__dots--r { top: calc(185.08 * var(--k)); left: calc(378.58 * var(--k)); width: calc(38.7 * var(--k)); height: calc(28.49 * var(--k)); }
.p-voice__label { color: #a8a8a8; font-size: calc(11.3 * var(--fk)); letter-spacing: 0.21em; font-weight: 500; }
.p-voice__h2 { margin-top: calc(11.1 * var(--k)); font-size: calc(25.6 * var(--fk)); letter-spacing: 0.12em; }
/* 原本は画面中央より少し左。transform はスクロール演出と競合するので margin で寄せる */
.p-voice__line { position: relative; top: calc(1.4 * var(--k)); width: calc(33.9 * var(--k)); height: calc(2.7 * var(--k)); margin: calc(13.4 * var(--k)) auto 0 calc(194.7 * var(--k)); background: #fdc531; }
.p-voice__lead {
  margin-top: calc(15.5 * var(--k)); font-size: calc(10.5 * var(--fk)); font-weight: 400; line-height: 1.75; letter-spacing: 0.07em; color: #6f6f70;
}
/* 原本のカードは左右の余白が非対称（左19.9 / 右26.3）で、幅も左右で違う */
.p-voice__cards {
  display: grid; grid-template-columns: calc(186 * var(--k)) calc(187.6 * var(--k)); gap: calc(10.2 * var(--k));
  justify-content: start; margin: calc(26 * var(--k)) calc(26.3 * var(--k)) 0 calc(19.9 * var(--k)); position: relative; top: calc(0.7 * var(--k));
}
.p-voice__card {
  position: relative; padding: calc(34 * var(--k)) calc(14 * var(--k)) calc(11.2 * var(--k));
  border-radius: calc(4.8 * var(--k)); background: #fff; box-shadow: 0 calc(3 * var(--k)) calc(14 * var(--k)) rgba(0,0,0,0.06);
  text-align: left;
}
/* 円写真はカード右端ではなく原本の実測位置（カード左から99.8px） */
.p-voice__photo { position: absolute; left: calc(99.8 * var(--k)); top: calc(7.4 * var(--k)); width: calc(78.2 * var(--k)); height: calc(78.2 * var(--k)); }
.p-voice__photo img {
  position: absolute; left: calc(0.1 * var(--k)); top: calc(0.7 * var(--k)); width: calc(75.3 * var(--k)); height: calc(75.3 * var(--k));
  border-radius: 50%; object-fit: cover;
}
/* 黄色い弧は「-111.6度から+54度」の円弧。dasharrayでは角度も太さも合わないので原本のSVGを置く */
.p-voice__photo .p-voice__arc { position: absolute; left: calc(24.7 * var(--k)); top: 0; width: calc(53.5 * var(--k)); height: calc(70.8 * var(--k)); border-radius: 0; }
.p-voice__mark {
  position: relative; top: calc(0.7 * var(--k));
  display: block; width: calc(29.6 * var(--k)); height: calc(23.6 * var(--k)); margin: 0 0 calc(34.8 * var(--k)) calc(1.3 * var(--k)); background: var(--c-accent);
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-voice__quote { margin: 0; }
/* 原本では数字（20kg / 40kg）だけ黄色で強調されている */
.p-voice__quote em { font-style: normal; color: #f0b31a; }
/* 2枚目は本文が4行なので、原本では行送りを広げて1枚目と高さを揃えている */
.p-voice__card:nth-child(2) .p-voice__quote span { line-height: calc(27 * var(--k)); }
.p-voice__card:nth-child(2) .p-voice__mark { margin-bottom: calc(37.4 * var(--k)); }
/* 引用が4行のぶん、名前より下は原本のほうが詰まっている */
.p-voice__card:nth-child(2) .p-voice__person { margin-top: calc(5.1 * var(--k)); }
.p-voice__quote span {
  display: block;
  font-size: calc(15.2 * var(--k)); font-weight: 700; line-height: calc(21.7 * var(--k)); letter-spacing: 0.04em; color: #3f3f3f;
}
.p-voice__person {
  display: flex; align-items: center; gap: calc(8 * var(--k));
  margin-top: calc(7.4 * var(--k)); padding-top: calc(8.2 * var(--k)); border-top: calc(1 * var(--k)) solid #efeff0;
}
.p-voice__avatar {
  flex: none; width: calc(26.3 * var(--k)); height: calc(26.3 * var(--k)); background: var(--c-accent);
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-voice__name { display: block; font-size: calc(12 * var(--fk)); font-weight: 700; line-height: 1.2; color: #5a5a5a; }
.p-voice__course { display: block; margin-top: calc(3 * var(--k)); font-size: calc(9.4 * var(--fk)); line-height: 1.2; color: #adadad; }
.p-voice__body { margin-top: calc(14.8 * var(--k)); }
.p-voice__body span {
  display: block; font-size: calc(9.8 * var(--k)); font-weight: 400; line-height: 1.75; letter-spacing: 0.02em; color: #787878;
}
/* カルーセルのドットは、実際に隠れている項目があるときだけ出す（JSが .is-noscroll を付ける） */
/* display:none にすると下の要素が詰まってカンプの余白設計が崩れるので、場所は残して見た目だけ消す */
.p-voice__pager.is-noscroll, .p-coach__dots.is-noscroll { visibility: hidden; }
.p-voice__pager { display: flex; justify-content: center; gap: calc(16.9 * var(--k)); margin-top: calc(19 * var(--k)); }
.p-voice__pager li { width: calc(7.8 * var(--k)); height: calc(7.8 * var(--k)); border-radius: 50%; background: #d7d7d8; }
.p-voice__pager li.is-on { background: #fcc42c; }
.p-voice__note { margin-top: calc(20 * var(--k)); font-size: calc(9.2 * var(--fk)); line-height: 1.2; letter-spacing: 0.06em; color: #a9a9a9; }

/* ============ 09 price ============ */
.p-price { padding: calc(62.9 * var(--k)) 0 calc(9.3 * var(--k)); background: #fafafa; text-align: center; }
.p-price__label { color: var(--c-accent); font-size: calc(9.1 * var(--fk)); letter-spacing: 0.31em; font-weight: 500; }
.p-price__h2 { margin-top: calc(9.7 * var(--k)); font-size: calc(21.7 * var(--fk)); letter-spacing: 0.03em; color: #343536; }
.p-price__line { width: calc(27.9 * var(--k)); height: calc(2.7 * var(--k)); margin-top: calc(9 * var(--k)); background: #fccc17; }
.p-price__lead {
  margin-top: calc(10.7 * var(--k)); padding-inline: calc(24 * var(--k));
  font-size: calc(8.7 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.05em; color: #7a7a7b;
}
/* 原本は左右の余白が非対称（左24.1 / 右26.5） */
.p-price__cards {
  display: grid; grid-template-columns: repeat(3, calc(118 * var(--k))); gap: calc(12 * var(--k));
  justify-content: start; margin: calc(43.1 * var(--k)) calc(26.5 * var(--k)) 0 calc(24.1 * var(--k));
}
/* 3列118pxはカンプ幅430前提。402pxより狭い端末（iPhone SE/12/13等）では
   横スクロールが出るので、そこだけ列幅を可変にする */
@media (max-width: 401.98px) {
  .p-price__cards { grid-template-columns: repeat(3, minmax(0, 1fr)); justify-content: stretch; }
  .p-price__card { padding-left: calc(4 * var(--k)); padding-right: calc(4 * var(--k)); }
}
/* インライン要素の行送りで中身が下がるのを止める（タグが11.5px下がっていた） */
.p-price__card {
  position: relative; line-height: 0; padding: calc(23.5 * var(--k)) calc(6 * var(--k)) calc(21.6 * var(--k));
  border-radius: calc(4.8 * var(--k)); background: #fff; box-shadow: 0 calc(3 * var(--k)) calc(14 * var(--k)) rgba(0,0,0,0.05);
}
.p-price__badge {
  position: absolute; left: 50%; top: calc(-25.6 * var(--k));
  display: grid; place-items: center; width: calc(46.6 * var(--k)); height: calc(46.6 * var(--k));
  border-radius: 50%; background: #fff; border: calc(0.66 * var(--k)) solid #248bc0;
  transform: translateX(-50%);
}
/* 輪郭の色はカードごとに違う（原本の実測） */
.p-price__card:nth-child(2) .p-price__badge { border-color: #fdce3e; }
.p-price__card:nth-child(3) .p-price__badge { border-color: #dc3f3f; }
/* 2枚目のバッジ字形は一回り小さい。3枚目は少し右 */
.p-price__badgeIcon2 { width: calc(26.9 * var(--k)); height: calc(26.9 * var(--k)); position: relative; left: calc(2.3 * var(--k)); }
.p-price__card:nth-child(3) .p-price__badgeIcon { position: relative; left: calc(2.5 * var(--k)); }
.p-price__badgeIcon {
  width: calc(31.2 * var(--k)); height: calc(31.2 * var(--k)); background: #5a5a5a;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-price__tag {
  display: inline-block; line-height: 1.2; padding: calc(2.7 * var(--k)) 0; border-radius: calc(6.5 * var(--k)); text-align: center;
  background: var(--bg); color: var(--fg);
  font-size: calc(6.2 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.05em; white-space: nowrap;
}
.p-price__tag { position: relative; top: calc(0.7 * var(--k)); }
.p-price__card:nth-child(1) .p-price__tag { width: calc(70.95 * var(--k)); left: calc(0.5 * var(--k)); }
.p-price__card:nth-child(2) .p-price__tag { width: calc(46.23 * var(--k)); left: calc(1.4 * var(--k)); }
.p-price__card:nth-child(3) .p-price__tag { width: calc(75.25 * var(--k)); left: calc(2.1 * var(--k)); }
.p-price__card:nth-child(1) .p-price__badge { margin-left: calc(1.4 * var(--k)); }
/* 受付時間の時計は原本では 12.5px（見出しの時計 11.9px とは別寸法） */
.p-contact__hours .p-contact__hoursIcon { position: relative; top: calc(0.5 * var(--k)); left: calc(-0.5 * var(--k)); width: calc(12.5 * var(--k)); height: calc(12.5 * var(--k)); }
.p-contact__table dt { position: relative; top: calc(-0.25 * var(--k)); }
.p-contact__table > div:nth-child(1) dt { font-size: calc(10.45 * var(--fk)); letter-spacing: 0.608em; }
.p-contact__table > div:nth-child(2) dt { font-size: calc(9.85 * var(--fk));  letter-spacing: 0.753em; }
.p-recruit__item:nth-child(1) .p-recruit__icon { position: relative; left: calc(1.4 * var(--k)); }
.p-recruit__item:nth-child(2) .p-recruit__iconImg { left: calc(1.2 * var(--k)); }
.p-price__name {
  margin-top: calc(6.3 * var(--k)); font-size: calc(12.3 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0; color: #3f4041;
}
.p-price__roman { margin-top: calc(3.6 * var(--k)); font-size: calc(7.8 * var(--fk)); line-height: 1.2; letter-spacing: 0.09em; color: #adadae; }
/* チーム名 EN BJJ（客先指示 2026-08-29）。ゴシック体でローマ字表記の下に添える */
.p-price__team {
  margin-top: calc(2.4 * var(--k)); font-family: var(--f-sans); font-weight: 700;
  font-size: calc(8 * var(--fk)); line-height: 1.2; letter-spacing: 0.08em; color: #248bc0;
}
/* EN BJJ行(高さ 2.4+9.6=12*k)を足したぶん、柔術カードだけ価格以下を上げて他カードと揃える */
.p-price__card:nth-child(1) .p-price__price { margin-top: calc(14.7 * var(--k) - 12 * var(--k)); }
/* 3枚目だけプラン名が長いので、原本では文字を小さく詰めて1行に収めている */
.p-price__card:nth-child(3) .p-price__price { position: relative; top: calc(6.9 * var(--k)); }
.p-price__card:nth-child(3) .p-price__name {
  font-size: calc(10.3 * var(--fk)); letter-spacing: -0.07em; white-space: nowrap;
  line-height: 1.44;   /* 1・2枚目と同じ行の高さにして下の行位置を揃える */
}
.p-price__price {
  margin-top: calc(14.7 * var(--k)); font-size: calc(13 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: -0.07em; color: #3f4041;
}
.p-price__sub { margin-top: calc(10.6 * var(--k)); font-size: calc(7.8 * var(--fk)); line-height: 1.2; letter-spacing: 0.04em; color: #8e8e8f; }
.p-price__sub + .p-price__sub { margin-top: calc(4.5 * var(--k)); }
.p-price__when {
  margin-top: calc(16.3 * var(--k)); padding-top: calc(11 * var(--k)); border-top: calc(1 * var(--k)) solid #e4e4e4;
  font-size: calc(8.7 * var(--fk)); font-weight: 500; line-height: 1.2; color: #8e8e8f;
}
.p-price__day { margin-top: calc(6.3 * var(--k)); font-size: calc(8.8 * var(--fk)); line-height: 1.2; letter-spacing: 0.05em; color: #87878a; }

.p-price__senior {
  position: relative; display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; gap: 0 calc(22 * var(--k));
  margin: calc(12.9 * var(--k)) calc(23.1 * var(--k)) 0; padding: calc(10.2 * var(--k)) calc(38.6 * var(--k)) calc(3 * var(--k)) calc(20 * var(--k));
  border-radius: calc(4.8 * var(--k)); background: #fff; box-shadow: 0 calc(3 * var(--k)) calc(14 * var(--k)) rgba(0,0,0,0.05); text-align: left;
}
/* 原本は人物アイコンの右下に黄色いハートが重なる（別レイヤー） */
.p-price__seniorIconWrap { position: relative; display: block; width: calc(44.6 * var(--k)); height: calc(44.6 * var(--k)); }
.p-price__seniorHeart { position: absolute; left: calc(1.6 * var(--k)); top: calc(1.6 * var(--k)); display: block; width: calc(41.4 * var(--k)); height: calc(41.4 * var(--k)); }
.p-price__seniorIcon {
  position: absolute; left: 0; top: 0; width: calc(44.6 * var(--k)); height: calc(44.6 * var(--k)); background: #5a5a5a;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-price__seniorName { font-size: calc(11.2 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.07em; color: #3f4041; white-space: nowrap; }
.p-price__seniorRoman { margin-top: calc(5 * var(--k)); font-size: calc(7.1 * var(--fk)); line-height: 1.2; letter-spacing: 0.17em; color: #adadae; }
.p-price__seniorRight { text-align: right; }
.p-price__seniorPrice { font-size: calc(11.1 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.06em; color: #3f4041; }
.p-price__seniorTime { margin-top: calc(5 * var(--k)); margin-right: calc(7.4 * var(--k)); font-size: calc(8.7 * var(--fk)); line-height: 1.2; letter-spacing: 0.05em; color: #a5a5a6; }
.p-price__seniorNote { position: relative; top: calc(1 * var(--k)); }
.p-price__seniorNote {
  grid-column: 1 / -1; margin-top: calc(1.1 * var(--k)); padding-top: calc(7 * var(--k)); padding-left: calc(13.2 * var(--k)); border-top: calc(1 * var(--k)) dashed #dcdcdd;
  font-size: calc(7 * var(--fk)); line-height: 1.2; letter-spacing: 0.3em; color: #828283; text-align: center;
}

.p-price__cta {
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: calc(15 * var(--k));
  margin: calc(30.1 * var(--k)) calc(23.1 * var(--k)) 0; padding: calc(9.7 * var(--k)) calc(16 * var(--k));
  border-radius: calc(4.8 * var(--k)); background: #fff; box-shadow: 0 calc(3 * var(--k)) calc(14 * var(--k)) rgba(0,0,0,0.05); text-align: left;
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
@media (hover: hover) { .p-price__cta:hover { transform: translateY(calc(-2 * var(--k))); box-shadow: 0 calc(10 * var(--k)) calc(22 * var(--k)) rgba(0,0,0,0.09); } }
.p-price__calWrap { position: relative; left: calc(-3 * var(--k)); top: calc(4.7 * var(--k));
  display: grid; place-items: center; width: calc(31.1 * var(--k)); height: calc(31.1 * var(--k));
  border-radius: 50%; background: #fdf6e2;
}
.p-price__cal {
  width: calc(22.6 * var(--k)); height: calc(24.2 * var(--k)); background: #6d6d6d;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-price__ctaTitle {
  display: block; font-size: calc(11.9 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: -0.02em; color: #3f4041;
}
.p-price__ctaText { display: block; margin-top: calc(6 * var(--k)); font-size: calc(9.2 * var(--fk)); line-height: 1.2; color: #a1a1a2; }
.p-price__ctaArrow { position: relative; display: block; width: calc(5.91 * var(--k)); height: calc(9.68 * var(--k)); }
.p-price__ctaArrow img { display: block; width: 100%; height: 100%; }

/* ============ 10 flow ============ */
.p-flow { padding: calc(76.9 * var(--k)) 0 calc(41.4 * var(--k)); background: #fff; text-align: center; }
.p-flow__label { color: var(--c-accent); font-size: calc(12.2 * var(--fk)); letter-spacing: 0.21em; font-weight: 500; }
.p-flow__h2 { margin-top: calc(8.8 * var(--k)); font-size: calc(25.5 * var(--fk)); letter-spacing: 0.03em; color: #3f3f3f; }
.p-flow__line { position: relative; top: calc(0.9 * var(--k)); left: calc(0.7 * var(--k)); width: calc(142.3 * var(--k)); height: calc(2.3 * var(--k)); margin-top: calc(6.2 * var(--k)); background: var(--c-accent); }
.p-flow__lead {
  margin-top: calc(15 * var(--k)); padding-inline: calc(20 * var(--k));
  font-size: calc(11.9 * var(--fk)); font-weight: 400; line-height: 1.5; letter-spacing: -0.03em; color: #828283;
}
.p-flow__steps { margin-top: calc(27 * var(--k)); padding: 0 calc(24 * var(--k)) 0 calc(44.1 * var(--k)); text-align: left; }
.p-flow__step { position: relative; display: grid; grid-template-columns: calc(97.4 * var(--k)) 1fr; }
.p-flow__step + .p-flow__step { margin-top: calc(21.7 * var(--k)); }   /* 円の中心間隔116pxになるよう逆算 */
/* アイコンは黄色い枠線の円の中。番号バッジは円の左上に重なる */
.p-flow__mark {
  position: relative; top: calc(0.9 * var(--k)); display: grid; place-items: center;
  width: calc(76.4 * var(--k)); height: calc(76.4 * var(--k)); margin-top: calc(-0.6 * var(--k));
  border: calc(1.5 * var(--k)) solid var(--c-accent); border-radius: 50%;
}
.p-flow__icon, .p-flow__iconImg { display: block; width: calc(51 * var(--k)); height: calc(51 * var(--k)); }
/* 1・3番目の字形だけ一回り大きい（原本の実測） */
.p-flow__step:nth-child(1) .p-flow__icon, .p-flow__step:nth-child(3) .p-flow__icon { width: calc(52.6 * var(--k)); height: calc(52.6 * var(--k)); }
.p-flow__icon {
  background: #2c2c2c;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-flow__step:nth-child(2) .p-flow__no { top: calc(-3.9 * var(--k)); }
.p-flow__step:nth-child(3) .p-flow__no { top: calc(-4.8 * var(--k)); }
.p-flow__step:nth-child(4) .p-flow__no { top: calc(-3.8 * var(--k)); }
.p-flow__no {
  position: absolute; left: calc(-3 * var(--k)); top: calc(-3 * var(--k));
  display: grid; place-items: center; width: calc(24.3 * var(--k)); height: calc(24.3 * var(--k));
  border-radius: 50%; background: var(--c-dark);
  font-size: calc(9 * var(--fk)); font-weight: 700; line-height: 1; letter-spacing: 0.02em; color: #fff;
}
/* ステップをつなぐ縦の点線（円の下端から次の円の上端まで） */
.p-flow__step:not(.is-last)::after {
  content: ""; position: absolute; left: calc(37.5 * var(--k)); top: calc(80.4 * var(--k)); width: calc(1.5 * var(--k)); height: calc(35.9 * var(--k));
  background-image: linear-gradient(#d6d6d6 0 calc(3 * var(--k)), transparent calc(3 * var(--k)) calc(7 * var(--k)));
  background-size: calc(1.5 * var(--k)) calc(7 * var(--k));
}
.p-flow__step-en { font-size: calc(10.6 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.08em; color: var(--c-accent); }
.p-flow__body { padding-top: calc(5.2 * var(--k)); }
.p-flow__h3 {
  position: relative; margin-top: calc(5.8 * var(--k)); padding-bottom: calc(6.3 * var(--k));
  font-size: calc(17.3 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0; color: #3f3f3f;
}
.p-flow__h3::after {
  content: ""; position: absolute; left: calc(0.6 * var(--k)); bottom: calc(0.77 * var(--k)); width: calc(24 * var(--k)); height: calc(2.1 * var(--k)); background: var(--c-accent);
}
.p-flow__step:nth-child(3) .p-flow__h3::after { bottom: calc(1.02 * var(--k)); }
.p-flow__step:nth-child(2) .p-flow__h3::after { bottom: calc(0.24 * var(--k)); }
.p-flow__step:nth-child(4) .p-flow__h3::after { bottom: calc(-0.14 * var(--k)); }
.p-flow__text { margin-top: calc(5.7 * var(--k)); }
.p-flow__text span {
  display: block; font-size: calc(11.7 * var(--fk)); font-weight: 400; line-height: 1.65; letter-spacing: 0; color: #8b8b8c;
}

.p-flow__cta {
  position: relative; display: block; overflow: hidden;
  margin: calc(24.1 * var(--k)) calc(27.45 * var(--k)) 0; border-radius: calc(4.8 * var(--k));
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
@media (hover: hover) { .p-flow__cta:hover { transform: translateY(calc(-2 * var(--k))); box-shadow: 0 calc(12 * var(--k)) calc(26 * var(--k)) rgba(0,0,0,0.25); } }
.p-flow__ctaBg { display: block; width: 100%; height: calc(120.7 * var(--k)); object-fit: cover; }
.p-flow__cta::after { content: ""; position: absolute; inset: 0; background: rgba(12, 12, 12, 0.78); }
/* line-height:0 が無いと、inline-block のタグが行ボックスの余白ぶん(約10px)下がる */
.p-flow__ctaInner { position: absolute; inset: 0; z-index: 2; padding: calc(20 * var(--k)) 0 0 calc(24.6 * var(--k)); text-align: left; line-height: 0; }
.p-flow__ctaTag {
  display: inline-block; box-sizing: border-box; width: calc(95.14 * var(--k)); padding: calc(2.3 * var(--k)) 0 calc(2.3 * var(--k)) calc(3.7 * var(--k)); white-space: nowrap;
  background: #fccb06; color: #1c1c1c;
  font-size: calc(9.7 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.49em;
}
.p-flow__ctaTitle {
  display: block; margin-top: calc(11.9 * var(--k));
  font-size: calc(17.9 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.13em; color: #f0f0f0;
}
/* 矢印は原本では細い円で囲まれている */
.p-flow__ctaTitle i {
  position: absolute; left: calc(292.4 * var(--k)); top: calc(44.4 * var(--k));
  display: grid; place-items: center; width: calc(25.5 * var(--k)); height: calc(25.5 * var(--k));
  border: calc(1.05 * var(--k)) solid #d0d0d0; border-radius: 50%;
  font-size: calc(10.2 * var(--fk)); font-style: normal; color: #fff;
}
.p-flow__ctaTitle i img { display: block; width: calc(10.15 * var(--k)); height: calc(10.15 * var(--k));
}
/* 3つの注記は原本では細い枠で囲まれ、等間隔ではなく実測位置に置かれている */
.p-flow__ctaNotes {
  position: absolute; left: calc(22.8 * var(--k)); top: calc(78.4 * var(--k));
  display: flex; align-items: center;
  width: calc(294.7 * var(--k)); height: calc(31.7 * var(--k)); padding-left: calc(6.9 * var(--k));
  border: calc(0.78 * var(--k)) solid #2e2e2e;
}
.p-flow__ctaNotes > span {
  position: relative; top: calc(1.8 * var(--k)); display: flex; align-items: center; gap: calc(6 * var(--k));
  font-size: calc(9.2 * var(--fk)); line-height: 1.2; letter-spacing: 0.03em; color: #c6c6c7;
}
.p-flow__ctaNotes > span:nth-child(1) { gap: calc(1.7 * var(--k)); }
.p-flow__ctaNotes > span:nth-child(2) { gap: calc(2.3 * var(--k)); margin-left: calc(21.7 * var(--k)); }
.p-flow__ctaNotes > span:nth-child(3) { gap: calc(2.2 * var(--k)); margin-left: calc(23.9 * var(--k)); }
.p-flow__ctaNotes > span:nth-child(3) .p-flow__ctaIcon { height: calc(20.9 * var(--k)); position: relative; left: calc(-1.4 * var(--k)); }
.p-flow__ctaNotes > span + span::before {
  content: ""; position: absolute; top: 50%;
  width: calc(0.8 * var(--k)); height: calc(11.6 * var(--k)); background: #3a3a3a; transform: translateY(-50%);
}
.p-flow__ctaNotes > span:nth-child(2)::before { left: calc(-8.6 * var(--k)); }
.p-flow__ctaNotes > span:nth-child(3)::before { left: calc(-10.1 * var(--k)); }
.p-flow__ctaIcon {
  position: relative; top: calc(-0.9 * var(--k));
  width: calc(24 * var(--k)); height: calc(24 * var(--k)); background: #fccb06;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}

/* ============ 11 contact ============ */
.p-contact {
  position: relative; z-index: 1; overflow: hidden;
  padding: calc(59 * var(--k)) 0 calc(25 * var(--k)); background: #141414; color: #fff; text-align: center;
}
.p-contact__wm {
  position: absolute; left: calc(25.1 * var(--k)); top: calc(2.7 * var(--k));
  font-size: calc(69.9 * var(--k)); font-weight: 700; line-height: 1.2; letter-spacing: 0.105em; color: #272623;
  pointer-events: none;
}
/* 左端の斜線（Figma: 斜線 左） */
.p-contact__deco { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.p-contact__dots {
  position: absolute; display: block; top: calc(143.93 * var(--k)); left: calc(373.86 * var(--k)); width: calc(43.3 * var(--k)); height: calc(43.3 * var(--k));
}
.p-contact__label { position: relative; color: #f4cd4d; font-size: calc(11.2 * var(--fk)); letter-spacing: 0.35em; font-weight: 500; }
.p-contact__h2 {
  position: relative; margin-top: calc(13.8 * var(--k));
  font-size: calc(25.5 * var(--fk)); font-weight: 900; line-height: 1.2; letter-spacing: 0.11em; color: #f0f0f1;
}
.p-contact__line { width: calc(39.6 * var(--k)); height: calc(2 * var(--k)); margin-top: calc(6.8 * var(--k)); background: #fcc906; }
.p-contact__lead {
  position: relative; margin-top: calc(16.4 * var(--k));
  font-size: calc(14.6 * var(--fk)); font-weight: 400; line-height: 1.7; letter-spacing: 0.03em; color: #dcdcdc;
}

.p-contact__tel {
  position: relative; margin: calc(17.7 * var(--k)) calc(32.4 * var(--k)) 0; padding: calc(41.8 * var(--k)) calc(16 * var(--k)) calc(14.1 * var(--k));
  border: calc(0.9 * var(--k)) solid #dbb54c; border-radius: calc(6 * var(--k)); background: rgba(255, 255, 255, 0.04);
}
.p-contact__tab {
  position: absolute; left: 50%; top: calc(-5.2 * var(--k));
  display: inline-flex; align-items: center; gap: calc(7 * var(--k));
  height: calc(30.6 * var(--k)); padding: 0 calc(12.35 * var(--k)) 0 calc(16.15 * var(--k)); border-radius: calc(3.6 * var(--k)); background: #b89430;
  font-size: calc(10.7 * var(--fk)); font-weight: 700; letter-spacing: 0.08em; color: #241f10;
  transform: translateX(-50%); white-space: nowrap;
}
.p-contact__hoursTitle .p-contact__hoursIcon { width: calc(11.9 * var(--k)); height: calc(11.9 * var(--k)); }
.p-contact__tabIcon { background: #241f10 !important; position: relative; top: calc(1.4 * var(--k)); }   /* 金の帯の上なので原本は濃色 */
.p-contact__tabIcon, .p-contact__hoursIcon {
  width: calc(13.6 * var(--k)); height: calc(13.6 * var(--k)); background: #e0e0e0;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
/* 原本ではアイコンと番号がカードの中央ではなく実測位置に置かれている */
.p-contact__num {
  display: flex; align-items: center; justify-content: flex-start;
  padding-left: calc(13.3 * var(--k)); gap: calc(7.9 * var(--k));
  font-size: calc(34.6 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.05em; color: #f4f4f4;
}
.p-contact__numIcon, .p-contact__numIcon img { display: block; width: calc(31.4 * var(--k)); height: calc(31.4 * var(--k)); }
.p-contact__hours {
  position: relative; top: calc(-0.6 * var(--k));
  display: flex; align-items: center; justify-content: center; gap: calc(7 * var(--k));
  margin: calc(20 * var(--k)) calc(13 * var(--k)) 0 calc(11.2 * var(--k)); padding: calc(8.1 * var(--k)) 0; padding-left: calc(6.4 * var(--k));
  border: calc(0.5 * var(--k)) solid rgba(255, 255, 255, 0.13); border-radius: calc(3 * var(--k)); background: rgba(255, 255, 255, 0.05);
  font-size: calc(11.3 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.09em; color: #e0e0e0;
}

/* 原本では封筒とテキストが左寄せの実測位置、矢印だけ右端 */
.p-contact__btn {
  position: relative;
  display: flex; align-items: center; justify-content: flex-start;
  padding-left: calc(64.8 * var(--k)); gap: calc(14.6 * var(--k));
  margin: calc(16.1 * var(--k)) calc(32 * var(--k)) 0; height: calc(64.2 * var(--k)); border-radius: calc(4.8 * var(--k));
  background: linear-gradient(90deg, #d0a838 0%, #f3c744 28%, #fed348 60%, #fede56 100%);
  font-size: calc(18.1 * var(--fk)); font-weight: 700; letter-spacing: 0.1em; color: #21201b;
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
@media (hover: hover) { .p-contact__btn:hover { transform: translateY(calc(-2 * var(--k))); box-shadow: 0 calc(12 * var(--k)) calc(26 * var(--k)) rgba(0,0,0,0.4); } }
.p-contact__btnIcon {
  position: relative; top: calc(2.3 * var(--k));
  display: grid; place-items: center; width: calc(37.1 * var(--k)); height: calc(37.1 * var(--k));
  border-radius: 50%; background: #21201b;
}
.p-contact__btnIcon img { display: block; width: calc(18.2 * var(--k)); height: calc(15.2 * var(--k)); }
.p-contact__btn i { position: absolute; right: calc(31 * var(--k)); display: block; }
.p-contact__btn i img { display: block; width: calc(6.03 * var(--k)); height: calc(10.03 * var(--k)); }
.p-contact__btnIcon img { position: relative; top: calc(-0.2 * var(--k)); }
/* LINEアイコンは正方形。メールアイコン(18.2x15.2)の比率のままだと潰れる。2026-09-08 */
.p-contact__btn--line .p-contact__btnIcon img { width: calc(17.6 * var(--k)); height: calc(17.6 * var(--k)); top: 0; }
/* 黒丸＋白の吹き出しだとLINEだと分からないため、追従ボタンと同じLINEの色にする */
.p-contact__btn--line .p-contact__btnIcon { background: #06c755; }

.p-contact__hoursBlock { margin-top: calc(17.7 * var(--k)); }
.p-contact__hoursTitle {
  display: flex; align-items: center; justify-content: center; gap: calc(10 * var(--k));
  font-size: calc(12.2 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.21em; color: #e2bb43;
}
.p-contact__hoursTitle::before, .p-contact__hoursTitle::after {
  content: ""; width: calc(99.9 * var(--k)); height: calc(1 * var(--k)); background: #6a5a2c;
}
.p-contact__table { width: fit-content; margin: calc(6.4 * var(--k)) auto 0; }
.p-contact__table > div {
  display: flex; align-items: center; gap: calc(17.7 * var(--k)); padding: calc(9.9 * var(--k)) 0;
}
.p-contact__table > div + div { border-top: calc(1 * var(--k)) solid #2e2e2c; }
.p-contact__table > div:last-child { border-bottom: calc(1 * var(--k)) solid #2e2e2c; }
.p-contact__table dt {
  flex: none; width: calc(44.2 * var(--k)); padding: calc(3.6 * var(--k)) 0 calc(2.4 * var(--k)) calc(9 * var(--k)); border-radius: calc(1.79 * var(--k));
  box-shadow: inset 0 0 0 calc(0.6 * var(--k)) #c9a63c;
  font-size: calc(10.4 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.61em; color: #d8b444;
  text-align: left; white-space: nowrap;   /* 字送りが広いので折り返させない */
}
.p-contact__table dd {
  margin: 0; font-size: calc(15.2 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.12em; color: #a9a9a9;
}
.p-contact__off { margin-top: calc(7.9 * var(--k)); font-size: calc(9.4 * var(--fk)); line-height: 1.2; letter-spacing: 0.24em; color: #9b9b9a; }


/* 原本は線画アイコンの上に黄色いアクセント図形が重なる（別レイヤー）。
   円に対する比率で置くのでPCでもそのまま効く */
.p-flow__iconY { position: absolute; left: 17.21%; display: block; width: 66.83%; height: 66.83%; }
.p-flow__step:nth-child(1) .p-flow__iconY { top: 17.08%; }
.p-flow__step:nth-child(2) .p-flow__iconY { top: 16.17%; }
.p-flow__step:nth-child(3) .p-flow__iconY { top: 15.27%; }
.p-flow__step:nth-child(4) .p-flow__iconY { top: 16.31%; }
.p-recruit__iconY { position: absolute; display: block; }
/* ↓ SP実測px。PCレイアウト着手時にPCカンプの実測値を入れる */
@media (max-width: 767.98px) {
  .p-recruit__item:nth-child(1) .p-recruit__iconY { left: calc(31.1 * var(--k));  top: calc(2.54 * var(--k)); width: calc(34.94 * var(--k)); height: calc(37.09 * var(--k)); }
  .p-recruit__item:nth-child(2) .p-recruit__iconY { left: calc(31.73 * var(--k)); top: calc(4.15 * var(--k)); width: calc(32.79 * var(--k)); height: calc(35.47 * var(--k)); }
  .p-recruit__item:nth-child(3) .p-recruit__iconY { left: calc(25.64 * var(--k)); top: calc(2.54 * var(--k)); width: calc(44.08 * var(--k)); height: calc(39.24 * var(--k)); }
  .p-recruit__item:nth-child(4) .p-recruit__iconY { left: calc(30.06 * var(--k)); top: calc(4.69 * var(--k)); width: calc(34.94 * var(--k)); height: calc(35.47 * var(--k)); }
  /* 矢印・チェブロンもSP実測の絶対位置。PCでは元の指定に戻す */
  .p-price__ctaArrow { left: calc(-53 * var(--k)); top: calc(4.5 * var(--k)); }
  .p-access__banner i { right: calc(49.1 * var(--k)); top: calc(23.6 * var(--k)); }
  .p-coach__cta i { left: calc(-6.7 * var(--k)); }
  .p-contact__btn i { right: calc(30.22 * var(--k)); top: calc(29.28 * var(--k)); }
}

/* ============ 12 vision ============ */
.p-vision {
  position: relative; z-index: 1; overflow: hidden;
  padding: calc(74.9 * var(--k)) 0 calc(68 * var(--k)); background: #0f0f0f; color: #fff; text-align: center;
}
.p-vision__edge { position: absolute; object-fit: cover; }
.p-vision__edge--t { top: 0; left: 0; width: 100%; height: calc(81.2 * var(--k)); }
.p-vision__edge--b { bottom: 0; left: 0; width: 100%; height: calc(72.6 * var(--k)); }
.p-vision__edge--l { top: calc(81.2 * var(--k)); left: 0; width: calc(38.2 * var(--k)); height: calc(318.9 * var(--k)); }
.p-vision__edge--r { top: calc(81.2 * var(--k)); right: 0; width: calc(38.2 * var(--k)); height: calc(318.9 * var(--k)); }
.p-vision__inner { position: relative; z-index: 2; padding-inline: calc(40 * var(--k)); }
.p-vision__place {
  position: relative; display: inline-block; padding: 0 calc(44 * var(--k));
  font-size: calc(14.9 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.27em; color: #e0b213;
}
.p-vision__place::before, .p-vision__place::after {
  content: ""; position: absolute; top: 50%; width: calc(29.2 * var(--k)); height: calc(0.8 * var(--k)); background: #b79107;
}
.p-vision__place::before { left: 0; } .p-vision__place::after { right: 0; }
.p-vision__en {
  margin-top: calc(14 * var(--k)); font-size: calc(10.8 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.36em; color: #a0a0a0;
}
.p-vision__glow {
  display: block; width: calc(149.3 * var(--k)); height: calc(4.8 * var(--k)); margin: calc(12 * var(--k)) auto 0;
  background: linear-gradient(90deg, rgba(224,178,19,0) 0%, #e8bf3c 50%, rgba(224,178,19,0) 100%);
}
.p-vision__h2 { position: relative; margin-top: calc(22.1 * var(--k)); }
.p-vision__h2 > span:not(.p-vision__q) {
  display: block; font-weight: 900; line-height: 1.2; letter-spacing: 0.05em; color: #f4f4f4;
}
/* 原本では2行とも中央から少しずれた位置にある（実測値に合わせる） */
.p-vision__h2 > span:nth-of-type(2) { font-size: calc(32.8 * var(--fk)); padding-right: calc(4.2 * var(--k)); }
.p-vision__h2 > span:nth-of-type(3) { margin-top: calc(6.4 * var(--k)); font-size: calc(39 * var(--fk)); letter-spacing: 0.01em; padding-left: calc(9 * var(--k)); }
.p-vision__q {
  position: absolute; top: calc(48.4 * var(--k)); font-size: calc(33 * var(--fk)); font-weight: 900; line-height: 1; color: #f5bd06;
}
.p-vision__q--l { left: calc(-4 * var(--k)); } .p-vision__q--r { right: calc(-4 * var(--k)); }
.p-vision__line { position: relative; top: calc(0.17 * var(--k)); width: calc(69 * var(--k)); height: calc(1.6 * var(--k)); margin: calc(13.2 * var(--k)) auto 0 calc(142.4 * var(--k)); background: #e1b324; }
.p-vision__brand {
  margin-top: calc(15.8 * var(--k)); padding-left: calc(11.6 * var(--k)); font-size: calc(13.9 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.34em; color: #dbdbdb;
}
/* 原本では頭文字の E だけ金色 */
.p-vision__brand::first-letter { color: #cd9908; }
.p-vision__body {
  /* 原本は本文の中心が画面中央より約8.6px右にある */
  margin-top: calc(24.6 * var(--k)); padding-left: calc(17.2 * var(--k));
  font-size: calc(11.8 * var(--fk)); font-weight: 500; line-height: 2; letter-spacing: 0.07em; color: #d2d2d2;
}

/* ============ 13 access ============ */
.p-access { padding: calc(69.1 * var(--k)) 0 calc(15 * var(--k)); background: #fff; text-align: center; }
.p-access__label {
  position: relative; display: inline-block; padding: 0 calc(45 * var(--k));
  color: #b6b6b6; font-size: calc(12.2 * var(--fk)); letter-spacing: 0.31em; font-weight: 500;
}
.p-access__label::before, .p-access__label::after {
  content: ""; position: absolute; top: 50%; width: calc(20.2 * var(--k)); height: calc(0.8 * var(--k)); background: #e4e4e5;
}
.p-access__label::before { left: 0; } .p-access__label::after { right: 0; }
.p-access__h2 { margin-top: calc(10.5 * var(--k)); font-size: calc(28.6 * var(--fk)); letter-spacing: 0.1em; color: #3a3a3a; }
.p-access__line { position: relative; left: calc(0.6 * var(--k)); width: calc(28.7 * var(--k)); height: calc(3.9 * var(--k)); margin-top: calc(9.6 * var(--k)); background: #fdd239; }
.p-access__lead {
  margin-top: calc(17.9 * var(--k)); font-size: calc(10.7 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.14em; color: #8b8b8c;
}
.p-access__card {
  margin: calc(16.8 * var(--k)) calc(25.7 * var(--k)) 0 calc(23.9 * var(--k)); padding: calc(3.3 * var(--k)) calc(25.3 * var(--k)) calc(0.6 * var(--k)); border-radius: calc(5.4 * var(--k));
  background: #fff; box-shadow: 0 calc(3 * var(--k)) calc(16 * var(--k)) rgba(0,0,0,0.07); text-align: left;
}
/* アイコン円は行の高さに影響させない（原本では行の高さは文字だけで決まる） */
.p-access__row { position: relative; display: block; padding: calc(13.2 * var(--k)) 0 calc(13.2 * var(--k)) calc(73.2 * var(--k)); }
.p-access__row + .p-access__row { border-top: calc(1 * var(--k)) dashed #dcdcdd; }
/* 原本は行ごとに下の余白が違う（上から 22.0 / 12.4 / 5.4 / 12.6px）。等間隔ではない */
.p-access__row:nth-of-type(1) { padding-bottom: calc(16.9 * var(--k)); }
.p-access__row:nth-of-type(1) .p-access__dd { margin-top: calc(11.2 * var(--k)); }
.p-access__row:nth-of-type(2) { padding-bottom: calc(12.4 * var(--k)); }
.p-access__row:nth-of-type(3) { padding-bottom: calc(5.4 * var(--k)); }
.p-access__row:nth-of-type(4) { padding-bottom: calc(12.6 * var(--k)); }
.p-access__row:nth-of-type(5) { padding-bottom: calc(17.9 * var(--k)); }
/* 原本ではアイコンは #fdd66a の細い円の中に入っている */
/* 円の縦位置は原本では行ごとに違う（トレース由来）。行ごとに実測値で置く */
.p-access__row:nth-of-type(1) .p-access__icon { top: calc(15.8 * var(--k)); }
.p-access__row:nth-of-type(2) .p-access__icon { top: calc(16.7 * var(--k)); }
.p-access__row:nth-of-type(3) .p-access__icon { top: calc(9.9 * var(--k)); }
.p-access__row:nth-of-type(4) .p-access__icon { top: calc(22.8 * var(--k)); }
.p-access__row:nth-of-type(5) .p-access__icon { top: calc(5.7 * var(--k)); }
.p-access__icon {
  position: absolute; left: 0; top: calc(15.8 * var(--k)); display: block; width: calc(42.6 * var(--k)); height: calc(42.6 * var(--k));
  border: calc(1.02 * var(--k)) solid #fdd66a; border-radius: 50%;
}
.p-access__icon::before {
  content: ""; position: absolute; left: calc(6.4 * var(--k)); top: calc(6.4 * var(--k)); width: calc(27.2 * var(--k)); height: calc(27.2 * var(--k));
  background: #f4bf1c;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-access__dt { font-size: calc(12.3 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: -0.03em; color: #5c5c5c; }
.p-access__dd {
  margin: calc(6.1 * var(--k)) 0 0; font-size: calc(11.6 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.05em; color: #8e8e8f;
}
.p-access__dd + .p-access__dd { margin-top: calc(3 * var(--k)); }
/* 電話番号だけ原本では大きい */
.p-access__row:nth-of-type(3) .p-access__dd { font-size: calc(16.3 * var(--fk)); letter-spacing: -0.07em; }
.p-access__dd a { color: inherit; }
.p-access__off { display: block; margin-top: calc(5.8 * var(--k)); font-size: calc(10 * var(--fk)); color: #a6a6a6; }
.p-access__map { margin: calc(10.1 * var(--k)) calc(24 * var(--k)) 0; overflow: hidden; border-radius: calc(5.4 * var(--k)); }
.p-access__map img { display: block; width: 100%; height: calc(175.9 * var(--k)); object-fit: cover; }
.p-access__bannerFix{}
.p-access__banner {
  position: relative;
  display: flex; align-items: center; justify-content: flex-start; gap: calc(22.2 * var(--k));
  margin: calc(16.1 * var(--k)) calc(22.5 * var(--k)) 0; padding-left: calc(37.5 * var(--k)); height: calc(58.2 * var(--k)); border-radius: calc(5.4 * var(--k)); background: #fefaef;
  font-size: calc(16.2 * var(--fk)); font-weight: 700; letter-spacing: 0.04em; color: #5c5b57;
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
@media (hover: hover) { .p-access__banner:hover { transform: translateY(calc(-2 * var(--k))); box-shadow: 0 calc(10 * var(--k)) calc(22 * var(--k)) rgba(0,0,0,0.08); } }
.p-access__bannerIcon {
  width: calc(26.3 * var(--k)); height: calc(26.3 * var(--k)); background: #6b6b68;   /* 原本の線色 */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-access__banner i { position: absolute; right: calc(56 * var(--k)); display: block; width: calc(6.99 * var(--k)); height: calc(12.39 * var(--k)); font-style: normal; }
.p-access__banner i img { display: block; width: 100%; height: 100%; }

/* ============ BLOG（既存WordPressから自動取得） ============ */
.p-blog { padding: calc(56 * var(--k)) 0 calc(30 * var(--k)); background: #fafafa; text-align: center; }
.p-blog__label { color: var(--c-accent); font-size: calc(11 * var(--fk)); letter-spacing: 0.28em; font-weight: 500; }
.p-blog__h2 { margin-top: calc(8 * var(--k)); font-size: calc(24 * var(--fk)); letter-spacing: 0.1em; }
.p-blog__line { width: calc(30 * var(--k)); height: calc(2.7 * var(--k)); margin-top: calc(10 * var(--k)); background: var(--c-accent); }
.p-blog__list {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: calc(12 * var(--k));
  margin: calc(24 * var(--k)) calc(24 * var(--k)) 0;
}
.p-blog__item { text-align: left; }
.p-blog__link { display: block; }
.p-blog__thumb {
  display: block; overflow: hidden; border-radius: calc(4.8 * var(--k)); background: #eee; aspect-ratio: 4 / 3;
}
.p-blog__thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s var(--ease); }
@media (hover: hover) { .p-blog__link:hover .p-blog__thumb img { transform: scale(1.06); } }
.p-blog__date {
  display: block; margin-top: calc(10 * var(--k));
  font-size: calc(10 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.08em; color: var(--c-accent-deep);
}
.p-blog__title {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden;
  margin-top: calc(6 * var(--k));
  font-size: calc(11.5 * var(--fk)); font-weight: 700; line-height: 1.6; letter-spacing: 0.02em; color: var(--c-ink);
}
.p-blog__item--skeleton span {
  display: block; aspect-ratio: 4 / 3; border-radius: calc(4.8 * var(--k));
  background: linear-gradient(100deg, #eee 30%, #f6f6f6 50%, #eee 70%) 0 0 / 300% 100%;
  animation: skel 1.4s linear infinite;
}
@keyframes skel { to { background-position: -150% 0; } }
.p-blog__more {
  display: inline-flex; align-items: center; gap: calc(10 * var(--k)); margin-top: calc(24 * var(--k));
  padding: calc(10 * var(--k)) calc(26 * var(--k)); border: calc(1 * var(--k)) solid #dcdcdd; border-radius: calc(22 * var(--k));
  font-size: calc(11 * var(--fk)); font-weight: 700; letter-spacing: 0.08em; color: var(--c-ink);
  transition: background 0.3s var(--ease), color 0.3s var(--ease), border-color 0.3s var(--ease);
}
.p-blog__more i { font-style: normal; color: var(--c-accent-deep); }
@media (hover: hover) {
  .p-blog__more:hover { background: var(--c-ink); border-color: var(--c-ink); color: #fff; }
  .p-blog__more:hover i { color: var(--c-accent); }
}

/* ============ 14 recruit ============ */
.p-recruit { position: relative; overflow: hidden; padding: calc(30.8 * var(--k)) 0 calc(9.8 * var(--k)); background: #fff; text-align: center; }
.p-recruit__dots {
  position: absolute; display: block; top: calc(12.54 * var(--k)); left: calc(6.57 * var(--k)); width: calc(37.03 * var(--k)); height: calc(43.9 * var(--k));
}
.p-recruit__label {
  position: relative; display: inline-block; padding: 0 calc(40 * var(--k));
  color: var(--c-accent); font-size: calc(9.1 * var(--fk)); letter-spacing: 0.27em; font-weight: 500;
}
.p-recruit__label::before, .p-recruit__label::after {
  content: ""; position: absolute; top: 50%; width: calc(20 * var(--k)); height: calc(1.1 * var(--k)); background: #fadf7c;
  transform: translateY(calc(-1.13 * var(--k)));
}
.p-recruit__label::before { left: calc(7.74 * var(--k)); } .p-recruit__label::after { right: calc(7.89 * var(--k)); }
.p-recruit__h2 { margin-top: calc(6.6 * var(--k)); font-size: calc(20.4 * var(--fk)); letter-spacing: -0.01em; color: #383838; }
.p-recruit__line { width: calc(31.2 * var(--k)); height: calc(2.7 * var(--k)); margin-top: calc(14.1 * var(--k)); background: #fccd2d; }
.p-recruit__lead {
  margin-top: calc(13.6 * var(--k));
  font-size: calc(11.5 * var(--fk)); font-weight: 400; line-height: 1.65; letter-spacing: 0.1em; color: #6f6f70;
}
.p-recruit__lead--2 { margin-top: calc(9.5 * var(--k)); line-height: calc(26 * var(--k)); }
.p-recruit__cards {
  display: grid; grid-template-columns: repeat(4, 1fr);
  margin: calc(12.3 * var(--k)) calc(26.9 * var(--k)) 0; padding: calc(26.8 * var(--k)) 0 calc(58.9 * var(--k)); border-radius: calc(6 * var(--k));
  background: #fff; box-shadow: 0 calc(3 * var(--k)) calc(16 * var(--k)) rgba(0,0,0,0.07);
}
.p-recruit__item { position: relative; display: flex; flex-direction: column; align-items: center; }
/* 原本は4等分ではないので、実測の中心（79.4 / 170.2 / 259.1 / 350.3）に寄せる */
/* transform はスクロール演出の .reveal と競合するので left でずらす */
.p-recruit__item:nth-child(1) { left: calc(5.5 * var(--k)); }
.p-recruit__item:nth-child(2) { left: calc(2.2 * var(--k)); }
.p-recruit__item:nth-child(3) { left: calc(-3 * var(--k)); }
.p-recruit__item:nth-child(4) { left: calc(-5.8 * var(--k)); }
.p-recruit__item + .p-recruit__item::before {
  content: ""; position: absolute; top: calc(2 * var(--k)); width: calc(0.5 * var(--k)); height: calc(95.6 * var(--k)); background: #ececed;
}
.p-recruit__item:nth-child(2)::before { left: calc(1.2 * var(--k)); }
.p-recruit__item:nth-child(3)::before { left: calc(3.1 * var(--k)); }
.p-recruit__item:nth-child(4)::before { left: calc(2.5 * var(--k)); }
.p-recruit__icon, .p-recruit__iconImg { display: block; width: calc(39.2 * var(--k)); height: calc(41.4 * var(--k)); }
/* 字形は4つとも寸法が違う（原本の実測） */
.p-recruit__item:nth-child(2) .p-recruit__iconImg { width: calc(32.8 * var(--k)); height: calc(35.5 * var(--k));
    position: relative; top: calc(4.1 * var(--k)); }
.p-recruit__item:nth-child(3) .p-recruit__icon { width: calc(48.4 * var(--k)); height: calc(43.5 * var(--k)); }
.p-recruit__item:nth-child(4) .p-recruit__icon { width: calc(39.2 * var(--k)); height: calc(39.8 * var(--k));
    position: relative; top: calc(2.6 * var(--k)); }
.p-recruit__icon {
  background: #2f2f2f;   /* 原本の線色（黄ではなく濃いグレー） */
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.p-recruit__iconImg { object-fit: contain; }
/* 字形の高さが4つとも違うので、見出しの位置を項目ごとに揃える（原本は見出しのyが一定） */
.p-recruit__item:nth-child(1) .p-recruit__h3 { margin-top: calc(14.6 * var(--k)); }
.p-recruit__item:nth-child(2) .p-recruit__h3 { margin-top: calc(20.6 * var(--k)); }
.p-recruit__item:nth-child(3) .p-recruit__h3 { margin-top: calc(11.3 * var(--k)); }
.p-recruit__item:nth-child(4) .p-recruit__h3 { margin-top: calc(16.4 * var(--k)); }
.p-recruit__h3 {
  margin-top: calc(13 * var(--k)); font-size: calc(9.7 * var(--fk)); font-weight: 700; line-height: 1.2; letter-spacing: 0.05em; color: #454545;
}
.p-recruit__text {
  margin-top: calc(8 * var(--k)); font-size: calc(8.8 * var(--fk)); font-weight: 400; line-height: 1.574; letter-spacing: -0.045em; color: #9a9a9a;
}
.p-recruit__cta {
  /* inline-flex だと行ボックスの余白ぶん下がるので flex + auto マージンで中央に置く。
     中身は原本の実測位置（封筒 26.9 / 文字 70.7 / 矢印は右から22.5） */
  display: flex; align-items: center; justify-content: flex-start;
  padding-left: calc(26.9 * var(--k)); gap: calc(14.5 * var(--k));
  position: relative; z-index: 2;
  width: calc(277.3 * var(--k)); height: calc(46.8 * var(--k)); margin: calc(-35.5 * var(--k)) auto 0;   /* 原本ではカードの下端に重なる */
  border-radius: calc(23.4 * var(--k)); background: #fff; box-shadow: 0 calc(3 * var(--k)) calc(14 * var(--k)) rgba(0,0,0,0.08);
  font-size: calc(13.1 * var(--fk)); font-weight: 700; letter-spacing: 0.02em; color: #4f4f4f;
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease);
}
@media (hover: hover) { .p-recruit__cta:hover { transform: translateY(calc(-2 * var(--k))); box-shadow: 0 calc(10 * var(--k)) calc(24 * var(--k)) rgba(0,0,0,0.13); } }
.p-recruit__ctaIcon {
  display: grid; place-items: center; width: calc(29.3 * var(--k)); height: calc(29.3 * var(--k));
  border-radius: 50%; background: #fbc417;
}
.p-recruit__ctaIcon img { display: block; width: calc(14.9 * var(--k)); height: calc(12.5 * var(--k)); }
.p-recruit__cta i { position: absolute; right: calc(22.5 * var(--k)); font-style: normal; color: #e0b60d; }
/* 筆記体は「塗り」と「手書き文字」の2枚重ね（原本の構成どおり） */
.p-recruit__brush { position: relative; display: block; width: calc(184.4 * var(--k)); height: calc(29.6 * var(--k)); margin: calc(12.7 * var(--k)) auto 0; }
.p-recruit__brush img { position: absolute; left: 0; top: 0; display: block; width: calc(184.4 * var(--k)); height: calc(29.6 * var(--k)); }

/* ============ フッター ============ */
.l-footer { padding: calc(25 * var(--k)) 0 calc(23.2 * var(--k)); background: #131313; color: #fff; text-align: center; }
.l-footer__mark { font-size: calc(8.1 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.4em; color: #c9b884; }
.l-footer__brand {
  margin-top: calc(4 * var(--k)); font-size: calc(10.6 * var(--fk)); font-weight: 500; line-height: 1.2; letter-spacing: 0.3em; color: #bcbbb6;
}
.l-footer__line { display: block; width: calc(28.5 * var(--k)); height: calc(0.8 * var(--k)); margin: calc(10 * var(--k)) auto 0; background: #f3c104; }
.l-footer__copy-jp {
  margin-top: calc(11 * var(--k)); font-size: calc(11.6 * var(--fk)); font-weight: 400; line-height: 1.2; letter-spacing: 0.17em; color: #aaa;
}
.l-footer__sns {
  display: flex; align-items: center; justify-content: center; gap: calc(24.3 * var(--k)); margin-top: calc(10.3 * var(--k));
  padding-right: calc(9.8 * var(--k));
}
.l-footer__sns a { color: #cfcfcf; transition: color 0.25s var(--ease); }
.l-footer__sns a:hover { color: var(--c-accent); }
.l-footer__sns img { display: block; width: calc(21.5 * var(--k)); height: calc(22 * var(--k)); }
.l-footer__copy { position: relative; top: calc(1.4 * var(--k)); font-size: calc(6.7 * var(--fk)); letter-spacing: 0.207em; color: #727272; }

/* ============================================================
   デスクトップ（1024px以上）
   基準は Figma「PCレイアウト」= 1440px 1:1。
   コンテナは節ごとに幅が違うので、共通値を置きつつ節側で上書きする。
   ============================================================ */
@media (min-width: 1024px) {
  /* ---- 02 concept ---- */
  .p-concept { padding: calc(96 * var(--k)) 0 calc(70 * var(--k)); }
  /* 装飾はカンプ(147:2)の枠の実測値。書き出しSVGは preserveAspectRatio="none" なので、
     箱の縦横比がSVG側とズレると letterbox されず「潰れて」線が掠れる。必ず比を合わせる */
  .p-concept__ring--tr { top: calc(-40 * var(--k)); left: calc(1180 * var(--k)); width: calc(300 * var(--k)); height: calc(300 * var(--k)); }
  .p-concept__ring--bl { top: calc(640 * var(--k)); left: calc(-110 * var(--k)); width: calc(270 * var(--k)); height: calc(270 * var(--k)); }
  /* 斜線のSP用SVGは節全体(1440×2654)の書き出しでPCに流用できない。PCカンプから新規書き出し */
  .p-concept__slash--tr { content: url(../svg/cc-slash-tr-pc.svg); background-image: none;
    top: calc(-300 * var(--k)); left: calc(640 * var(--k)); width: calc(800 * var(--k)); height: calc(1474.4 * var(--k)); }
  .p-concept__slash--bl { content: url(../svg/cc-slash-bl-pc.svg); background-image: none;
    top: calc(300 * var(--k)); left: calc(-100 * var(--k)); width: calc(800 * var(--k)); height: calc(1474.4 * var(--k)); }
  .p-concept__dots--l  { top: calc(190 * var(--k)); left: calc(46 * var(--k));   width: calc(52 * var(--k)); height: calc(128.2 * var(--k)); }
  .p-concept__dots--br { top: calc(660 * var(--k)); left: calc(1300 * var(--k)); width: calc(95 * var(--k)); height: calc(120.2 * var(--k)); }
  /* 高さを入れ忘れるとSPの101.7pxが残り、筆記体が縦2/5に潰れて掠れて見える */
  .p-concept__wm { top: calc(103 * var(--k)); left: calc(500 * var(--k)); width: calc(440 * var(--k)); height: calc(178.3 * var(--k)); font-size: calc(172.3 * var(--k)); padding-left: calc(12.4 * var(--k)); }
  .p-concept__lead { margin-top: calc(47 * var(--k)); padding-left: 0; font-size: calc(18 * var(--fk)); letter-spacing: calc(1.6 * var(--k));
    line-height: calc(34 * var(--k)); }
  .p-concept__lead br { display: none; }   /* PCは1行 */
  .p-concept__card { margin: calc(29.6 * var(--k)) calc(170 * var(--k)) 0; padding: calc(38 * var(--k)) 0 calc(26.4 * var(--k)); border-radius: calc(12 * var(--k)); }
  .p-concept__cardTitle { padding: 0 calc(46 * var(--k)); gap: calc(24 * var(--k)); font-size: calc(19 * var(--fk)); letter-spacing: calc(2.7 * var(--k));
    line-height: calc(28 * var(--k)); }
  .p-concept__courses { grid-template-columns: repeat(3, 1fr); margin-top: calc(20.3 * var(--k)); padding: 0; }
  /* 字形は「円 / 黄色い弧 / 線画 / 集中線」の4枚重ね。幅だけ一括指定すると
     高さがSPのまま残って歪むので、1枚ずつ幅と高さを両方入れる */
  .p-concept__icon { width: calc(146.3 * var(--k)); height: calc(149.5 * var(--k)); }
  .p-concept__icon img { max-width: none; }
  .p-concept__circle { left: calc(11.2 * var(--k)); top: calc(12.7 * var(--k)); width: calc(124 * var(--k));   height: calc(125 * var(--k)); }
  .p-concept__arc    { left: calc(61.6 * var(--k)); top: calc(12.7 * var(--k)); width: calc(73.6 * var(--k));  height: calc(81.8 * var(--k)); }
  .p-concept__glyph  { left: calc(44.3 * var(--k)); top: calc(53.1 * var(--k)); width: calc(56.7 * var(--k));  height: calc(51.5 * var(--k)); }
  .p-concept__impact { left: calc(4.4 * var(--k));  top: calc(4.2 * var(--k));  width: calc(137.6 * var(--k)); height: calc(141 * var(--k)); }
  .p-concept__icon--3 { width: calc(146.3 * var(--k)); height: calc(153.9 * var(--k)); }
  .p-concept__icon--3 .p-concept__circle { left: calc(11.2 * var(--k)); top: calc(15 * var(--k)); width: calc(124 * var(--k));  height: calc(124 * var(--k)); }
  .p-concept__icon--3 .p-concept__arc    { left: calc(61.6 * var(--k)); top: calc(15 * var(--k)); width: calc(73.6 * var(--k)); height: calc(81.2 * var(--k)); }
  /* 線画だけはSP側の `.p-concept__icon--3 .p-concept__glyph`(詳細度0,2,0)が勝ってしまうので、
     PCでも同じ詳細度で上書きする。数値はカンプの線画グループの外接矩形（フレーム基準）*/
  .p-concept__icon--3 .p-concept__glyph  { left: calc(40.24 * var(--k)); top: calc(58.65 * var(--k)); width: calc(63.71 * var(--k)); height: calc(37.55 * var(--k)); }
  /* 2枚目（柔術）はカンプの線画が一回り大きい */
  .p-concept__course:nth-child(2) .p-concept__glyph { left: calc(42.37 * var(--k)); top: calc(47.17 * var(--k)); width: calc(61.98 * var(--k)); height: calc(55.28 * var(--k)); }
  .p-concept__jp { margin-top: calc(9.2 * var(--k)); font-size: calc(18 * var(--fk)); letter-spacing: calc(1.8 * var(--k)); line-height: calc(26 * var(--k)); }
  .p-concept__course:nth-child(3) .p-concept__jp { letter-spacing: 0.05em; }
  .p-concept__en { margin-top: calc(4 * var(--k)); padding-bottom: calc(11 * var(--k)); font-size: calc(12 * var(--fk)); letter-spacing: calc(1.3 * var(--k));
    line-height: calc(18 * var(--k)); }
  .p-concept__en::after { width: calc(40 * var(--k)); }
  /* PCでは5行を流し込んで2行になる（原本と同じ組み） */
  .p-concept__body { width: calc(686 * var(--k)); margin: calc(34.6 * var(--k)) auto 0; padding-top: calc(35.4 * var(--k)); }
  /* 原本は句読点を詰めて組んでいる（81字が2行に収まる）。paltを入れないと3行になる */
  .p-concept__body { font-feature-settings: "palt" 1; }
  .p-concept__body p { display: inline; font-size: calc(15 * var(--fk)); letter-spacing: calc(2.2 * var(--k)); line-height: calc(32 * var(--k)); }
  .p-concept__body p::after { content: none; }
  .p-concept__brush { width: calc(360 * var(--k)); height: calc(57.6 * var(--k)); margin-top: calc(32.7 * var(--k)); }
  .p-concept__brushFill, .p-concept__brushText { width: calc(360 * var(--k)); height: calc(57.6 * var(--k)); }
  .p-concept__brushDot { left: calc(351 * var(--k)); top: calc(32 * var(--k)); width: calc(2.6 * var(--k)); height: calc(2.8 * var(--k)); }
  /* 透かしはPC指定が無いとSPの寸法のまま小さく描かれ、筆記体が細って掠れる */
  .p-service__wm { left: calc(55.8 * var(--k)); top: calc(-0.1 * var(--k)); width: calc(491.2 * var(--k)); height: calc(314.3 * var(--k)); font-size: calc(218.5 * var(--k)); padding-left: 0; }
  .p-coach__wm { left: calc(453.2 * var(--k)); top: calc(86.7 * var(--k)); width: calc(543.9 * var(--k)); height: calc(126.4 * var(--k)); font-size: calc(137.2 * var(--k)); padding-left: calc(48.8 * var(--k)); }

  /* ---- 03 service ---- */
  .p-service { padding-bottom: calc(70 * var(--k)); }
  .p-service__photo { top: calc(60 * var(--k)); width: calc(600 * var(--k)); height: calc(330 * var(--k)); }
  .p-service__head-area { padding: calc(30 * var(--k)) 0 0 calc(100 * var(--k)); }
  .p-service__brand span:first-child { font-size: calc(30 * var(--fk)); }
  .p-service__brand span:last-child { padding-left: calc(35 * var(--k)); font-size: calc(15 * var(--fk)); }
  .p-service__head-area .c-label { margin-top: calc(48 * var(--k)); font-size: calc(15 * var(--fk)); }
  .p-service__head-area .c-h2 { margin-top: calc(8 * var(--k)); font-size: calc(40 * var(--fk)); }
  .p-service__lead { margin-top: calc(20 * var(--k)); font-size: calc(16 * var(--fk)); }
  .p-service__cards { margin-top: calc(44 * var(--k)); padding: 0 calc(100 * var(--k)); }
  .p-service__card + .p-service__card { margin-top: calc(24 * var(--k)); }
  .p-service__head { grid-template-columns: calc(446 * var(--k)) 1fr; }
  .p-service__card .p-service__thumb { height: calc(250 * var(--k)); }
  .p-service__card.is-open .p-service__thumb { height: calc(366.4 * var(--k)); }
  .p-service__no { left: calc(66 * var(--k)); top: calc(118 * var(--k)); font-size: calc(30 * var(--fk)); }
  .p-service__en { left: calc(66 * var(--k)); top: calc(178 * var(--k)); font-size: calc(26 * var(--fk)); }
  .p-service__body { padding: calc(34 * var(--k)) calc(90 * var(--k)) calc(28 * var(--k)) calc(60 * var(--k)); }
  .p-service__jp { font-size: calc(26 * var(--fk)); }
  .p-service__text { margin-top: calc(16 * var(--k)); }
  .p-service__text span { font-size: calc(16 * var(--fk)); line-height: 1.7; }
  .p-service__mark { right: calc(50 * var(--k)); top: calc(60 * var(--k)); width: calc(26 * var(--k)); height: calc(26 * var(--k)); }
  .p-service__mark::before, .p-service__mark::after { width: calc(26 * var(--k)); height: calc(2 * var(--k)); }
  .p-service__mark::before { transform: translateY(calc(12 * var(--k))); }
  .p-service__feats { padding: calc(18 * var(--k)) calc(100 * var(--k)) calc(24 * var(--k)); }
  .p-service__featIcon { width: calc(46 * var(--k)); height: calc(44 * var(--k)); }
  .p-service__featName { margin-top: calc(8 * var(--k)); font-size: calc(17 * var(--fk)); }
  .p-service__featDesc { margin-top: calc(8 * var(--k)); font-size: calc(15 * var(--fk)); }
  .p-service__feat + .p-service__feat::before { height: calc(62 * var(--k)); }
  .p-service__band { margin-top: calc(44 * var(--k)); height: calc(54 * var(--k)); }
  .p-service__sign { left: calc(100 * var(--k)); font-size: calc(16 * var(--fk)); }
  /* ---- PCカンプ(152:111)の実測に合わせる ---- */
  .p-service__head-area { padding: calc(30 * var(--k)) 0 0 calc(100 * var(--k)); }
  .p-service__brand span:first-child { font-size: calc(32.4 * var(--fk)); }
  .p-service__brand span:last-child { padding-left: calc(35 * var(--k)); font-size: calc(15.9 * var(--fk)); }
  .p-service__head-area .c-label { margin-top: calc(77.6 * var(--k)); font-size: calc(17.1 * var(--fk)); }
  .p-service__head-area .c-h2 { margin-top: calc(8 * var(--k)); font-size: calc(44 * var(--fk)); }
  .p-service__lead { margin-top: calc(12.4 * var(--k)); font-size: calc(17.6 * var(--fk)); line-height: 1.65; }
  .p-service__lead br { display: none; }
  /* 写真は600×330の窓。中の画像は600×853で、上から58pxの位置を見せる */
  .p-service__photo { top: calc(60 * var(--k)); width: calc(600 * var(--k)); height: calc(330 * var(--k)); overflow: hidden; }
  .p-service__photo img { width: calc(600 * var(--k)); height: calc(853 * var(--k)); object-fit: cover; object-position: top; margin-top: calc(-58 * var(--k)); }
  /* PCカンプの写真は白へのなじませが入っていない（明るいのは元画像そのもの） */
  .p-service__photo::after { background: none; }
  .p-service__cards { margin-top: calc(99.6 * var(--k)); padding: 0 calc(100 * var(--k)); }
  .p-service__card + .p-service__card { margin-top: calc(21 * var(--k)); }
  .p-service__card:nth-child(3) { margin-top: calc(20 * var(--k)); }
  .p-service__head { grid-template-columns: calc(446 * var(--k)) 1fr; }
  .p-service__card .p-service__thumb { height: calc(200 * var(--k)); }
  .p-service__card.is-open .p-service__thumb { height: calc(366 * var(--k)); position: relative; left: calc(6 * var(--k)); top: calc(6 * var(--k)); }
  .p-service__card:not(.is-open) .p-service__head { grid-template-columns: calc(400 * var(--k)) 1fr; }
  .p-service__no { left: calc(66 * var(--k)); top: calc(118 * var(--k)); font-size: calc(19.9 * var(--fk)); }
  .p-service__card:not(.is-open) .p-service__no { left: calc(47 * var(--k)); top: calc(66 * var(--k)); }
  .p-service__en { left: calc(66 * var(--k)); top: calc(178 * var(--k)); font-size: calc(21.4 * var(--fk)); line-height: 1.65; }
  .p-service__card:not(.is-open) .p-service__en { left: calc(47 * var(--k)); top: calc(105 * var(--k)); font-size: calc(22.9 * var(--fk)); }
  .p-service__card:nth-child(3) .p-service__no { top: calc(66 * var(--k)); }
  .p-service__card:nth-child(3) .p-service__en { top: calc(105 * var(--k)); }
  .p-service__body,
  .p-service__card.is-open .p-service__body { padding: calc(53 * var(--k)) calc(90 * var(--k)) 0 calc(54 * var(--k)); }
  .p-service__card:not(.is-open) .p-service__body { padding: calc(49 * var(--k)) calc(90 * var(--k)) 0 calc(20 * var(--k)); }
  .p-service__jp,
  .p-service__card.is-open .p-service__jp { font-size: calc(25.1 * var(--fk)); letter-spacing: 0.04em; }
  .p-service__card:not(.is-open) .p-service__jp { font-size: calc(27.3 * var(--fk)); }
  .p-service__text { margin-top: calc(13.3 * var(--k)); }
  .p-service__card.is-open .p-service__text { margin-top: calc(16.9 * var(--k)); }
  .p-service__text span,
  .p-service__card.is-open .p-service__text span {
    display: inline; font-size: calc(16 * var(--fk)); font-weight: 500; line-height: 1.85; letter-spacing: 0.02em;
  }
  .p-service__card:not(.is-open) .p-service__text span { font-size: calc(19 * var(--fk)); font-weight: 400; line-height: 1.5; }
  .p-service__card.is-open .p-service__text { max-width: calc(640 * var(--k)); }
  .p-service__card:not(.is-open) .p-service__text { max-width: calc(620 * var(--k)); }
  .p-service__mark { right: calc(67 * var(--k)); top: calc(68 * var(--k)); width: calc(24 * var(--k)); height: calc(24 * var(--k)); }
  .p-service__mark::before { width: calc(24 * var(--k)); height: calc(2 * var(--k)); transform: translateY(calc(11 * var(--k))); }
  .p-service__mark::after { width: calc(2 * var(--k)); height: calc(24 * var(--k)); }
  .p-service__card.is-open .p-service__mark { right: calc(67 * var(--k)); top: calc(68 * var(--k)); }
  .p-service__card.is-open .p-service__mark::before { width: calc(23 * var(--k)); }
  /* ノッチは原本ではカード下端にまたがる（上10 / 下10.5） */
  .p-service__card.is-open::after { left: calc(598 * var(--k)); width: calc(43.7 * var(--k)); height: calc(20.5 * var(--k)); top: auto; bottom: calc(-10.5 * var(--k)); }
  .p-service__feats { padding: calc(37 * var(--k)) 0 calc(34 * var(--k)); }
  .p-service__feat { gap: calc(14 * var(--k)); }
  .p-service__feat:nth-child(1) .p-service__featIcon { width: calc(57 * var(--k)); height: calc(63 * var(--k)); }
  .p-service__feat:nth-child(2) .p-service__featIcon { width: calc(65 * var(--k)); height: calc(63 * var(--k)); }
  .p-service__feat:nth-child(3) .p-service__featIcon { width: calc(65 * var(--k)); height: calc(63 * var(--k)); }
  .p-service__featName { font-size: calc(16.1 * var(--fk)); }
  .p-service__featDesc { margin-top: calc(8 * var(--k)); font-size: calc(14.1 * var(--fk)); }
  .p-service__feat + .p-service__feat::before { height: calc(70 * var(--k)); }
  .p-service__band { margin-top: calc(33 * var(--k)); height: calc(48 * var(--k)); }
  .p-service__sign { font-size: calc(15.2 * var(--fk)); }
  /* 開いているカードの番号・英字はSP側の `.p-service__card.is-open ...`(詳細度0,2,0)に
     負けて効いていなかった。同じ詳細度で原本の実測値を入れ直す */
  .p-service__card.is-open .p-service__no { left: calc(66 * var(--k)); top: calc(127 * var(--k)); font-size: calc(19.9 * var(--fk)); line-height: calc(24 * var(--k)); letter-spacing: calc(1.57 * var(--k)); }
  .p-service__card.is-open .p-service__en { left: calc(66 * var(--k)); top: calc(177.5 * var(--k));
    font-size: calc(21.43 * var(--fk)); line-height: calc(51 * var(--k)); letter-spacing: calc(4 * var(--k)); color: #f2f2f2; }
  .p-service__card:not(.is-open) .p-service__no { left: calc(47 * var(--k)); top: calc(66 * var(--k)); font-size: calc(19.9 * var(--fk)); line-height: calc(24 * var(--k)); letter-spacing: calc(4.61 * var(--k)); }
  .p-service__card:not(.is-open) .p-service__en { left: calc(47 * var(--k)); top: calc(111 * var(--k)); font-size: calc(22.86 * var(--fk)); line-height: calc(27 * var(--k)); letter-spacing: calc(1.42 * var(--k)); }
  .p-service__card:nth-child(3) .p-service__no { top: calc(66 * var(--k)); font-size: calc(22.74 * var(--fk)); line-height: calc(27 * var(--k)); letter-spacing: calc(1.64 * var(--k)); }
  .p-service__card:nth-child(3) .p-service__en { top: calc(106 * var(--k)); line-height: calc(37 * var(--k)); letter-spacing: calc(2.1 * var(--k)); }
  /* 開閉マークは原本では「−」だけの細い線（枠の上端に来る） */
  .p-service__card.is-open .p-service__mark { right: calc(67.1 * var(--k)); top: calc(68 * var(--k)); height: calc(2.2 * var(--k)); }
  .p-service__card.is-open .p-service__mark::before { width: calc(22.9 * var(--k)); height: calc(2.2 * var(--k)); transform: none; }
  .p-service__card:not(.is-open) .p-service__mark { right: calc(66 * var(--k)); top: calc(92.6 * var(--k)); }
  /* 下部バーは全幅ではなく左に寄った台形（原本: 地 406.2 / 黄斜め 327.2〜424.8） */
  .p-service__band::before { width: calc(406.2 * var(--k)); height: calc(48 * var(--k));
    clip-path: polygon(0 0, calc(327.2 * var(--k)) 0, calc(406.2 * var(--k)) calc(48 * var(--k)), 0 calc(48 * var(--k))); }
  .p-service__band::after { left: calc(327.2 * var(--k)); width: calc(97.6 * var(--k)); height: calc(48 * var(--k));
    clip-path: polygon(0 0, calc(18.5 * var(--k)) 0, calc(97.6 * var(--k)) calc(48 * var(--k)), calc(79.1 * var(--k)) calc(48 * var(--k))); }
  .p-service__sign { left: calc(45.5 * var(--k)); top: calc(16.5 * var(--k)); transform: none;
    font-size: calc(15.18 * var(--fk)); line-height: calc(18 * var(--k)); letter-spacing: calc(9.97 * var(--k)); }
  /* 特徴の3列は原本では等分ではない（区切り線は 523.3 / 916.7） */
  .p-service__feats { grid-template-columns: calc(423.3 * var(--k)) calc(393.4 * var(--k)) calc(423.3 * var(--k)); }
  .p-service__feat { gap: calc(14.5 * var(--k)); }
  .p-service__feat:nth-child(1) { transform: translateX(calc(17.4 * var(--k))); }
  .p-service__feat:nth-child(2) { transform: none; }
  .p-service__feat:nth-child(3) { transform: translateX(calc(-15 * var(--k))); }
  .p-service__feat + .p-service__feat::before { top: calc(29 * var(--k)); height: calc(70 * var(--k)); width: calc(2.2 * var(--k)); transform: none; }
  .p-service__feat:nth-child(2)::before, .p-service__feat:nth-child(3)::before { left: 0; }
  .p-service__featText { position: relative; top: calc(-2.6 * var(--k)); }
  .p-service__featName { font-size: calc(16.1 * var(--fk)); line-height: calc(19 * var(--k)); letter-spacing: calc(2.4 * var(--k)); }
  .p-service__featDesc { margin-top: calc(7.9 * var(--k)); font-size: calc(14.1 * var(--fk)); line-height: calc(17 * var(--k)); letter-spacing: calc(0.9 * var(--k)); }


  /* ---- 04 facility ---- */
  .p-facility { padding: calc(165 * var(--k)) 0 calc(52 * var(--k)); }
  .p-facility__h2 { font-size: calc(44 * var(--fk)); }
  .c-h2__line--sm { width: calc(79 * var(--k)); height: calc(6 * var(--k)); margin-top: calc(32 * var(--k)); }
  .p-facility__lead { margin-top: calc(19.4 * var(--k)); font-size: calc(20 * var(--fk)); letter-spacing: calc(0.25 * var(--k)); }
  .p-facility__card { margin: calc(35.5 * var(--k)) calc(157 * var(--k)) 0; border-radius: calc(16 * var(--k)); }
  .p-facility__card img { height: calc(532 * var(--k)); }
  .p-facility__bar { height: calc(86 * var(--k)); }
  .p-facility__item { gap: calc(12 * var(--k)); font-size: calc(17.7 * var(--fk)); letter-spacing: calc(1.9 * var(--k)); transform: none; }
  .p-facility__item:nth-of-type(1) { transform: translateX(calc(27.7 * var(--k))); }
  .p-facility__item:nth-of-type(2) { transform: translateX(calc(-2.8 * var(--k))); }
  .p-facility__item:nth-of-type(3) { transform: translateX(calc(-53.5 * var(--k))); }
  .p-facility__item + .p-facility__item::before { width: calc(1 * var(--k)); height: calc(38 * var(--k)); }
  .p-facility__icon { width: calc(var(--iw) * 2.87); height: calc(var(--ih) * 2.87); }

  /* ---- 05 about / PCカンプ(159:2)の実測に合わせる ---- */
  .p-about { padding: calc(116.9 * var(--k)) 0 calc(17 * var(--k)); }
  .p-about__label { font-size: calc(18.46 * var(--fk)); line-height: calc(22 * var(--k)); letter-spacing: calc(4.78 * var(--k)); }
  .p-about__h2 { margin-top: calc(18.6 * var(--k)); font-size: calc(44 * var(--fk)); line-height: calc(53 * var(--k)); letter-spacing: calc(1.86 * var(--k)); }
  .p-about .c-h2__line { width: calc(62.5 * var(--k)); height: calc(6 * var(--k)); margin-top: calc(23.8 * var(--k)); }
  .p-about__cards { grid-template-columns: repeat(3, calc(360 * var(--k))); gap: calc(15.1 * var(--k)) calc(40 * var(--k));
    justify-content: center; width: calc(1160 * var(--k)); margin: calc(31.8 * var(--k)) auto 0; top: 0; }
  .p-about__card { padding: calc(44.7 * var(--k)) calc(24 * var(--k)) calc(64.8 * var(--k)); border-radius: calc(9 * var(--k)); }
  .p-about__no { left: calc(23.1 * var(--k)); top: calc(23 * var(--k)); padding-bottom: calc(7.1 * var(--k));
    font-size: calc(21.1 * var(--fk)); line-height: calc(25 * var(--k)); letter-spacing: calc(0.45 * var(--k)); }
  .p-about__card:nth-child(n+4) .p-about__no::after { bottom: 0; }
  .p-about__no::after { left: calc(-1 * var(--k)); bottom: 0; width: calc(25.2 * var(--k)); height: calc(2.5 * var(--k)); }
  .p-about__icon { left: 0; width: calc(84.6 * var(--k)); height: calc(84.6 * var(--k)); border-width: calc(2.8 * var(--k)); }
  /* 字形は円いっぱいではなく、カードごとに実寸・位置が違う（原本の実測） */
  .p-about__card:nth-child(1) .p-about__icon > span { left: calc(16.1 * var(--k)); top: calc(19.7 * var(--k)); width: calc(52.4 * var(--k)); height: calc(47.4 * var(--k)); }
  .p-about__card:nth-child(2) .p-about__icon > span { left: calc(21.6 * var(--k)); top: calc(19 * var(--k));   width: calc(41.3 * var(--k)); height: calc(46.4 * var(--k)); }
  .p-about__card:nth-child(3) .p-about__icon > span { left: calc(20.6 * var(--k)); top: calc(12.8 * var(--k)); width: calc(43.3 * var(--k)); height: calc(59.5 * var(--k)); }
  .p-about__card:nth-child(4) .p-about__icon > span { left: calc(16.1 * var(--k)); top: calc(16.6 * var(--k)); width: calc(52.4 * var(--k)); height: calc(50.4 * var(--k)); }
  .p-about__card:nth-child(5) .p-about__icon > span { left: calc(15.1 * var(--k)); top: calc(13.5 * var(--k)); width: calc(54.4 * var(--k)); height: calc(55.4 * var(--k)); }
  .p-about__card:nth-child(6) .p-about__icon > span { left: calc(12.1 * var(--k)); top: calc(20.4 * var(--k)); width: calc(60.5 * var(--k)); height: calc(44.3 * var(--k)); }
  .p-about__h3 { margin-top: calc(20.1 * var(--k)); font-size: calc(23.9 * var(--fk)); line-height: calc(29 * var(--k)); letter-spacing: calc(-1.67 * var(--k)); }
  .p-about__text { margin-top: calc(11.2 * var(--k)); font-size: calc(19.9 * var(--fk)); line-height: calc(32.5 * var(--k)); letter-spacing: calc(-1.5 * var(--k)); }
  .p-about__note { width: calc(1148.4 * var(--k)); margin: calc(21.2 * var(--k)) auto 0 calc(146.6 * var(--k));
    padding: calc(23 * var(--k)) calc(46.8 * var(--k)) calc(16.3 * var(--k)) calc(60.3 * var(--k)); gap: calc(69.2 * var(--k)); border-radius: calc(9 * var(--k)); }
  .p-about__check { left: 0; top: 0; margin-top: calc(6.9 * var(--k)); width: calc(40.3 * var(--k)); height: calc(41.3 * var(--k)); }
  .p-about__noteMain { font-size: calc(19.5 * var(--fk)); line-height: calc(23 * var(--k)); letter-spacing: calc(-0.46 * var(--k)); }
  /* 点線は文字の枠より左右へはみ出す（原本の実測） */
  .p-about__noteSub { margin: calc(44.7 * var(--k)) calc(-124.6 * var(--k)) 0 calc(-122.8 * var(--k));
    padding-top: calc(14 * var(--k)); padding-left: calc(109.5 * var(--k)); border-top-width: calc(1.12 * var(--k));
    font-size: calc(17.15 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(-0.46 * var(--k)); }

  /* ---- 06 mission / PCカンプ(161:2)の実測に合わせる ---- */
  .p-mission { padding: calc(84.4 * var(--k)) 0 calc(86.5 * var(--k)); }
  /* 左上の斜線はPCカンプでは節の上に飛び出していて1本も見えない。右の斜線はPC用の書き出しに差し替える */
  .p-mission__deco--l { display: none; }
  .p-mission__deco--r { content: url(../svg/deco-mission-r-pc.svg);
    inset: auto auto auto 0; top: calc(-259.4 * var(--k)); width: calc(1440 * var(--k)); height: calc(1038.8 * var(--k)); }
  .p-mission__label { font-size: calc(11.96 * var(--fk)); line-height: calc(14 * var(--k)); letter-spacing: calc(3.42 * var(--k)); }
  .p-mission__h2 { margin-top: calc(9.6 * var(--k)); font-size: calc(43.99 * var(--fk)); line-height: calc(53 * var(--k)); letter-spacing: calc(5.06 * var(--k)); }
  .p-mission__h2 span { display: inline; padding: 0; }   /* SPの行ごとの寄せはPCでは効かせない */
  .p-mission__line { top: 0; width: calc(38.8 * var(--k)); height: calc(2.7 * var(--k)); margin-top: calc(17 * var(--k)); }
  .p-mission__body { margin-top: calc(31.3 * var(--k)); }
  .p-mission__body .u-brPc { display: none; }   /* 行は .p-mission__row が分けるので不要 */
  .p-mission__body p { display: inline; padding: 0; font-size: inherit; letter-spacing: inherit; line-height: inherit; }
  .p-mission__body p::after { content: none; }
  /* 3行は原本では字の大きさが1行ずつ違う（トレース由来）。行送りは行の高さと間隔で作る */
  .p-mission__row { display: block; position: relative; }
  .p-mission__row:nth-of-type(1) { font-size: calc(12.74 * var(--fk)); line-height: calc(15 * var(--k)); letter-spacing: calc(0.17 * var(--k)); }
  .p-mission__row:nth-of-type(2) { margin-top: calc(27 * var(--k)); font-size: calc(13.37 * var(--fk)); line-height: calc(16 * var(--k)); letter-spacing: calc(0.1 * var(--k)); }
  .p-mission__row:nth-of-type(3) { margin-top: calc(26 * var(--k)); font-size: calc(13.31 * var(--fk)); line-height: calc(16 * var(--k)); letter-spacing: calc(0.13 * var(--k)); }
  .p-mission__row::after {
    content: ""; position: absolute; left: 50%; transform: translateX(-50%);
    top: calc(30 * var(--k)); height: calc(0.9 * var(--k)); background: #303030;
  }
  .p-mission__row:nth-of-type(1)::after { width: calc(382 * var(--k)); }
  .p-mission__row:nth-of-type(2)::after { width: calc(276 * var(--k)); }
  .p-mission__row:nth-of-type(3)::after { width: calc(435 * var(--k)); }
  /* 3等分ではなく、原本の円の中心（353.8 / 719.8 / 1087.2）に合わせた左右パディング */
  .p-mission__points { margin-top: calc(38 * var(--k)); padding: 0 calc(149.45 * var(--k)) 0 calc(150.45 * var(--k)); }
  .p-mission__points li:nth-child(n) { transform: none; }
  .p-mission__points li + li::before { left: calc(-0.5 * var(--k)); top: calc(2 * var(--k)); width: calc(0.9 * var(--k)); height: calc(86 * var(--k)); }
  .p-mission__points li:nth-child(2)::before, .p-mission__points li:nth-child(3)::before { left: calc(-0.5 * var(--k)); }
  .p-mission__icon { top: 0; width: calc(49.4 * var(--k)); height: calc(48.9 * var(--k)); border-width: calc(1.164 * var(--k)); }
  .p-mission__icon::after { width: calc(30.6 * var(--k)); height: calc(28.8 * var(--k)); }
  .p-mission__points li:nth-child(1) .p-mission__icon::after { top: calc(0.55 * var(--k)); }
  .p-mission__points li:nth-child(2) .p-mission__icon::after { top: calc(1.45 * var(--k)); width: calc(28.8 * var(--k)); height: calc(26 * var(--k)); }
  .p-mission__points li:nth-child(3) .p-mission__icon::after { top: calc(-0.15 * var(--k)); width: calc(29.2 * var(--k)); height: calc(29.2 * var(--k)); }
  .p-mission__pt { margin-top: calc(11.2 * var(--k)); padding-bottom: calc(9.4 * var(--k)); font-size: calc(11.25 * var(--fk)); line-height: calc(14 * var(--k)); letter-spacing: calc(0.3 * var(--k)); }
  .p-mission__pt::after { width: calc(19.6 * var(--k)); height: calc(1.4 * var(--k)); bottom: 0; }

  /* ---- 07 coach ---- */
  .p-coach { padding-top: calc(130 * var(--k)); }
  .p-coach__label { font-size: calc(18 * var(--fk)); }
  .p-coach__h2 { margin-top: calc(14 * var(--k)); font-size: calc(44 * var(--fk)); }
  .p-coach__lead { margin-top: calc(28 * var(--k)); font-size: calc(20 * var(--fk)); }
  .p-coach__cards { grid-template-columns: repeat(2, minmax(0, calc(560 * var(--k)))); gap: calc(40 * var(--k));
    width: min(calc(1160 * var(--k)), calc(100% - calc(80 * var(--k)))); margin: calc(66 * var(--k)) auto 0; }
  .p-coach__card { border-radius: calc(10 * var(--k)); }
  .p-coach__photo { height: calc(400.9 * var(--k)); }
  .p-coach__thumb::before { border-width: calc(94 * var(--k)) calc(94 * var(--k)) 0 0; }
  /* 原本は M(94,0)→(0,94) の線・太さ4.75。SPの座標(top:47.5)のままだと三角の中を横切る。
     transform-origin 0 0 で -45度なので、太さの半分だけ左上へ寄せて辺の中心に乗せる */
  .p-coach__thumb::after { left: calc(-1.68 * var(--k)); top: calc(92.32 * var(--k));
    width: calc(132.94 * var(--k)); height: calc(4.75 * var(--k)); margin-left: 0; }
  .p-coach__no { left: calc(22 * var(--k)); top: calc(18 * var(--k)); font-size: calc(26 * var(--fk)); }
  .p-coach__badge { right: calc(30 * var(--k)); top: calc(27 * var(--k)); width: calc(80 * var(--k)); height: calc(80 * var(--k)); }
  .p-coach__badge > span { width: calc(52 * var(--k)); height: calc(58 * var(--k)); }
  .p-coach__script { left: calc(10 * var(--k)); bottom: calc(-30 * var(--k)); }
  .p-coach__body { padding: calc(66 * var(--k)) calc(54 * var(--k)) calc(44 * var(--k)); }
  .p-coach__course { font-size: calc(21 * var(--fk)); }
  .p-coach__name { margin-top: calc(8 * var(--k)); font-size: calc(32 * var(--fk)); }
  .p-coach__roman { margin-top: calc(10 * var(--k)); font-size: calc(13 * var(--fk)); }
  .p-coach__items { margin-top: calc(34 * var(--k)); padding-top: calc(30 * var(--k)); }
  .p-coach__items li + li { margin-top: calc(16 * var(--k)); }
  .p-coach__items span:last-child { font-size: calc(19 * var(--fk)); }
  .p-coach__check { width: calc(22 * var(--k)); height: calc(22 * var(--k)); margin-top: calc(4 * var(--k)); }
  .p-coach__dots { gap: calc(20 * var(--k)); margin-top: calc(36 * var(--k)); }
  .p-coach__dots li { width: calc(13 * var(--k)); height: calc(13 * var(--k)); }
  .p-coach__cta { width: calc(320 * var(--k)); height: calc(68 * var(--k)); margin-top: calc(44 * var(--k)); border-radius: calc(34 * var(--k)); font-size: calc(21 * var(--fk)); }
  .p-coach__note { margin-top: calc(40 * var(--k)); font-size: calc(20 * var(--fk)); }
  /* 注記の左右の装飾。SP値の縮小では原本の半分の大きさ・角度違いになるので、
     PCカンプ(166:124-129)の実測で置き直す。注記の箱は文字幅で伸縮するため、
     位置は節の中心(720)からの距離で決める */
  .p-coach__deco { width: calc(62.3 * var(--k)); height: calc(52.43 * var(--k));
    background-size: calc(57.1 * var(--k)) calc(2 * var(--k)); }
  .p-coach__deco--l { left: 50%; right: auto; margin-left: calc(-406.1 * var(--k)); background-position: left center; }
  .p-coach__deco--r { left: 50%; right: auto; margin-left: calc(327.8 * var(--k)); background-position: calc(5.2 * var(--k)) center; }
  .p-coach__deco::before, .p-coach__deco::after {
    height: calc(2 * var(--k)); bottom: auto; transform-origin: 0 50%;
  }
  .p-coach__deco--l::before { left: calc(20.8 * var(--k)); top: calc(-1 * var(--k));    width: calc(43.93 * var(--k)); transform: rotate(19.15deg); }
  .p-coach__deco--l::after  { left: calc(18.2 * var(--k)); top: calc(51.43 * var(--k)); width: calc(46.4 * var(--k));  transform: rotate(-18.09deg); }
  .p-coach__deco--r::before { left: 0; top: calc(13.41 * var(--k)); width: calc(43.93 * var(--k)); transform: rotate(-19.15deg); }
  .p-coach__deco--r::after  { left: 0; top: calc(37.02 * var(--k)); width: calc(46.4 * var(--k));  transform: rotate(18.09deg); }
  .p-coach__band { margin-top: calc(60 * var(--k)); height: calc(76 * var(--k)); }
  .p-coach__band span { padding-left: calc(160 * var(--k)); font-size: calc(56 * var(--fk)); }
  /* ---- PCカンプ(166:2)の実測に合わせる ---- */
  .p-coach { padding-top: calc(151 * var(--k)); }
  .p-coach__label { font-size: calc(16.3 * var(--fk)); }
  .p-coach__h2 { margin-top: calc(13 * var(--k)); font-size: calc(44 * var(--fk)); }
  .p-coach__underline { position: absolute; left: calc(622 * var(--k)); top: calc(233 * var(--k)); width: calc(218 * var(--k)); height: calc(25 * var(--k)); margin-top: 0; }
  .p-coach__lead { margin-top: calc(24 * var(--k)); font-size: calc(16.8 * var(--fk)); line-height: 1.8; }
  .p-coach__cards { grid-template-columns: calc(560 * var(--k)) calc(560 * var(--k)); justify-content: center; margin-top: calc(62.8 * var(--k)); padding: 0; gap: calc(40 * var(--k)); }
  .p-coach__lead br { display: none; }
  .p-coach__card { width: calc(560 * var(--k)); }
  .p-coach__photo { height: calc(401 * var(--k)); }
  .p-coach__corner { width: calc(94 * var(--k)); height: calc(94 * var(--k)); }
  .p-coach__no { left: calc(16 * var(--k)); top: calc(12 * var(--k)); font-size: calc(17.7 * var(--fk)); }
  .p-coach__badge { right: calc(30 * var(--k)); top: calc(27 * var(--k)); width: calc(80 * var(--k)); height: calc(80 * var(--k)); }
  .p-coach__badge > span { width: calc(46 * var(--k)); height: calc(56 * var(--k)); }
  .p-coach__card:nth-child(2) .p-coach__badge > span { width: calc(50 * var(--k)); height: calc(45 * var(--k)); }
  .p-coach__script { left: calc(10 * var(--k)); bottom: calc(12 * var(--k)); width: calc(224.8 * var(--k)); height: calc(86.7 * var(--k)); }
  .p-coach__script--2 { width: calc(208.7 * var(--k)); height: calc(91.16 * var(--k)); bottom: calc(7.54 * var(--k)); }
  .p-coach__body { padding: calc(50 * var(--k)) 0 calc(28.8 * var(--k)); }
  .p-coach__course { font-size: calc(17.7 * var(--fk)); }
  .p-coach__name { margin-top: calc(6 * var(--k)); font-size: calc(26.3 * var(--fk)); }
  .p-coach__roman { margin-top: calc(8 * var(--k)); font-size: calc(10.9 * var(--fk)); }
  .p-coach__items { margin-top: calc(16 * var(--k)); padding-top: calc(24 * var(--k)); margin-inline: calc(40 * var(--k)); }
  .p-coach__items li + li { margin-top: calc(5 * var(--k)); }
  .p-coach__items li:last-child { margin-top: calc(5 * var(--k)); }
  .p-coach__items li { gap: calc(13 * var(--k)); }
  .p-coach__check { width: calc(17 * var(--k)); height: calc(17 * var(--k)); margin-top: calc(1 * var(--k)); }
  .p-coach__items span:last-child { font-size: calc(15.7 * var(--fk)); line-height: 1.6; }
  .p-coach__dots { margin-top: calc(26 * var(--k)); gap: calc(17.5 * var(--k)); }
  .p-coach__dots li { width: calc(10 * var(--k)); height: calc(10 * var(--k)); }
  .p-coach__cta { width: calc(250 * var(--k)); height: calc(54 * var(--k)); margin-top: calc(21 * var(--k)); padding-left: calc(12 * var(--k));
    gap: calc(12 * var(--k)); border-radius: calc(27 * var(--k)); font-size: calc(16.4 * var(--fk)); }
  .p-coach__cta i { width: calc(14 * var(--k)); height: calc(14 * var(--k)); left: 0; }
  .p-coach__note { margin-top: calc(87 * var(--k)); font-size: calc(20.4 * var(--fk)); line-height: 1.7; }
  .p-coach__note br { display: none; }
  .p-coach__band { margin-top: calc(74.3 * var(--k)); height: calc(59 * var(--k)); }
  .p-coach__band span { padding-left: calc(914 * var(--k)); font-size: calc(43.9 * var(--fk)); }

  /* ---- 08 voice / PCカンプ(167:2)の実測に合わせる ---- */
  .p-voice { padding: calc(146.2 * var(--k)) 0 calc(41 * var(--k)); }
  /* 透かしは見出しの「右」。SPは左に置いているので位置ごと差し替える */
  .p-voice__wm { left: calc(858.8 * var(--k)); top: calc(148 * var(--k)); width: calc(231.3 * var(--k)); height: calc(138.8 * var(--k)); }
  .p-voice__dots--l { top: calc(224.2 * var(--k)); left: calc(365.4 * var(--k)); width: calc(69.8 * var(--k)); height: calc(77.3 * var(--k)); background-size: calc(21.8 * var(--k)) calc(23.8 * var(--k)); }
  .p-voice__dots--r { top: calc(318.6 * var(--k)); left: calc(1001.6 * var(--k)); width: calc(66.6 * var(--k)); height: calc(49 * var(--k)); background-size: calc(20.4 * var(--k)) calc(21.8 * var(--k)); }
  .p-voice__label { font-size: calc(19.38 * var(--fk)); letter-spacing: calc(4.1 * var(--k)); line-height: calc(23 * var(--k)); }
  .p-voice__h2 { margin-top: calc(17.8 * var(--k)); font-size: calc(44 * var(--fk)); letter-spacing: calc(5.08 * var(--k)); line-height: calc(53 * var(--k)); }
  .p-voice__line { top: 0; width: calc(58.3 * var(--k)); height: calc(4.6 * var(--k)); margin: calc(26.9 * var(--k)) auto 0 calc(684.9 * var(--k)); }
  .p-voice__lead { margin-top: calc(25.4 * var(--k)); font-size: calc(18.07 * var(--fk)); line-height: calc(32 * var(--k)); letter-spacing: calc(1.23 * var(--k)); }
  .p-voice__lead br { display: none; }            /* 原本のPCは1行 */
  .p-voice__cards { grid-template-columns: repeat(2, calc(560 * var(--k))); gap: calc(40 * var(--k));
    justify-content: center; width: auto; margin: calc(76.4 * var(--k)) 0 0; top: 0; }
  .p-voice__card { padding: calc(59.7 * var(--k)) calc(36 * var(--k)) calc(40 * var(--k)); border-radius: calc(10 * var(--k)); }
  /* 円写真はカードの右上（原本: カード右端から38px・上から12.7px） */
  .p-voice__photo { left: auto; right: calc(38 * var(--k)); top: calc(12.7 * var(--k)); width: calc(134.7 * var(--k)); height: calc(134.7 * var(--k)); }
  .p-voice__photo img { left: calc(2.6 * var(--k)); top: calc(1 * var(--k)); width: calc(129.5 * var(--k)); height: calc(129.5 * var(--k)); }
  /* 弧は写真より一回り大きい別レイヤー。上の img 指定より後ろに置いて上書きする */
  .p-voice__photo .p-voice__arc { left: calc(42.55 * var(--k)); top: 0; width: calc(92.12 * var(--k)); height: calc(121.81 * var(--k)); }
  .p-voice__mark { top: 0; width: calc(50.9 * var(--k)); height: calc(40.7 * var(--k)); margin: 0 0 calc(34.3 * var(--k)) calc(-10 * var(--k)); }
  /* PCは原本どおり自然に折り返す（SP用に1行=1spanで切っているのを解除） */
  .p-voice__quote span, .p-voice__body span { display: inline; }
  .p-voice__quote span { font-size: calc(23 * var(--k)); line-height: calc(40 * var(--k)); letter-spacing: calc(1.12 * var(--k)); }
  /* PCでは2枚目も1枚目と同じ組み方（SPだけ行送りを変えている） */
  .p-voice__card:nth-child(2) .p-voice__quote span { line-height: calc(40 * var(--k)); }
  .p-voice__card:nth-child(2) .p-voice__mark { margin-bottom: calc(34.3 * var(--k)); }
  .p-voice__card:nth-child(2) .p-voice__person { margin-top: calc(46 * var(--k)); }
  .p-voice__person { align-items: flex-start; margin-top: calc(46 * var(--k)); padding-top: calc(14.1 * var(--k)); gap: calc(14.7 * var(--k)); }
  .p-voice__avatar { margin-top: calc(1 * var(--k)); width: calc(45.3 * var(--k)); height: calc(45.3 * var(--k)); }
  .p-voice__name { font-size: calc(20.6 * var(--fk)); line-height: calc(25 * var(--k)); }
  .p-voice__course { margin-top: calc(5 * var(--k)); font-size: calc(16.18 * var(--fk)); line-height: calc(19 * var(--k)); }
  .p-voice__body { margin-top: calc(28 * var(--k)); font-size: calc(15 * var(--k)); line-height: calc(28 * var(--k)); }
  .p-voice__body span { font-size: calc(15 * var(--k)); line-height: calc(28 * var(--k)); letter-spacing: calc(0.09 * var(--k)); }
  .p-voice__pager { gap: calc(29.2 * var(--k)); margin-top: calc(32 * var(--k)); }
  .p-voice__pager li { width: calc(13.4 * var(--k)); height: calc(13.4 * var(--k)); }
  .p-voice__note { margin-top: calc(44.6 * var(--k)); font-size: calc(15.92 * var(--fk)); line-height: calc(19 * var(--k)); letter-spacing: calc(1.01 * var(--k)); }

  /* ---- 09 price / PCカンプ(167:85)の実測に合わせる ---- */
  .p-price { padding: calc(127.7 * var(--k)) 0 calc(19.4 * var(--k)); }
  .p-price__label { font-size: calc(18.56 * var(--fk)); line-height: calc(22 * var(--k)); letter-spacing: calc(5.72 * var(--k)); }
  .p-price__h2 { margin-top: calc(18.7 * var(--k)); font-size: calc(44.01 * var(--fk)); line-height: calc(53 * var(--k)); letter-spacing: calc(1.5 * var(--k)); }
  .p-price__line { width: calc(56.7 * var(--k)); height: calc(5.5 * var(--k)); margin-top: calc(18.1 * var(--k)); }
  .p-price__lead { margin-top: calc(22.4 * var(--k)); font-size: calc(17.61 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(0.9 * var(--k)); }
  /* 3枚は原本では幅が少しずつ違う（369.7 / 373.1 / 374.8） */
  .p-price__cards { grid-template-columns: calc(369.7 * var(--k)) calc(373.1 * var(--k)) calc(374.8 * var(--k));
    justify-content: space-between; gap: 0; width: calc(1162.3 * var(--k));
    margin: calc(89.1 * var(--k)) calc(137.6 * var(--k)) 0 calc(140.1 * var(--k)); }
  .p-price__card { height: calc(463.6 * var(--k)); padding: calc(46.7 * var(--k)) calc(28.9 * var(--k)) calc(37.6 * var(--k)) calc(36.4 * var(--k));
    border: calc(1.33 * var(--k)) solid #248bc0; border-radius: calc(9.7 * var(--k));
    box-shadow: none; }
  .p-price__card:nth-child(2) { border-color: #fdce3e; padding-left: calc(37.6 * var(--k)); padding-right: calc(27.6 * var(--k)); }
  .p-price__card:nth-child(3) { border-color: #dc3f3f; padding-left: calc(40 * var(--k)); padding-right: calc(30.3 * var(--k)); }
  /* バッジ円はカードの中心よりわずかに右（原本の実測） */
  .p-price__badge { top: calc(-54.8 * var(--k)); width: calc(94.5 * var(--k)); height: calc(94.5 * var(--k)); border-width: calc(1.33 * var(--k)); }
  .p-price__card:nth-child(1) .p-price__badge { margin-left: calc(9.1 * var(--k)); }
  .p-price__card:nth-child(2) .p-price__badge { margin-left: calc(7.4 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__badge { margin-left: calc(6.45 * var(--k)); }
  .p-price__badgeIcon { width: calc(63.3 * var(--k)); height: calc(63.3 * var(--k)); }
  .p-price__badgeIcon2 { width: calc(54.5 * var(--k)); height: calc(54.5 * var(--k)); left: calc(2 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__badgeIcon { left: calc(2.9 * var(--k)); }
  .p-price__tag { top: 0; padding: calc(5.4 * var(--k)) 0; border-radius: calc(13.09 * var(--k));
    font-size: calc(12.51 * var(--fk)); line-height: calc(15.4 * var(--k)); letter-spacing: calc(0.55 * var(--k)); }
  /* タグの帯幅は原本の実測（文言の長さで大きく違う） */
  .p-price__card:nth-child(1) .p-price__tag { width: calc(144 * var(--k)); left: calc(1.8 * var(--k)); }
  .p-price__card:nth-child(2) .p-price__tag { width: calc(93.8 * var(--k)); left: calc(1.65 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__tag { width: calc(237.4 * var(--k)); left: calc(3.35 * var(--k)); }
  .p-price__name { margin-top: calc(19.4 * var(--k)); font-size: calc(25.05 * var(--fk)); line-height: calc(30 * var(--k)); letter-spacing: calc(0.11 * var(--k)); }
  .p-price__roman { margin-top: calc(7.8 * var(--k)); font-size: calc(15.81 * var(--fk)); line-height: calc(19 * var(--k)); letter-spacing: calc(1.33 * var(--k)); }
  .p-price__price { margin-top: calc(29.3 * var(--k)); font-size: calc(26.3 * var(--fk)); line-height: calc(32 * var(--k)); letter-spacing: calc(-1.84 * var(--k)); }
  .p-price__card:nth-child(1) .p-price__price { margin-top: calc(29.3 * var(--k) - 12 * var(--k)); }
  .p-price__sub { margin-top: calc(21.5 * var(--k)); font-size: calc(15.87 * var(--fk)); line-height: calc(19 * var(--k)); letter-spacing: calc(0.53 * var(--k)); }
  .p-price__sub + .p-price__sub { margin-top: calc(9.3 * var(--k)); font-size: calc(16.53 * var(--fk)); line-height: calc(20 * var(--k)); letter-spacing: calc(0.08 * var(--k)); }
  .p-price__when { margin-top: calc(30.5 * var(--k)); padding-top: calc(23.5 * var(--k)); border-top-width: calc(1.1 * var(--k));
    font-size: calc(17.69 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(-0.39 * var(--k)); }
  .p-price__day { margin-top: calc(12.9 * var(--k)); font-size: calc(17.79 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(0.77 * var(--k)); }
  .p-price__day + .p-price__day { margin-top: calc(10.2 * var(--k)); font-size: calc(18.77 * var(--fk)); line-height: calc(23 * var(--k)); letter-spacing: calc(0.32 * var(--k)); }
  /* 3枚目だけ文字量が多く、原本でも組み方が違う */
  .p-price__card:nth-child(3) .p-price__name { margin-top: calc(21.5 * var(--k)); font-size: calc(20.88 * var(--fk)); line-height: calc(25 * var(--k)); letter-spacing: calc(-1.46 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__roman { margin-top: calc(10.7 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__price { top: 0; margin-top: calc(34.5 * var(--k)); font-size: calc(24.56 * var(--fk)); line-height: calc(29 * var(--k)); letter-spacing: calc(1.95 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__sub { margin-top: calc(6.5 * var(--k)); font-size: calc(18.04 * var(--fk)); line-height: calc(22 * var(--k)); letter-spacing: calc(0.08 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__sub + .p-price__sub { margin-top: calc(19.6 * var(--k)); font-size: calc(14.74 * var(--fk)); line-height: calc(18 * var(--k)); letter-spacing: calc(1.79 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__when { margin-top: calc(32 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__day { margin-top: calc(11 * var(--k)); font-size: calc(19.21 * var(--fk)); line-height: calc(23 * var(--k)); letter-spacing: calc(-0.02 * var(--k)); }
  .p-price__card:nth-child(3) .p-price__day + .p-price__day { margin-top: calc(10.1 * var(--k)); font-size: calc(18.06 * var(--fk)); line-height: calc(22 * var(--k)); letter-spacing: calc(0.51 * var(--k)); }

  .p-price__senior { width: calc(1160.1 * var(--k)); margin: calc(25.1 * var(--k)) auto 0 calc(132.5 * var(--k));
    padding: calc(19.6 * var(--k)) calc(142.6 * var(--k)) calc(5.4 * var(--k)) calc(82.8 * var(--k));
    gap: 0 calc(103.4 * var(--k)); border: calc(1.09 * var(--k)) solid #eee; border-radius: calc(9.7 * var(--k)); box-shadow: none; }
  .p-price__seniorIconWrap { width: calc(90.5 * var(--k)); height: calc(90.5 * var(--k)); }
  .p-price__seniorIcon { width: calc(90.5 * var(--k)); height: calc(90.5 * var(--k)); }
  .p-price__seniorHeart { left: calc(3.3 * var(--k)); top: calc(3.3 * var(--k)); width: calc(84 * var(--k)); height: calc(84 * var(--k)); }
  /* 原本ではコース名だけ SENIOR より右にずれている */
  .p-price__seniorName { padding-left: calc(52.8 * var(--k)); font-size: calc(22.73 * var(--fk)); line-height: calc(27 * var(--k)); letter-spacing: calc(1.65 * var(--k)); }
  .p-price__seniorRoman { margin-top: calc(10.3 * var(--k)); font-size: calc(14.37 * var(--fk)); line-height: calc(17 * var(--k)); letter-spacing: calc(2.37 * var(--k)); }
  .p-price__seniorPrice { font-size: calc(22.51 * var(--fk)); line-height: calc(27 * var(--k)); letter-spacing: calc(1.38 * var(--k)); }
  .p-price__seniorTime { margin-top: calc(10.7 * var(--k)); margin-right: calc(14.8 * var(--k)); font-size: calc(17.75 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(0.74 * var(--k)); }
  /* 点線はカードの内側パディングより外まで伸びる（原本の実測） */
  .p-price__seniorNote { top: 0; margin: calc(4.1 * var(--k)) calc(-41.9 * var(--k)) 0 calc(-17.5 * var(--k));
    padding-top: calc(12.7 * var(--k)); padding-left: calc(35.3 * var(--k));
    border-top-width: calc(1.2 * var(--k));
    font-size: calc(14.15 * var(--fk)); line-height: calc(17 * var(--k)); letter-spacing: calc(4.19 * var(--k)); }

  .p-price__cta { width: calc(1160.1 * var(--k)); height: calc(102.5 * var(--k)); align-items: center;
    margin: calc(61 * var(--k)) auto 0 calc(132.5 * var(--k)); padding: 0 calc(199.5 * var(--k)) 0 calc(54.4 * var(--k)); gap: calc(148.4 * var(--k));
    border: calc(1.09 * var(--k)) solid #f0f0f0; border-radius: calc(9.7 * var(--k)); box-shadow: none; }
  /* 中身は原本では帯の中心より約9px下にある */
  .p-price__calWrap { left: 0; top: calc(9.45 * var(--k)); width: calc(63 * var(--k)); height: calc(63 * var(--k)); }
  .p-price__cal { width: calc(45.8 * var(--k)); height: calc(49.1 * var(--k)); }
  .p-price__ctaBody { position: relative; top: calc(8.8 * var(--k)); }
  .p-price__ctaTitle { padding-left: calc(25.9 * var(--k)); font-size: calc(24.14 * var(--fk)); line-height: calc(29 * var(--k)); letter-spacing: calc(-0.31 * var(--k)); }
  .p-price__ctaText { margin-top: calc(8.7 * var(--k)); font-size: calc(18.77 * var(--fk)); line-height: calc(23 * var(--k)); letter-spacing: calc(-0.08 * var(--k)); }
  .p-price__ctaArrow { left: 0; top: calc(9.35 * var(--k)); width: calc(12 * var(--k)); height: calc(19.6 * var(--k)); font-size: calc(26 * var(--fk)); }

  /* ---- 10 flow ---- */
  .p-flow { padding: calc(118 * var(--k)) 0 calc(50 * var(--k)); }
  .p-flow__lead br { display: none; }
  .p-flow__label { font-size: calc(18 * var(--fk)); }
  .p-flow__h2 { margin-top: calc(14 * var(--k)); font-size: calc(44.02 * var(--fk)); letter-spacing: calc(1.13 * var(--k)); }
  .p-flow__line { width: calc(246 * var(--k)); height: calc(4 * var(--k)); margin-top: calc(16 * var(--k)); }
  .p-flow__lead { margin-top: calc(26 * var(--k)); font-size: calc(20 * var(--fk)); }
  /* PCは4ステップを横並びにする（縦積みだと間延びする） */
  .p-flow__steps {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 0;
    margin-top: calc(66 * var(--k)); padding: 0 calc(130 * var(--k)); text-align: center;
  }
  .p-flow__step { display: block; margin: 0 !important; padding: 0 calc(16 * var(--k)); }
  .p-flow__mark { width: calc(132 * var(--k)); height: calc(132 * var(--k)); margin: 0 auto; }
  .p-flow__icon, .p-flow__iconImg { width: calc(132 * var(--k)); height: calc(132 * var(--k)); }
  .p-flow__no { left: 50%; top: calc(-14 * var(--k)); width: calc(44 * var(--k)); height: calc(44 * var(--k)); font-size: calc(17 * var(--fk)); transform: translateX(-50%); }
  .p-flow__step:not(.is-last)::after {
    left: auto; right: calc(-70 * var(--k)); top: calc(66 * var(--k)); width: calc(139 * var(--k)); height: calc(3 * var(--k));
    background-image: linear-gradient(90deg, #cfcfcf 0 calc(6 * var(--k)), transparent calc(6 * var(--k)) calc(14 * var(--k)));
    background-size: calc(14 * var(--k)) calc(3 * var(--k));
  }
  .p-flow__body { margin-top: calc(26 * var(--k)); }
  .p-flow__step-en { font-size: calc(17 * var(--fk)); }
  .p-flow__h3 { margin-top: calc(10 * var(--k)); padding-bottom: calc(22 * var(--k)); font-size: calc(27 * var(--fk)); }
  .p-flow__h3::after { left: 50%; width: calc(40 * var(--k)); height: calc(3 * var(--k)); transform: translateX(-50%); }
  .p-flow__text { margin-top: calc(18 * var(--k)); }
  .p-flow__text span { font-size: calc(17 * var(--fk)); }
  .p-flow__cta { margin: calc(70 * var(--k)) calc(215 * var(--k)) 0; border-radius: calc(10 * var(--k)); }
  .p-flow__ctaBg { height: calc(240 * var(--k)); }
  .p-flow__ctaInner { padding: calc(48 * var(--k)) 0 0 calc(70 * var(--k)); }
  .p-flow__ctaTag { padding: calc(5 * var(--k)) calc(10 * var(--k)); font-size: calc(18 * var(--fk)); }
  .p-flow__ctaTitle { margin-top: calc(18 * var(--k)); font-size: calc(36 * var(--fk)); }
  .p-flow__ctaTitle i { margin-left: calc(90 * var(--k)); }
  .p-flow__ctaNotes { position: static; display: grid; grid-template-columns: repeat(3, auto);
    justify-content: start; width: auto; height: auto; padding-left: 0; border: 0;
    gap: 0 calc(56 * var(--k)); margin-top: calc(24 * var(--k)); }
  .p-flow__ctaNotes > span:nth-child(2), .p-flow__ctaNotes > span:nth-child(3) { margin-left: 0; }
  .p-flow__ctaTitle i { position: static; width: auto; height: auto; border: 0; margin-left: calc(40 * var(--k));
    font-size: inherit; color: var(--c-accent); }
  .p-flow__ctaNotes > span { gap: calc(10 * var(--k)); font-size: calc(17 * var(--fk)); }
  .p-flow__ctaNotes > span + span::before { left: calc(-28 * var(--k)); height: calc(22 * var(--k)); }
  /* ---- PCカンプ(170:2)の実測に合わせる ---- */
  .p-flow { padding-top: calc(132.9 * var(--k)); padding-bottom: calc(110 * var(--k)); }
  .p-flow__label { font-size: calc(21 * var(--fk)); line-height: calc(25 * var(--k)); letter-spacing: calc(4.47 * var(--k)); }
  .p-flow__h2 { margin-top: calc(14 * var(--k)); font-size: calc(44 * var(--fk)); }
  .p-flow__line { width: calc(245.8 * var(--k)); height: calc(4 * var(--k)); margin-top: calc(13.6 * var(--k)); top: 0; left: 0; }
  .p-flow__lead { margin-top: calc(26.3 * var(--k)); font-size: calc(16 * var(--fk)); line-height: calc(30 * var(--k)); letter-spacing: calc(0.17 * var(--k)); }
  .p-flow__steps {
    grid-template-columns: repeat(4, calc(295 * var(--k))); justify-content: center;
    margin-top: calc(31.2 * var(--k)); padding: 0;
  }
  .p-flow__step { padding: 0; }
  .p-flow__mark { width: calc(132 * var(--k)); height: calc(132 * var(--k)); margin: 0 auto; top: 0; border-width: calc(2 * var(--k)); }
  /* 円の中に「黒の線画」と「黄の面」を重ねる。中央寄せだと原本と0.8pxずれるうえ、
     SP側の `.p-flow__step:nth-child(n) .p-flow__iconY`(詳細度0,2,0)のtop:%が勝って
     黄色だけ円の外へ飛び出していた。両レイヤーともカンプのフレーム座標で直に置く */
  .p-flow__icon, .p-flow__iconImg {
    position: absolute; left: calc(22.7 * var(--k)); top: calc(22.85 * var(--k));
    width: calc(88.15 * var(--k)); height: calc(88.15 * var(--k));
  }
  .p-flow__step:nth-child(1) .p-flow__icon, .p-flow__step:nth-child(3) .p-flow__icon {
    left: calc(21.41 * var(--k)); top: calc(21.4 * var(--k));
    width: calc(90.84 * var(--k)); height: calc(90.84 * var(--k));
  }
  .p-flow__iconY { left: calc(22.72 * var(--k)); width: calc(88.17 * var(--k)); height: calc(88.17 * var(--k)); transform: none; }
  .p-flow__step:nth-child(1) .p-flow__iconY,
  .p-flow__step:nth-child(2) .p-flow__iconY,
  .p-flow__step:nth-child(3) .p-flow__iconY,
  .p-flow__step:nth-child(4) .p-flow__iconY { top: calc(22.8 * var(--k)); }
  .p-flow__no { left: calc(-4 * var(--k)); top: calc(-4 * var(--k)); width: calc(42 * var(--k)); height: calc(42 * var(--k)); font-size: calc(15.5 * var(--fk)); transform: none; }
  .p-flow__step:nth-child(2) .p-flow__no,
  .p-flow__step:nth-child(3) .p-flow__no,
  .p-flow__step:nth-child(4) .p-flow__no { top: calc(-4 * var(--k)); }
  .p-flow__step:not(.is-last)::after { left: calc(226 * var(--k)); right: auto; top: calc(65 * var(--k)); width: calc(139 * var(--k)); height: calc(3 * var(--k)); }
  .p-flow__body { margin-top: calc(24 * var(--k)); padding-top: 0; }
  .p-flow__step-en { font-size: calc(18.3 * var(--fk)); }
  .p-flow__h3 { margin-top: calc(6 * var(--k)); padding-bottom: calc(22 * var(--k)); font-size: calc(29.9 * var(--fk)); }
  .p-flow__h3::after { left: 50%; bottom: 0; width: calc(41 * var(--k)); height: calc(4 * var(--k)); transform: translateX(-50%); }
  .p-flow__text { width: calc(262 * var(--k)); margin: calc(18 * var(--k)) auto 0; }
  .p-flow__text span { display: inline; font-size: calc(14 * var(--fk)); line-height: 1.7; }
  .p-flow__cta { margin: calc(70 * var(--k)) calc(220 * var(--k)) 0; height: calc(208 * var(--k)); }
  .p-flow__ctaBg { height: calc(208 * var(--k)); }
  .p-flow__ctaInner { padding: calc(35 * var(--k)) 0 0 calc(66 * var(--k)); }
  .p-flow__ctaTag { padding: calc(4 * var(--k)) calc(7 * var(--k)); font-size: calc(16.7 * var(--fk)); letter-spacing: 0.32em; width: calc(164 * var(--k)); box-sizing: border-box; }
  .p-flow__ctaTitle { margin-top: calc(13 * var(--k)); font-size: calc(31 * var(--fk)); }
  .p-flow__ctaTitle i { position: absolute; left: calc(908 * var(--k)); top: calc(78 * var(--k)); display: grid; place-items: center;
    width: calc(44 * var(--k)); height: calc(44 * var(--k)); margin-left: 0; border: calc(1.5 * var(--k)) solid #d0d0d0; border-radius: 50%; }
  .p-flow__ctaTitle i img { width: calc(18 * var(--k)); height: calc(18 * var(--k)); }
  .p-flow__ctaNotes { position: absolute; left: calc(63 * var(--k)); top: calc(135 * var(--k)); width: calc(785 * var(--k)); height: calc(55 * var(--k));
    display: flex; align-items: center; margin-top: 0; padding-left: 0;
    border: calc(1 * var(--k)) solid rgba(255,255,255,0.14); border-radius: calc(4 * var(--k)); }
  .p-flow__ctaNotes > span { position: relative; top: 0; gap: calc(10 * var(--k)); font-size: calc(15.9 * var(--fk)); white-space: nowrap; }
  .p-flow__ctaNotes > span:nth-child(1) { margin-left: calc(49 * var(--k)); }
  .p-flow__ctaNotes > span:nth-child(2) { margin-left: calc(69.4 * var(--k)); }
  .p-flow__ctaNotes > span:nth-child(3) { margin-left: calc(66 * var(--k)); }
  .p-flow__ctaNotes > span + span::before { left: calc(-80 * var(--k)); height: calc(20 * var(--k)); width: calc(1 * var(--k)); }
  .p-flow__ctaIcon { top: 0; width: calc(41 * var(--k)); height: calc(41 * var(--k)); }
  .p-flow__ctaNotes > span:nth-child(3) .p-flow__ctaIcon { height: calc(36 * var(--k)); left: 0; }

  /* ---- PCカンプ(170:2)の実測に合わせる（追補） ---- */
  .p-flow__h2 { line-height: calc(53 * var(--k)); }
  .p-flow__h3 { padding-bottom: calc(13.6 * var(--k)); line-height: calc(36 * var(--k)); }
  .p-flow__text { margin-top: calc(18.4 * var(--k)); font-size: calc(14 * var(--fk)); line-height: calc(24 * var(--k)); }
  .p-flow__text span { line-height: inherit; font-size: inherit; }
  /* 原本の写真は1000×321の一部（上から56.5px）を208pxの窓で見せている。
     暗幕はかかっていない（写真自体が暗い） */
  .p-flow__ctaBg { position: absolute; left: 0; top: calc(-56.5 * var(--k));
    width: calc(1000 * var(--k)); height: calc(321 * var(--k)); object-fit: cover; }
  .p-flow__cta::after { background: transparent; }
  .p-flow__ctaTitle { padding-left: calc(209 * var(--k)); }

  /* ---- 11 contact ---- */
  .p-contact { padding: calc(102 * var(--k)) 0 calc(70 * var(--k)); }
  .p-contact__wm { left: calc(387 * var(--k)); top: calc(5 * var(--k)); font-size: calc(120 * var(--k)); }
  .p-contact__dots { top: calc(249 * var(--k)); left: calc(1103 * var(--k)); width: calc(75 * var(--k)); height: calc(75 * var(--k)); background-size: calc(25 * var(--k)) calc(25 * var(--k)); }
  .p-contact__label { font-size: calc(19 * var(--fk)); }
  .p-contact__h2 { margin-top: calc(20 * var(--k)); font-size: calc(44 * var(--fk)); }
  .p-contact__line { width: calc(68.5 * var(--k)); height: calc(3.5 * var(--k)); margin-top: calc(18 * var(--k)); }
  .p-contact__lead { margin-top: calc(30 * var(--k)); font-size: calc(22 * var(--fk)); }
  .p-contact__lead br { display: none; }
  .p-contact__tel { margin: calc(60 * var(--k)) calc(215 * var(--k)) 0; padding: calc(52 * var(--k)) calc(40 * var(--k)) calc(34 * var(--k)); border-radius: calc(12 * var(--k)); }
  .p-contact__tab { top: calc(-26 * var(--k)); height: calc(53 * var(--k)); padding: 0 calc(34 * var(--k)); gap: calc(12 * var(--k)); border-radius: calc(7 * var(--k)); font-size: calc(20 * var(--fk)); }
  .p-contact__tabIcon { width: calc(24 * var(--k)); height: calc(24 * var(--k)); }
  /* ---- PCカンプ(170:128)の実測に合わせる ---- */
  .p-contact { padding-top: calc(102 * var(--k)); }
  .p-contact__wm { left: calc(388 * var(--k)); top: calc(5 * var(--k)); font-size: calc(120.7 * var(--k)); }
  .p-contact__dots { left: calc(1104 * var(--k)); top: calc(249 * var(--k)); width: calc(75 * var(--k)); height: calc(75 * var(--k)); }
  .p-contact__label { font-size: calc(19.3 * var(--fk)); }
  .p-contact__h2 { margin-top: calc(20 * var(--k)); font-size: calc(44 * var(--fk)); }
  .p-contact__line { width: calc(68 * var(--k)); height: calc(3 * var(--k)); margin-top: calc(18 * var(--k)); top: 0; }
  .p-contact__lead { margin-top: calc(29.2 * var(--k)); font-size: calc(16 * var(--fk)); line-height: 1.85; }
  .p-contact__lead br { display: none; }
  .p-contact__tel { margin: calc(84 * var(--k)) calc(215 * var(--k)) 0; padding: calc(84 * var(--k)) calc(40 * var(--k)) calc(29.6 * var(--k)); border-radius: calc(12 * var(--k)); }
  .p-contact__tab { top: calc(-7 * var(--k)); left: 50%; height: calc(53 * var(--k)); width: calc(411 * var(--k)); padding: 0; gap: calc(10 * var(--k));
    justify-content: center; border-radius: calc(7 * var(--k)); font-size: calc(18.5 * var(--fk)); }
  .p-contact__tabIcon { width: calc(23 * var(--k)); height: calc(23 * var(--k)); top: 0; }
  .p-contact__tel .p-contact__num { justify-content: center; padding-left: 0; font-size: calc(59.8 * var(--fk)); gap: calc(23 * var(--k)); letter-spacing: 0.005em; }
  .p-contact__numIcon { width: calc(54 * var(--k)); height: calc(54 * var(--k)); }
  .p-contact__numIcon img { width: calc(54 * var(--k)); height: calc(54 * var(--k)); }
  .p-contact__hours { width: calc(800 * var(--k)); height: calc(55 * var(--k)); margin: calc(18.7 * var(--k)) auto 0; padding: 0; gap: calc(12 * var(--k));
    justify-content: center; border-radius: calc(4 * var(--k)); top: 0; font-size: calc(19.5 * var(--fk)); }
  .p-contact__hours .p-contact__hoursIcon { width: calc(22 * var(--k)); height: calc(22 * var(--k)); top: 0; left: 0; }
  .p-contact__btn { margin: calc(30.4 * var(--k)) calc(215 * var(--k)) 0; height: calc(111 * var(--k)); border-radius: calc(16 * var(--k)); font-size: calc(31.2 * var(--fk)); }
  .p-contact__btn { position: relative; justify-content: center; }
  .p-contact__btnIcon { position: absolute; width: calc(64 * var(--k)); height: calc(64 * var(--k)); top: calc(26 * var(--k)); left: calc(163 * var(--k)); }
  .p-contact__btnIcon img { width: calc(31 * var(--k)); height: calc(26 * var(--k)); }
  .p-contact__btn--line .p-contact__btnIcon img { width: calc(30 * var(--k)); height: calc(30 * var(--k)); }
  .p-contact__btn i { right: calc(74 * var(--k)); top: calc(47 * var(--k)); }
  .p-contact__btn i img { width: calc(10.4 * var(--k)); height: calc(17.3 * var(--k)); }
  .p-contact__hoursBlock { margin-top: calc(34.2 * var(--k)); }
  .p-contact__hoursTitle { font-size: calc(21.1 * var(--fk)); gap: calc(11 * var(--k)); }
  .p-contact__hoursTitle .p-contact__hoursIcon { width: calc(21 * var(--k)); height: calc(21 * var(--k)); }
  .p-contact__hoursTitle::before, .p-contact__hoursTitle::after { width: calc(240 * var(--k)); height: calc(1 * var(--k)); }
  .p-contact__table { width: calc(800 * var(--k)); margin: calc(13.8 * var(--k)) auto 0; }
  .p-contact__table > div { gap: calc(88 * var(--k)); padding: calc(17.4 * var(--k)) calc(33 * var(--k)) calc(17.4 * var(--k)) 0; justify-content: center; }
  .p-contact__table dt { width: calc(76 * var(--k)); padding: calc(5 * var(--k)) 0 calc(5 * var(--k)) calc(15 * var(--k)); border-radius: calc(3 * var(--k)); font-size: calc(18.1 * var(--fk)); top: 0; }
  .p-contact__table > div:nth-child(1) dt { font-size: calc(18.1 * var(--fk)); letter-spacing: 0.6em; }
  .p-contact__table > div:nth-child(2) dt { font-size: calc(17 * var(--fk)); letter-spacing: 0.65em; }
  .p-contact__table dd { font-size: calc(26.2 * var(--fk)); }
  .p-contact__off { margin-top: calc(17 * var(--k)); font-size: calc(16.2 * var(--fk)); }

  /* 節の高さをPCカンプに合わせる（下の余白で吸収。足りない分は各節の中で調整済み） */
  .p-service { padding-bottom: 0; }
  .p-facility { padding-bottom: calc(55.3 * var(--k)); }
  .p-flow { padding-bottom: calc(110 * var(--k)); }
  .p-contact { padding-bottom: calc(32.6 * var(--k)); }

  /* 左の斜線はPC用の書き出しに差し替える（SP用は節の高さ2016px前提で縦に伸びていた） */
  .p-contact__deco { content: url(../svg/deco-contact-l-pc.svg); }
  /* 電話カードの中身（原本: 番号 435.7 / 受付ボックス 540） */
  .p-contact__tel { padding-top: calc(74.15 * var(--k)); padding-bottom: calc(27.75 * var(--k)); }
  .p-contact__tel .p-contact__num { line-height: calc(72 * var(--k)); gap: calc(22 * var(--k)); letter-spacing: calc(2.69 * var(--k)); }
  .p-contact__hours { margin-top: calc(32.3 * var(--k)); height: calc(54.7 * var(--k)); gap: calc(11.9 * var(--k)); font-size: calc(19.47 * var(--fk)); line-height: calc(23 * var(--k)); letter-spacing: calc(1.65 * var(--k)); }
  .p-contact__hours .p-contact__hoursIcon { width: calc(21.7 * var(--k)); height: calc(21.7 * var(--k)); }
  .p-contact__btn { margin-top: calc(27.8 * var(--k)); }
  /* 見出しの左右の罫線は文字から84.7px離れている（アイコンとの間は12px） */
  .p-contact__hoursBlock { margin-top: calc(32 * var(--k)); }
  .p-contact__hoursTitle { gap: calc(12 * var(--k)); line-height: calc(25 * var(--k)); letter-spacing: calc(4.47 * var(--k)); }
  .p-contact__hoursTitle::before { margin-right: calc(72.7 * var(--k)); }
  .p-contact__hoursTitle::after  { margin-left: calc(72.7 * var(--k)); }
  .p-contact__table { margin-top: calc(3.2 * var(--k)); }
  .p-contact__table > div { padding: calc(21.8 * var(--k)) calc(32.6 * var(--k)) calc(14.3 * var(--k)) 0; align-items: center; }
  .p-contact__table dd { position: relative; top: calc(3 * var(--k)); font-size: calc(26.23 * var(--fk)); line-height: calc(31 * var(--k)); letter-spacing: calc(3.03 * var(--k)); }
  .p-contact__off { margin-top: calc(16.7 * var(--k)); font-size: calc(16.17 * var(--fk)); line-height: calc(19 * var(--k)); letter-spacing: calc(3.92 * var(--k)); }
  .p-contact { padding-bottom: calc(44.8 * var(--k)); }

  /* ---- 12 vision / PCカンプ(170:204)の実測に合わせる ---- */
  .p-vision { padding: calc(108 * var(--k)) 0 calc(118.35 * var(--k)); }
  .p-vision__edge--t { height: calc(109 * var(--k)); }
  .p-vision__edge--b { height: calc(97.4 * var(--k)); }
  .p-vision__edge--l, .p-vision__edge--r { display: block; top: calc(109 * var(--k)); width: calc(51.3 * var(--k)); height: calc(428 * var(--k)); }
  /* inline-block だと行ボックスのぶん下がるので、幅だけ縮めたブロックとして中央に置く */
  .p-vision__place { display: block; width: fit-content; margin-inline: auto;
    padding: 0 calc(52.7 * var(--k)) 0 calc(58.8 * var(--k));
    font-size: calc(20.02 * var(--fk)); line-height: calc(24 * var(--k)); letter-spacing: calc(5.36 * var(--k)); }
  .p-vision__place::before, .p-vision__place::after { width: calc(39.2 * var(--k)); height: calc(1 * var(--k)); transform: translateY(-50%); }
  .p-vision__en { margin-top: calc(25.3 * var(--k)); font-size: calc(14.53 * var(--fk)); line-height: calc(17 * var(--k)); letter-spacing: calc(5.19 * var(--k)); }
  .p-vision__glow { width: calc(200.4 * var(--k)); height: calc(6.4 * var(--k)); margin-top: calc(16.4 * var(--k)); }
  .p-vision__h2 { margin-top: calc(30.2 * var(--k)); }
  .p-vision__h2 > span:nth-of-type(2) { padding-right: 0; font-size: calc(43.99 * var(--fk)); line-height: calc(53 * var(--k)); letter-spacing: calc(3.45 * var(--k)); }
  .p-vision__h2 > span:nth-of-type(3) { margin-top: calc(8.2 * var(--k)); padding-left: calc(11 * var(--k)); font-size: calc(52.4 * var(--fk)); line-height: calc(63 * var(--k)); letter-spacing: calc(0.35 * var(--k)); }
  /* 引用符は2行目を挟む位置。h2の内側（左右40pxのパディングを差し引いた座標）で置く */
  .p-vision__q { top: calc(60 * var(--k)); font-size: calc(43 * var(--fk)); line-height: calc(52 * var(--k)); }
  .p-vision__q--l { left: calc(440.5 * var(--k)); right: auto; }
  .p-vision__q--r { right: calc(439.8 * var(--k)); left: auto; }
  .p-vision__line { top: 0; width: calc(92.6 * var(--k)); height: calc(2.1 * var(--k)); margin: calc(18.1 * var(--k)) auto 0; }
  .p-vision__brand { margin-top: calc(20.6 * var(--k)); padding-left: calc(15 * var(--k)); font-size: calc(18.67 * var(--fk)); line-height: calc(22 * var(--k)); letter-spacing: calc(6.27 * var(--k)); }
  /* PCは原本どおり2行。幅を原本の593.7pxに絞って自然に折り返させる */
  .p-vision__body { width: calc(620 * var(--k)); margin: calc(37.7 * var(--k)) auto 0; padding-left: 0;
    font-size: calc(16 * var(--fk)); line-height: calc(32 * var(--k)); letter-spacing: calc(1.18 * var(--k)); }
  .u-spbr { display: none; }
  .u-pcbr { display: inline; }

  /* ---- 13 access / PCカンプ(170:223)の実測に合わせる ---- */
  .p-access { padding: calc(119.7 * var(--k)) 0 calc(80 * var(--k)); }
  .p-access__label { display: block; width: fit-content; margin-inline: auto;
    padding: 0 calc(45.2 * var(--k)) 0 calc(51.3 * var(--k));
    font-size: calc(18.7 * var(--fk)); line-height: calc(22 * var(--k)); letter-spacing: calc(5.81 * var(--k)); }
  .p-access__label::before, .p-access__label::after { width: calc(31 * var(--k)); height: calc(1.2 * var(--k)); transform: translateY(-50%); }
  .p-access__h2 { margin-top: calc(24 * var(--k)); font-size: calc(43.98 * var(--fk)); line-height: calc(53 * var(--k)); letter-spacing: calc(4.49 * var(--k)); }
  .p-access__line { left: 0; width: calc(44.1 * var(--k)); height: calc(6 * var(--k)); margin-top: calc(15.4 * var(--k)); }
  .p-access__lead { margin-top: calc(26.2 * var(--k)); font-size: calc(16.48 * var(--fk)); line-height: calc(20 * var(--k)); letter-spacing: calc(2.23 * var(--k)); }
  /* PCは「情報カード」と「地図」を2カラムに */
  .p-access__wrap {
    display: grid; grid-template-columns: repeat(2, calc(585.1 * var(--k))); gap: calc(40 * var(--k));
    width: calc(1210.2 * var(--k)); margin: calc(27.1 * var(--k)) auto 0 calc(114.9 * var(--k));
    justify-content: center; align-items: start;
  }
  .p-access__card { margin: 0; padding: 0 calc(50.3 * var(--k)) 0 calc(38.2 * var(--k)); border-radius: calc(8.27 * var(--k)); }
  /* 行は「円 + 文字」の横並び。文字は行の左端から112.4px（原本の実測） */
  .p-access__row { display: block; padding: calc(27.7 * var(--k)) 0 calc(31.3 * var(--k)) calc(112.4 * var(--k)); }
  /* SP側の nth-of-type 指定(詳細度0,2,0)に負けるので、1行目も同じ詳細度で置き直す */
  .p-access__row:nth-of-type(1) { padding-top: calc(27.7 * var(--k)); padding-bottom: calc(31.3 * var(--k)); }
  .p-access__row:nth-of-type(1) .p-access__dd { margin-top: calc(13 * var(--k)); }
  .p-access__row + .p-access__row { border-top-width: calc(0.92 * var(--k)); border-top-color: #ececec; }
  .p-access__row:nth-of-type(2) { padding-top: calc(20.4 * var(--k)); padding-bottom: calc(11.5 * var(--k)); }
  .p-access__row:nth-of-type(3) { padding-top: calc(26.8 * var(--k)); padding-bottom: calc(21.5 * var(--k)); }
  .p-access__row:nth-of-type(4) { padding-top: calc(8 * var(--k));    padding-bottom: calc(15.3 * var(--k)); }
  .p-access__row:nth-of-type(5) { padding-top: calc(24.3 * var(--k)); padding-bottom: calc(29.3 * var(--k)); }
  /* 円の縦位置は原本では行ごとに違う（トレース由来） */
  .p-access__icon { left: 0; width: calc(65.5 * var(--k)); height: calc(65.5 * var(--k)); border-width: calc(1.56 * var(--k)); }
  .p-access__icon::before { left: calc(11.8 * var(--k)); top: calc(11.3 * var(--k)); width: calc(41.7 * var(--k)); height: calc(41.7 * var(--k)); }
  .p-access__row:nth-of-type(1) .p-access__icon { top: calc(29.2 * var(--k)); }
  .p-access__row:nth-of-type(2) .p-access__icon { top: calc(24 * var(--k)); }
  .p-access__row:nth-of-type(3) .p-access__icon { top: calc(21 * var(--k)); }
  .p-access__row:nth-of-type(4) .p-access__icon { top: calc(23.8 * var(--k)); }
  .p-access__row:nth-of-type(5) .p-access__icon { top: calc(15.8 * var(--k)); }
  .p-access__dt { font-size: calc(18.9 * var(--fk)); line-height: calc(23 * var(--k)); letter-spacing: calc(-0.6 * var(--k)); }
  .p-access__dd { margin-top: calc(13 * var(--k)); font-size: calc(17.5 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(1.64 * var(--k)); }
  .p-access__row:nth-of-type(2) .p-access__dd { margin-top: calc(10 * var(--k)); font-size: calc(18.82 * var(--fk)); line-height: calc(23 * var(--k)); letter-spacing: calc(0.42 * var(--k)); }
  .p-access__row:nth-of-type(2) .p-access__dd + .p-access__dd { margin-top: calc(2.8 * var(--k)); font-size: calc(17.87 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(0.94 * var(--k)); }
  .p-access__row:nth-of-type(3) .p-access__dd { margin-top: calc(7.1 * var(--k)); font-size: calc(25.09 * var(--fk)); line-height: calc(30 * var(--k)); letter-spacing: calc(-1.76 * var(--k)); }
  .p-access__row:nth-of-type(4) .p-access__dd { margin-top: calc(6.8 * var(--k)); font-size: calc(18.17 * var(--fk)); line-height: calc(22 * var(--k)); letter-spacing: calc(0.83 * var(--k)); }
  .p-access__row:nth-of-type(4) .p-access__dd + .p-access__dd { margin-top: calc(4.2 * var(--k)); font-size: calc(17.08 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(1.4 * var(--k)); }
  .p-access__row:nth-of-type(5) .p-access__dd { margin-top: calc(10.9 * var(--k)); font-size: calc(17.89 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(0.65 * var(--k)); }
  .p-access__off { margin-top: calc(9.3 * var(--k)); font-size: calc(15.44 * var(--fk)); line-height: calc(19 * var(--k)); letter-spacing: calc(0.45 * var(--k)); }
  /* 原本の地図は上部だけ（高さ270.5px）。下は余白 */
  .p-access__map { margin: 0; height: calc(270.5 * var(--k)); border-radius: calc(8.27 * var(--k)); }
  .p-access__map img { height: 100%; min-height: 0; }
  .p-access__banner { width: calc(1210 * var(--k)); margin: calc(60 * var(--k)) auto 0 calc(115 * var(--k));
    height: calc(89.6 * var(--k)); padding-left: 0; justify-content: center; gap: 0;
    border: calc(1.19 * var(--k)) solid #f6e3b6; border-radius: calc(8.27 * var(--k));
    font-size: calc(24.86 * var(--fk)); line-height: calc(30 * var(--k)); letter-spacing: calc(1 * var(--k)); }
  .p-access__bannerIcon { position: absolute; left: calc(57.8 * var(--k)); top: calc(24.2 * var(--k)); width: calc(40.4 * var(--k)); height: calc(40.4 * var(--k)); }
  .p-access__banner i { right: calc(75.6 * var(--k)); top: calc(36.1 * var(--k)); width: calc(10.7 * var(--k)); height: calc(19.1 * var(--k)); }

  /* ---- 14 recruit / PCカンプ(169:2)の実測に合わせる ---- */
  .p-recruit { padding: calc(91.2 * var(--k)) 0 calc(21.4 * var(--k)); }
  .p-recruit__dots { top: calc(27 * var(--k)); left: calc(271 * var(--k)); width: calc(79.8 * var(--k)); height: calc(94.6 * var(--k)); }
  /* inline-block だと行ボックスのぶん下がるので、幅だけ縮めたブロックとして中央に置く */
  .p-recruit__label { display: block; width: fit-content; margin-inline: auto;
    padding: 0 calc(66.9 * var(--k)) 0 calc(71 * var(--k));
    font-size: calc(19.7 * var(--fk)); letter-spacing: calc(5.31 * var(--k)); line-height: calc(24 * var(--k)); }
  .p-recruit__label::before, .p-recruit__label::after { height: calc(2.3 * var(--k)); transform: translateY(-50%); }
  .p-recruit__label::before { left: 0; width: calc(42.8 * var(--k)); }
  .p-recruit__label::after { right: 0; width: calc(44 * var(--k)); }
  .p-recruit__h2 { margin-top: calc(27 * var(--k)); font-size: calc(44.02 * var(--fk)); line-height: calc(53 * var(--k)); letter-spacing: calc(-0.51 * var(--k)); }
  .p-recruit__line { width: calc(67.2 * var(--k)); height: calc(5.8 * var(--k)); margin-top: calc(30.8 * var(--k)); }
  .p-recruit__lead { margin-top: calc(33.7 * var(--k)); font-size: calc(16 * var(--fk)); line-height: calc(32 * var(--k)); letter-spacing: calc(1.48 * var(--k)); }
  .p-recruit__lead--2 { margin-top: calc(22 * var(--k)); line-height: calc(32 * var(--k)); letter-spacing: calc(4.42 * var(--k)); }
  .p-recruit__lead br { display: none; }          /* 原本のPCは各1行 */
  .p-recruit__cards { grid-template-columns: repeat(4, 1fr);
    margin: calc(151 * var(--k)) calc(220 * var(--k)) 0; padding: calc(57.9 * var(--k)) 0 calc(129.6 * var(--k)); border-radius: calc(12 * var(--k)); }
  /* 4列は原本でもちょうど等分（境界 470 / 720 / 970）なので、SPの微調整は打ち消す */
  .p-recruit__item:nth-child(1), .p-recruit__item:nth-child(2),
  .p-recruit__item:nth-child(3), .p-recruit__item:nth-child(4) { left: 0; }
  .p-recruit__item + .p-recruit__item::before { left: 0; top: calc(2 * var(--k)); width: calc(1.2 * var(--k)); height: calc(205.8 * var(--k)); }
  .p-recruit__item:nth-child(2)::before, .p-recruit__item:nth-child(3)::before, .p-recruit__item:nth-child(4)::before { left: 0; }
  /* 字形は4つとも枠の寸法が違う（原本の実測）。位置合わせは top ではなく margin で行い、
     後ろの見出しが同じ y に来るようにする */
  .p-recruit__item:nth-child(1) .p-recruit__icon { left: calc(2.25 * var(--k)); width: calc(84.5 * var(--k)); height: calc(89.2 * var(--k)); }
  .p-recruit__item:nth-child(2) .p-recruit__iconImg { left: calc(2 * var(--k)); top: 0; margin-top: calc(7.7 * var(--k)); width: calc(70.6 * var(--k)); height: calc(76.4 * var(--k)); }
  .p-recruit__item:nth-child(3) .p-recruit__icon { width: calc(104.2 * var(--k)); height: calc(93.8 * var(--k)); }
  .p-recruit__item:nth-child(4) .p-recruit__icon { top: 0; margin-top: calc(4.7 * var(--k)); width: calc(84.5 * var(--k)); height: calc(85.7 * var(--k)); }
  .p-recruit__item:nth-child(1) .p-recruit__h3 { margin-top: calc(28.4 * var(--k)); }
  .p-recruit__item:nth-child(2) .p-recruit__h3 { margin-top: calc(33.9 * var(--k)); }
  .p-recruit__item:nth-child(3) .p-recruit__h3 { margin-top: calc(23.6 * var(--k)); }
  .p-recruit__item:nth-child(4) .p-recruit__h3 { margin-top: calc(27.9 * var(--k)); }
  /* 黄色のアクセントは項目ごとに枠が違う（原本の実測。項目の左端からの位置） */
  .p-recruit__item:nth-child(1) .p-recruit__iconY { left: calc(89.8 * var(--k)); top: calc(4.3 * var(--k)); width: calc(75.3 * var(--k)); height: calc(79.9 * var(--k)); }
  .p-recruit__item:nth-child(2) .p-recruit__iconY { left: calc(91.7 * var(--k)); top: calc(7.7 * var(--k)); width: calc(70.6 * var(--k)); height: calc(76.4 * var(--k)); }
  .p-recruit__item:nth-child(3) .p-recruit__iconY { left: calc(76.8 * var(--k)); top: calc(4.3 * var(--k)); width: calc(94.9 * var(--k)); height: calc(84.5 * var(--k)); }
  .p-recruit__item:nth-child(4) .p-recruit__iconY { left: calc(87.1 * var(--k)); top: calc(8.9 * var(--k)); width: calc(75.3 * var(--k)); height: calc(76.4 * var(--k)); }
  .p-recruit__h3 { font-size: calc(21 * var(--fk)); line-height: calc(25 * var(--k)); letter-spacing: calc(0.5 * var(--k)); }
  .p-recruit__text { margin-top: calc(16.2 * var(--k)); font-size: calc(18.8 * var(--fk)); line-height: calc(29.8 * var(--k)); letter-spacing: calc(-0.9 * var(--k)); }
  /* CTAピルはカードの下端に重なる（原本: カード下端から -76.5px） */
  .p-recruit__cta { width: calc(597.5 * var(--k)); height: calc(100.7 * var(--k)); margin-top: calc(-76.5 * var(--k));
    padding-left: calc(58 * var(--k)); gap: calc(31.2 * var(--k));
    border-radius: calc(50.35 * var(--k)); font-size: calc(28.21 * var(--fk)); letter-spacing: calc(0.62 * var(--k)); }
  .p-recruit__ctaIcon { width: calc(63 * var(--k)); height: calc(63 * var(--k)); }
  .p-recruit__ctaIcon img { width: calc(32.2 * var(--k)); height: calc(27 * var(--k)); }
  .p-recruit__cta i { right: calc(48.5 * var(--k)); font-size: calc(30.37 * var(--fk)); }
  .p-recruit__brush { width: calc(397.2 * var(--k)); height: calc(63.7 * var(--k)); margin-top: calc(27.4 * var(--k)); }
  .p-recruit__brush img { width: calc(397.2 * var(--k)); height: calc(63.7 * var(--k)); }

  /* ---- フッター / PCカンプ(169:2内)の実測に合わせる ---- */
  .l-footer { padding: calc(53.5 * var(--k)) 0 calc(56.2 * var(--k)); }
  .l-footer__mark { font-size: calc(17.5 * var(--fk)); line-height: calc(21 * var(--k)); letter-spacing: calc(6.99 * var(--k)); }
  .l-footer__brand { margin-top: calc(9.7 * var(--k)); font-size: calc(22.73 * var(--fk)); line-height: calc(27 * var(--k)); letter-spacing: calc(6.87 * var(--k)); }
  .l-footer__line { width: calc(61.4 * var(--k)); height: calc(1.7 * var(--k)); margin-top: calc(21.3 * var(--k)); }
  .l-footer__copy-jp { margin-top: calc(23.2 * var(--k)); font-size: calc(24.98 * var(--fk)); line-height: calc(30 * var(--k)); letter-spacing: calc(4.25 * var(--k)); }
  .l-footer__sns { gap: calc(52.5 * var(--k)); margin-top: calc(22.7 * var(--k)); padding-right: calc(10.8 * var(--k)); }
  .l-footer__sns img { width: calc(46.3 * var(--k)); height: calc(47.5 * var(--k)); }
  .l-footer__copy { top: calc(2.9 * var(--k)); font-size: calc(14.39 * var(--fk)); line-height: calc(17 * var(--k)); letter-spacing: calc(3.28 * var(--k)); }

  /* ============================================================
     1440pxを超える画面（カンプ幅を超えた領域）
     カンプは1440幅で作られているので、それ以上では「中身だけ」を幅1440の箱として
     中央に置く。背景（色・写真・帯）は節が持っているので全幅のまま。
       ・通常フローは節の左右パディングで寄せる
       ・絶対配置の装飾はパディングの影響を受けないので --gut を足して寄せる
     100vw ではなく 100% を使うのは、縦スクロールバーのぶん中心がズレるのを避けるため。
     1440px以下では max() が 0 に落ちるので、この指定は何もしない。
     ============================================================ */
  :root { --gut: max(0px, calc((100% - 1440px) / 2)); }
  .p-hero, .p-concept, .p-service, .p-facility, .p-about, .p-mission, .p-coach,
  .p-voice, .p-price, .p-flow, .p-contact, .p-vision, .p-access, .p-blog, .p-recruit,
  .l-footer {
    padding-left: var(--gut); padding-right: var(--gut);
  }
  /* ヘッダーだけは元から左右48pxを持っている。--gut で上書きすると
     ロゴが画面左端に、体験予約ボタンが右端に貼り付く（2026-08-26 客先指摘） */
  .l-header { padding-left: calc(48 * var(--k) + var(--gut)); padding-right: calc(48 * var(--k) + var(--gut)); }
  /* 絶対配置の装飾（節を基準に left/right を持つもの）。
     ここを漏らすと、見出しは中央なのに装飾だけ画面端に貼り付く */
  .p-concept__deco { left: var(--gut); right: var(--gut); }
  .p-service__wm { left: calc(55.8 * var(--k) + var(--gut)); }
  .p-service__photo { right: var(--gut); }
  /* 帯が全幅なので、縁の装飾は1440の箱ではなく画面端に寄せる（中途半端な位置に浮かせない） */
  .p-mission__deco--r { left: auto; right: 0; }
  .p-coach__wm { left: calc(453.2 * var(--k) + var(--gut)); }
  .p-voice__wm { left: calc(858.8 * var(--k) + var(--gut)); }
  .p-voice__dots--l { left: calc(365.4 * var(--k) + var(--gut)); }
  .p-voice__dots--r { left: calc(1001.6 * var(--k) + var(--gut)); }
  .p-contact__wm { left: calc(388 * var(--k) + var(--gut)); }
  /* width:100% を持っているので auto に戻さないと left/right が効かない */
  .p-contact__deco { left: var(--gut); right: var(--gut); width: auto; }
  .p-contact__dots { left: calc(1104 * var(--k) + var(--gut)); }
  /* 上下の帯が全幅なので、左右の縁も画面端まで通す */
  .p-vision__edge--l { left: 0; }
  .p-vision__edge--r { right: 0; }
  .p-recruit__dots { left: calc(271 * var(--k) + var(--gut)); }
  /* 見出し下の短い下線は margin-left で位置を決めているので、そのままで中央箱に乗る */
}

/* ============================================================
   タブレット（768〜1023px）
   この帯はSPレイアウトを使うが、そのままだと横に間延びする。
   中身の塊だけ幅を絞って中央に置く（背景・帯は全幅のまま）。
   ============================================================ */
@media (min-width: 768px) and (max-width: 1023px) {
  .p-concept__head, .p-concept__card,
  .p-service__head-area, .p-service__cards,
  .p-facility__h2, .p-facility__lead, .p-facility__card,
  .p-about__cards, .p-about__note,
  .p-mission__inner,
  .p-coach__cards, .p-coach__lead,
  .p-voice__cards, .p-voice__lead,
  .p-price__cards, .p-price__senior, .p-price__cta, .p-price__lead,
  .p-flow__steps, .p-flow__cta, .p-flow__lead,
  .p-contact__tel, .p-contact__btn, .p-contact__table,
  .p-vision__inner,
  .p-access__wrap, .p-access__banner,
  .p-blog__list,
  .p-recruit__cards, .p-recruit__lead {
    max-width: calc(560 * var(--k)); margin-left: auto; margin-right: auto;
  }
  /* 元々の左右余白は中央寄せで置き換わるので相殺する */
  .p-concept__card, .p-facility__card, .p-about__note, .p-price__senior, .p-price__cta,
  .p-flow__cta, .p-contact__tel, .p-contact__btn, .p-access__banner, .p-recruit__cards {
    margin-left: auto; margin-right: auto;
  }
  .p-service__head-area { padding-left: 0; }
  .p-service__photo { width: calc(300 * var(--k)); }
}

/* ============================================================
   客先修正 2026-08-26（japan1129・CWメッセージ）
   カンプ（Figma）からは意図的に外している箇所。DEVIATIONS.md 参照。
   ============================================================ */
/* --- SNSアイコン（メニュー内・フッター）------------------------------
   ブランドマークは simple-icons(CC0)。<img> だと currentColor が効かないので、
   このサイトの既存作法どおり CSSマスクで塗る（.p-flow__ctaIcon と同じ）。
   ★href は先方からURLをもらうまで "#"。data-todo 属性で検出できる          */
.l-header__sns, .l-footer__sns { display: flex; align-items: center; justify-content: center; list-style: none; }
.l-header__sns { gap: calc(18 * var(--k)); margin-top: calc(28 * var(--k)); }
.l-header__sns__icon, .l-footer__sns__icon {
  display: block; background: currentColor;
  -webkit-mask: var(--icon) no-repeat center / contain; mask: var(--icon) no-repeat center / contain;
}
.l-header__sns__link { display: block; color: #fff; transition: color 0.25s var(--ease), transform 0.25s var(--ease); }
.l-header__sns__icon { width: calc(22 * var(--k)); height: calc(22 * var(--k)); }
/* ドロワーを開いていないSPでは、ナビ自体が display:none なので出ない */
.l-footer__sns { gap: calc(26 * var(--k)); margin-top: calc(12 * var(--k)); padding: 0; }
.l-footer__sns__link { display: block; color: #cfcfcf; transition: color 0.25s var(--ease); }
.l-footer__sns__icon { width: calc(21.5 * var(--k)); height: calc(21.5 * var(--k)); }
.l-footer__copy { display: block; margin-top: calc(12 * var(--k)); position: static;
  font-size: calc(6.7 * var(--fk)); letter-spacing: 0.207em; color: #727272; }
@media (hover: hover) {
  .l-header__sns__link:hover, .l-footer__sns__link:hover { color: var(--c-accent); }
  .l-header__sns__link:hover { transform: translateY(calc(-2 * var(--k))); }
}
@media (min-width: 1024px) {
  .l-header__sns { gap: calc(20 * var(--k)); margin-top: 0; margin-left: calc(28 * var(--k)); }
  .l-header__sns__icon { width: calc(20 * var(--k)); height: calc(20 * var(--k)); }
  .l-footer__sns { gap: calc(46 * var(--k)); margin-top: calc(22.7 * var(--k)); padding-right: 0; }
  .l-footer__sns__icon { width: calc(46 * var(--k)); height: calc(46 * var(--k)); }
  .l-footer__copy { margin-top: calc(20 * var(--k)); font-size: calc(14.39 * var(--fk)); line-height: calc(17 * var(--k)); letter-spacing: calc(3.28 * var(--k)); }
}

@media (max-width: 1023.98px) {
  /* 「文字をセンターに」＝ FLOW の予約カード内を中央揃え（先方添付はSPのカード） */
  .p-flow__ctaInner { padding: calc(20 * var(--k)) 0 0; text-align: center; }
  /* 矢印は絶対配置をやめ、見出しと同じ行に流して一緒に中央へ寄せる */
  .p-flow__ctaTitle i {
    position: static; display: inline-grid; vertical-align: middle;
    margin-left: calc(14 * var(--k)); top: auto; left: auto;
  }
  .p-flow__ctaNotes {
    left: 50%; transform: translateX(-50%);
    padding-left: 0; justify-content: center;
  }

  /* 料金の「見学・無料体験はいつでも受付中！」帯（客先 2026-08-27 01:17「中央に配列」／
     PC側は2026-08-26に対応済みだったがSPが未対応だった）。
     PCと同じ考え方で、アイコン(31.1)と矢印(5.91)の幅の差 25.2px を本文の右paddingで相殺すると
     文字の中心＝帯の中心になる。アイコン・矢印の縦の逃げ(4.7/4.5)も外して行の縦中心にそろえる */
  .p-price__calWrap { left: 0; top: 0; }
  .p-price__ctaArrow { left: 0; top: 0; }
  .p-price__ctaBody { padding-right: calc(25.2 * var(--k)); text-align: center; }

  /* シニア行の注記「無理のないペースで健康維持に」もPCと同じ上下バランスにする
     （PCは2026-08-26に対応済み・SPが未対応だった）。実測:
       点線→文字 7.0 ／ 文字→カード下端 2.0（下が詰まる）→ 下に5.0足して 7.0／7.0
       カード上端→中身 10.2 ／ 中身→点線 2.3（点線が上に寄る）→ margin-top を 9.0 にして 10.2 に */
  .p-price__seniorNote { margin-top: calc(9 * var(--k)); padding-bottom: calc(5 * var(--k)); }
}

@media (min-width: 1024px) {
  /* 「下側の3要素の中身がセンターに来ていない」（2026-08-26 PM指摘）。
     原本は3つを実測位置に置いているため枠内が左寄りに見える。
     3等分のグリッドにして、各セルの中で中央寄せ・仕切りはセルの境界に置く */
  /* 前のブロックが gap:56 を持っているので、3等分にする前に消す */
  .p-flow__ctaNotes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; align-items: center; }
  .p-flow__ctaNotes > span { justify-content: center; }
  .p-flow__ctaNotes > span:nth-child(1),
  .p-flow__ctaNotes > span:nth-child(2),
  .p-flow__ctaNotes > span:nth-child(3) { margin-left: 0; }
  .p-flow__ctaNotes > span + span::before { left: 0; }
}

/* 2コース契約の行（客先指示 2026-08-26）。シニア行の作りを流用する。
   アイコンが無いので、コース名と金額を1つのかたまりとして
   行の縦横それぞれの中心に置く（2026-08-26 PM指摘） */
.p-price__senior--set {
  grid-template-columns: auto auto; justify-content: center;
  gap: 0 calc(24 * var(--k));
  padding: calc(13.5 * var(--k)) calc(24 * var(--k));
  text-align: center;
}
.p-price__senior--set .p-price__seniorRight { text-align: center; }
.p-price__senior--set .p-price__seniorTime { margin-right: 0; }
@media (min-width: 1024px) {
  /* 原本のシニア行はコース名だけ右にずらしているが、この行はアイコンが無いので戻す */
  .p-price__senior--set .p-price__seniorName { padding-left: 0; }
  .p-price__senior--set { gap: 0 calc(80 * var(--k)); padding: calc(13.5 * var(--k)) calc(24 * var(--k)); }
}

@media (min-width: 1024px) {
  /* 「無理のないペースで健康維持に」の点線と、その下のCTA帯（2026-08-26 PM指摘）。
     原本はどちらも行の中心からずれている（点線は左に17.7px、CTAの文字は左に34px、
     中身は帯の中心より約9px下）。行の縦横それぞれの中心にそろえ直す。
     シニア行の左右padding(82.8/142.6)が非対称なので、点線は負マージンで中心に寄せる */
  .p-price__seniorNote {
    margin-left: calc(1.2 * var(--k)); margin-right: calc(-58.6 * var(--k)); padding-left: 0;
    /* 上の段（アイコン・金額）から点線までが4.1しかなく、カード上端からの19.6と
       釣り合っていなかった（2026-08-26 PM指摘）。上下同じ19.6にする */
    margin-top: calc(19.6 * var(--k));
    /* 点線から文字までが12.7、文字からカード下端までが5.4で下寄りだった。
       行の下paddingが5.4なので、差の7.3をここで足して上下を同じにする */
    padding-bottom: calc(7.3 * var(--k));
  }
  /* 原本はコース名だけ SENIOR より52.8px右にずれている（SPは揃っている）。
     上下の行が食い違って見えるのでSPと同じく左端をそろえる（2026-08-26 PM指摘） */
  .p-price__seniorName { padding-left: 0; }
  /* CTA帯: 左右paddingを対称にし、文字は帯の中心へ。アイコン(63)と矢印(12)の
     幅の差 51px ぶんを本文の右padding で相殺すると、文字の中心＝帯の中心になる */
  .p-price__cta { padding-left: calc(54.4 * var(--k)); padding-right: calc(54.4 * var(--k)); }
  .p-price__calWrap { top: 0; }
  .p-price__ctaArrow { top: 0; }
  .p-price__ctaBody { top: 0; padding-right: calc(51 * var(--k)); text-align: center; }
  .p-price__ctaTitle { padding-left: 0; }
}

/* アクセスの地図（Googleマップ埋め込み・客先指示 2026-08-26）。
   置き換え前の <img> と同じ寸法で収める */
.p-access__map iframe { display: block; width: 100%; height: calc(175.9 * var(--k)); border: 0; }
@media (min-width: 1024px) {
  .p-access__map iframe { height: 100%; }
}

/* ============================================================
   文字1.05倍化に伴う改行維持の補償（客先 2026-09-01／PM「改行位置はそのまま」）
   枠が限界の本文だけ字間を詰めて同じ行に収める。!important で全ブレークポイントに適用。値は実測で調整。
   ============================================================ */
.p-coach__items li span { letter-spacing: -0.055em !important; }
.p-coach__items li { padding-right: 0 !important; }
.p-coach__items { margin-right: calc(-10 * var(--k)) !important; }
.p-vision__body, .p-vision__body span { letter-spacing: -0.05em !important; }
.p-flow__text, .p-flow__text span { letter-spacing: -0.05em !important; }
.p-service__card.is-open .p-service__text span,
.p-service__text span { letter-spacing: -0.04em !important; }
.p-concept__jp { letter-spacing: -0.09em !important; }
.p-service__card:nth-child(3) .p-service__jp { letter-spacing: -0.06em !important; }
.p-price__name { letter-spacing: -0.03em !important; }
.p-price__card:nth-child(3) .p-price__name { letter-spacing: -0.1em !important; }
.p-about__text { letter-spacing: -0.14em !important; }
.p-access__dd { letter-spacing: -0.02em !important; }
.p-contact__tel .p-contact__num { letter-spacing: -0.03em !important; gap: calc(14 * var(--k)) !important; }
