/* =========================================================
   UK Partners - main.css
   ========================================================= */

/* ---------- Design Tokens ---------- */
:root {
	--color-text:      #222;
	--color-bg:        #f2f3f1;
	--color-beige:     #e9e5de;
	--color-line:      #939393;
	--color-white:     #ffffff;

	--font-en-serif:   "EB Garamond", "Garamond Classico", "Times New Roman", serif;
	--font-jp-mincho:  "Shippori Mincho", "Zen Old Mincho", "Yu Mincho", "YuMincho", serif;
	--font-jp-gothic:  "Zen Kaku Gothic New", "Hiragino Sans", "Yu Gothic", sans-serif;

	--header-h-pc:     100px;
	--header-h-sp:     62px;

	--container:       100%;             /* ビューポート幅いっぱいに広がる */
	--gutter-pc:       clamp(36px, 5vw, 140px); /* PCの左右余白：画面幅に応じて自動調整（最大 140px） */
	--gutter-sp:       24px;             /* SPの左右余白 */
	--ease:            cubic-bezier(.4, 0, .2, 1);
}

/* ---------- 改行ヘルパー ----------
 * .br-pc : PCのみ改行 / SPでは消える
 * .br-sp : SPのみ改行 / PCでは消える
 * .pc-only / .sp-only : 任意要素を片方のみ表示
 */
.br-pc { display: inline; }
.br-sp { display: none; }
.pc-only { }
.sp-only { display: none !important; }
@media (max-width: 768px) {
	.br-pc { display: none; }
	.br-sp { display: inline; }
	.pc-only { display: none !important; }
	.sp-only { display: revert !important; }
}

/* ---------- Reset (minimal) ---------- */
*, *::before, *::after { box-sizing: border-box; }
html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
	scroll-padding-top: calc( var(--header-h-pc) + 40px );  /* アンカーリンクのオフセット（ネイティブ用）。合計 140px = サービスページ side nav の sticky top と同位置 */
}
@media (max-width: 768px) {
	html { scroll-padding-top: calc( var(--header-h-sp) + 60px ); }
}
body {
	margin: 0;
	font-family: var(--font-jp-gothic);
	font-size: 16px;
	line-height: 1.7;
	color: var(--color-text);
	background: var(--color-bg);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: clip;     /* 横スクロールを抑制（safety net） */
}
img, svg { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; }
ul { list-style: none; padding: 0; margin: 0; }
p  { margin: 0; }

body.is-menu-open,
body.is-modal-open { overflow: hidden; }

/* =========================================================
   Site Header
   ========================================================= */
.site-header {
	position: fixed;
	top: 0; left: 0; right: 0;
	z-index: 100;
	height: var(--header-h-pc);
	background: transparent;
	pointer-events: none; /* ロゴ/CTA/ボタンだけがクリック可能になるよう、内側で再有効化 */
}
.site-header__inner > * { pointer-events: auto; }
.site-header__inner {
	position: relative;
	height: 100%;
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 36px;
	display: flex;
	align-items: center;
	justify-content: space-between;
}
.site-header__logo {
	font-family: var(--font-en-serif);
	font-size: 26px;
	letter-spacing: 0.1em;
	color: var(--color-text);
	line-height: 1;
	display: inline-flex;
	align-items: center;
}
.site-header__logo-img {
	display: block;
	width: auto;
	height: 26px;
	transition: opacity .8s var(--ease);
}
.site-header__logo:hover .site-header__logo-img {
	opacity: 0.6;
}
/* Recruitページ（暗背景）ではロゴを白く反転表示 */
.is-recruit-page .site-header__logo-img {
	filter: invert(1) brightness(2);
}
.is-recruit-page.is-header-on-light .site-header__logo-img {
	filter: none;
}
.site-header__actions {
	display: flex;
	align-items: center;
	gap: 34px;
}
.site-header__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 160px;
	height: 36px;
	padding: 0 18px;
	border: 1px solid var(--color-text);
	border-radius: 18px;
	font-family: var(--font-jp-mincho);
	font-size: 14px;
	color: var(--color-text);
	background: rgba(242, 243, 241, 0.35);
	backdrop-filter: blur(6px) saturate(120%);
	-webkit-backdrop-filter: blur(6px) saturate(120%);
	transition: background .25s var(--ease), color .25s var(--ease);
}
.site-header__cta:hover {
	background: var(--color-text);
	color: var(--color-white);
}

/* Hamburger (二本線：Figma仕様) */
.site-header__menu-toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 13px;
	height: 25px;
	color: var(--color-text);
	background: none;
	padding: 0;
}
.site-header__menu-icon {
	display: block;
	width: 13px;
	height: 25px;
}

/* ===== Recruit ページ専用：ヘッダーを白文字 + MV をヘッダー下まで延ばす ===== */
.is-recruit-page { background: #222; }
.is-recruit-page .site-main {
	padding-top: 0;
}
.is-recruit-page .site-header__logo-text,
.is-recruit-page .site-header__cta,
.is-recruit-page .site-header__menu-toggle {
	color: #fff;
}
.is-recruit-page .site-header__cta {
	border-color: #fff;
	background: rgba(255, 255, 255, 0.05);
}
.is-recruit-page .site-header__cta:hover {
	background: #fff;
	color: var(--color-text);
}
/* 白背景セクション（Entry等）に来た時、ヘッダーは黒文字に戻す */
.is-recruit-page.is-header-on-light .site-header__logo-text,
.is-recruit-page.is-header-on-light .site-header__cta,
.is-recruit-page.is-header-on-light .site-header__menu-toggle {
	color: var(--color-text);
}
.is-recruit-page.is-header-on-light .site-header__cta {
	border-color: var(--color-text);
	background: rgba(242, 243, 241, 0.35);
}
.is-recruit-page.is-header-on-light .site-header__cta:hover {
	background: var(--color-text);
	color: #fff;
}
.is-recruit-page .site-header__logo-text,
.is-recruit-page .site-header__cta,
.is-recruit-page .site-header__menu-toggle,
.is-recruit-page .site-header__cta {
	transition: color .3s var(--ease), background-color .3s var(--ease), border-color .3s var(--ease);
}

.site-header__divider { display: none; }

/* SP */
@media (max-width: 768px) {
	.site-header { height: var(--header-h-sp); }
	.site-header__inner { padding: 0 15px; gap: 8px; }
	.site-header__logo {
		font-size: 20px;
		letter-spacing: 0.1em;
		flex: 0 1 auto;
		min-width: 0;
		white-space: nowrap;
	}
	.site-header__logo-img { height: 20px; }
	.site-header__actions {
		gap: 6px;
		flex: 0 0 auto;
	}
	.site-header__cta {
		min-width: 0;
		height: 31px;
		padding: 0 14px;
		font-size: 13px;
		border-width: 0.75px;
		border-radius: 15.5px;
		white-space: nowrap;
	}
	.site-header__menu-toggle {
		flex: 0 0 auto;
		width: 32px;             /* タップしやすいエリア確保 */
		height: 32px;
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}
	.site-header__menu-icon {
		width: 13px;
		height: 24px;
		display: block;
	}
}

/* メインコンテンツのヘッダー分の余白 */
.site-main { padding-top: var(--header-h-pc); min-height: 50vh; }
@media (max-width: 768px) {
	.site-main { padding-top: var(--header-h-sp); }
}

/* =========================================================
   Menu Overlay (ハンバーガーメニュー)
   ========================================================= */
.menu-overlay {
	position: fixed;
	inset: 0;
	z-index: 200;
	visibility: hidden;
	opacity: 0;
	transition: opacity .4s var(--ease), visibility .4s var(--ease);
	color: var(--color-white);
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
	display: flex;
	flex-direction: column;
	background: #222;
}
.menu-overlay.is-open {
	visibility: visible;
	opacity: 1;
}

/* ----- 背景：波紋動画（淡くオーバーレイ） ----- */
.menu-overlay__bg {
	position: fixed;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	pointer-events: none;
}
.menu-overlay__bg-video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0.18;
	filter: grayscale(0.2);
	mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 60%, rgba(0,0,0,0) 100%);
	-webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 60%, rgba(0,0,0,0) 100%);
}

/* ----- オーバーレイ内ヘッダー ----- */
.menu-overlay__header {
	position: relative;
	z-index: 2;
	height: var(--header-h-pc);
	padding: 0 36px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex: 0 0 auto;
}
.menu-overlay__logo {
	font-family: var(--font-en-serif);
	font-size: 26px;
	letter-spacing: 0.1em;
	color: var(--color-white);
	display: inline-flex;
	align-items: center;
}
.menu-overlay__logo-img {
	display: block;
	width: auto;
	height: 22px;
	transition: opacity .8s var(--ease);
}
.menu-overlay__logo:hover .menu-overlay__logo-img {
	opacity: 0.6;
}
.menu-overlay__actions {
	display: flex;
	align-items: center;
	gap: 34px;
}
.menu-overlay__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 160px;
	height: 36px;
	padding: 0 18px;
	border: 1px solid var(--color-white);
	border-radius: 18px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 14px;
	color: var(--color-white);
	transition: background .25s var(--ease), color .25s var(--ease);
}
.menu-overlay__cta:hover {
	background: var(--color-white);
	color: var(--color-text);
}
.menu-overlay__close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	color: var(--color-white);
	background: none;
	padding: 0;
}
.menu-overlay__close-icon {
	display: block;
	width: 22px;
	height: 22px;
}

/* ----- ナビ（縦書き） ----- */
.menu-overlay__nav {
	position: relative;
	z-index: 2;
	flex: 1 1 auto;
	display: flex;
	align-items: flex-start;
	justify-content: flex-end;
	padding: 30px 36px 60px;
}
.menu-overlay__list {
	display: flex;
	flex-direction: row-reverse;
	flex-wrap: wrap;
	justify-content: flex-end;
	align-items: flex-start;
	column-gap: 24px;
	row-gap: 56px;
	max-width: 100%;
	margin: 0;
	padding: 0;
	list-style: none;
}
.menu-overlay__item { list-style: none; }
.menu-overlay__link {
	display: inline-flex;
	align-items: flex-start;
	gap: 4px;
	font-family: var(--font-jp-mincho);
	color: var(--color-white);
	transition: opacity .25s var(--ease);
	text-decoration: none;
}
.menu-overlay__link:hover { opacity: 0.65; }

.menu-overlay__link-en {
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 11px;
	letter-spacing: 0.12em;
	color: var(--color-white);
	opacity: 0.85;
	margin-top: 0;
	white-space: nowrap;
}
.menu-overlay__link-jp {
	writing-mode: vertical-rl;
	font-weight: 500;
	font-size: 16px;
	letter-spacing: 0.18em;
	line-height: 1.75;
	white-space: nowrap;
}

/* 最後の4項目（会社概要・お知らせ・判断の記録・採用情報）に縦線とグループ間の余白を追加 */
.menu-overlay__item:nth-last-child(4) {
	margin-right: 60px;
}
.menu-overlay__item:nth-last-child(-n+4) .menu-overlay__link-jp {
	position: relative;
	padding-top: 22px;
}
.menu-overlay__item:nth-last-child(-n+4) .menu-overlay__link-jp::before {
	content: '';
	position: absolute;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	width: 1px;
	height: 11px;
	background: var(--color-white);
	opacity: 0.6;
}
.menu-overlay__item:nth-last-child(-n+4) .menu-overlay__link-en {
	padding-top: 22px;
	margin-top: 0;
}

.menu-overlay__notice {
	color: rgba(255, 255, 255, 0.6);
	font-size: 14px;
}

/* ----- フッター ----- */
.menu-overlay__footer {
	position: relative;
	z-index: 2;
	padding: 30px 36px 36px;
	border-top: 1px solid rgba(255,255,255,0.15);
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex: 0 0 auto;
}
.menu-overlay__footer .menu-overlay__copy {
	order: -1;
	margin-right: auto;
}
.menu-overlay__policy {
	display: flex;
	gap: 32px;
	flex-wrap: wrap;
	margin: 0;
	padding: 0;
	list-style: none;
	justify-content: flex-end;
}
.menu-overlay__policy a {
	font-family: var(--font-jp-gothic);
	font-size: 13px;
	color: rgba(255,255,255,0.6);
	transition: color .25s var(--ease);
	text-decoration: none;
}
.menu-overlay__policy a:hover { color: var(--color-white); }
.menu-overlay__copy {
	font-family: var(--font-en-serif);
	font-size: 12px;
	letter-spacing: 0.05em;
	color: rgba(255,255,255,0.6);
	margin: 0;
}

/* ----- メニュー内 キャッチ＋会社情報（PCのみ） ----- */
.menu-overlay__info {
	position: relative;
	z-index: 2;
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 48px;
	padding: 0 36px 30px;
	color: var(--color-white);
}
.menu-overlay__info-catch {
	max-width: 60%;
}
.menu-overlay__catch {
	font-family: var(--font-jp-mincho);
	font-size: 30px;
	line-height: 1.6;
	letter-spacing: 0.04em;
	color: var(--color-white);
	margin: 0 0 18px;
	font-weight: 400;
}
.menu-overlay__catch strong {
	font-weight: 400;
	font-size: 44px;
	letter-spacing: 0.02em;
}
.menu-overlay__subcatch {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.9;
	letter-spacing: 0.05em;
	color: rgba(255,255,255,0.85);
	margin: 0;
}
.menu-overlay__info-company {
	text-align: right;
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.menu-overlay__info-logo {
	font-family: var(--font-en-serif);
	font-size: 26px;
	letter-spacing: 0.1em;
	color: var(--color-white);
	margin: 0 0 12px;
	line-height: 1;
	text-align: right;
}
.menu-overlay__info-logo img {
	display: inline-block;
	width: auto;
	height: 22px;
}
.menu-overlay__info-name,
.menu-overlay__info-address {
	text-align: right;
}
.menu-overlay__info-name,
.menu-overlay__info-address {
	font-family: var(--font-jp-gothic);
	font-size: 13px;
	line-height: 1.85;
	letter-spacing: 0.05em;
	color: var(--color-white);
	margin: 0;
	font-weight: 500;
}

/* ----- SP オーバーレイ ----- */
@media (max-width: 768px) {
	.menu-overlay__header { height: var(--header-h-sp); padding: 0 15px; }
	.menu-overlay__logo { font-size: 20px; }
	.menu-overlay__actions { gap: 16px; }
	.menu-overlay__cta { min-width: 129px; height: 31px; font-size: 13px; border-radius: 15.5px; border-width: 0.75px; }
	.menu-overlay__close,
	.menu-overlay__close-icon { width: 18px; height: 18px; }

	.menu-overlay__nav {
		padding: 16px 28px 30px;
		justify-content: flex-end;
	}
	.menu-overlay__list {
		display: grid;
		grid-template-columns: repeat(7, 1fr);
		column-gap: 0;
		row-gap: 36px;
		width: 100%;
	}
	.menu-overlay__item {
		display: flex;
		justify-content: center;
		margin: 0;
		flex: initial;
	}
	/* 明示的にグリッド列を割り当て（右端から item 1, 2, 3... と並ぶ） */
	.menu-overlay__item:nth-child(1)  { grid-column: 7; grid-row: 1; }
	.menu-overlay__item:nth-child(2)  { grid-column: 6; grid-row: 1; }
	.menu-overlay__item:nth-child(3)  { grid-column: 5; grid-row: 1; }
	.menu-overlay__item:nth-child(4)  { grid-column: 4; grid-row: 1; }
	.menu-overlay__item:nth-child(5)  { grid-column: 3; grid-row: 1; }
	.menu-overlay__item:nth-child(6)  { grid-column: 2; grid-row: 1; }
	.menu-overlay__item:nth-child(7)  { grid-column: 1; grid-row: 1; }
	.menu-overlay__item:nth-child(8)  { grid-column: 7; grid-row: 2; }
	.menu-overlay__item:nth-child(9)  { grid-column: 6; grid-row: 2; }
	.menu-overlay__item:nth-child(10) { grid-column: 5; grid-row: 2; }
	.menu-overlay__item:nth-child(11) { grid-column: 4; grid-row: 2; }
	/* PC用のグループ間隔（margin-right: 60px）をSPでは無効化 */
	.menu-overlay__item:nth-last-child(4) { margin: 0; }
	.menu-overlay__link {
		gap: 1px;
		position: relative;
	}
	.menu-overlay__item:nth-last-child(-n+4) .menu-overlay__link-jp {
		position: relative;
		padding-top: 16px;
	}
	.menu-overlay__item:nth-last-child(-n+4) .menu-overlay__link-en {
		padding-top: 16px;
		margin-top: 0;
	}
	.menu-overlay__item:nth-last-child(-n+4) .menu-overlay__link-jp::before {
		content: '';
		position: absolute;
		top: 0;
		left: 50%;
		transform: translateX(-50%);
		width: 1px;
		height: 10px;
		background: var(--color-white);
		opacity: 0.6;
	}
	.menu-overlay__link-jp { font-size: 14px; line-height: 1.6; letter-spacing: 0.18em; }
	.menu-overlay__link-en { font-size: 8px; margin-top: 2px; letter-spacing: 0.12em; }

	.menu-overlay__info { display: none; }
	.menu-overlay__footer {
		flex-direction: column;
		align-items: flex-end;
		justify-content: flex-start;
		padding: 24px 28px 28px;
	}
	.menu-overlay__footer .menu-overlay__copy {
		order: 0;
		margin-right: 0;
	}
	.menu-overlay__policy {
		flex-direction: column;
		gap: 12px;
		align-items: flex-end;
	}
	.menu-overlay__copy { font-size: 12px; }
}

/* =========================================================
   MV (Main Visual)
   ========================================================= */
.mv {
	position: relative;
	width: 100%;
	height: 100vh;
	min-height: 720px;
	overflow: hidden;
	background: transparent;
	z-index: 1;
}
/* MV 下端にも Philosophy と同じ backdrop-filter ブラー層を敷き、境目で水面の鮮鋭度差を出さない。
   グラデーションで上はクリア → 下端で Philosophy 上端と同じ濃度に揃える */
.mv::after {
	content: '';
	position: absolute;
	inset: auto 0 0 0;
	height: 45%;
	pointer-events: none;
	z-index: 1;
	background: linear-gradient(
		to bottom,
		rgba(242, 243, 241, 0)   0%,
		rgba(242, 243, 241, 0.18) 60%,
		rgba(242, 243, 241, 0.4)  100%
	);
	-webkit-backdrop-filter: blur(18px) saturate(110%);
	backdrop-filter: blur(18px) saturate(110%);
	/* mask で上半分はブラーを掛けないようにし、下端に向かって徐々に効かせる */
	-webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 60%, #000 100%);
	mask-image: linear-gradient(to bottom, transparent 0%, #000 60%, #000 100%);
}

/* ----- 共通ステージ：MV〜Philosophy の裏で水面動画を sticky 表示 ----- */
.front-stage {
	position: relative;
}
.front-stage__media {
	position: sticky;
	top: 0;
	width: 100%;
	height: 100vh;
	height: 100dvh; /* モバイルブラウザの URL バー高さ問題を回避 */
	margin-bottom: -100vh;
	margin-bottom: -100dvh;
	pointer-events: none;
	overflow: hidden;
	transition: opacity .25s var(--ease);
}
.front-stage__media.is-hidden { opacity: 0; }
.front-stage__video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	opacity: 0.9;
}

.mv__inner {
	position: relative;
	z-index: 2;
	max-width: var(--container);
	height: 100%;
	margin: 0 auto;
	padding: 0 70px 80px; /* 下部にゆとり */
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
}

.mv__catch-main {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin-bottom: 32px;
}
.mv__catch-main p {
	font-size: 24px;
	line-height: 1.66;
	letter-spacing: 0.08em;
	margin: 0;
}
.mv__catch-main strong {
	font-weight: 500;
	font-size: 42px;
	letter-spacing: 0.05em;
}

.mv__catch-sub {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 18px;
	line-height: 2.22;
	letter-spacing: 0.13em;
	color: var(--color-text);
	margin-bottom: 60px;
}

.mv__bottom {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}
.mv__en {
	font-family: var(--font-en-serif);
	font-size: 16px;
	letter-spacing: 0.1em;
	color: var(--color-text);
}
.mv__scroll {
	font-family: var(--font-en-serif);
	font-size: 13px;
	letter-spacing: 0.05em;
	color: var(--color-text);
}

@media (max-width: 768px) {
	.mv {
		/* モバイル Chrome の URL バー高さ分の問題回避：100dvh で実視可領域に合わせる */
		height: 100dvh;
		min-height: 600px;
	}
	/* SP のみ水面動画の中心を画面右寄り（x≒292px付近）に配置 */
	.front-stage__video {
		object-position: 40% top;
	}
	/* SP は backdrop-filter のサポート差が大きいため、ベール濃度で境目を消す。
	   下端を 0.7 まで強くして、Philosophy 上端と同じ濃度に揃える */
	.mv::after {
		height: 50%;
		background: linear-gradient(
			to bottom,
			rgba(242, 243, 241, 0)    0%,
			rgba(242, 243, 241, 0.4)  60%,
			rgba(242, 243, 241, 0.7) 100%
		);
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
		-webkit-mask-image: none;
		mask-image: none;
	}
	.mv__inner {
		padding: 0 30px 50px; /* 下部にゆとり */
	}
	.mv__catch-main { margin-bottom: 24px; }
	.mv__catch-main p {
		font-size: 18px;
		line-height: 1.78;
		letter-spacing: 0.08em;
	}
	.mv__catch-main strong {
		font-size: 32px;
		letter-spacing: 0.05em;
	}
	.mv__catch-sub {
		font-size: 14px;
		line-height: 2;
		letter-spacing: 0.05em;
		margin-bottom: 14px; /* Japanese を CFO 行の直近に寄せる */
	}
	.mv__bottom {
		align-items: flex-end;
	}
	.mv__en { font-size: 13px; letter-spacing: 0.1em; }
	.mv__scroll {
		position: absolute;          /* SPでは画面右端に独立配置 */
		right: 8px;                  /* viewportの右端に寄せる */
		bottom: 60px;
		writing-mode: vertical-rl;
		font-size: 12px;
		letter-spacing: 0.05em;
	}
}

/* MVがあるページではメインの上余白をなくす（ヘッダー高さ分を ステージ内で吸収） */
.front-page .front-stage {
	margin-top: calc( var(--header-h-pc) * -1 );
}
@media (max-width: 768px) {
	.front-page .front-stage {
		margin-top: calc( var(--header-h-sp) * -1 );
	}
}

/* =========================================================
   汎用フェードアップアニメーション
   - data-animate="fade-up" を付けた要素が下からフェードイン
   - data-animate-target はその子要素（p等）に自動適用される起点
   - ブラー解除：「ノイズが整い、思考が研ぎ澄まされていく」表現
   ========================================================= */
[data-animate="fade-up"],
[data-animate-target] > * {
	opacity: 0;
	filter: blur(10px);
	transform: translateY(60px);
	transition:
		opacity   .9s var(--ease),
		filter    1.1s var(--ease),
		transform .9s var(--ease);
	will-change: opacity, filter, transform;
}
[data-animate="fade-up"].is-visible,
[data-animate-target] > .is-visible {
	opacity: 1;
	filter: blur(0);
	transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
	[data-animate="fade-up"],
	[data-animate-target] > * {
		opacity: 1 !important;
		filter: none !important;
		transform: none !important;
		transition: none !important;
	}
}

/* =========================================================
   Philosophy（タイトル sticky / 本文スクロール）
   ========================================================= */
.philosophy {
	position: relative;
	z-index: 1;
	isolation: isolate;
	padding: 120px 0 160px;
}
/* 背景レイヤーを ::before に分離。これで本文側の filter アニメーションと backdrop-filter が干渉しない。
   グラデーション：上は半透明（水面がぼかして透ける）→ 下端で完全グレーへ収束 */
.philosophy::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background: linear-gradient(
		to bottom,
		rgba(242, 243, 241, 0.4) 0%,    /* MV 下端の濃度と一致させて境目を消す */
		rgba(242, 243, 241, 0.55) 35%,
		rgba(242, 243, 241, 0.8) 70%,
		rgba(242, 243, 241, 1)   95%,
		rgba(242, 243, 241, 1)  100%
	);
	-webkit-backdrop-filter: blur(18px) saturate(110%);
	backdrop-filter: blur(18px) saturate(110%);
}
.philosophy__inner {
	max-width: var(--container);
	margin: 0 auto;
	/* 左 140px：NEWS タイトル / Method タイトル左端と揃える
	   右 140px：Method タイトル左端（左から140px）と左右対称のリズムにする */
	padding: 0 140px;
	display: flex;
	justify-content: space-between;
	gap: clamp(40px, 6vw, 120px);
	align-items: stretch; /* タイトル列を本文と同じ高さに伸ばし sticky を持続 */
}

/* ----- 本文（スクロール側） -----
 * margin-top: 100vh で本文を画面外（下）に完全に押し出す。
 * セクション進入時はタイトル（sticky）のみ表示、
 * スクロールすると本文が下から画面に入ってくる。
 */
.philosophy__body {
	flex: 0 1 430px;
	min-width: 0;
	max-width: 430px;
	margin-top: 100vh;
}
.philosophy__body-text {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 2;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.philosophy__body-text p {
	margin: 0 0 30px;
}
.philosophy__body-text p:last-child { margin-bottom: 0; }

.philosophy__highlight {
	margin-top: 60px;
	background: #fff;
	padding: 18px 20px;
	max-width: 386px;
}
.philosophy__highlight p {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 15px;
	line-height: 1.73;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
}

/* ----- タイトル（sticky 固定側） ----- */
.philosophy__title-wrap {
	flex: 0 0 auto;
	min-width: 0;
}
.philosophy__title-sticky {
	position: sticky;
	top: calc( var(--header-h-pc) + 25px );
	display: flex;
	flex-direction: row-reverse;
	align-items: flex-start;
	justify-content: flex-start;
	gap: 36px;
	min-height: 260px;
}
.philosophy__en {
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin-top: 1px;
}
.philosophy__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 0;
	display: flex;
	flex-direction: row-reverse; /* 段落（=列）を右から左へ */
	align-items: flex-start;
	gap: 18px;
}
.philosophy__title p {
	writing-mode: vertical-rl;
	font-size: 24px;
	line-height: 1.25;
	letter-spacing: 0.1em;
	margin: 0;
}
.philosophy__title strong {
	font-weight: 500;
	font-size: 40px;
	letter-spacing: 0.1em;
}

@media (max-width: 768px) {
	.philosophy { padding: 100px 0 90px; }
	/* SP は backdrop-filter のサポートが不安定なため無効化し、ベール濃度のみで
	   水面を抑える。上端 0.7（MV 下端と一致）→ 下端で完全グレーに収束 */
	.philosophy::before {
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
		background: linear-gradient(
			to bottom,
			rgba(242, 243, 241, 0.7) 0%,
			rgba(242, 243, 241, 0.9) 50%,
			rgba(242, 243, 241, 1)  90%,
			rgba(242, 243, 241, 1) 100%
		);
	}
	.philosophy__inner {
		flex-direction: column;
		gap: 80px;
		padding: 0 30px;
		max-width: 100%;
	}

	/* SPはタイトルを上、本文を下の順に */
	.philosophy__title-wrap { order: 1; flex: 0 0 auto; align-self: stretch; }
	.philosophy__body       { order: 2; flex: 1 1 auto; max-width: 100%; margin-top: 0; }

	.philosophy__title-sticky {
		position: static;
		min-height: 0;
		justify-content: flex-start;
		gap: 22px;
	}
	.philosophy__en { font-size: 12px; margin-top: 0; }
	.philosophy__title { gap: 14px; }
	.philosophy__title p {
		font-size: 20px;
		line-height: 1.25;
		letter-spacing: 0.1em;
	}
	.philosophy__title strong {
		font-size: 31px;
		letter-spacing: 0.1em;
	}

	.philosophy__body-text { font-size: 15px; line-height: 1.87; }
	.philosophy__body-text p { margin-bottom: 24px; }

	.philosophy__highlight {
		margin-top: 40px;
		max-width: 100%;
		padding: 16px 20px;
	}
}

/* =========================================================
   Method（3ステップ・横スライダー）
   ========================================================= */
.method {
	position: relative;
	z-index: 2; /* sticky 動画より確実に前面に重ねる */
	background: var(--color-bg);
	padding: 140px 0 180px; /* セクション縦幅を 80px 拡張（上下に 40px ずつ） */
	overflow: hidden;
}
.method__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 0 0 140px;
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 120px;
	align-items: stretch;
}

/* ----- 左：見出し＋カウンター ----- */
.method__head {
	position: relative;
	display: flex;
	flex-direction: row-reverse;
	align-items: flex-start;
	justify-content: center;     /* 左カラム中央寄せ */
	gap: 36px;                   /* Philosophy と同じ間隔 */
	padding-bottom: 80px;
}
.method__en {
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin-top: 1px;
}
.method__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 0;
	display: flex;
	flex-direction: row-reverse;
	align-items: flex-start;
	gap: 20px;
}
.method__title p {
	writing-mode: vertical-rl;
	text-orientation: upright;          /* 数字・英字も立てる */
	-webkit-text-orientation: upright;
	font-size: 28px;
	line-height: 1.25;
	letter-spacing: 0.1em;
	margin: 0;
}

.method__counter {
	position: absolute;
	bottom: 0;
	left: 50%;
	transform: translateX(-50%);
	display: inline-flex;
	align-items: center;
	gap: 14px;
	font-family: var(--font-en-serif);
	color: var(--color-text);
}
.method__counter-current {
	font-size: 30px;
	letter-spacing: 0.1em;
	line-height: 1;
}
.method__counter-sep {
	display: inline-block;
	width: 20px;
	height: 1px;
	background: var(--color-text);
	transform: rotate(-45deg);
}
.method__counter-total {
	font-size: 14px;
	letter-spacing: 0.1em;
	line-height: 1;
}

/* ----- 右：スライダー（ブラーフェード切替） ----- */
.method__slider {
	position: relative;
	min-width: 0;
}
.method__track {
	position: relative;
	margin: 0;
	padding: 0;
	list-style: none;
	min-height: 540px;
}
.method__slide {
	position: absolute;
	inset: 0;
	width: 100%;
	margin: 0;
	opacity: 0;
	filter: blur(16px);
	transform: scale(1.02);
	transition:
		opacity   1.0s var(--ease),
		filter    1.2s var(--ease),
		transform 1.2s var(--ease);
	pointer-events: none;
	will-change: opacity, filter, transform;
}
.method__slide.is-active {
	opacity: 1;
	filter: blur(0);
	transform: scale(1);
	pointer-events: auto;
	position: relative; /* 高さを track に伝える */
}
.method__slider { cursor: grab; touch-action: pan-y; }
.method__slider:active { cursor: grabbing; }

/* ----- カード ----- */
.method-card {
	position: relative;
	background: #fff;
	min-height: 540px;
	padding: 60px 60px 80px 60px; /* 上・左 60px / 下は背景ラベル分で広め */
	display: grid;
	grid-template-columns: 1fr 1.6fr; /* 画像側を大きく */
	gap: 40px;
	align-items: start; /* テキスト/画像とも上端揃え */
	overflow: hidden;
}
.method-card__text {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	gap: 16px;
	align-self: start;       /* テキストを左上に固定 */
	text-align: left;
}
.method-card__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 23px;
	line-height: 1.3;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0;
}
.method-card__lead {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 16px;
	line-height: 1.875;
	color: var(--color-text);
	margin: 0;
}
.method-card__desc {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.43;
	color: var(--color-text);
	margin: 0;
}
/* ===== Moreリンクボタン（サイト共通ルール）=====
   "Text + 矢印 + 下線" のスタイル。
   レイアウト調整は各コンポーネント側のクラスで行う。 */
.ukp-more-link {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	width: 100px;
	padding-bottom: 5px;
	border-bottom: 1px solid var(--color-text);
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.1em;
	color: var(--color-text);
	text-decoration: none;
}
.ukp-more-link__arrow {
	font-size: 12px;
	transition: transform .25s var(--ease);
}
.ukp-more-link:hover .ukp-more-link__arrow {
	transform: translateX(4px);
}

.method-card__more { margin-top: 24px; }

.method-card__visual {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 1 / 1; /* 3枚のイラストを同じ枠に収め、表示サイズを揃える */
	width: 100%;
}
.method-card__visual img {
	width: 100%;
	height: 100%;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}
/* ステップ1のイラストだけ視覚的に 1.2 倍にし、PCでは左に 40px ずらす（枠サイズは維持）*/
.method__slide[data-index="01"] .method-card__visual img {
	transform: translateX(-40px) scale(1.2);
	transform-origin: center;
}
@media (max-width: 768px) {
	/* SP は専用画像 (step-1-sp.png) を使用し、視覚的に拡大 */
	.method__slide[data-index="01"] .method-card__visual img {
		transform: scale(1.3);
		transform-origin: center;
	}
}

/* ステップ2のイラストを PC で 1.48 倍（1.5 から 10px 相当縮小）にし、画像右端を白背景の右端に揃える */
.method__slide[data-index="02"] .method-card__visual img {
	transform: translateX(60px) scale(1.48);
	transform-origin: right center;
}
@media (max-width: 768px) {
	/* SP は専用画像 (step-2-sp.png) を使用し、視覚的に拡大 */
	.method__slide[data-index="02"] .method-card__visual img {
		transform: scale(1.3);
		transform-origin: center;
	}
}

/* ステップ3のイラストを PC で 1.267 倍にし、画像の右上を白背景の右上に揃える。
   step-3.png の上部に若干余白があるため、translateY を -90 にして illustration の頂部を白背景上端に */
.method__slide[data-index="03"] .method-card__visual img {
	object-position: top right;
	transform: translate(60px, -90px) scale(1.267);
	transform-origin: right top;
}
@media (max-width: 768px) {
	/* SP：画像右端をカード（白背景）の右端に揃える。
	   .method-card は SP で padding-right: 27px のため、visual を 27px 右に逃がす */
	.method__slide[data-index="03"] .method-card__visual {
		margin-right: -27px;
	}
	/* SP は専用画像 (step-3-sp.png) を使用。
	   画像内に右側余白がまだある場合に備え、translateX で右に押し出してカード外をクリップ */
	.method__slide[data-index="03"] .method-card__visual img {
		object-position: right center;
		transform: translateX(10%) scale(1.15);
		transform-origin: right center;
	}
}
.method-card__placeholder {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 14px;
	color: #9b9b9b;
}
.method-card__label {
	position: absolute;
	left: 60px;
	right: 0;
	/* ステップ1 "Analysis" の "y" ディセンダーが白背景下端に触れる位置に合わせ、
	   他のステップも同じ高さに揃える */
	bottom: 12px;
	text-align: right;
	font-family: var(--font-en-serif);
	font-size: 100px;
	line-height: 0.8;
	letter-spacing: 0.05em;
	color: rgba(242, 243, 241, 0.5);
	margin: 0;
	pointer-events: none;
	white-space: nowrap;
	z-index: 0;
}

/* ----- ナビゲーション ----- */
.method__nav {
	display: flex;
	gap: 16px;
	margin-top: 44px; /* 20px 下に */
	justify-content: flex-end;
	padding-right: 36px; /* ヘッダーメニュー右端（site-header__inner の padding-right）と揃える */
}
.method__nav-btn {
	width: 48px;
	height: 48px;
	border: 1px solid var(--color-text);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	color: var(--color-text);
	background: transparent;
	transition: background .25s var(--ease), color .25s var(--ease);
}
.method__nav-btn:hover {
	background: var(--color-text);
	color: #fff;
}
.method__nav-btn[disabled] { opacity: 0.3; cursor: default; }

@media (max-width: 768px) {
	.method { padding: 70px 0 90px; }
	.method__inner {
		grid-template-columns: 1fr;
		gap: 30px;
		padding: 0 30px;
	}

	/* SP：見出しを上、カウンター → スライダーの順 */
	.method__head {
		flex-direction: row-reverse;          /* ( Method ) を右に */
		justify-content: flex-start;          /* 右寄せ（row-reverse 内では flex-start = 右側） */
		gap: 22px;
		padding-bottom: 60px;
	}
	.method__title p { font-size: 23px; }
	.method__en { font-size: 12px; margin-top: 0; }

	.method__counter {
		left: 30px;          /* SPはカード左端と揃える */
		transform: none;
		bottom: 0;
	}
	.method__counter-current { font-size: 30px; }

	.method-card {
		min-height: auto;
		padding: 30px 27px 40px;
		grid-template-columns: 1fr;
		gap: 24px;
	}
	.method-card__title { font-size: 20px; }
	.method-card__visual { min-height: 200px; order: 2; }
	.method-card__text { order: 1; }
	/* ラベルを白背景の右端に揃え、"01. Analysis" の "y" ディセンダーが下端に触れる位置に。
	   長いラベル（Verbalization / Implementation）が box 幅を超えて左に溢れて
	   card の overflow:hidden に切られないよう、left 制約を解除する */
	.method-card__label {
		font-size: 36px;
		left: auto;
		right: 0;
		bottom: 4px;
	}

	/* 矢印を白背景（カード）の右端に揃える。
	   method-card は method__inner（padding: 0 30px）内の 1fr 列を満たすので、
	   nav も同じ列内で padding-right: 0 にして右端を一致させる */
	.method__nav { padding-right: 0; justify-content: flex-end; }
}
.method-card__visual { /* PC: ensure visual is right column */ }

/* =========================================================
   SERVICE（タイトル sticky / 本文スクロール）
   ========================================================= */
.service {
	position: relative;
	background: var(--color-bg);
	padding: 100px 0 140px;
}
.service__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 70px 0 140px;            /* Method と揃える */
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 120px;                          /* Method と揃える */
	align-items: stretch;                /* 左カラムを本文と同じ高さにして sticky を持続 */
}

/* ----- 左：縦書きタイトル（sticky） ----- */
.service__head { min-width: 0; }
.service__head-sticky {
	position: sticky;
	top: calc( var(--header-h-pc) + 40px );
	display: flex;
	flex-direction: row-reverse;
	align-items: flex-start;
	justify-content: center;             /* Method と揃える */
	gap: 36px;                           /* Method と揃える */
	min-height: 280px;
}
.service__en {
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin-top: 1px;
}
/* Method タイトルと同じスタイル：複数 <p> を flex で横並び、各段落が縦書き */
.service__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 0;
	display: flex;
	flex-direction: row-reverse;
	align-items: flex-start;
	gap: 20px;
}
.service__title p {
	writing-mode: vertical-rl;
	text-orientation: upright;
	-webkit-text-orientation: upright;
	font-size: 28px;
	line-height: 1.25;
	letter-spacing: 0.1em;
	margin: 0;
}

.service__body {
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 100px;
}
/* 各ブロックの読みやすい幅 */
.service-list,
.service-price,
.service-voice__head,
.service-voice__controls {
	max-width: 734px;
}

/* ----- 共通：英ラベル＋線 ----- */
.service-block-label {
	display: inline-flex;
	align-items: center;
	gap: 18px;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
	margin: 0 0 30px;
}
.service-block-label__line {
	display: inline-block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
}

/* ----- サービス一覧 ----- */
.service-list {
	margin: 0;
	padding: 0;
	list-style: none;
}
.service-list__item {
	border-top: 2px solid #fff;
}
.service-list__item:first-child {
	border-top: 0; /* 1番目（社外CFO・財務顧問）の上線を削除 */
}
.service-list__item:last-child {
	border-bottom: 0; /* 4番目（経営の地図作成）の下線を削除 */
}
.service-list__link {
	position: relative;
	display: block;
	padding: 36px 50px 36px 0;
	color: var(--color-text);
	transition: opacity .25s var(--ease);
}
/* 1番目は線が無くなった分、上余白も詰めて、線があった位置からサービス内容が始まるようにする */
.service-list__item:first-child .service-list__link {
	padding-top: 0;
}
.service-list__link:hover { opacity: 0.7; }

.service-list__head {
	display: inline-flex;
	align-items: baseline;
	gap: 8px;
	margin-bottom: 16px;
}
.service-list__no {
	font-family: var(--font-en-serif);
	font-size: 18px;
	line-height: 1;
}
.service-list__type {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 15px;
	line-height: 1;
}
.service-list__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 23px;
	line-height: 1.3;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 8px;
}
.service-list__lead {
	font-family: var(--font-jp-gothic);
	font-size: 16px;
	line-height: 1.5;
	color: var(--color-text);
	margin: 0;
}
.service-list__arrow {
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	font-size: 16px;
	color: var(--color-text);
	transition: transform .25s var(--ease);
}
.service-list__link:hover .service-list__arrow { transform: translate(6px, -50%); }

/* ----- VOICE ----- */
.service-voice__head { margin-bottom: 30px; }
.service-voice__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	line-height: 1.3;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 24px;
}
.service-voice__desc {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.87;
	color: var(--color-text);
}
.service-voice__desc p { margin: 0 0 16px; }
.service-voice__desc p:last-child { margin: 0; }
.service-voice__note {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 14px;
	color: var(--color-text);
	margin: 24px 0 0;
}

.service-voice__controls {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	margin: 30px 0;
}
.service-voice__nav { display: flex; gap: 8px; }
.service-voice__nav-btn {
	width: 26px;
	height: 26px;
	border: 1px solid var(--color-text);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	color: var(--color-text);
	background: transparent;
	transition: background .25s var(--ease), color .25s var(--ease);
}
.service-voice__nav-btn:hover { background: var(--color-text); color: #fff; }
.service-voice__nav-btn[disabled] { opacity: 0.3; cursor: default; }

/* .service-voice__more はレイアウト用の名前空間として残す */

.service-voice__slider {
	overflow: hidden;
	margin-right: -70px;  /* inner の右paddingを打ち消して画面右端まで */
}
.service-voice__track {
	display: flex;
	gap: 40px;
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	-webkit-overflow-scrolling: touch;
	margin: 0;
	padding: 0;
	list-style: none;
}
.service-voice__track::-webkit-scrollbar { display: none; }
.service-voice__track { cursor: grab; touch-action: pan-y; }
.service-voice__track.is-grabbing { cursor: grabbing; scroll-snap-type: none; }
.service-voice__track.is-grabbing a { pointer-events: none; }
.service-voice__slide {
	flex: 0 0 480px;
	scroll-snap-align: start;
	min-width: 0;
}
.voice-card,
a.voice-card { display: block; color: var(--color-text); background: transparent; }
.voice-card__thumb {
	position: relative;
	width: 100%;
	aspect-ratio: 480 / 300;
	overflow: hidden;
	background: transparent; /* セクション背景を透けさせ、各事例の背景は無くす */
	margin-bottom: 24px;
}
.voice-card__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
/* アイキャッチ未設定の事例は、UK PARTNERS のブランドプレースホルダー画像を表示 */
.voice-card__thumb-placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background-color: #d8d8d4;
	background-image: url('../images/voice/voice-placeholder.png');
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
}
.voice-card__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 20px;
	line-height: 1.5;
	color: var(--color-text);
	margin: 0 0 8px;
}
.voice-card__company {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0;
}
.voice-card__company span { font-size: 13px; letter-spacing: 0; margin-left: 4px; }

/* ----- PRICE ----- */
.service-price__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	line-height: 1.3;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 24px;
}
.service-price__desc {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.87;
	color: var(--color-text);
	margin: 0 0 30px;
}
.service-price__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 200px;
	height: 44px;
	padding: 0 18px;
	border: 1px solid var(--color-text);
	border-radius: 22px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 16px;
	color: var(--color-text);
	transition: background .25s var(--ease), color .25s var(--ease);
}
.service-price__button:hover {
	background: var(--color-text);
	color: #fff;
}

@media (max-width: 768px) {
	.service { padding: 70px 0 90px; }
	.service__inner {
		display: grid;
		grid-template-columns: 80px 1fr;  /* 左：タイトル列を広めに */
		gap: 32px; /* タイトル列と本文列の距離 */
		padding: 0 27px;
		align-items: stretch;
	}

	/* SP：タイトルは sticky のまま、右のコンテンツだけがスクロール */
	.service__head { min-width: 0; }
	.service__head-sticky {
		position: sticky;
		top: calc(var(--header-h-sp) + 60px); /* ヘッダー下にゆとり */
		min-height: 0;
		flex-direction: row-reverse;
		justify-content: flex-start;
		gap: 8px; /* 英語と日本語タイトルの距離 */
		align-items: flex-start;
	}
	/* SP は縦書きで1列に表示。2つの <p> をインライン化して "私たちのご提供サービス" を
	   一列の縦書きで連結。text-orientation: mixed で伸ばし棒（ー）も縦向きになる */
	.service__title {
		display: block;
		writing-mode: vertical-rl;
	}
	.service__title p {
		writing-mode: vertical-rl;
		text-orientation: mixed;
		-webkit-text-orientation: mixed;
		display: inline;
		font-size: 23px;
		line-height: 1.25;
		letter-spacing: 0.1em;
	}
	.service__en { font-size: 12px; margin-top: 0; }

	.service__body { gap: 70px; max-width: 100%; }

	/* SPでもスライダーを画面右端まで突き出す（service__inner の padding-right 27px を打ち消し） */
	.service-voice__slider { margin-right: -27px; }
	.service-voice__track { gap: 20px; } /* スライド間の余白を縮める */
	/* SP の More 右端を 1枚目スライド右端（slider 27px はみ出し - 40px peek = column右 -13px）と揃える */
	.service-voice__controls {
		max-width: none;
		margin-right: 13px;
	}

	.service-list__link { padding: 24px 30px 24px 0; }
	.service-list__title { font-size: 18px; }
	.service-list__lead { font-size: 14px; line-height: 1.7; }
	.service-list__arrow { right: 0; }

	.service-voice__title { font-size: 20px; }
	.service-voice__desc { font-size: 14px; }
	.service-voice__slide { flex: 0 0 calc(100% - 40px); }
	.voice-card__title { font-size: 18px; }

	.service-price__title { font-size: 20px; }
	.service-price__desc { font-size: 14px; }
	.service-price__button { width: 100%; min-width: 0; }
}

/* =========================================================
   PROFILE
   ========================================================= */
.profile {
	background: var(--color-bg);
	padding: 130px 0 140px;
}
.profile__inner {
	max-width: var(--container);
	margin: 0 auto;
	/* 左は0でブリード維持、右だけ philosophy / news と揃えて 140px */
	padding: 0 140px 0 0;
	display: grid;
	grid-template-columns: 1fr 1fr;        /* 画像 5 : テキスト 5 */
	gap: clamp(40px, 6vw, 100px);
	align-items: center;
}
.profile__visual {
	width: 100%;
	aspect-ratio: 584 / 551;               /* デザイン比率を維持 */
	overflow: hidden;
	background: #d8d8d4;
}
.profile__visual img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.profile__visual-placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: #d8d8d4;
}

.profile__text {
	max-width: 560px;
	/* 右余白は .profile__inner の padding-right で取る（旧 var(--gutter-pc) は削除） */
}
.profile__en {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 20px;
}
.profile__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 0 0 36px;
}
.profile__title p {
	font-size: 24px;
	line-height: 2;
	letter-spacing: 0.1em;
	margin: 0;
}
.profile__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.87;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.profile__body p { margin: 0 0 20px; }
.profile__body p:last-child { margin-bottom: 0; }

.profile__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 200px;
	height: 44px;
	padding: 0 18px;
	margin-top: 40px;
	border: 1px solid var(--color-text);
	border-radius: 22px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 16px;
	color: var(--color-text);
	transition: background .25s var(--ease), color .25s var(--ease);
}
.profile__button:hover {
	background: var(--color-text);
	color: #fff;
}

@media (max-width: 768px) {
	.profile { padding: 60px 0 80px; }
	.profile__inner {
		grid-template-columns: 1fr;
		gap: 36px;
		padding: 0; /* PC の padding-right: 140px を解除 */
	}
	/* SP: 画像左端は viewport 左端にブリード、右端は本文右端（viewport - 30px）に揃える。
	   SP のみ 4:3 の横長で高さを抑える（PC は 584/551 のまま）*/
	.profile__visual {
		width: calc(100% - 30px); /* 右側だけ 30px の余白を空けて本文右端と一致 */
		max-width: none;
		margin: 0;
		height: auto;
		aspect-ratio: 4 / 3;
	}
	.profile__text {
		max-width: 100%;
		padding: 0 30px;
	}
	.profile__en { font-size: 12px; margin: 0 0 12px; }
	.profile__title { margin-bottom: 24px; }
	.profile__title p { font-size: 23px; line-height: 1.74; }
	.profile__body { font-size: 15px; }
	.profile__button {
		display: flex;
		width: auto;
		min-width: 200px;
		margin: 32px auto 0; /* ボタン中央寄せ */
	}
}

/* =========================================================
   NEWS
   ========================================================= */
.news {
	background: var(--color-bg);
	padding: 120px 0 140px;
}
.news__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 140px;
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 50px;
	align-items: flex-start;
}

.news__head {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}
.news__en {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 22px;
}
.news__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 30px;
	line-height: 1.33;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 60px;
}
/* .news__more はレイアウト用の名前空間として残す（grid-area 等を上書き） */

.news__body { min-width: 0; }
.news__list {
	margin: 0;
	padding: 0;
	list-style: none;
}
.news__item {
	border-bottom: 1px solid var(--color-white); /* #ffffff */
}
.news__item:last-child {
	border-bottom: none; /* 最後の記事には線を引かない */
}
.news__link {
	display: block;
	padding: 30px 0;
	color: var(--color-text);
	transition: opacity .25s var(--ease);
}
.news__link:hover { opacity: 0.65; }

.news__date {
	display: block;
	font-family: "EB Garamond", var(--font-en-serif);
	font-weight: 500;
	font-size: 16px;
	letter-spacing: 0.05em;
	line-height: 1.25;
	color: var(--color-text);
	margin: 0 0 11px;
}
.news__post-title {
	font-family: var(--font-jp-gothic);
	font-weight: 400; /* Profile 本文（指定なし＝400）と揃える */
	font-size: 18px;
	line-height: 1.55;
	color: var(--color-text);
	margin: 0;
}
.news__empty {
	padding: 28px 0;
	color: var(--color-line);
	font-family: var(--font-jp-gothic);
}

@media (max-width: 768px) {
	.news { padding: 70px 0 90px; }
	.news__inner {
		grid-template-columns: 1fr;
		gap: 24px;
		padding: 0 30px;
	}

	.news__head {
		display: grid;
		grid-template-columns: 1fr auto;
		grid-template-areas:
			"en   en"
			"title more";
		row-gap: 8px;
		column-gap: 20px;
		align-items: center;
	}
	.news__en { grid-area: en; margin-bottom: 0; font-size: 12px; }
	.news__title {
		grid-area: title;
		font-size: 23px;
		margin: 0;
	}
	.news__more { grid-area: more; }

	.news__link {
		padding: 22px 0;
	}
	.news__date { font-size: 14px; margin-bottom: 8px; }
	.news__post-title { font-size: 15px; line-height: 1.6; }
}

/* =========================================================
   ページヒーロー（共通：固定ページのトップ）
   - 各ページが template-parts/page-hero.php を使う
   - 縦書きタイトル（1文字ずつ縦に並べる） + 縦書き英語サブ + 背景動画
   ========================================================= */
.page-hero {
	position: relative;
	width: 100%;
	min-height: 360px;
	height: 50vh;
	overflow: hidden;
	background: var(--color-bg);
	margin-top: calc( var(--header-h-pc) * -1 );
	padding-top: var(--header-h-pc);
}
.page-hero__bg {
	position: absolute;
	inset: 0;
	pointer-events: none;
	overflow: hidden;
}
/* 動画下部を背景色（グレー）へ徐々にフェードさせ、境界を馴染ませる。
   var(--color-bg) と同色の縦グラデーションを動画の上に重ねる。 */
.page-hero__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(
		to bottom,
		rgba(242, 243, 241, 0) 0%,
		rgba(242, 243, 241, 0) 40%,
		rgba(242, 243, 241, 0.6) 70%,
		rgba(242, 243, 241, 1) 100%
	);
}
.page-hero__video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	opacity: 0.9;
	mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 50%, rgba(0,0,0,0) 90%);
	-webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,1) 50%, rgba(0,0,0,0) 90%);
}
/* 水面を大きく拡大して右上に寄せるバリアント（強み・メソッド / サービス / 初回対話）
   各テンプレートから set_query_var('page_hero_modifier', 'right') で .page-hero--right を付与する。
   ※ object-fit: cover は縦方向のクロップしか発生しないため object-position の X は効かない。
      transform で拡大 + 右シフトを行い、水面の中心を右側に配置する。
      transform-origin: 50% 0% で上端を固定し、上方向への拡大を防ぐ。 */
.page-hero--right .page-hero__video {
	/* 注意：transform list は translate → scale の順で適用されるため、
	   translateX/Y の効果は scale 倍されて反映される。
	   要素左端 = 50% + (t - 50%) * s が 0 以下になるよう値を選ぶこと（s=3.5 なら t ≤ 35.7%）。
	   translateY をマイナス方向にして、水面の湧き出る点を画面の上端付近に寄せ、
	   その下に水面が広がっていく構図にする。 */
	transform: scale(3.5) translate(33%, -35%);
	transform-origin: 50% 0%;
}
/* 背景動画を出さないバリアント（代表プロフィール等）。
   PC・SP ともに動画と下端のフェードを非表示にし、静止した背景にする。 */
.page-hero--no-video .page-hero__video,
.page-hero--no-video .page-hero__bg::after {
	display: none;
}
.page-hero__sticky {
	position: relative;
	z-index: 2;
	max-width: var(--container);
	margin: 0 auto;
	padding: 24px 0 0 var(--gutter-pc);
	display: flex;
	align-items: flex-start;
	gap: 18px;
}
/* 強み・メソッドページ専用：タイトルの左端を本文（.strength-intro__inner）と揃える。
   D ライト：max-width を clamp で可変化し、画面幅に応じて自動拡縮 */
.page-hero--strength .page-hero__sticky,
.page-hero--services .page-hero__sticky {
	max-width: clamp(1100px, 82vw, 1600px);
	padding: 24px var(--gutter-pc) 0;
}
.page-hero__title {
	writing-mode: vertical-rl;
	text-orientation: mixed;
	-webkit-font-feature-settings: "vrt2";
	font-feature-settings: "vrt2";  /* 縦書き用グリフへ切替（ー の縦化など） */
	margin: 0;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 32px;
	letter-spacing: 0.15em;
	line-height: 1.5;
	color: var(--color-text);
}
/* タイトル内の任意改行：PC では非表示、SP のみ改行を有効化 */
.page-hero__title-break-sp {
	display: none;
}
.page-hero__en {
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 13px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0; /* PC で JP と上端を揃える */
}

@media (max-width: 768px) {
	.page-hero {
		min-height: 220px;
		height: 40vh;
		margin-top: calc( var(--header-h-sp) * -1 );
		/* 機種によりサブピクセル境界線が見えるため、次セクションと 1px オーバーラップ */
		margin-bottom: -1px;
		padding-top: var(--header-h-sp);
	}
	.page-hero__sticky {
		padding: 30px 0 0 var(--gutter-sp);
		gap: 4px;
		align-items: flex-start; /* 日本語タイトルと英語タイトルの上端を揃える */
	}
	/* SP では EN の margin-top を解除して JP タイトルと上端を揃える */
	.page-hero__en { margin-top: 0; }
	/* SP では strength でも本文と同じ gutter-sp (24px) を使って左端を揃える */
	.page-hero--strength .page-hero__sticky,
	.page-hero--services .page-hero__sticky {
		padding: 30px var(--gutter-sp) 0;
	}
	.page-hero__title {
		font-size: 26px;
		line-height: 1.5;
		letter-spacing: 0.2em;
	}
	/* SP のみ任意改行を有効化 */
	.page-hero__title-break-sp { display: initial; }
	.page-hero__en { font-size: 11px; }
	/* SP では水面の中心が見えるよう、PC より下げて配置する */
	.page-hero--right .page-hero__video {
		transform: scale(4) translate(37%, -25%);
	}
	/* SP は機種により下端境界が見える場合があるため、
	   グラデーションを早めに開始しグレーへ完全に同化させる。
	   下端50%は完全な単色グレーで覆い、境界の発生を確実に防ぐ。
	   bottom: -1px で iOS のサブピクセル切り捨て対策。 */
	.page-hero__bg::after {
		inset: 0 0 -1px 0;
		background: linear-gradient(
			to bottom,
			rgba(242, 243, 241, 0) 0%,
			rgba(242, 243, 241, 0) 40%,
			rgba(242, 243, 241, 0.85) 60%,
			rgba(242, 243, 241, 1) 80%,
			rgba(242, 243, 241, 1) 100%
		);
	}
	/* 動画自体の mask-image によるエッジを SP では無効化し、
	   グラデーションオーバーレイのみで仕上げる（重なりによる色ムラ防止）。 */
	.page-hero__video {
		mask-image: none;
		-webkit-mask-image: none;
	}
}

/* =========================================================
   強み・メソッド：イントロ（概要 + 3ボタンナビ）
   ========================================================= */
.strength-intro {
	background: var(--color-bg);
	padding: 50px 0 100px;
}
.strength-intro__inner {
	/* D ライト：画面幅に応じて可変。最小 1100px / 推奨 82vw / 最大 1600px */
	max-width: clamp(1100px, 82vw, 1600px);
	margin: 0 auto;
	padding: 0 var(--gutter-pc);
}
.strength-intro__heading {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 36px;
}
.strength-intro__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	/* D ライト：inner いっぱいに広げて左右対称に */
	max-width: none;
	margin-bottom: 60px;
}
.strength-intro__body p { margin: 0 0 24px; }
.strength-intro__body p:last-child { margin: 0; }

/* ----- ナビボタン（3つのステップ） ----- */
.strength-nav {
	/* D ライト：inner いっぱいに広げて左右対称に */
	max-width: none;
}
.strength-nav__toggle { display: none !important; }   /* PCでは非表示（SPで上書き） */
.strength-nav__panel {
	display: grid;
	/* D ライト：親（.strength-nav）の幅に応じて各列が拡縮する */
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 15px;
}
.strength-nav__btn {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 25px;
	height: 50px;
	background: #fff;
	color: var(--color-text);
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 14px;
	letter-spacing: 0.1em;
	transition: background .25s var(--ease), color .25s var(--ease);
	border: 0;
	cursor: pointer;
	width: 100%;
	text-align: left;
}
.strength-nav__btn:hover {
	background: var(--color-text);
	color: #fff;
}
.strength-nav__arrow {
	font-size: 12px;
	transition: transform .35s var(--ease);
}
.strength-nav__btn:hover .strength-nav__arrow { transform: translateY(2px); }

@media (max-width: 768px) {
	.strength-intro { padding: 30px 0 70px; }
	.strength-intro__inner { padding: 0 var(--gutter-sp); }
	.strength-intro__heading {
		font-size: 19px;
		line-height: 1.74;
		letter-spacing: 0.1em;
		margin-bottom: 24px;
	}
	.strength-intro__body { font-size: 15px; line-height: 1.73; margin-bottom: 40px; }
	.strength-intro__body p { margin-bottom: 20px; }

	/* SPはトグルボタン + アコーディオンパネル */
	.strength-nav__toggle {
		display: flex !important;
		position: relative;
		align-items: center;
		justify-content: space-between;
		padding: 0 25px;
		height: 50px;
		background: #fff;
		color: var(--color-text);
		font-family: "Zen Old Mincho", var(--font-jp-mincho);
		font-size: 14px;
		letter-spacing: 0.1em;
		border: 0;
		cursor: pointer;
		width: 100%;
		text-align: left;
		transition: background .25s var(--ease), color .25s var(--ease);
	}
	.strength-nav__panel {
		grid-template-columns: 1fr;
		gap: 5px;
		max-height: 0;
		overflow: hidden;
		opacity: 0;
		transition:
			max-height .6s var(--ease),
			opacity   .5s var(--ease),
			margin-top .5s var(--ease);
	}
	.strength-nav.is-open .strength-nav__panel {
		max-height: 220px;
		opacity: 1;
		margin-top: 5px;
	}
	.strength-nav.is-open .strength-nav__arrow--toggle {
		transform: rotate(180deg); /* ↓ → ↑ */
	}

	.strength-nav__btn,
	.strength-nav__toggle {
		height: 50px;
		padding: 0 20px;
	}
}

/* =========================================================
   サービスページ：イントロ
   ========================================================= */
.services-intro {
	background: var(--color-bg);
	padding: 50px 0 100px;
}
.services-intro__inner {
	/* 強み・メソッドページと揃える：画面幅に応じて可変。最小 1100px / 推奨 82vw / 最大 1600px */
	max-width: clamp(1100px, 82vw, 1600px);
	margin: 0 auto;
	padding: 0 var(--gutter-pc);
}
.services-intro__heading {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 36px;
}
.services-intro__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	max-width: none;
}
.services-intro__body p { margin: 0 0 24px; }
.services-intro__body p:last-child { margin: 0; }

/* MENUボタン：PCでは非表示、SPで表示 */
.services-intro__menu-btn { display: none; }

@media (max-width: 768px) {
	.services-intro { padding: 30px 0 35px; }
	.services-intro__inner { padding: 0 var(--gutter-sp); }
	.services-intro__heading {
		font-size: 19px;
		line-height: 1.74;
		letter-spacing: 0.1em;
		margin-bottom: 28px;
	}
	.services-intro__body { font-size: 15px; line-height: 1.73; }
	.services-intro__body p { margin-bottom: 22px; }

	/* MENUボタン：SPで表示 */
	.services-intro__menu-btn {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding: 0 25px;
		height: 50px;
		margin-top: 40px;
		background: #fff;
		color: var(--color-text);
		font-family: "Zen Old Mincho", var(--font-jp-mincho);
		font-size: 14px;
		letter-spacing: 0.1em;
		text-decoration: none;
		transition: background .25s var(--ease), color .25s var(--ease);
	}
	.services-intro__menu-btn:hover {
		background: var(--color-text);
		color: #fff;
	}
	.services-intro__menu-arrow {
		font-size: 12px;
		transition: transform .25s var(--ease);
	}
	.services-intro__menu-btn:hover .services-intro__menu-arrow {
		transform: translateY(2px);
	}
}

/* =========================================================
   サービスページ：サイドナビ + 白カード
   ========================================================= */
.services-content {
	background: var(--color-bg);
	padding: 0 0 100px;
}
.services-content__inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 0 0 var(--gutter-pc);
	display: grid;
	grid-template-columns: 250px 1fr;
	align-items: start;
}

/* ----- 左：sticky サイドナビ ----- */
.services-nav {
	padding-top: 80px;
	/* グリッドアイテムを行いっぱいに伸ばし、内側 sticky に追従する余地を与える */
	align-self: stretch;
	height: 100%;
}
.services-nav__sticky {
	position: sticky;
	top: calc( var(--header-h-pc) + 40px );
	padding-left: 13px;
}
.services-nav__sp-toggle { display: none; } /* PCでは非表示 */
.services-nav__list {
	display: flex;
	flex-direction: column;
}
.services-nav__link + .services-nav__link--head { margin-top: 28px; }
.services-nav__link--head + .services-nav__link--sub { margin-top: 16px; }
.services-nav__link--sub + .services-nav__link--sub { margin-top: 16px; }
.services-nav__link--sub + .services-nav__link--head { margin-top: 30px; }
.services-nav__link {
	position: relative;
	font-family: var(--font-jp-mincho);
	font-size: 14px;
	letter-spacing: 0.05em;
	line-height: 1;
	color: var(--color-text);
	text-decoration: none;
	transition: opacity .25s var(--ease), font-size .35s var(--ease);
}
.services-nav__link:hover { opacity: 0.6; }
.services-nav__link--head { font-family: var(--font-jp-mincho); }
.services-nav__link--sub {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
}
/* アクティブ状態：● ドット + 太字 */
.services-nav__link--head.is-active {
	font-weight: 600;
	font-size: 16px;
}
.services-nav__link--sub.is-active { font-weight: 600; }
.services-nav__link--head.is-active::before,
.services-nav__link--sub.is-active::before {
	content: "";
	position: absolute;
	left: -13px;
	top: 50%;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--color-text);
	transform: translateY(-50%);
	/* 静かに現れる：blur+opacity でフォーカスが合うように */
	opacity: 0;
	filter: blur(4px);
	animation: services-nav-dot-in .6s var(--ease) forwards;
}
@keyframes services-nav-dot-in {
	to { opacity: 1; filter: blur(0); }
}

/* ----- 右：白カード ----- */
.services-card {
	background: #fff;
	padding: 80px 80px 100px;
}

/* ----- セクション共通 ----- */
.services-section,
.services-role {
	padding-bottom: 100px;
}
.services-card > .services-section:last-child,
.services-card > .services-role:last-child {
	padding-bottom: 0;
}

/* セクション英ラベル（薄グレー：Service List / Detail / Price / Question 等） */
.services-section__label {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 18px;
	letter-spacing: 0.05em;
	color: #e0e0e0;
	margin: 0 0 30px;
	transition: color .6s var(--ease);
}
/* アクティブ時：● ドットを点け、文字も濃く太く */
.services-section__label::before {
	content: "";
	display: inline-block;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--color-text);
	opacity: 0;
	filter: blur(4px);
	transform: scale(.6);
	transition:
		opacity   .6s var(--ease),
		filter    .9s var(--ease),
		transform .6s var(--ease);
}
.services-section__label.is-active {
	color: var(--color-text);
	font-weight: 600;
}
.services-section__label.is-active::before {
	opacity: 1;
	filter: blur(0);
	transform: scale(1);
}
.services-section__title {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 26px;
	line-height: 1.2;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 50px;
}

/* ===== Our Role 専用スタイル ===== */
.services-role__label {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 18px;
	letter-spacing: 0.05em;
	line-height: 1;
	color: #e0e0e0;
	margin: 0 0 40px;
	transition: color .6s var(--ease);
}
.services-role__label.is-active {
	color: var(--color-text);
	font-weight: 600;
}
.services-role__dot {
	display: inline-block;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--color-text);
	opacity: 0;
	filter: blur(4px);
	transform: scale(.6);
	transition:
		opacity   .6s var(--ease),
		filter    .9s var(--ease),
		transform .6s var(--ease);
}
.services-role__label.is-active .services-role__dot {
	opacity: 1;
	filter: blur(0);
	transform: scale(1);
}
.services-role__heading {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	margin: 0 0 30px;
}
.services-role__heading p {
	font-size: 28px;
	line-height: 1.7;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
}
.services-role__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.services-role__body p { margin: 0 0 20px; }
.services-role__body p:last-child { margin: 0; }

/* ----- サービスリスト ----- */
.services-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.services-list__item:not(:last-child) {
	border-bottom: 2px solid #ececec;
}
/* 最後の項目は枠線がないため下パディングを 0 にし、セクション間ギャップを他と揃える */
.services-list__item:last-child .services-list__link { padding-bottom: 0; }
.services-list__link {
	position: relative;
	display: block;
	padding: 32px 40px 32px 0;
	color: var(--color-text);
	text-decoration: none;
	transition: opacity .25s var(--ease);
}
.services-list__link:hover { opacity: 0.7; }
.services-list__head {
	display: inline-flex;
	align-items: baseline;
	gap: 12px;
	margin-bottom: 16px;
}
.services-list__no {
	font-family: var(--font-en-serif);
	font-size: 18px;
	line-height: 1;
	color: var(--color-text);
}
.services-list__type {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 15px;
	line-height: 1;
	color: var(--color-text);
}
.services-list__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 20px;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 6px;
}
.services-list__lead {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.6;
	color: var(--color-text);
	margin: 0;
}
.services-list__arrow {
	position: absolute;
	right: 20px;
	top: 50%;
	transform: translateY(-50%);
	font-size: 14px;
	color: var(--color-text);
	transition: transform .25s var(--ease);
}
.services-list__link:hover .services-list__arrow { transform: translate(6px, -50%); }

/* ----- 各サービス詳細（Service Detail × 4） ----- */
.svc-detail {
	padding-top: 80px;
}
.svc-detail:first-of-type { padding-top: 0; }
/* アンカー遷移時に「SERVICE 02〜04」見出しが side nav の「私たちの役割」と同じ高さに来るよう、
   padding-top 分のオフセットを scroll-margin-top で打ち消す */
.svc-detail:not(:first-of-type) {
	scroll-margin-top: -80px;
}

.svc-detail__header {
	display: inline-flex;
	align-items: center;
	gap: 18px;
	margin-bottom: 16px;
}
.svc-detail__num {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
	margin: 0;
	order: 2;
}
.svc-detail__line {
	display: block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
	order: 1;
}
.svc-detail__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 20px;
	line-height: 1.5;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 30px;
}
.svc-detail__visual {
	background: rgba(242, 243, 241, 0.6);
	width: 100%;
	aspect-ratio: 655 / 337;
	margin-bottom: 50px;
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: hidden;
}
.svc-detail__visual img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}
.svc-detail__visual-placeholder {
	color: #9b9b9b;
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 16px;
}
.svc-detail__sub {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 16px;
	line-height: 1.875;
	color: var(--color-text);
	margin: 0 0 16px;
}
.svc-detail__list ul {
	list-style: disc;
	margin: 0;
	padding-left: 21px;
}
.svc-detail__list li {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 2;
	color: var(--color-text);
}

.svc-detail__intro {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 16px;
	line-height: 1.625;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 50px 0 0;
	/* 線を文字に追従させる：text-decoration で改行時も各行の文字幅に合わせる */
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-decoration-color: var(--color-text);
	text-underline-offset: 12px;
	text-decoration-skip-ink: none;
}

.svc-detail__block {
	position: relative;
	padding-left: 30px;
	border-left: 5px solid var(--color-text);
	margin-top: 32px;
}
/* intro 直後の最初のブロックだけ、下線から見出しまで 64px の見た目になるよう余白を追加 */
.svc-detail__intro + .svc-detail__block { margin-top: 70px; }
.svc-detail__block-title {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 16px;
	line-height: 1;
	color: var(--color-text);
	margin: 0 0 20px;
}
.svc-detail__block-body {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 2;
	color: var(--color-text);
}
.svc-detail__block-body p { margin: 0 0 14px; }
.svc-detail__block-body p:last-child { margin: 0; }

@media (max-width: 768px) {
	.svc-detail { padding-top: 60px; }
	.svc-detail:not(:first-of-type) { scroll-margin-top: -60px; } /* SP も padding-top に合わせて補正 */
	.svc-detail__num { font-size: 13px; }
	.svc-detail__line { width: 20px; }
	.svc-detail__title { font-size: 18px; line-height: 1.66; margin-bottom: 24px; }
	.svc-detail__visual { aspect-ratio: 296 / 152; margin-bottom: 36px; }
	.svc-detail__visual-placeholder { font-size: 14px; }
	.svc-detail__sub { font-size: 16px; }
	.svc-detail__list li { font-size: 14px; line-height: 2; }
	.svc-detail__intro { margin-top: 28px; line-height: 2.6; }
	.svc-detail__block { margin-top: 32px; padding-left: 25px; border-left-width: 5px; }
	.svc-detail__intro + .svc-detail__block { margin-top: 44px; }
	.svc-detail__block-title { font-size: 16px; }
	.svc-detail__block-body { font-size: 14px; line-height: 1.85; }
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.services-content { padding: 0 0 70px; }
	.services-content__inner {
		grid-template-columns: 1fr;
		padding: 0;
	}

	/* SP：折りたたみメニュー */
	.services-nav {
		padding-top: 0;
		margin-bottom: 64px;
	}
	.services-nav__list { gap: 5px; }
	.services-nav__link + .services-nav__link--head,
	.services-nav__link--head + .services-nav__link--sub,
	.services-nav__link--sub + .services-nav__link--sub,
	.services-nav__link--sub + .services-nav__link--head {
		margin-top: 0;
	}
	.services-nav__sticky.is-open .services-nav__list { padding: 5px 0; }

	/* アンカー時はヘッダー分のオフセット + 余白を確保 */
	.services-role,
	.services-section,
	.svc-detail {
		scroll-margin-top: calc( var(--header-h-sp) + 20px );
	}
	.services-nav__sticky {
		position: static;
		padding-left: 0;
		background: var(--color-bg);
	}
	.services-nav__sp-toggle {
		display: flex;
		align-items: center;
		justify-content: space-between;
		width: 100%;
		height: 50px;
		padding: 0 20px 0 25px;
		margin: 0 var(--gutter-sp);
		width: calc(100% - var(--gutter-sp) * 2);
		background: #fff;
		border: 0;
		font-family: var(--font-jp-mincho);
		font-size: 14px;
		letter-spacing: 0.1em;
		color: var(--color-text);
		cursor: pointer;
	}
	/* MENU右端の矢印：強み・メソッドと同じ ↓ 文字に統一 */
	.services-nav__sp-arrow {
		width: auto;
		height: auto;
		border: 0;
		transform: none;
		font-size: 12px;
		line-height: 1;
		transition: transform .35s var(--ease);
	}
	.services-nav__sp-arrow::before { content: "↓"; }
	.services-nav__sp-toggle[aria-expanded="true"] .services-nav__sp-arrow {
		transform: rotate(180deg);
	}
	/* 開閉アニメーションを「強み・メソッド」と同じ滑らかさに：
	   max-height だけでなく opacity + blur をフェード＝ノイズが整う動き */
	.services-nav__list {
		max-height: 0;
		overflow: hidden;
		gap: 0;
		opacity: 0;
		filter: blur(4px);
		margin: 0 var(--gutter-sp);
		background: #fff;
		transition:
			max-height .6s var(--ease),
			opacity   .5s var(--ease),
			filter    .8s var(--ease);
	}
	.services-nav__sticky.is-open .services-nav__list {
		max-height: 600px;
		opacity: 1;
		filter: blur(0);
	}
	.services-nav__link {
		position: relative;
		display: flex;
		align-items: center;
		justify-content: space-between; /* ラベル左／矢印右 */
		height: 50px;
		padding: 0 20px 0 25px;   /* MENUボタンに合わせて右パディングを 20px に */
		background: transparent;
		border-top: 1px solid var(--color-bg);
		font-family: var(--font-jp-mincho);
		font-size: 14px;
		letter-spacing: 0.1em;
		transition: background .25s var(--ease), color .25s var(--ease);
	}
	.services-nav__link--sub { font-family: var(--font-jp-mincho); }
	/* 右端に ↓ 矢印（強み・メソッドの3ステップボタンと同じ意匠） */
	.services-nav__link::after {
		content: "↓";
		font-size: 12px;
		line-height: 1;
		transition: transform .35s var(--ease);
	}
	.services-nav__link:hover {
		background: var(--color-text);
		color: #fff;
	}
	.services-nav__link:hover::after { transform: translateY(2px); }
	/* SP ではアクティブ時の黒背景・●ドット・文字サイズ変更を行わない */
	.services-nav__link--head.is-active,
	.services-nav__link--sub.is-active {
		background: #fff;
		color: var(--color-text);
		font-size: 14px;
		font-weight: 400;
		padding: 0 20px 0 25px;
	}
	.services-nav__link--head.is-active::before,
	.services-nav__link--sub.is-active::before {
		display: none;
	}

	.services-card {
		padding: 50px var(--gutter-sp) 32px;
	}

	.services-section,
	.services-role { padding-bottom: 72px; }
	.services-card > .services-section:last-child,
	.services-card > .services-role:last-child { padding-bottom: 0; }
	.services-section__label { font-size: 14px; margin-bottom: 20px; }
	.services-section__title { font-size: 22px; margin-bottom: 30px; }

	/* Our Role SP */
	.services-role__label { font-size: 14px; gap: 10px; margin-bottom: 32px; }
	.services-role__dot { width: 10px; height: 10px; }
	.services-role__heading { margin-bottom: 30px; }
	.services-role__heading p {
		font-size: 23px;
		line-height: 1.74;
		letter-spacing: 0.05em;
	}
	.services-role__body { font-size: 15px; line-height: 1.73; }
	.services-role__body p { margin-bottom: 18px; }

	.services-list__link { padding: 28px 28px 28px 0; }
	.services-list__head { gap: 10px; margin-bottom: 14px; }
	.services-list__no { font-size: 18px; }
	.services-list__type { font-size: 15px; }
	.services-list__title { font-size: 18px; line-height: 1.5; }
	.services-list__lead { font-size: 14px; line-height: 1.7; }
	.services-list__arrow { right: 0; font-size: 12px; }
}

/* =========================================================
   サービス：料金の目安（Price）
   ========================================================= */
/* 旧：detail/price 間に余分な padding-top があり、合計160px になっていたため削除して統一 */

/* (Price) ラベルは薄いグレー */
.services-section__label--muted {
	color: #e0e0e0;
}

.svc-price__intro {
	font-size: 15px;
	line-height: 1.93;
	color: var(--color-text);
	margin-bottom: 40px;
}
.svc-price__intro p { margin: 0; }

.svc-price__table {
	margin: 0 0 30px;
}
.svc-price__row {
	display: grid;
	grid-template-columns: 309px 1fr;
	min-height: 45px;
	border: 1px solid #d9d9d9;
}
.svc-price__row + .svc-price__row {
	border-top: none;
}
.svc-price__name {
	background: #f5f5f5;
	padding: 10px 16px;
	font-family: var(--font-jp-mincho);
	font-size: 15px;
	line-height: 1.5;
	letter-spacing: 0.05em;
	color: var(--color-text);
	border-right: 1px solid #d9d9d9;
	display: flex;
	align-items: center;
}
.svc-price__price {
	margin: 0;
	padding: 10px 16px;
	font-family: var(--font-jp-mincho);
	font-size: 15px;
	line-height: 1.5;
	letter-spacing: 0.05em;
	color: var(--color-text);
	display: flex;
	align-items: center;
}

.svc-price__notes {
	font-size: 14px;
	line-height: 1.85;
	color: var(--color-text);
	margin-bottom: 60px;
}
.svc-price__notes p { margin: 0; }

.svc-price__cta {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 48px;
}
.svc-price__cta-text {
	display: inline-block;
	font-family: var(--font-jp-mincho);
	font-size: 16px;
	line-height: 1.65;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
	white-space: nowrap;
	/* 線を文字に追従させる */
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-decoration-color: var(--color-text);
	text-underline-offset: 10px;
	text-decoration-skip-ink: none;
}
.svc-price__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 200px;
	height: 44px;
	border: 1px solid var(--color-text);
	border-radius: 22px;
	background: transparent;
	color: var(--color-text);
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 16px;
	letter-spacing: 0.04em;
	text-decoration: none;
	transition: background-color .6s var(--ease), color .6s var(--ease);
}
.svc-price__button:hover {
	background: var(--color-text);
	color: var(--color-white);
}

@media (max-width: 768px) {
	/* 旧：SP も同様の理由で削除 */
	.svc-price__intro { font-size: 15px; line-height: 1.93; margin-bottom: 28px; }

	.svc-price__table { margin-bottom: 28px; }
	.svc-price__row {
		grid-template-columns: 1fr;
		height: auto;
		min-height: 76px;
	}
	.svc-price__row + .svc-price__row {
		border-top: 1px solid #d9d9d9;
		margin-top: -1px;
	}
	.svc-price__name {
		padding: 0 14px;
		height: 38px;
		font-size: 14px;
		border-right: none;
	}
	.svc-price__price {
		padding: 0 14px;
		height: 38px;
		font-size: 14px;
		border-top: 1px solid #d9d9d9;
	}

	.svc-price__notes { font-size: 13px; line-height: 1.7; margin-bottom: 42px; }

	.svc-price__cta { gap: 40px; align-items: stretch; }
	.svc-price__cta-text {
		display: block;
		width: 100%;
		padding: 0;
		font-size: 16px;
		line-height: 2.2;
		letter-spacing: 0.05em;
		white-space: normal;
		background-image: none;
		text-underline-offset: 8px;
	}
}

/* =========================================================
   料金・プラン詳細（モーダル）
   ========================================================= */
.pricing-modal {
	position: fixed;
	inset: 0;
	z-index: 1000;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: none;
	opacity: 0;
	visibility: hidden;
	transition: opacity .9s var(--ease), visibility 0s linear .9s;
}
.pricing-modal.is-open {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transition: opacity .9s var(--ease), visibility 0s linear 0s;
}
.pricing-modal__backdrop {
	position: absolute;
	inset: 0;
	background: rgba(34, 34, 34, 0.55);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
}
.pricing-modal__dialog {
	position: relative;
	z-index: 2;
	width: min(1100px, calc(100vw - 80px));
	max-height: calc(100vh - 80px);
	background: #fff;
	overflow: hidden auto;
	transform: translateY(20px);
	filter: blur(8px);
	opacity: 0;
	transition:
		opacity .9s var(--ease),
		filter 1.1s var(--ease),
		transform .9s var(--ease);
}
.pricing-modal.is-open .pricing-modal__dialog {
	transform: translateY(0);
	filter: blur(0);
	opacity: 1;
}
.pricing-modal__close {
	position: absolute;
	top: 18px;
	right: 18px;
	width: 32px;
	height: 32px;
	border: 0;
	background: transparent;
	font-size: 24px;
	font-family: var(--font-en-serif);
	color: var(--color-text);
	cursor: pointer;
	z-index: 3;
	transition: opacity .25s var(--ease);
}
.pricing-modal__close:hover { opacity: .6; }

.pricing-modal__inner {
	padding: 70px 100px 80px;
}
.pricing-modal__label {
	font-family: var(--font-jp-mincho);
	font-size: 18px;
	letter-spacing: 0.05em;
	color: #e0e0e0;
	margin: 0 0 18px;
}
.pricing-modal__heading {
	font-family: var(--font-jp-mincho);
	font-size: 26px;
	letter-spacing: 0.1em;
	line-height: 1.4;
	color: var(--color-text);
	margin: 0 0 50px;
}
.pricing-modal__intro {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	color: var(--color-text);
	margin: 0 0 60px;
}
.pricing-modal__intro p { margin: 0; }

.pricing-modal__section { margin-bottom: 50px; }
.pricing-modal__subhead {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 15px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 18px;
}
.pricing-modal__subbody {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	color: var(--color-text);
}
.pricing-modal__subbody p { margin: 0 0 8px; }
.pricing-modal__subbody p:last-child { margin: 0; }

.pricing-plans {
	display: flex;
	flex-direction: column;
	gap: 30px;
}
.pricing-plan {
	background: #f2f3f1;
	padding: 40px;
}
.pricing-plan__num {
	display: flex;
	align-items: center;
	gap: 18px;
	margin-bottom: 18px;
}
.pricing-plan__num-line {
	display: block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
}
.pricing-plan__num-text {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
}
.pricing-plan__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 20px;
	letter-spacing: 0.1em;
	line-height: 1.5;
	color: var(--color-text);
	margin: 0 0 16px;
}
.pricing-plan__lead {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 16px;
	line-height: 1.85;
	color: var(--color-text);
	margin: 0 0 24px;
}
.pricing-plan__card {
	background: #fff;
	padding: 8px 30px;
}
.pricing-plan__row {
	display: grid;
	grid-template-columns: 60px 1fr;
	gap: 16px;
	padding: 18px 0;
	border-bottom: 2px solid #f2f3f1;
	margin: 0;
}
.pricing-plan__row:last-child { border-bottom: 0; }
.pricing-plan__row-label {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
	padding-top: 2px;
}
.pricing-plan__row-body {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.7;
	color: var(--color-text);
	margin: 0;
}
.pricing-plan__row-body ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.pricing-plan__row-body li {
	position: relative;
	padding-left: 18px;
	margin: 0;
}
.pricing-plan__row-body li::before {
	content: "●";
	position: absolute;
	left: 0;
	top: 0;
	font-size: 9px;
	line-height: inherit;
}

@media (max-width: 768px) {
	.pricing-modal__dialog {
		width: calc(100vw - 24px);
		max-height: calc(100vh - 40px);
	}
	.pricing-modal__close { top: 10px; right: 10px; }
	.pricing-modal__inner { padding: 50px 24px 50px; }
	.pricing-modal__label { font-size: 14px; margin-bottom: 12px; }
	.pricing-modal__heading { font-size: 20px; line-height: 1.6; margin-bottom: 30px; }
	.pricing-modal__intro { font-size: 14px; line-height: 1.85; margin-bottom: 36px; }
	.pricing-modal__section { margin-bottom: 30px; }
	.pricing-modal__subhead { font-size: 14px; }
	.pricing-modal__subbody { font-size: 14px; line-height: 1.85; }

	.pricing-plans { gap: 20px; }
	.pricing-plan { padding: 28px 22px; }
	.pricing-plan__title { font-size: 17px; line-height: 1.6; }
	.pricing-plan__lead { font-size: 14px; line-height: 1.85; margin-bottom: 18px; }
	.pricing-plan__card { padding: 4px 18px; }
	.pricing-plan__row { grid-template-columns: 1fr; gap: 8px; padding: 14px 0; }
	.pricing-plan__row-label { font-size: 13px; }
	.pricing-plan__row-body { font-size: 13px; }
}

/* =========================================================
   サービス：よくあるご質問（FAQ）
   ========================================================= */
/* 旧：price/faq 間に余分な padding-top があり、合計160px になっていたため削除して統一 */

.svc-faq__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: 50px;
}
.svc-faq__head .services-section__title {
	margin-bottom: 0;
}
/* .svc-faq__more はレイアウト用の名前空間として残す */

.svc-faq__list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.svc-faq__item {
	background: #f2f3f1;
}
.svc-faq__toggle {
	box-sizing: border-box;
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 14px;
	width: 100%;
	min-height: 50px;
	padding: 0 22px 0 15px;
	background: transparent;
	border: 0;
	color: var(--color-text);
	text-align: left;
	cursor: pointer;
	font: inherit;
	line-height: 1;
	transition: opacity .6s var(--ease);
}
.svc-faq__toggle:hover { opacity: .7; }
.svc-faq__q {
	display: inline-block;
	min-width: 22px;   /* マーカー（Q.）の列幅を固定して、質問文の開始Xを安定させる */
	font-family: var(--font-jp-mincho);
	font-size: 20px;
	letter-spacing: 0.1em;
	line-height: 1;
}
.svc-faq__text {
	font-family: var(--font-jp-mincho);
	font-size: 16px;
	line-height: 1;
	letter-spacing: 0.1em;
	color: var(--color-text);
}
/* 矢印：縦線 + 下向きの矢頭（↓ 形状）— インラインSVG。
   2倍解像度の viewBox（10×22）で描画 → 5×11pxで縮小表示することで斜め線をシャープに */
.svc-faq__arrow {
	display: block;
	width: 5px;
	height: 11px;
	flex-shrink: 0;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 22'><line x1='5' y1='0' x2='5' y2='20' stroke='%23222222' stroke-width='1.5'/><path d='M0 15 L5 20 L10 15' fill='none' stroke='%23222222' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 5px 11px;
	transition: transform .5s var(--ease);
}
.svc-faq__toggle[aria-expanded="true"] .svc-faq__arrow {
	transform: rotate(180deg);
}

.svc-faq__panel {
	max-height: 0;
	overflow: hidden;
	transition: max-height 1.0s var(--ease);
}
.svc-faq__item.is-open .svc-faq__panel {
	max-height: 800px;
}
.svc-faq__panel-inner {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 12px;
	/* 「A.」の開始Xを「質問テキストの開始X」に合わせる：
	   toggle padding-left(15) + Q.列幅(22) + toggle gap(14) = 51px */
	padding: 4px 22px 22px 51px;
	opacity: 0;
	filter: blur(8px);
	transform: translateY(8px);
	transition:
		opacity   .9s var(--ease),
		filter    1.1s var(--ease),
		transform .9s var(--ease);
}
.svc-faq__item.is-open .svc-faq__panel-inner {
	opacity: 1;
	filter: blur(0);
	transform: translateY(0);
}
.svc-faq__a {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.85;
	letter-spacing: 0.1em;
	color: var(--color-text);
	padding-top: 1px;
}
.svc-faq__answer {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.85;
	letter-spacing: 0.1em;
	color: var(--color-text);
}
.svc-faq__answer p { margin: 0 0 8px; }
.svc-faq__answer p:last-child { margin: 0; }

@media (max-width: 768px) {
	/* 旧：SP も同様の理由で削除 */

	.svc-faq__head {
		flex-direction: column;
		align-items: flex-start;
		gap: 42px;
		margin-bottom: 32px;
	}

	.svc-faq__toggle {
		grid-template-columns: auto 1fr auto;
		gap: 10px;
		padding: 14px 16px 14px 14px;
		min-height: 50px;
		align-items: start;
		line-height: 1.66;
	}
	.svc-faq__q { font-size: 18px; line-height: 1.66; min-width: 20px; }
	.svc-faq__text { font-size: 15px; line-height: 1.66; letter-spacing: 0.05em; }
	.svc-faq__arrow { width: 5px; height: 10px; margin-top: 8px; background-size: 5px 10px; background-position: center; }
	.svc-faq__panel { padding: 0; }
	/* 「A.」の開始Xを「質問テキストの開始X」に合わせる：
	   toggle padding-left(14) + Q.列幅(20) + toggle gap(10) = 44px */
	.svc-faq__panel-inner { padding: 4px 16px 18px 44px; }
	.svc-faq__a, .svc-faq__answer { font-size: 13px; line-height: 1.85; }
}

/* =========================================================
   強み・メソッド：3つのステップ
   左：縦書きタイトル sticky / 右：3ステップが縦スクロール
   ========================================================= */
.strength-steps {
	background: var(--color-bg);
	padding: 100px 0 80px;
}
.strength-steps__inner {
	/* D ライト：strength-intro と同じ可変幅にして起点を揃える */
	max-width: clamp(1100px, 82vw, 1600px);
	margin: 0 auto;
	padding: 0 var(--gutter-pc);
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 60px;
	align-items: stretch;
}

/* ----- 左：sticky タイトル ----- */
.strength-steps__head { min-width: 0; }
.strength-steps__head-sticky {
	position: sticky;
	top: calc( var(--header-h-pc) + 40px );
	display: flex;
	flex-direction: row-reverse;
	align-items: flex-start;
	justify-content: flex-end;    /* row-reverse 下では「flex-end = 視覚的に左」。タイトル左端をカラム左に寄せる */
	gap: 36px;
	min-height: 280px;
}
.strength-steps__en {
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin-top: 8px;
}
.strength-steps__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 0;
	display: flex;
}
.strength-steps__title p {
	writing-mode: vertical-rl;
	text-orientation: upright;
	-webkit-text-orientation: upright;
	font-size: 28px;
	line-height: 1.25;
	letter-spacing: 0.1em;
	margin: 0;
}

/* ----- 右：本文 ----- */
.strength-steps__body {
	min-width: 0;
	/* D ライト：inner いっぱいに広げて左右対称に */
	max-width: none;
}

.strength-step {
	padding: 80px 0;
	border-top: 1px dotted rgba(34, 34, 34, 0.5);
}
.strength-step:first-child { border-top: none; padding-top: 0; }
.strength-step__num {
	scroll-margin-top: calc( var(--header-h-pc) + 80px );
}
/* 2つ目以降は padding-top の分だけ余白を増やして 01 と位置を揃える */
.strength-step:not(:first-child) .strength-step__num {
	scroll-margin-top: calc( var(--header-h-pc) + 120px );
}
@media (max-width: 768px) {
	.strength-step__num {
		scroll-margin-top: calc( var(--header-h-sp) + 50px );
	}
	.strength-step:not(:first-child) .strength-step__num {
		scroll-margin-top: calc( var(--header-h-sp) + 80px );
	}
}

.strength-step__num {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 45px;
	line-height: 1;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 30px;
}
.strength-step__label {
	display: inline-flex;
	align-items: center;
	gap: 18px;
	margin: 0 0 30px;
	font-family: var(--font-en-serif);
	font-size: 16px;
	letter-spacing: 0.15em;
	color: var(--color-text);
}
.strength-step__label-line {
	display: inline-block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
}

.strength-step__title {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 20px;
	line-height: 2;
	color: var(--color-text);
	margin: 0 0 24px;
}
.strength-step__body {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.86;
	letter-spacing: 0.03em;
	color: var(--color-text);
}
.strength-step__body p { margin: 0 0 22px; }
.strength-step__body p:last-child { margin: 0; }
.strength-step__body ul {
	list-style: disc;
	margin: 0 0 22px;
	padding-left: 21px;
}
.strength-step__body ul li {
	font-weight: 500;
	line-height: 1.86;
}
.strength-step__note {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 14px;
	line-height: 1.57;
	letter-spacing: 0.03em;
	color: var(--color-text);
	margin: 30px 0 0;
}

@media (max-width: 768px) {
	.strength-steps { padding: 60px 0 40px; }
	.strength-steps__inner {
		grid-template-columns: 60px 1fr;
		gap: 24px;
		padding: 0 var(--gutter-sp);
	}

	.strength-steps__head-sticky {
		position: sticky;
		top: calc( var(--header-h-sp) + 40px );
		min-height: 0;
		gap: 14px;
		flex-direction: row-reverse;
		justify-content: flex-start;
		align-items: flex-start; /* SP では日本語タイトルと英語タイトルの上端を揃える */
	}
	.strength-steps__title p { font-size: 23px; }
	.strength-steps__en {
		font-size: 11px;
		margin-top: 1px;
	}

	.strength-steps__body {
		max-width: 100%;
		min-width: 0;
	}

	.strength-step { padding: 50px 0; }
	.strength-step__num { font-size: 38px; margin-bottom: 22px; }
	.strength-step__label {
		font-size: 13px;
		letter-spacing: 0.15em;
		gap: 12px;
		margin-bottom: 22px;
	}
	.strength-step__label-line { width: 20px; }

	/* SP では数字・ラベルと左端を揃えるため、見出し・本文・注記も左揃え。
	   max-width を解除して本文カラムいっぱいに広げる */
	.strength-step__title,
	.strength-step__body,
	.strength-step__note {
		max-width: none;
	}
	.strength-step__title { font-size: 18px; line-height: 1.66; margin-bottom: 36px; }
	.strength-step__body { font-size: 14px; }
	.strength-step__body p { margin-bottom: 20px; }
	.strength-step__note { font-size: 13px; line-height: 1.7; }
}

/* =========================================================
   強み・メソッド：大切にしていること
   ========================================================= */
.commitment {
	background: var(--color-bg);
	padding: 80px 0 100px;
}
.commitment__inner {
	max-width: none;                                  /* 画面幅いっぱい */
	margin: 0;
	padding: 0 var(--gutter-pc) 0 0;                  /* 左は0、右に余白 */
	display: grid;
	grid-template-columns: minmax(0, 45%) 1fr;        /* 画像45% / テキスト1fr */
	gap: clamp(40px, 6vw, 120px);
	align-items: center;                              /* テキストを画像中央に揃える */
}
.commitment__visual {
	width: 100%;
	aspect-ratio: 584 / 551;
	overflow: hidden;
	background: #d8d8d4;
}
.commitment__visual img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.commitment__visual-placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: #d8d8d4;
}

.commitment__text {
	max-width: 560px;
	padding-top: 0;
}
.commitment__en {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 36px;
}
.commitment__title {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 0 0 30px;
}
.commitment__title p {
	font-size: 24px;
	line-height: 2;
	letter-spacing: 0.1em;
	margin: 0;
}
.commitment__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.73;
	letter-spacing: 0.03em;
	color: var(--color-text);
}
.commitment__body p { margin: 0 0 22px; }
.commitment__body p:last-child { margin: 0; }

/* ----- CTA カード ----- */
.commitment__cta {
	margin-top: 40px;
	background: #fff;
	padding: 30px;
	max-width: 453px;
}
.commitment__cta-heading {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 19px;
	line-height: 1.4;
	letter-spacing: 0.03em;
	color: var(--color-text);
	margin: 0 0 16px;
}
/* SP 専用改行：PC では非表示 */
.commitment__cta-heading-break-sp { display: none; }
@media (max-width: 768px) {
	.commitment__cta-heading-break-sp { display: initial; }
}
.commitment__cta-body {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.85;
	letter-spacing: 0.03em;
	color: var(--color-text);
	margin: 0 0 24px;
}
.commitment__cta-link {
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	width: 150px;
	padding-bottom: 6px;
	border-bottom: 1px solid var(--color-text);
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 14px;
	letter-spacing: 0.1em;
	color: var(--color-text);
}
.commitment__cta-arrow {
	font-size: 12px;
	transition: transform .25s var(--ease);
}
.commitment__cta-link:hover .commitment__cta-arrow { transform: translateX(4px); }

@media (max-width: 768px) {
	.commitment { padding: 0 0 80px; }
	.commitment__inner {
		grid-template-columns: 1fr;
		gap: 0;
		padding: 0;
	}
	.commitment__visual {
		/* 左端はビューポート左端にブリード、右端は本文右端（viewport - gutter-sp）に揃える */
		width: calc(100% - var(--gutter-sp));
		margin: 0;
		aspect-ratio: 345 / 245;
	}
	.commitment__text {
		max-width: 100%;
		padding: 50px var(--gutter-sp) 0;
	}
	.commitment__en {
		font-size: 11px;
		margin-bottom: 26px;
	}
	.commitment__title { margin-bottom: 24px; }
	.commitment__title p { font-size: 23px; line-height: 1.74; }
	.commitment__body { font-size: 15px; }
	.commitment__body p { margin-bottom: 20px; }

	.commitment__cta {
		margin: 40px 0 0;
		padding: 30px 25px;
		max-width: 100%;
	}
	.commitment__cta-heading { font-size: 19px; line-height: 1.5; }
	.commitment__cta-body { font-size: 14px; }
}

/* =========================================================
   強み・メソッド：サービスのイメージ図（画像で表示）
   ========================================================= */
.strength-diagram {
	background: var(--color-bg);
	padding: 35px 0 100px;
}
.strength-diagram__inner {
	/* D ライト：他セクション（intro, steps）と同じ可変幅。画像は max-width: 1200px で頭打ち維持 */
	max-width: clamp(1100px, 82vw, 1600px);
	margin: 0 auto;
	padding: 0 var(--gutter-pc);
}
.strength-diagram__img {
	display: block;
	width: 100%;
	max-width: 1200px;
	height: auto;
	margin: 0 auto;
	background: #fff;
}

@media (max-width: 768px) {
	.strength-diagram { padding: 22px 0 80px; }
	.strength-diagram__inner { padding: 0 var(--gutter-sp); }
}

/* =========================================================
   Contact CTA
   ========================================================= */
/* Contact CTA と Footer を1枚の水面背景でつなぐラッパ */
.site-bottom {
	background-color: #222;
	background-image: url('../images/footer/footer-bg-dark.png');
	background-repeat: no-repeat;
	background-position: center top;
	background-size: cover;
	color: var(--color-white);
}

.contact-cta {
	background: transparent; /* ラッパの背景を透過させる */
	color: var(--color-white);
	padding: 130px 0 140px;
}
.contact-cta__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 49px; /* フッター（.site-footer__inner）の左右パディングと揃える */
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 40px;
}
.contact-cta__text {
	flex: 1 1 auto;
}
.contact-cta__en {
	font-family: var(--font-en-serif);
	font-size: 70px;
	line-height: 1;
	letter-spacing: 0.05em;
	margin-bottom: 60px;
}
/* ボタンの上端を __heading の先頭行（「その決断の、一歩手前で。」）と揃える：
   __en の高さ(70px) + __en の margin-bottom(60px) = 130px */
.contact-cta__heading {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	font-size: 28px;
	line-height: 2;
	letter-spacing: 0.1em;
	margin: 0 0 24px;
}
.contact-cta__heading span {
	display: block;
}
.contact-cta__desc {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.75;
	letter-spacing: 0.05em;
	color: rgba(255, 255, 255, 0.85);
}
.contact-cta__action {
	flex: 0 0 auto;
	margin-top: 130px; /* __en(70px) + __en の margin-bottom(60px) と一致させ、ボタン上端を __heading 先頭行に揃える */
}
.contact-cta__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 300px;
	height: 80px;
	border: 2px solid var(--color-white);
	border-radius: 40px;
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 20px;
	color: var(--color-white);
	transition: background .25s var(--ease), color .25s var(--ease);
}
.contact-cta__button:hover {
	background: var(--color-white);
	color: var(--color-text);
}

@media (max-width: 768px) {
	.contact-cta { padding: 50px 0 0; } /* 下余白を0、footer との間隔は __action margin-bottom 60px で確保 */
	.contact-cta__inner {
		padding: 0 30px;
		flex-direction: column;
		align-items: stretch;
		gap: 48px;
	}
	.contact-cta__en {
		font-size: 55px;
		letter-spacing: 0.05em;
		margin-bottom: 28px;
	}
	.contact-cta__heading {
		font-size: 23px;
		line-height: 1.74;
		letter-spacing: 0.05em;
	}
	.contact-cta__desc {
		font-size: 15px;
		line-height: 1.87;
		letter-spacing: 0.05em;
	}
	.contact-cta__action { margin-top: 0; margin-bottom: 60px; } /* SP では PC の margin-top: 130px をリセット */
	.contact-cta__button {
		width: 100%;
		max-width: 100%;
		height: 80px;
		font-size: 20px;
	}
}

/* =========================================================
   Site Footer
   ========================================================= */
.site-footer {
	background: transparent; /* .site-bottom の水面背景を透過させる */
	color: var(--color-white);
	padding: 80px 0 36px;
}
.site-footer__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 49px;
}

.site-footer__top {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 40px;
	padding-bottom: 60px;
	border-bottom: 1px solid rgba(255,255,255,0.2);
}
.site-footer__brand {
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.site-footer__logo {
	font-family: var(--font-en-serif);
	font-size: 26px;
	letter-spacing: 0.1em;
	line-height: 1;
	margin: 0 0 24px;
}
.site-footer__logo img {
	display: block;
	width: auto;
	height: 36px;
}
.site-footer__name,
.site-footer__address {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 16px;
	line-height: 1.5;
	letter-spacing: 0.05em;
}

.site-footer__tagline {
	font-family: var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-white);
	text-align: right;
}
.site-footer__tagline p {
	font-size: 24px;
	line-height: 1.85;
	letter-spacing: 0.1em;
	margin: 0;
}
.site-footer__tagline strong {
	font-weight: 500;
	font-size: 40px;
	letter-spacing: 0.06em;
}

.site-footer__bottom {
	padding-top: 22px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 18px;
	color: #939393;
}
.site-footer__policy-label {
	font-family: var(--font-en-serif);
	font-size: 11px;
	letter-spacing: 0.05em;
	color: #939393;
}
.site-footer__policy {
	display: flex;
	align-items: center;
	gap: 0;
	flex-wrap: wrap;
	justify-content: center;
}
.site-footer__policy li {
	position: relative;
	padding: 0 40px;
}
.site-footer__policy li + li::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 0;
	transform: translateY(-50%);
	width: 1px;
	height: 8px;
	background: #939393;
}
.site-footer__policy a {
	font-family: var(--font-jp-gothic);
	font-size: 13px;
	color: #939393;
	transition: color .25s var(--ease);
}
.site-footer__policy a:hover { color: var(--color-white); }

.site-footer__copy {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: #939393;
}

@media (max-width: 768px) {
	.site-footer { padding: 0 0 24px; } /* 上余白 0、cta との間隔は __action で確保。下余白はコピーライト下の余白 */
	.site-footer__inner { padding: 0 30px; }

	.site-footer__top {
		flex-direction: column;
		gap: 160px;
		padding-bottom: 30px;
	}
	/* SPはタグラインを先、ブランド情報を後に表示 */
	.site-footer__tagline { order: 1; text-align: left; }
	.site-footer__brand   { order: 2; }

	.site-footer__tagline p {
		font-size: 27px;
		line-height: 1.6;
		letter-spacing: 0.1em;
	}
	.site-footer__tagline strong { font-size: 45px; }

	.site-footer__logo { font-size: 26px; margin-bottom: 16px; }
	.site-footer__name { font-size: 16px; }
	.site-footer__address { font-size: 14px; }

	.site-footer__bottom { gap: 16px; padding-top: 24px; }
	.site-footer__policy {
		flex-direction: column;
		gap: 8px;
		text-align: center;
	}
	.site-footer__policy li { padding: 0; }
	.site-footer__policy li + li::before { display: none; }
	/* SP では line-height を引き締めて、視覚上の余白を gap 値に近づける */
	.site-footer__policy a { line-height: 1; }
}

/* =========================================================
   初回対話について ページ
   ヒーローは共通の .page-hero を使用（template-parts/page-hero.php）
   ========================================================= */

/* article 全体を sticky 範囲の親に（page-hero〜FAQ末尾までを内包） */
.flow {
	position: relative;
}

/* PC：page-hero 内の元タイトルは隠し、追従用 .flow-title を表示 */
.flow-title { display: none; }
@media (min-width: 769px) and (min-height: 600px) {
	/* PCでは元タイトルを視覚的に隠す（a11yには残す） */
	.flow .page-hero__sticky {
		position: absolute;
		width: 1px;
		height: 1px;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		overflow: hidden;
		white-space: nowrap;
	}
	.flow-title {
		display: block;
		position: absolute;
		top: 0;
		/* 追従の終点：FAQ最後のボックス末尾。.flow-content の padding-bottom (100px) 分を引く。 */
		bottom: 100px;
		left: 0;
		right: 0;
		pointer-events: none;
		z-index: 3;
		/* 下端付近（=FAQ末尾に近づく領域）でフェードアウト。
		   sticky 解除時にはタイトルが透明になっており、Contact 進入時に視覚的に残らない。 */
		-webkit-mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 500px), transparent calc(100% - 280px));
		mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 500px), transparent calc(100% - 280px));
	}
	.flow-title__sticky {
		position: sticky;
		top: calc( var(--header-h-pc) + 24px );
		max-width: var(--container);
		margin: 0 auto;
		padding-left: var(--gutter-pc);
		display: flex;
		align-items: flex-start;
		gap: 18px;
	}
	.flow-title__jp { margin: 0; } /* .page-hero__title の見た目を継承 */
	.flow-title__en { margin: 0; } /* PC で JP と上端を揃える */
}
@media print {
	.flow-title { display: none; }
}

/* コンテンツ全体（背景、レイアウト） */
.flow-content {
	background: var(--color-bg);
	padding: 60px 0 100px;
	position: relative;
}
.flow-content__inner {
	max-width: 754px;
	margin: 0 auto;
	padding: 0 20px;
}


/* イントロ */
.flow-intro { margin-bottom: 90px; }
.flow-intro__heading {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	line-height: 1.7;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 38px;
}
.flow-intro__lead {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 22px;
}
.flow-intro__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.flow-intro__body p { margin: 0 0 8px; }
.flow-intro__body p:last-child { margin: 0; }

/* セクション共通 */
.flow-section { padding: 60px 0; }
.flow-section__head {
	display: flex;
	align-items: center;
	gap: 18px;
	margin-bottom: 70px;
}
.flow-section__line {
	display: block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
}
.flow-section__label {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
	margin: 0;
	text-transform: uppercase;
}
.flow-section__title {
	font-family: var(--font-jp-mincho);
	font-weight: 400;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1.17;
	color: var(--color-text);
	margin: 0 0 40px;
}

/* ABOUT */
.flow-about__lead {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 18px;
	line-height: 1.66;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 60px;
}
.flow-about__list ul {
	list-style: disc;
	padding-left: 22.5px;
	margin: 0;
}
.flow-about__list li {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}

/* FLOW（ステップ）— 4 STEPカード */
.flow-steps {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
/* PC：ラベル列（01+STEP） / 本文列（タイトル+リード+補足） の2カラム */
.flow-step {
	display: grid;
	grid-template-columns: 110px 1fr;
	background: #fff;
	padding: 30px 30px 30px 30px;
}
.flow-step__label-area {
	grid-column: 1;
	grid-row: 1 / span 3;
	align-self: start; /* グリッド行をstretchせず、コンテンツ高さで配置→数字「01」は上端に固定 */
	display: flex;
	align-items: center; /* 上記のコンテンツ高さの中で STEP ラベルを数字に対して中央揃え */
	gap: 4px;
}
.flow-step__num {
	font-family: var(--font-en-serif);
	font-size: 40px;
	line-height: 1;
	letter-spacing: 0.15em;
	color: var(--color-text);
}
.flow-step__step-label {
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 10px;
	letter-spacing: 0.15em;
	color: var(--color-text);
}
.flow-step__title {
	grid-column: 2;
	grid-row: 1;
	margin: 0 0 14px;
	font-weight: 500;
	color: var(--color-text);
	line-height: 1.4;
}
.flow-step__title-inner {
	display: inline;
	padding-bottom: 6px;
	border-bottom: 1px solid var(--color-text);
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}
.flow-step__title-text {
	font-family: var(--font-jp-mincho);
	font-size: 18px;
	letter-spacing: 0.1em;
}
.flow-step__title-time {
	font-family: var(--font-jp-mincho);
	font-size: 14px;
	letter-spacing: 0.1em;
	/* 「（」の左サイドベアリング + 前文字の letter-spacing を相殺して余白を詰める */
	margin-left: -0.5em;
}
.flow-step__lead {
	grid-column: 2;
	grid-row: 2;
}
.flow-step__note {
	grid-column: 2;
	grid-row: 3;
	margin-top: 14px;
}
.flow-step__lead,
.flow-step__note {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.86;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.flow-step__lead p { margin: 0; }
.flow-step__note { margin-top: 14px; }
.flow-step__note p { margin: 0; }

/* THEMES — 攻め / 守り / 転機 の3カード */
.flow-themes {
	list-style: none;
	margin: 0 0 30px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 22px;
}
.flow-theme {
	background: transparent;
	border: 1px solid #fff;
	border-top: 5px solid #fff;  /* 上部のみ太く */
	padding: 40px 30px 30px;
	min-height: 246px;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}
.flow-theme__word {
	display: flex;
	align-items: baseline;
	gap: 4px;
	margin: 0 0 22px;
	font-family: var(--font-jp-mincho);
	color: var(--color-text);
	line-height: 1;
}
.flow-theme__kanji {
	font-size: 70px;
	line-height: 1;
	letter-spacing: 0.05em;
}
.flow-theme__sub {
	font-size: 24px;
	line-height: 1;
	letter-spacing: 0.1em;
}
.flow-theme__desc {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.86;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
	max-width: 180px;
}
.flow-themes__note {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.85;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
	text-align: right;
}

/* DETAILS */
.flow-details {
	margin: 0;
	border-top: 1px solid #d9d9d9;
}
.flow-details__row {
	display: grid;
	grid-template-columns: 115px 1fr;
	background: #fff;
	border: 1px solid #d9d9d9;
	border-top: none;
	margin: 0;
}
.flow-details__label {
	border-right: 1px solid #d9d9d9;
	padding: 20px 15px;
	font-family: var(--font-jp-mincho);
	font-size: 15px;
	letter-spacing: 0.05em;
	line-height: 1;
	color: var(--color-text);
	margin: 0;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start; /* 「資料」と「(任意)」の左端を揃える */
}
.flow-details__label-main,
.flow-details__label-sub {
	display: block;
	letter-spacing: 0; /* 親の 0.05em をリセットして両者の先頭X位置を揃える */
}
.flow-details__label-sub {
	margin-top: 6px;
	font-size: 11px;
}
.flow-details__body {
	padding: 20px 20px;
	margin: 0;
	font-family: var(--font-jp-mincho);
	font-size: 15px;
	letter-spacing: 0.05em;
	line-height: 1.73;
	color: var(--color-text);
}
.flow-details__main { margin: 0 0 12px; }
.flow-details__main:last-child { margin: 0; }
.flow-details__note {
	font-size: 14px;
	line-height: 1.6;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
}

/* QUESTION：FAQ周りはサービスページの .svc-faq__* を再利用 */
.flow-question__title-row {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: 40px;
}
.flow-question__title-row .flow-section__title { margin-bottom: 0; }

/* flow ページでは FAQ カードを白に（コンテキストにより色反転） */
.flow-section--question .svc-faq__item {
	background: #fff;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.flow-content {
		padding: 40px 0 32px; /* SP: FAQ → Contact 間を 132px に調整（32 + 32 + 68 = 132） */
	}
	.flow-content__inner {
		padding: 0 var(--gutter-sp);
	}
	/* SP: FAQ セクションの下余白を詰める（他セクションには影響なし） */
	.flow-section--question { padding-bottom: 32px; }
	/* SP: flow ページに続く Contact CTA の上余白を圧縮 */
	.page-template-page-flow .contact-cta,
	.page-template-page-flow-php .contact-cta { padding-top: 68px; }

	.flow-intro { margin-bottom: 60px; }
	.flow-intro__heading { font-size: 19px; line-height: 1.66; margin-bottom: 28px; }
	.flow-intro__lead { font-size: 14px; line-height: 1.85; margin-bottom: 18px; }
	.flow-intro__body { font-size: 14px; line-height: 1.85; }

	.flow-section { padding: 40px 0; }
	.flow-section__head { gap: 15px; margin-bottom: 45px; }
	.flow-section__line { width: 25px; }
	.flow-section__label { font-size: 13px; }
	.flow-section__title { font-size: 19px; line-height: 1.47; margin-bottom: 30px; }

	.flow-about__lead { font-size: 16px; line-height: 1.75; letter-spacing: 0.08em; margin-bottom: 30px; }
	.flow-about__list ul { padding-left: 21px; }
	.flow-about__list li { font-size: 14px; line-height: 1.85; }

	.flow-steps { gap: 10px; }
	/* SP：上段に [01 + STEP + タイトル]、下段に full-width のリード/補足 */
	.flow-step {
		grid-template-columns: auto 1fr;
		grid-template-rows: auto auto auto;
		row-gap: 12px;
		column-gap: 18px;
		padding: 25px;
		align-items: start;
	}
	.flow-step__label-area {
		grid-column: 1;
		grid-row: 1;
		gap: 0;
	}
	.flow-step__num { font-size: 40px; }
	.flow-step__step-label { font-size: 9px; }
	.flow-step__title {
		grid-column: 2;
		grid-row: 1;
		margin: 0;
		align-self: flex-start;
		/* SP：2行になったとき、1行目の下線と2行目の文字が重ならないよう行間を広めに */
		line-height: 1.9;
	}
	.flow-step__title-text { font-size: 18px; }
	.flow-step__title-time { font-size: 14px; }

	.flow-step__lead {
		grid-column: 1 / -1;
		grid-row: 2;
	}
	.flow-step__note {
		grid-column: 1 / -1;
		grid-row: 3;
		margin-top: 0;
	}
	.flow-step__lead, .flow-step__note { font-size: 14px; line-height: 1.85; }

	/* SP：横スクロール（カードが画面幅をはみ出して左右にスワイプで見られる） */
	/* SP：横スクロール（攻めが中央表示、守り/転機が左右にはみ出すスワイプ） */
	.flow-themes {
		display: flex;
		grid-template-columns: none;
		gap: 10px;
		margin: 0 calc( var(--gutter-sp) * -1 ) 30px;
		padding: 0 var(--gutter-sp);
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}
	.flow-themes::-webkit-scrollbar { display: none; }
	.flow-theme {
		flex: 0 0 236px;
		scroll-snap-align: center;
		min-height: 246px;
		padding: 40px 30px 30px;
	}
	.flow-theme__kanji { font-size: 70px; }
	.flow-theme__sub { font-size: 24px; }
	.flow-theme__desc { font-size: 15px; line-height: 1.86; max-width: 176px; }
	.flow-themes__note {
		font-size: 14px;
		line-height: 1.57;
		letter-spacing: 0.03em;
		text-align: left;
	}

	.flow-details__row { grid-template-columns: 74px 1fr; }
	.flow-details__label {
		padding: 14px 6px;
		font-size: 15px;
		text-align: center;
		align-items: center;
	}
	.flow-details__label-sub { font-size: 11px; margin-top: 8px; letter-spacing: 0; }
	.flow-details__body {
		padding: 14px 14px;
		font-size: 15px;
		line-height: 1.73;
	}
	.flow-details__note { font-size: 14px; line-height: 1.57; }

	/* SPもタイトルと「一覧を見る」は横並び */
	.flow-question__title-row {
		flex-direction: row;
		align-items: center;
		gap: 16px;
		margin-bottom: 24px;
	}
}

/* =========================================================
   代表プロフィール ページ
   ========================================================= */

/* 親 article。フロントページの .profile セクションと同名クラスのため、
   背景・パディングをリセットして sticky 計算の親範囲を素直に保つ。 */
.profile-page {
	position: relative;
	background: transparent;
	padding: 0;
}

/* PC・SP共通：page-hero 内の元タイトルは視覚的に隠す（a11y には残す）。
   実描画は下の .profile-title が担当し、ページ末尾まで追従させる。 */
.profile-page .page-hero__sticky {
	position: absolute;
	width: 1px;
	height: 1px;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	overflow: hidden;
	white-space: nowrap;
}

/* PC：page-hero の高さを 50vh → 約 265px に短縮し、MESSAGE 開始位置を
   追従タイトルの「ロ」（3文字目下端／4文字目上端付近）に合わせる。
   タイトル sticky 位置(124px) + 32px×1.5×2文字(96px) ≒ 220px が「プ」上端、
   268px が「ロ」上端。page-hero 265 + content padding-top 45 ≒ 「ロ」位置。 */
@media (min-width: 769px) {
	.profile-page .page-hero {
		height: 265px;
		min-height: 265px;
	}
}
/* SP：page-hero の高さを固定し、MESSAGE 開始位置を追従タイトル末尾「ル」上端に揃える。
   letter-spacing による縦字 advance 拡大を実測して 290px に短縮。
   ベース .page-hero (height:40vh / min-height:220px) を確実に上書きするため !important を付与。 */
@media (max-width: 768px) {
	.profile-page .page-hero {
		height: 235px !important;
		min-height: 235px !important;
	}
}

/* 追従タイトル本体。article 全体を親に取り、下端近くで mask フェードアウト。
   初回対話 PC の挙動と揃える（消え方を一致させる）。 */
.profile-title {
	position: absolute;
	top: 0;
	/* 追従の終点：.profile-content の padding-bottom と合わせる。 */
	bottom: 100px;
	left: 0;
	right: 0;
	pointer-events: none;
	z-index: 3;
	-webkit-mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 500px), transparent calc(100% - 280px));
	mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 500px), transparent calc(100% - 280px));
}
.profile-title__sticky {
	position: sticky;
	top: calc( var(--header-h-pc) + 24px );
	max-width: var(--container);
	margin: 0 auto;
	padding-left: var(--gutter-pc);
	display: flex;
	align-items: flex-start;
	gap: 18px;
}
.profile-title__jp { margin: 0; } /* .page-hero__title の見た目を継承（PCは32pxのまま） */
/* Voice：PC では「判断のあとに / 残った声」を縦書き 2 列に分ける。SP では 1 列のまま。 */
.profile-title__break-pc { display: initial; }
@media (max-width: 768px) {
	.profile-title__break-pc { display: none; }
}
.profile-title__en { margin: 0; } /* PC で JP と上端を揃える */

@media (max-width: 768px) {
	.profile-title__sticky {
		top: calc( var(--header-h-sp) + 18px );
		padding-left: var(--gutter-sp);
		gap: 4px;
	}
	.profile-title__en { margin: 0; }
	/* SP はタイトル縦書きの全長（26px × line-height1.5 × 8文字 ≒ 312px）が
	   sticky 解除直前まで残るため、フェード完了点を底から 380px 上に確保し、
	   ページ末尾に到達した時点で完全に消え切るようにする。 */
	.profile-title {
		-webkit-mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 520px), transparent calc(100% - 380px));
		mask-image: linear-gradient(to bottom, #000 0, #000 calc(100% - 520px), transparent calc(100% - 380px));
	}
}
@media print {
	.profile-title { display: none; }
}

.profile-content {
	background: var(--color-bg);
	/* PC 上 padding は 60px → 45px に詰め、MESSAGE 開始位置を縦書きタイトル「ロ」付近に揃える */
	padding: 45px 0 100px;
	position: relative;
}
.profile-content__inner {
	max-width: 754px;
	margin: 0 auto;
	padding: 0 20px;
}
/* 中間幅（タブレット〜狭めPC）：追従タイトルが本文に被るため、本文を右へ寄せる。
   タイトルは左端 var(--gutter-pc) + 縦書き2列で ~110px 確保。 */
@media (min-width: 769px) and (max-width: 1100px) {
	.profile-content__inner {
		padding-left: calc( var(--gutter-pc) + 90px );
	}
}

/* セクション共通 */
.profile-section { padding: 60px 0; }
.profile-section__head {
	display: flex;
	align-items: center;
	gap: 18px;
	margin-bottom: 72px;
}
.profile-section__line {
	display: block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
}
.profile-section__label {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
	margin: 0;
	text-transform: uppercase;
}

/* MESSAGE */
.profile-message__heading {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: var(--color-text);
	margin: 0 0 50px;
}
.profile-message__greeting {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 30px;
}
.profile-message__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.profile-message__body p {
	margin: 0 0 28px;
}
.profile-message__body p:last-child { margin: 0; }
/* 4段落目（…「実装（動く状態）」まで伴走すること。）の直後だけ広げて、
   次の「社長が描く未来の『絵』…」段落との間に間（ま）を作る。
   ACFで段落数が変わるとズレるため、編集時は段数に注意。 */
.profile-message__body > p:nth-of-type(4) {
	margin-bottom: 88px;
}
.profile-message__body ul {
	list-style: disc;
	padding-left: 22.5px;
	margin: 28px 0;
	font-weight: 500;
}
.profile-message__body li {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.profile-message__pull {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 50px 0 30px;
}
.profile-message__close {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 60px;
}
.profile-message__signature {
	text-align: right;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	color: var(--color-text);
}
.profile-message__sig-company {
	font-size: 15px;
	letter-spacing: 0.05em;
	margin: 0 0 6px;
}
.profile-message__sig-name {
	margin: 0;
}
.profile-message__sig-role {
	font-size: 14px;
	letter-spacing: 0.06em;
	margin-right: 12px;
}
.profile-message__sig-fullname {
	font-size: 18px;
	letter-spacing: 0.06em;
}

/* PROFILE — 写真 + 名前 + 略歴ボックス */
.profile-info {
	display: grid;
	grid-template-columns: 1fr 370px;
	gap: 40px;
	align-items: start;
	margin-bottom: 80px;
}
.profile-info__text { padding-top: 90px; }
.profile-info__role {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: var(--color-text);
	margin: 0 0 20px;
}
.profile-info__name {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: var(--color-text);
	margin: 0 0 16px;
}
.profile-info__name-en {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	line-height: 1;
	color: var(--color-text);
	margin: 0 0 40px;
}
.profile-info__title {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: var(--color-text);
	margin: 0;
}
.profile-info__photo {
	overflow: hidden;
}
.profile-info__photo img {
	width: 100%;
	height: auto;
	aspect-ratio: 370 / 459;
	object-fit: cover;
	display: block;
}
.profile-info__photo-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	aspect-ratio: 370 / 459;
	background: rgba(34, 34, 34, 0.05);
	color: var(--color-line);
	font-size: 13px;
}

/* PROFILE：略歴ボックス（白カード） */
.profile-bio {
	background: #fff;
	padding: 40px 30px;
}
.profile-bio__block + .profile-bio__block {
	margin-top: 40px;
	padding-top: 40px;
	border-top: 1px solid #d9d9d9;
}
.profile-bio__heading {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 18px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: var(--color-text);
	margin: 0 0 22px;
}
.profile-bio__body {
	padding-left: 10px;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.profile-bio__body p { margin: 0 0 24px; }
.profile-bio__body p:last-child { margin: 0; }
.profile-bio__body strong {
	font-weight: 500;
}
.profile-bio__body a {
	color: var(--color-text);
	text-decoration: underline;
	text-underline-offset: 4px;
	transition: opacity .3s var(--ease);
}
.profile-bio__body a:hover {
	opacity: 0.6;
}
.profile-bio__body ul {
	list-style: disc;
	padding-left: 22.5px;
	margin: 16px 0 0;
}
.profile-bio__body li {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}

/* ----- PC：PROFILE セクションを grid 化 -----
   Figma デザインに合わせ「写真は PROFILE ラベルより高い位置から始まり、
   ラベル + テキストの両方の高さを跨いで縦に伸びる」配置にする。
   - 左上: PROFILE ラベル（padding-top で写真上端から少し下げる）
   - 左下: テキスト（代表取締役 / 梅村 尚樹 / Uemura Naoki / 社外CFO）
   - 右側: 写真（row 1/2 を跨いで配置、align-self: start）
   - 下段フルワイド: 略歴カード（.profile-bio）
   .profile-info は display:contents で親 grid に子要素を透過させる。 */
@media (min-width: 769px) {
	/* 写真の高さに対して PROFILE ラベル + テキスト群を縦中央寄せにする。
	   1fr の上下バッファ行で head + text のセットを写真高さの中央へ。 */
	.profile-section--profile {
		display: grid;
		grid-template-columns: 1fr 370px;
		grid-template-rows: 1fr auto auto 1fr auto;
		column-gap: 40px;
	}
	.profile-section--profile > .profile-section__head {
		grid-column: 1;
		grid-row: 2;
		margin-bottom: 0;
	}
	.profile-section--profile > .profile-info {
		display: contents;
	}
	.profile-section--profile .profile-info__text {
		grid-column: 1;
		grid-row: 3;
		padding-top: 50px; /* PROFILE ラベルとテキストの間隔 */
	}
	.profile-section--profile .profile-info__photo {
		grid-column: 2;
		grid-row: 1 / span 4; /* 写真は上下バッファ含め4行を縦に占有 */
		align-self: start;
	}
	.profile-section--profile > .profile-bio {
		grid-column: 1 / -1;
		grid-row: 5;
		margin-top: 80px;
	}
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.profile-content {
		padding: 20px 0 70px;
	}
	.profile-content__inner {
		/* SP は左に縦書き追従タイトル（JP列 + EN列 + gap）が居座るため、本文を右に寄せる。
		   左 padding ＝ gutter-sp(24) + タイトルJP列(~36) + gap(12) + EN列(~22) + 余白(~12) ≒ 106px。 */
		padding: 0 var(--gutter-sp) 0 106px;
	}

	.profile-section { padding: 40px 0; }
	.profile-section__head { gap: 15px; margin-bottom: 48px; }
	.profile-section__line { width: 25px; }
	.profile-section__label { font-size: 13px; }

	.profile-message__heading { font-size: 19px; line-height: 1.47; margin-bottom: 32px; }
	.profile-message__greeting { font-size: 14px; line-height: 1.85; margin-bottom: 22px; }
	.profile-message__body { font-size: 14px; line-height: 1.85; }
	.profile-message__body p { margin-bottom: 22px; }
	.profile-message__body > p:nth-of-type(4) { margin-bottom: 64px; }
	.profile-message__body ul { margin: 22px 0; padding-left: 20px; }
	.profile-message__body li { font-size: 14px; line-height: 1.85; }
	.profile-message__pull { font-size: 14px; margin: 36px 0 22px; }
	.profile-message__close { font-size: 14px; margin-bottom: 40px; }
	.profile-message__sig-company { font-size: 14px; }
	.profile-message__sig-role { font-size: 13px; margin-right: 8px; }
	.profile-message__sig-fullname { font-size: 16px; }

	/* PROFILE：SPは写真→テキスト→ボックスの縦積み */
	.profile-info {
		grid-template-columns: 1fr;
		gap: 30px;
		margin-bottom: 50px;
	}
	.profile-info__photo { order: 1; }
	.profile-info__text  { order: 2; padding-top: 0; }
	.profile-info__role  { font-size: 13px; margin-bottom: 16px; }
	.profile-info__name  { font-size: 22px; margin-bottom: 14px; }
	.profile-info__name-en { font-size: 13px; margin-bottom: 28px; }
	.profile-info__title { font-size: 13px; }

	.profile-bio { padding: 28px 22px; }
	.profile-bio__block + .profile-bio__block {
		margin-top: 32px;
		padding-top: 32px;
	}
	.profile-bio__heading { font-size: 16px; margin-bottom: 18px; }
	.profile-bio__body { font-size: 14px; line-height: 1.85; padding-left: 8px; }
	.profile-bio__body p { margin-bottom: 18px; }
	.profile-bio__body li { font-size: 14px; line-height: 1.85; }
}

/* =========================================================
   よくあるご質問（FAQ）ページ
   ========================================================= */
.faq-content {
	background: var(--color-bg);
	padding: 60px 0 160px;
	position: relative;
}
.faq-content__inner {
	max-width: 754px;
	margin: 0 auto;
	padding: 0 20px;
}
/* 中間幅（タブレット〜狭めPC）：追従タイトルが本文に被るため、本文を右へ寄せる。
   .profile-content と同じ調整。 */
@media (min-width: 769px) and (max-width: 1100px) {
	.faq-content__inner {
		padding-left: calc( var(--gutter-pc) + 90px );
	}
}
/* FAQ は下端パディングが profile と異なるため、追従タイトルの mask 終点を本文下端と揃える。
   .faq-content padding-bottom: PC 160px / SP 110px に合わせる。 */
.faq.profile-page .profile-title { bottom: 160px; }
@media (max-width: 768px) {
	.faq.profile-page .profile-title { bottom: 110px; }
}

/* リード */
.faq-lead { margin-bottom: 60px; }
.faq-lead__heading {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1.4;
	color: var(--color-text);
	margin: 0 0 30px;
}
.faq-lead__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
}

/* カテゴリリスト */
.faq-categories {
	display: flex;
	flex-direction: column;
	gap: 30px;
	margin-bottom: 90px;
}

/* カテゴリカード（白） */
.faq-category {
	background: #fff;
	padding: 40px;
}
.faq-category__head {
	display: flex;
	align-items: center;
	gap: 18px;
	margin-bottom: 30px;
}
.faq-category__line {
	display: block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
}
.faq-category__label {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
	margin: 0;
	text-transform: uppercase;
}
.faq-category__title {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 20px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: var(--color-text);
	margin: 0 0 50px;
}

/* FAQリスト：白カード内では区切り線スタイル（各Qの下に1本） */
.faq-list { gap: 0; }
.faq-list .svc-faq__item {
	background: transparent;
	border-bottom: 1px solid #e9e5de;
}
.faq-list .svc-faq__toggle {
	padding: 16px 12px 16px 3px;
	gap: 8px;
	min-height: auto;
}
.faq-list .svc-faq__panel-inner {
	padding: 4px 12px 20px 36px;
}

/* 末尾 CTA */
.faq-end {
	padding: 30px 0 0;
}
.faq-end__lead {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 18px;
	line-height: 1.94;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 50px;
}
.faq-end__message {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 22px;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0 0 70px;
	display: flex;
	flex-direction: column;
	gap: 36px;
}
.faq-end__line {
	display: block;
	line-height: 1.4;
}
/* 行のテキスト全体を inline で包み、box-decoration-break: clone で折り返し時も
   各行に確実に下線を敷く。text-decoration では em の font-size 差で下線が途切れるため、
   background-image による「下端 9px の白いバー」で描画。 */
.faq-end__text {
	display: inline;
	background-image: linear-gradient(to top, #fff 0, #fff 9px, transparent 9px);
	background-repeat: no-repeat;
	background-position: 0 100%;
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}
/* SP 専用改行（PC では非表示） */
.faq-end__break-sp { display: none; }
.faq-end__em {
	font-size: 38px;
	line-height: 1;
	letter-spacing: 0.1em;
}
.faq-end__btn {
	width: 150px;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.faq-content {
		padding: 40px 0 110px;
	}
	.faq-content__inner {
		/* SP は左に縦書き追従タイトル（JP列 + EN列 + gap）が居座るため、本文を右に寄せる。
		   .profile-content__inner と同じ調整。 */
		padding: 0 var(--gutter-sp) 0 106px;
	}

	.faq-lead { margin-bottom: 40px; }
	.faq-lead__heading { font-size: 19px; line-height: 1.47; margin-bottom: 22px; }
	.faq-lead__body { font-size: 14px; line-height: 1.85; }

	.faq-categories { gap: 20px; margin-bottom: 60px; }

	.faq-category { padding: 28px 22px; }
	.faq-category__head { gap: 15px; margin-bottom: 22px; align-items: flex-start; }
	.faq-category__line { width: 25px; margin-top: 10px; }
	.faq-category__label { font-size: 13px; line-height: 1.6; }
	.faq-category__title { font-size: 17px; line-height: 1.55; margin-bottom: 36px; }

	.faq-list .svc-faq__toggle { padding: 14px 4px 14px 2px; gap: 8px; }
	.faq-list .svc-faq__panel-inner { padding: 4px 4px 18px 30px; }

	.faq-end { padding: 20px 0 0; }
	.faq-end__lead { font-size: 16px; line-height: 1.85; margin-bottom: 36px; }
	.faq-end__message { font-size: 16px; margin-bottom: 50px; gap: 4px; }
	.faq-end__line { line-height: 2.6; }
	.faq-end__break-sp { display: inline; }
	.faq-end__em { font-size: 26px; padding: 0; letter-spacing: 0; line-height: 1; }
	.faq-end__btn { width: 130px; }
}

/* =========================================================
   会社概要 ページ
   ========================================================= */
.company-content {
	background: var(--color-bg);
	padding: 60px 0 100px;
}
.company-content__inner {
	max-width: 754px;
	margin: 0 auto;
	padding: 0 20px;
}
/* 中間幅（タブレット〜狭めPC）：追従タイトルが本文に被るため、本文を右へ寄せる。 */
@media (min-width: 769px) and (max-width: 1100px) {
	.company-content__inner {
		padding-left: calc( var(--gutter-pc) + 90px );
	}
}
/* 追従タイトルの mask 終点を本文下端と揃える。
   .company-content padding-bottom: PC 100px / SP 70px に合わせる。 */
.company.profile-page .profile-title { bottom: 100px; }
@media (max-width: 768px) {
	.company.profile-page .profile-title { bottom: 70px; }
}

/* セクション共通 */
.company-section { padding: 60px 0; }
.company-section__head {
	display: flex;
	align-items: center;
	gap: 18px;
	margin-bottom: 70px;
}
.company-section__line {
	display: block;
	width: 30px;
	height: 1px;
	background: var(--color-text);
}
.company-section__label {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
	margin: 0;
	text-transform: uppercase;
}
.company-section__title {
	font-family: var(--font-jp-mincho);
	font-weight: 400;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1.17;
	color: var(--color-text);
	margin: 0 0 40px;
}

/* CONCEPT */
.company-concept {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 30px;
	letter-spacing: 0.05em;
	line-height: 1;
}
.company-concept__line {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 4px;
}
.company-concept__lg {
	font-size: 50px;
	letter-spacing: 0.05em;
	line-height: 1;
}
.company-concept__sm {
	font-size: 30px;
	letter-spacing: 0.08em;
	line-height: 1.2;
}
/* SP 専用改行マーカー：PC では行を割らず非表示、SP では flex-wrap を強制改行する 100% 幅スペーサ */
.company-concept__break-sp { display: none; }

/* PROFILE：テーブル */
.company-table {
	margin: 0;
}
.company-table__row {
	display: grid;
	grid-template-columns: 180px 1fr;
	gap: 0;
	border-bottom: 1px solid #d9d9d9;
	padding: 22px 0;
	margin: 0;
}
.company-table__label {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	letter-spacing: 0.05em;
	line-height: 1.85;
	color: var(--color-text);
	margin: 0;
	padding-right: 24px;
}
.company-table__value {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	letter-spacing: 0.05em;
	line-height: 1.85;
	color: var(--color-text);
	margin: 0;
}

/* ACCESS */
.company-routes {
	list-style: none;
	margin: 0 0 50px;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.company-routes__item {
	position: relative;
	padding-left: 18px;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.8;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.company-routes__item::before {
	content: "";
	position: absolute;
	left: 4px;
	top: 0.6em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--color-text);
}

.company-map {
	display: grid;
	grid-template-columns: 1fr 320px;
	gap: 40px;
	align-items: start;
}
.company-map__label {
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: var(--color-text);
	margin: 0 0 14px;
}
.company-map__address {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.8;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0 0 22px;
}
.company-map__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 160px;
	height: 38px;
	padding: 0 22px;
	border: 1px solid var(--color-text);
	border-radius: 19px;
	background: transparent;
	color: var(--color-text);
	font-family: var(--font-jp-mincho);
	font-size: 14px;
	letter-spacing: 0.05em;
	text-decoration: none;
	transition: background-color .25s var(--ease), color .25s var(--ease);
}
.company-map__btn:hover { background: var(--color-text); color: #fff; }
.company-map__embed {
	width: 100%;
	aspect-ratio: 320 / 240;
	overflow: hidden;
	background: #ddd;
}
.company-map__embed iframe {
	width: 100%;
	height: 100%;
	border: 0;
}
.company-map__placeholder {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--color-line);
	font-size: 14px;
	letter-spacing: 0.1em;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.company-content { padding: 0 0 70px; }
	/* ヒーロー直後 → 最初のセクション「CONCEPT」までの余白を 20px に詰める */
	.company-content .company-section:first-child { padding-top: 20px; }
	/* SP は左に縦書き追従タイトル（JP列 + EN列 + gap）が居座るため、本文を右に寄せる。
	   .faq-content__inner と同じ調整。 */
	.company-content__inner { padding: 0 var(--gutter-sp) 0 106px; }

	.company-section { padding: 40px 0; }
	.company-section__head { gap: 15px; margin-bottom: 35px; }
	.company-section__line { width: 25px; }
	.company-section__label { font-size: 14px; }
	.company-section__title { font-size: 24px; line-height: 1.5; margin-bottom: 28px; }

	/* SP は 4 行構成。flex-wrap の行 box 高が __lg(32px) の有無で揃わず
	   見た目の余白がバラつくため、ブロック組版に切替えて line-height を
	   全行で固定（50px）し、見た目の行間を一律 24px に揃える。
	   ※ 50px = (__lg 32 + __sm 20) / 2 + 目標ギャップ 24 */
	.company-concept { display: block; line-height: 50px; }
	.company-concept__line { display: block; }
	.company-concept__lg { font-size: 32px; line-height: inherit; letter-spacing: 0.05em; }
	.company-concept__sm { font-size: 20px; line-height: inherit; letter-spacing: 0.05em; }
	/* 「|」位置を強制改行（block 化することで前後の inline 行が分かれる） */
	.company-concept__break-sp {
		display: block;
		width: 100%;
		height: 0;
		line-height: 0;
	}

	.company-table__row {
		grid-template-columns: 1fr;
		gap: 8px;
		padding: 18px 0;
	}
	.company-table__label { font-size: 14px; padding-right: 0; font-weight: 500; }
	.company-table__value { font-size: 15px; }

	.company-routes { margin-bottom: 36px; gap: 10px; }
	.company-routes__item { font-size: 15px; }

	.company-map {
		grid-template-columns: 1fr;
		gap: 24px;
	}
	.company-map__embed { aspect-ratio: 16 / 10; }
	.company-map__address { font-size: 14px; }
}

/* =========================================================
   判断のあとに残った声（Voice CPT）アーカイブ
   ========================================================= */
.voice-content {
	background: var(--color-bg);
	/* PC：padding-top を 60 → 6 に詰めて、リード開始位置を縦書きタイトル「と」付近まで上げる。
	   SP は @media (max-width: 768px) で上書き（40px）。 */
	padding: 6px 0 100px;
	position: relative;
}
/* プロフィール / FAQ と同じ max-width に揃え、横位置を統一する。 */
.voice-content__inner {
	max-width: 754px;
	margin: 0 auto;
	padding: 0 20px;
}
/* PC：縦書き追従タイトルの右端から 80px の余白を常に保つよう、
   viewport 幅に応じて padding-left を fluid に増減させる。
   - title_right = gutter-pc + 130（タイトル 2 列 + EN 列の幅）
   - 余白 80px を確保するため、padding-left = gutter-pc + 210 - inner_left
   - 広い画面では inner_left が大きく自動的にカバーされるので、最低 20px をキープ */
@media (min-width: 769px) {
	.voice-content__inner {
		padding-left: max(20px, calc( var(--gutter-pc) + 210px - (100vw - 754px) / 2 ));
	}
}
/* Voice は下端パディングが profile と異なるため、追従タイトルの mask 終点を本文下端と揃える。
   .voice-content padding-bottom: PC 100px / SP 70px に合わせる。 */
.voice-archive.profile-page .profile-title { bottom: 100px; }
@media (max-width: 768px) {
	/* SP では追従タイトルをピックアップ末尾まで残し、それ以降は表示しない。
	   bottom 指定を解除し、固定 height でスティッキー範囲を制限する。
	   1300px = page-hero 235 + lead 170 + pickup 約 450 + 追従タイトル本体の余白 ≈ 1100〜1300px。
	   ピックアップ末尾付近で自然に消える設計。 */
	.voice-archive.profile-page .profile-title {
		bottom: auto;
		height: 1300px;
	}
}

/* リード（左寄せ） */
.voice-lead {
	margin-bottom: 70px;
}
.voice-lead__heading {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	line-height: 1.66;
	letter-spacing: 0.08em;
	color: var(--color-text);
	margin: 0 0 28px;
}
.voice-lead__body {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.85;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
}

/* PICK UP（1投稿目）— Figma 通り、白パネルをページ右端まで伸ばす。
   フルブリード手法：margin-right を「50% - 50vw」にすると右端がビューポート右端まで届く。 */
.voice-pickup {
	margin-bottom: 60px;
}
/* PC：voice-content__inner が中央寄せの max-width 754 → 50%-50vw で viewport 右端へ */
@media (min-width: 769px) {
	.voice-pickup {
		margin-right: calc(50% - 50vw);
	}
}
/* SP：voice-content__inner の右パディング（gutter-sp）分を負マージンで打ち消し → viewport 右端まで延ばす */
@media (max-width: 768px) {
	.voice-pickup {
		margin-right: calc(-1 * var(--gutter-sp));
	}
}

/* 一覧見出し（Figma node 262-1789）：
   PICK UP から 200px 下、事例グリッドの 60px 上に配置する。
   英語小見出し（小・グレー）→ 日本語見出し（明朝）の 2 段構成。 */
.voice-list-head {
	margin-top: 200px;
	margin-bottom: 60px;
}
.voice-list-head__en {
	font-family: var(--font-en-serif);
	font-size: 13px;
	letter-spacing: 0.1em;
	color: var(--color-line);
	margin: 0 0 12px;
}
.voice-list-head__title {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.08em;
	line-height: 1.4;
	color: var(--color-text);
	margin: 0;
}
/* SP のみ「判断のあとに残った声の／一覧」を 2 行に改行 */
.voice-list-head__break-sp { display: none; }
@media (max-width: 768px) {
	.voice-list-head__break-sp { display: inline; }
}

/* グリッド（2投稿目以降）
   - 769〜1299px：2 列（Figma PC ベース）
   - ≥1300px：3 列＋右端フルブリード（広い画面で空きを解消）
   - SP：1 列（後段の @media (max-width: 768px) で上書き） */
.voice-list {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 54px 54px;
	margin-bottom: 80px;
}
@media (min-width: 1300px) {
	.voice-list {
		grid-template-columns: repeat(3, 1fr);
		/* 右端からサイト共通ガター（--gutter-pc）+ 40px を残して拡張。
		   サイト全体のリズムを保ちつつ、もう一段ゆとりを持たせる。 */
		margin-right: calc(50% - 50vw + var(--gutter-pc) + 40px);
	}
}

/* カード共通 */
.voice-card {
	position: relative;
	display: flex;
	flex-direction: column;
	background: #fff;
	color: var(--color-text);
	text-decoration: none;
	overflow: hidden;
	transition: opacity .25s var(--ease);
}
.voice-card:hover { opacity: .85; }

/* 通常カード（Figma node 1225-1403 / 350×534）：
   縦書き本文（上）＋ 写真（下）の縦並びレイアウト。
   HTML 順は photo → body だが、flex-direction: column-reverse で視覚順を逆転。 */
.voice-list .voice-card {
	display: flex;
	flex-direction: column-reverse;     /* 視覚：body 上 / photo 下 */
	aspect-ratio: 350 / 534;             /* Figma カード比率を維持 */
	min-height: 0;
	padding: 0;
	overflow: hidden;
	position: relative;
	background: #fff;
}

/* 写真（カード下 36% 領域＝ Figma 194/534） */
.voice-list .voice-card__photo {
	flex: 0 0 36%;
	margin: 0;
	height: auto;
	overflow: hidden;
	background: #d8d8d4;
}
.voice-list .voice-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.voice-list .voice-card__photo--placeholder {
	background: #d8d8d4;
	display: block;
}

/* 本文エリア（カード上 64%）：absolute で「引用 = 右上」「会社名 = 左下」を厳密配置 */
.voice-list .voice-card__body {
	flex: 1 1 auto;
	position: relative;
	padding: 0;
	display: block;
}

/* 引用：右上に固定。複数 <p> は row-reverse で main 右 / sub 左。
   親の固定高さで、長文は自動的に新しい列に折り返す。 */
.voice-list .voice-card__quotes {
	position: absolute;
	top: 30px;
	right: 30px;
	bottom: 24px;                        /* 下端を会社名と揃える */
	display: flex;
	flex-direction: row-reverse;         /* main(DOM順1番目) を右側に */
	align-items: stretch;                /* 子 <p> が縦いっぱい */
	gap: 12px;
}

.voice-list .voice-card__quote {
	writing-mode: vertical-rl;
	-webkit-font-feature-settings: "vrt2";
	font-feature-settings: "vrt2";
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: clamp(18px, 1.5vw, 22px);
	line-height: 1.8;
	letter-spacing: 0.1em;
	color: var(--color-text);
	margin: 0;
	/* 高さ stretch により、長文は自動的に左へ折り返す（複数列） */
}

/* 会社名：左下、縦書き */
.voice-list .voice-card__meta {
	position: absolute;
	left: 30px;
	bottom: 24px;
	display: flex;
	flex-direction: row;
	gap: 4px;
	margin: 0;
	padding: 0;
}
.voice-list .voice-card__company,
.voice-list .voice-card__subline {
	writing-mode: vertical-rl;
	-webkit-font-feature-settings: "vrt2";
	font-feature-settings: "vrt2";
	font-family: var(--font-jp-gothic);
	letter-spacing: 0.1em;
	line-height: 1.6;
	margin: 0;
}
.voice-list .voice-card__company {
	font-size: 13px;
	color: var(--color-text);
	order: 2;                            /* 視覚右（image 寄り） */
	text-orientation: upright;
	-webkit-text-orientation: upright;
	/* 会社名が長い場合は 2 列に折り返す。max-height ≒ 10 文字分。
	   入力ルール：10 文字以内なら 1 列 / 11 文字以上は自動で 2 列になる。 */
	max-height: 145px;
}
.voice-list .voice-card__subline {
	font-size: 11px;
	color: var(--color-line);
	order: 1;                            /* 視覚左 */
}

/* 本文：引用（上） + 会社情報（下揃え） */
.voice-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;
}
.voice-card__quotes {
	display: flex;
	flex-direction: column;
	gap: 6px;
}
.voice-card__quote {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	letter-spacing: 0.05em;
	line-height: 1.55;
	margin: 0;
}
.voice-card__quote--main { font-size: 20px; }
.voice-card__quote--sub  { font-size: 16px; color: rgba(34, 34, 34, 0.7); }

/* 会社情報：枠の下に押し付ける */
.voice-card__meta {
	margin-top: auto;
	padding-top: 24px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.voice-card__company {
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
}
.voice-card__subline {
	font-family: var(--font-jp-gothic);
	font-size: 12px;
	letter-spacing: 0.05em;
	color: var(--color-line);
	margin: 0;
}

/* =========================================================
   PICK UP カード（Figma node 1217-1361 / 894×525）
   左半分：写真／右半分：白地パネル。
   右パネルは内側を grid（3列 × 2行）で組み、Figma の配置を素直に再現。
   ----------------------------------------------------------
   右パネル（=447px 幅）の中身：左から
     [会社名 col]  [引用 2列 col]  [PICK UP col]
   行は [上=引用/PICK UP] / [下=会社名] の段組み。
   ========================================================= */
/* セレクタは a.voice-card-... と element 修飾で specificity を稼ぐ。
   先に書かれた `a.voice-card { display: block }`（1583行）に勝つ必要があるため。 */
a.voice-card.voice-card--pickup,
.voice-card--pickup {
	position: relative;
	display: grid;
	grid-template-columns: 1fr 1fr;
	min-height: 440px;
	padding: 0;
	background: #fff;
	overflow: hidden;
}
.voice-card--pickup .voice-card__photo {
	grid-column: 1;
	grid-row: 1;
	margin: 0;
	width: 100%;
	height: 100%;
	background: #d8d8d4;
	overflow: hidden;
}
.voice-card--pickup .voice-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	/* デフォルトの焦点位置：人物写真は中央上寄りが安全（顔切れ防止） */
	object-position: 50% 30%;
}
/* PICK UP 画像の焦点位置（投稿の voice_pickup_focus で切替）
   .voice-card--pickup .voice-card__photo img のデフォルト object-position を上書きするため、
   同じ特異性（クラス2つ＋要素）になるよう .voice-card--pickup を併記する。 */
/* 縦方向のみ（横は中央） */
.voice-card--pickup .voice-card__photo--focus-top           img { object-position:  50%   0%; }
.voice-card--pickup .voice-card__photo--focus-top-center    img { object-position:  50%  30%; }
.voice-card--pickup .voice-card__photo--focus-center        img { object-position:  50%  50%; }
.voice-card--pickup .voice-card__photo--focus-bottom-center img { object-position:  50%  70%; }
.voice-card--pickup .voice-card__photo--focus-bottom        img { object-position:  50% 100%; }
/* 左右バリエーション */
.voice-card--pickup .voice-card__photo--focus-left-top      img { object-position:   0%   0%; }
.voice-card--pickup .voice-card__photo--focus-right-top     img { object-position: 100%   0%; }
.voice-card--pickup .voice-card__photo--focus-left-center   img { object-position:   0%  50%; }
.voice-card--pickup .voice-card__photo--focus-right-center  img { object-position: 100%  50%; }
.voice-card--pickup .voice-card__photo--focus-left-bottom   img { object-position:   0% 100%; }
.voice-card--pickup .voice-card__photo--focus-right-bottom  img { object-position: 100% 100%; }
/* 右パネル（白地）。Figma node 1219-1363：
   Safari の flex × writing-mode: vertical-rl のレンダリングバグを回避するため
   display: grid で配置する。
   - 3 列 × 2 行のグリッド：[ 会社名 | 見出し | PICK UP ] × [上：本文行 / 下：会社名行]
   - PICK UP と 見出しは grid-row: 1 の上端揃え
   - 会社名は grid-row: 2 の下端寄せ
   - HTML 順は PICK UP → 見出し → 会社名 だが、grid-column 指定で視覚順を逆にする */
.voice-card--pickup .voice-card__body {
	grid-column: 2;
	grid-row: 1;
	position: relative;
	display: grid;
	grid-template-columns: auto auto auto;
	grid-template-rows: 1fr auto;
	align-items: start;
	justify-content: center;
	column-gap: 0;
	row-gap: 0;
	/* 見出しの左右 margin が 24 / 64 と非対称（差 40）のため、
	   cluster を中央に寄せても heading の視覚中心が左に 20px ずれる。
	   左右 padding を 20px ずつ非対称にすることで、cluster 自体を +20px 右へオフセットし、
	   heading の視覚中心を白パネルの幾何中心に揃える。
	   PICK UP / 会社名 の見出しからの距離（24 / 64）は不変。 */
	padding: 68px 20px 40px 60px;
	background: #fff;
	min-height: 440px;
}

/* 引用：grid 中央列、上端寄せ。右に 64px（PICK UP との間）、左に 24px（会社名との間）。 */
.voice-card--pickup .voice-card__quotes {
	grid-column: 2;
	grid-row: 1 / span 2;                  /* 行2(meta) を跨いで縦書きが収まるように */
	align-self: start;
	display: block;
	margin: 0 64px 0 24px;
	padding: 0;
	line-height: 0;
}
.voice-card--pickup .voice-card__quotes .voice-card__quote {
	margin: 0;
	padding: 0;
}
.voice-card--pickup .voice-card__quote {
	writing-mode: vertical-rl;
	-webkit-font-feature-settings: "vrt2";
	font-feature-settings: "vrt2";
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	letter-spacing: 0.05em;
	line-height: 1.55;
	margin: 0;
}
/* PC：ビューポート幅に応じて滑らかにスケール。最小 21px / 推奨 1.8vw / 最大 25px。
   PICK UP 見出しは縦書きで2列構成（PHPが「。」「、」の位置で<br>を挿入）。
   16文字程度の前半行が1列に収まるよう、現状28px → 25pxへ調整。 */
.voice-card--pickup .voice-card__quote--main { font-size: clamp(21px, 1.8vw, 25px); line-height: 1.6; letter-spacing: 0.1em; }
.voice-card--pickup .voice-card__quote--sub  { font-size: clamp(21px, 1.8vw, 25px); line-height: 1.6; letter-spacing: 0.1em; }
/* 保険：PHP 側で <br> 分割できなかった極端なタイトル（句読点なし＋長文）向け。
   25px × 1.6 × 16文字 ≒ 640px。これ以下は1列、超える場合のみ自動で次列へ折り返す。 */
.voice-card--pickup .voice-card__quote {
	max-height: clamp(440px, 54vw, 640px);
}

/* 会社名：grid 左列、下端行。白パネル下端 40px は親の padding-bottom: 40 で実現。 */
.voice-card--pickup .voice-card__meta {
	grid-column: 1;
	grid-row: 2;
	align-self: end;
	display: flex;
	flex-direction: row;
	gap: 4px;
	margin: 0;
	padding: 0;
}
.voice-card--pickup .voice-card__company,
.voice-card--pickup .voice-card__subline {
	writing-mode: vertical-rl;
	-webkit-font-feature-settings: "vrt2";
	font-feature-settings: "vrt2";
	margin: 0;
	font-family: var(--font-jp-gothic);
	letter-spacing: 0.1em;
	line-height: 1.6;
}
/* 会社名：英字「N」も縦組みで上向きにするため text-orientation: upright
   PC：clamp で 13〜14px の滑らかなスケール */
.voice-card--pickup .voice-card__company {
	font-size: clamp(13px, 1.1vw, 14px);
	color: var(--color-text);
	order: 2;
	text-orientation: upright;
	-webkit-text-orientation: upright;
}
.voice-card--pickup .voice-card__subline { font-size: clamp(10px, 0.8vw, 11px); color: var(--color-line); order: 1; }

/* PICK UP ラベル：Figma node 1219-1363 — テキスト上、線下。
   grid 右列、上端寄せ。
   フォント間のメトリクス差（EB Garamond vs Shippori Mincho）で
   見た目の上端が下にずれて見えるため translateY で微調整する。 */
.voice-card--pickup .voice-card__pickup-label {
	position: relative;
	grid-column: 3;
	grid-row: 1;
	align-self: start;
	display: block;
	padding-top: 0;
	margin-top: 0;
	line-height: 1;
	transform: translateY(-24px);           /* フォント差補正：見出しと視覚上端を揃える */
	z-index: 2;
	writing-mode: vertical-rl;
	-webkit-font-feature-settings: "vrt2";
	font-feature-settings: "vrt2";
	font-family: var(--font-en-serif);
	font-size: clamp(12px, 1vw, 13px);
	letter-spacing: 0.3em;
	color: var(--color-text);
	padding-bottom: 42px;              /* 12px 間隔 + 30px 線 */
	margin: 0;
	border: 0;
	text-align: center;
}
.voice-card--pickup .voice-card__pickup-label::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 50%;
	transform: translateX(-50%);
	width: 1px;
	height: 30px;
	background: var(--color-text);
}

/* PICK UP ラベル（汎用：通常カードでは右上の横書きラベル） */
.voice-card__pickup-label {
	position: absolute;
	top: 24px;
	right: 30px;
	z-index: 2;
	font-family: var(--font-en-serif);
	font-size: 13px;
	letter-spacing: 0.2em;
	color: var(--color-text);
	padding-bottom: 4px;
	border-bottom: 1px solid var(--color-text);
}

/* 写真（カード下部） */
.voice-card__photo {
	margin: auto -30px 0;
	height: 194px;
	overflow: hidden;
	background: #ddd;
}
.voice-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
/* アイキャッチ未設定の事例：TOP の VOICE スライダーと共通のブランド画像を表示。 */
.voice-card__photo--placeholder {
	background: #d8d8d4;
}
.voice-card__photo--placeholder img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* スクリーンリーダー用 */
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
}

/* ページネーション */
.voice-pagination {
	display: flex;
	justify-content: center;
}
.voice-pagination ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: 6px;
	align-items: center;
}
.voice-pagination a,
.voice-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 32px;
	height: 32px;
	padding: 0 10px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 13px;
	color: var(--color-line);
	text-decoration: none;
	transition: color .25s var(--ease), background .25s var(--ease);
}
.voice-pagination .current {
	color: var(--color-text);
}
.voice-pagination a:hover { color: var(--color-text); }

.voice-empty {
	text-align: center;
	color: var(--color-line);
	font-size: 15px;
	padding: 80px 0;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.voice-content { padding: 40px 0 70px; }
	/* SP：左に縦書き追従タイトル（JP 列 + EN 列 + gap）が居座るため、本文を右に寄せる。
	   profile / FAQ と同じ 106px に揃える。 */
	.voice-content__inner { padding: 0 var(--gutter-sp) 0 106px; }

	.voice-lead { margin-bottom: 50px; }
	.voice-lead__heading { font-size: 19px; line-height: 1.66; margin-bottom: 22px; }
	.voice-lead__body { font-size: 13px; line-height: 1.85; }

	.voice-pickup { margin-bottom: 40px; }

	/* PICK UP SP（Figma node 2482-9 / 255×600）：
	   カード自体は block + 固定高さで、写真と本文を absolute で正確に半分ずつ配置。
	   flex / grid を一切使わず、最も基本的な layout で iOS Chrome バグを完全に回避。 */
	a.voice-card.voice-card--pickup,
	.voice-card--pickup {
		display: block !important;
		flex-direction: initial !important;
		grid-template-columns: initial !important;
		grid-template-rows: initial !important;
		aspect-ratio: initial !important;
		min-height: 0 !important;
		height: 640px !important;
		width: 100%;
		padding: 0;
		background: #fff;
		position: relative;
		overflow: hidden;
	}
	/* 本文：absolute で上半分。中身は flex 横並び。
	   PICK UP と見出しは縦中央、会社名のみ下端寄せ（白パネル下端 24px） */
	.voice-card--pickup .voice-card__body {
		position: absolute !important;
		top: 0 !important;
		left: 0 !important;
		right: 0 !important;
		bottom: auto !important;
		height: 320px !important;
		width: auto !important;
		max-height: none;
		flex: initial !important;
		grid-row: initial;
		grid-column: initial;
		background: #fff;
		display: flex !important;
		flex-direction: row-reverse !important;
		align-items: center !important;
		justify-content: center !important;
		grid-template-columns: initial;
		grid-template-rows: initial;
		padding: 20px 16px 24px !important;     /* 下 padding 24 = 会社名の下からの距離 */
		min-height: 0 !important;
		gap: 0;
		z-index: 1;
	}
	/* 写真：absolute で下半分 */
	.voice-card--pickup .voice-card__photo {
		position: absolute !important;
		top: 320px !important;
		left: 0 !important;
		right: 0 !important;
		bottom: 0 !important;
		height: auto !important;
		width: auto !important;
		flex: initial !important;
		grid-row: initial;
		grid-column: initial;
		margin: 0;
		overflow: hidden;
		background: #d8d8d4;
	}
	.voice-card--pickup .voice-card__photo img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		display: block;
	}
	/* PICK UP ラベル：flex の右端、自然な高さ。
	   align-self: flex-start で flex 上端配置 → 見出しの上端と自然に揃える。 */
	.voice-card--pickup .voice-card__pickup-label {
		position: relative !important;
		top: auto !important;
		right: auto !important;
		left: auto !important;
		bottom: auto !important;
		transform: none !important;
		align-self: flex-start !important;
		text-align: start !important;
		flex: 0 0 auto !important;
		min-width: 16px !important;
		height: auto !important;
		padding-top: 0 !important;
		padding-bottom: 40px !important;
		margin: 0;
		z-index: 2;
	}
	/* PICK UP の線：要素下端から 24px（padding-bottom 内）。
	   テキストとは padding 16px のスペースで自動的に分離される。 */
	.voice-card--pickup .voice-card__pickup-label::after {
		top: auto !important;
		bottom: 0 !important;
		height: 24px !important;
	}
	/* 引用：flex 中央、縦上端寄せ。PICK UP / 会社名 と上端を揃える。
	   左右マージンは均等（24px）にして、見出しテキストの視覚中心がカード中央に揃うようにする。 */
	.voice-card--pickup .voice-card__quotes {
		position: relative !important;
		top: auto !important;
		right: auto !important;
		bottom: auto !important;
		left: auto !important;
		align-self: flex-start !important;
		flex: 0 0 auto !important;
		min-width: 80px !important;
		display: block;
		margin: 0 24px !important;
	}
	.voice-card--pickup .voice-card__quote--main { font-size: 20px !important; line-height: 1.55 !important; letter-spacing: 0.05em !important; }
	.voice-card--pickup .voice-card__quote--sub  { font-size: 20px !important; line-height: 1.55 !important; letter-spacing: 0.05em !important; }
	/* SP 専用：縦書きの max-height を 410px に引き上げ、1列に最大 ≒13文字まで収める。
	   これにより、PHP が「、」位置で<br>を挿入した場合、後半（13文字以下）が1列に収まり、
	   PHP の <br class="br-sp"> による分割は前半（>13文字）にだけ効くため、SP は 3列構成になる。
	   閾値は PHP 側の sp_threshold（archive-voice.php）と一致させる。 */
	.voice-card--pickup .voice-card__quote {
		max-height: 410px !important;
	}
	/* 会社名：flex の左端、下端寄せ（white panel 下端 24px = body padding-bottom と一致） */
	.voice-card--pickup .voice-card__meta {
		position: relative !important;
		left: auto !important;
		bottom: auto !important;
		top: auto !important;
		right: auto !important;
		align-self: flex-end !important;
		z-index: 2;
	}
	.voice-card--pickup .voice-card__company { font-size: 13px; }
	.voice-card--pickup .voice-card__subline { font-size: 10px; }

	/* SP：事例一覧セクション（見出し + カード + ページネーション）は
	   タイトル避けの左余白 106px を打ち消し、左右対称 24px の余白で大きく見せる。
	   タイトルはピックアップで消えるため、ここから下は左クリアランス不要。 */
	.voice-list-head,
	.voice-list,
	.voice-pagination {
		margin-left: calc(var(--gutter-sp) - 106px);   /* -82px ぶん左へ押し戻し */
	}

	/* SP：1 列縦書きカード（Figma SP node 2212-376 / 315×480 を踏襲） */
	.voice-list {
		grid-template-columns: 1fr;
		gap: 35px;
		margin-bottom: 50px;
	}
	.voice-list .voice-card {
		aspect-ratio: 315 / 480;          /* SP の縦長比率 */
	}
	.voice-list .voice-card__photo {
		flex: 0 0 36.5%;                  /* Figma: 175/480 ≈ 36.5% */
		height: auto;
	}
	.voice-list .voice-card__quotes {
		top: 27px;
		right: 25px;
		bottom: 20px;
		gap: 10px;
	}
	.voice-list .voice-card__quote {
		font-size: 20px;
	}
	.voice-list .voice-card__meta {
		left: 25px;
		bottom: 20px;
	}
	.voice-list .voice-card__company { font-size: 13px; }
	.voice-list .voice-card__subline { font-size: 10px; }

	/* PICK UP の SP（縦積み）— 既存の挙動を維持しつつ、ベースクラスのフォントサイズ調整。 */
	.voice-card__quote--main { font-size: 18px; }
	.voice-card__quote--sub  { font-size: 14px; }
	.voice-card__company     { font-size: 13px; }
	.voice-card__subline     { font-size: 11px; }
}

/* =========================================================
   判断のあとに残った声（Voice CPT）詳細ページ
   ========================================================= */
.voice-single {
	background: var(--color-bg);
	padding: 60px 0 100px;
}
.voice-single__inner {
	max-width: 800px;
	margin: 0 auto;
	padding: 0 20px;  /* PC は最大幅 800px で固定（コンテンツ幅 = 約760px） */
}

/* 見出し */
.voice-single__head {
	margin-bottom: 40px;
}
.voice-single__title {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 26px;
	letter-spacing: 0.08em;
	line-height: 1.66;
	color: var(--color-text);
	margin: 0 0 16px;
}
.voice-single__title-sub {
	display: block;
	margin-top: 8px;
	font-size: 22px;
	color: rgba(34, 34, 34, 0.7);
}
.voice-single__client {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin: 0;
}
.voice-single__client-note {
	font-size: 13px;
	color: var(--color-line);
	margin-left: 4px;
}

/* 写真 */
.voice-single__photo {
	margin: 0 0 50px;
	overflow: hidden;
}
.voice-single__photo img {
	width: 100%;
	height: auto;
	display: block;
}

/* 本文（6セクション） */
.voice-single__sections {
	margin-bottom: 70px;
	display: flex;
	flex-direction: column;
	gap: 50px;
}
.voice-section {
	margin: 0;
	padding-bottom: 50px;
	border-bottom: 1px solid rgba(34, 34, 34, 0.15);
}
.voice-section:last-child {
	border-bottom: 0;
	padding-bottom: 0;
}
.voice-section__head {
	margin: 0 0 32px;
}
.voice-section__en {
	font-family: var(--font-en-serif);
	font-size: 13px;
	letter-spacing: 0.2em;
	color: var(--color-line);
	text-transform: uppercase;
	margin: 0 0 6px;
}
.voice-section__title {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 20px;
	letter-spacing: 0.1em;
	line-height: 1.4;
	color: var(--color-text);
	margin: 0;
}
.voice-section__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.voice-section__body p { margin: 0 0 18px; }
.voice-section__body p:last-child { margin: 0; }
.voice-section__body strong { font-weight: 500; }
.voice-section__body ul {
	list-style: disc;
	padding-left: 22px;
	margin: 14px 0;
}
.voice-section__body li { margin-bottom: 4px; }

/* 投稿エディタ本文（ACFセクション未使用時のフォールバック） */
.voice-single__body {
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin-bottom: 70px;
}
.voice-single__body p { margin: 0 0 24px; }
.voice-single__body p:last-child { margin: 0; }
.voice-single__body img { max-width: 100%; height: auto; margin: 24px 0; }
.voice-single__body h2,
.voice-single__body h3 {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 36px 0 18px;
}
.voice-single__body h2 { font-size: 20px; }
.voice-single__body h3 { font-size: 17px; }

/* 記事ナビ */
.voice-single__nav {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 26px 0 0;
	border-top: 1px solid rgba(34, 34, 34, 0.2);
	margin-bottom: 50px;
}
.voice-single__nav-prev,
.voice-single__nav-next { min-width: 0; }
.voice-single__nav a {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 14px;
	letter-spacing: 0.1em;
	color: var(--color-text);
	text-decoration: none;
	transition: opacity .25s var(--ease);
}
.voice-single__nav a:hover { opacity: .55; }
.voice-single__nav-arrow {
	font-family: var(--font-en-serif);
	font-size: 14px;
	font-weight: 300;
}

/* 一覧へ戻る */
.voice-single__back {
	text-align: center;
}
.voice-single__back-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 200px;
	height: 44px;
	padding: 0 32px;
	border: 1px solid var(--color-text);
	border-radius: 22px;
	background: transparent;
	color: var(--color-text);
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 15px;
	letter-spacing: 0.05em;
	text-decoration: none;
	transition: background .25s var(--ease), color .25s var(--ease);
}
.voice-single__back-btn:hover {
	background: var(--color-text);
	color: #fff;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.voice-single { padding: 40px 0 70px; }
	.voice-single__inner { padding: 0 var(--gutter-sp); }

	.voice-single__title { font-size: 19px; line-height: 1.66; }
	.voice-single__title-sub { font-size: 17px; }
	.voice-single__client { font-size: 13px; }

	.voice-single__photo { margin-bottom: 36px; }

	.voice-single__sections { gap: 36px; margin-bottom: 50px; }
	.voice-section { padding-bottom: 36px; }
	.voice-section__head { margin-bottom: 24px; }
	.voice-section__en { font-size: 12px; margin-bottom: 4px; }
	.voice-section__title { font-size: 17px; }
	.voice-section__body { font-size: 14px; line-height: 1.85; }
	.voice-section__body p { margin-bottom: 16px; }

	.voice-single__body { font-size: 14px; line-height: 1.85; margin-bottom: 50px; }
	.voice-single__body p { margin-bottom: 20px; }
	.voice-single__body h2 { font-size: 18px; margin: 28px 0 14px; }
	.voice-single__body h3 { font-size: 16px; }

	.voice-single__nav { padding: 18px 0; margin-bottom: 30px; }
	.voice-single__nav a { font-size: 13px; gap: 6px; }

	.voice-single__back-btn {
		min-width: 0;
		width: 100%;
		max-width: 280px;
		font-size: 14px;
	}
}

/* =========================================================
   お知らせ（NEWS）アーカイブ
   ========================================================= */
/* 追従タイトル：.news-content の padding-bottom と合わせて末尾で消し切る。 */
.news-archive.profile-page .profile-title { bottom: 100px; }
/* SP では追従させず、page-hero の通常タイトル表示に戻す。 */
@media (max-width: 768px) {
	.news-archive.profile-page .profile-title { display: none; }
	.news-archive.profile-page .page-hero__sticky {
		position: relative;
		width: auto;
		height: auto;
		clip: auto;
		clip-path: none;
		overflow: visible;
		white-space: normal;
	}
	/* 背景動画下部のフェードオーバーレイは SP では不要（タイトルにグレーがかかるため） */
	.news-archive.profile-page .page-hero__bg::after { display: none; }
}

.news-content {
	background: var(--color-bg);
	padding: 60px 0 100px;
}
.news-content__inner {
	max-width: 754px;
	margin: 0 auto;
	padding: 0 20px;
}
/* 中間幅（タブレット〜狭めPC）：追従タイトルが本文に被るため、本文を右へ寄せる。
   .faq-content__inner と同じ調整。 */
@media (min-width: 769px) and (max-width: 1100px) {
	.news-content__inner {
		padding-left: calc( var(--gutter-pc) + 90px );
	}
}

/* 年フィルター（カスタムドロップダウン、右上） */
.news-filter {
	position: relative;
	display: flex;
	justify-content: flex-end;
	margin-bottom: 30px;
}
.news-filter__toggle {
	position: relative;
	width: 160px;
	height: 50px;
	padding: 0 36px 0 18px;
	background: var(--color-bg);
	border: 1px solid #d9d9d9;
	border-radius: 5px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	text-align: left;
	cursor: pointer;
	display: flex;
	align-items: center;
}
.news-filter__arrow {
	position: absolute;
	right: 16px;
	top: 50%;
	width: 8px;
	height: 8px;
	transform: translateY(-50%);
	pointer-events: none;
}
.news-filter__arrow::before {
	content: "";
	position: absolute;
	left: 50%;
	top: 1px;
	width: 6px;
	height: 6px;
	border-right: 1px solid var(--color-text);
	border-bottom: 1px solid var(--color-text);
	transform: translateX(-50%) rotate(45deg);
	transition: transform .25s var(--ease);
}
.news-filter__toggle[aria-expanded="true"] .news-filter__arrow::before {
	top: 4px;
	transform: translateX(-50%) rotate(-135deg);
}

/* ドロップダウンパネル */
.news-filter__menu {
	position: absolute;
	top: 100%;
	right: 0;
	margin: -1px 0 0;
	padding: 0;
	width: 160px;
	max-height: 300px;
	overflow-y: auto;
	list-style: none;
	background: var(--color-bg);
	border: 1px solid #d9d9d9;
	border-radius: 0 0 5px 5px;
	z-index: 10;
	display: none;
}
.news-filter.is-open .news-filter__menu { display: block; }
.news-filter.is-open .news-filter__toggle {
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}

.news-filter__option {
	margin: 0;
	border-bottom: 1px solid #d9d9d9;
}
.news-filter__option:last-child { border-bottom: 0; }
.news-filter__option a {
	display: block;
	padding: 0 18px;
	height: 49px;
	line-height: 49px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	text-decoration: none;
	transition: background .25s var(--ease);
}
.news-filter__option a:hover { background: #e8ebe8; }
.news-filter__option.is-current a { background: #e8ebe8; }

/* 一覧（日付 上 / タイトル 下、右に矢印） */
.news-list {
	list-style: none;
	margin: 0 0 60px;
	padding: 0;
}
.news-list__item {
	border-bottom: 1px solid #fff;
	margin: 0;
}
.news-list__link {
	display: flex;
	align-items: center;
	gap: 24px;
	padding: 28px 12px;
	color: var(--color-text);
	text-decoration: none;
	transition: opacity .25s var(--ease);
}
.news-list__link:hover { opacity: .65; }
.news-list__main {
	flex: 1;
	min-width: 0;
}
.news-list__date {
	display: block;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	line-height: 1;
	color: var(--color-text);
	margin-bottom: 16px;
}
.news-list__title {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 16px;
	line-height: 2;
	letter-spacing: 0.02em;
	color: var(--color-text);
	margin: 0;
}

/* 矢印（細い長い → 形状、SVGで描画） */
.news-list__arrow {
	flex-shrink: 0;
	width: 15px;
	height: 8px;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 8'><line x1='0' y1='4' x2='14' y2='4' stroke='%23222222' stroke-width='1' shape-rendering='crispEdges'/><path d='M10 0.5 L14.5 4 L10 7.5' fill='none' stroke='%23222222' stroke-width='1'/></svg>");
	background-repeat: no-repeat;
	background-position: center;
	transition: transform .25s var(--ease);
}
.news-list__link:hover .news-list__arrow { transform: translateX(4px); }

/* ページネーション */
.news-pagination {
	display: flex;
	justify-content: center;
	margin-top: 80px;
}
.news-pagination ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: 14px;
	align-items: center;
}
.news-pagination a,
.news-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 30px;
	height: 30px;
	padding: 0;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 600;
	font-size: 14px;
	letter-spacing: 0.05em;
	color: #4c4c4c;
	text-decoration: none;
	border-radius: 50%;
	transition: color .25s var(--ease), background .25s var(--ease);
}
.news-pagination .current {
	color: #fff;
	background: var(--color-text);
}
.news-pagination a:hover { color: var(--color-text); }

/* 戻る / 次へ */
.news-pagination .prev,
.news-pagination .next {
	min-width: 0;
	height: auto;
	padding: 0;
	border-radius: 0;
	gap: 4px;
	font-weight: 500;
	color: #4c4c4c;
}
.news-pagination .prev { margin-right: 18px; }
.news-pagination .next { margin-left: 18px; }
.news-pagination .prev:hover,
.news-pagination .next:hover { background: transparent; color: var(--color-text); }

/* 山括弧のみのシェブロン（‹ / ›） */
.news-pagination__chevron {
	display: inline-block;
	flex: 0 0 auto;
	width: 6px !important;
	height: 11px !important;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 6px 11px;
	vertical-align: middle;
}
.news-pagination__chevron--prev {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 10'><path d='M5 1 L1 5 L5 9' fill='none' stroke='%234c4c4c' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
.news-pagination__chevron--next {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 10'><path d='M1 1 L5 5 L1 9' fill='none' stroke='%234c4c4c' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}

.news-empty {
	text-align: center;
	color: var(--color-line);
	font-size: 15px;
	padding: 80px 0;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.news-content { padding: 40px 0 70px; }
	.news-content__inner { padding: 0 var(--gutter-sp); }

	.news-filter { margin-bottom: 20px; }
	.news-filter__toggle { width: 140px; height: 44px; padding: 0 32px 0 14px; font-size: 13px; }
	.news-filter__menu { width: 140px; }
	.news-filter__option a { padding: 0 14px; height: 43px; line-height: 43px; font-size: 13px; }

	.news-list__link {
		gap: 14px;
		padding: 22px 4px;
	}
	.news-list__date { font-size: 13px; margin-bottom: 12px; }
	.news-list__title { font-size: 14px; line-height: 1.85; }
	.news-list__arrow { width: 13px; height: 7px; }

	.news-pagination { margin-top: 56px; }
	.news-pagination ul { gap: 8px; }
	.news-pagination a, .news-pagination span { min-width: 28px; height: 28px; padding: 0; font-size: 13px; }
	.news-pagination .prev { margin-right: 8px; }
	.news-pagination .next { margin-left: 8px; }
	.news-pagination .prev, .news-pagination .next { padding: 0; gap: 8px; height: auto; }
}

/* ============================================================
   お知らせ詳細（single.php）
   ============================================================ */
.news-single {
	background: var(--color-bg);
	padding: 60px 0 100px;
}
.news-single__inner {
	max-width: 840px;
	margin: 0 auto;
	padding: 0 20px;
}

/* 見出し */
.news-single__head {
	margin-bottom: 40px;
	padding-bottom: 28px;
	border-bottom: 1px solid rgba(34, 34, 34, 0.15);
}
.news-single__date {
	display: block;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin-bottom: 18px;
}
.news-single__title {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.08em;
	line-height: 1.66;
	color: var(--color-text);
	margin: 0;
}

/* アイキャッチ */
.news-single__photo {
	margin: 0 0 40px;
	overflow: hidden;
}
.news-single__photo img {
	width: 100%;
	height: auto;
	display: block;
}

/* 本文 */
.news-single__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	margin-bottom: 70px;
}

/* 投稿本文に直書きされた長いURL等が画面幅を超えると横スクロールが発生し、
   SP では固定ヘッダーのハンバーガーが画面外へ押し出される。長い文字列は
   折り返して必ず本文幅に収める（本文コンテナ内のみに限定）。 */
.news-single__body,
.voice-single__body,
.voice-section__body {
	overflow-wrap: anywhere;
	word-break: break-word;
}
.news-single__body p { margin: 0 0 24px; }
.news-single__body p:last-child { margin: 0; }
.news-single__body img { max-width: 100%; height: auto; margin: 24px 0; }
.news-single__body a {
	color: var(--color-text);
	text-decoration: underline;
	text-underline-offset: 4px;
}
.news-single__body h2,
.news-single__body h3 {
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	color: var(--color-text);
	margin: 36px 0 18px;
}
.news-single__body h2 { font-size: 20px; }
.news-single__body h3 { font-size: 17px; }
.news-single__body ul,
.news-single__body ol { padding-left: 22px; margin: 16px 0; }
.news-single__body li { margin-bottom: 4px; }

/* 記事ナビ */
.news-single__nav {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 26px 0 0;
	border-top: 1px solid rgba(34, 34, 34, 0.2);
	margin-bottom: 50px;
}
.news-single__nav-prev,
.news-single__nav-next { min-width: 0; }
.news-single__nav a {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 14px;
	letter-spacing: 0.1em;
	color: var(--color-text);
	text-decoration: none;
	transition: opacity .25s var(--ease);
}
.news-single__nav a:hover { opacity: .55; }
.news-single__nav-arrow {
	display: inline-block;
	width: 6px;
	height: 11px;
	background-repeat: no-repeat;
	background-position: center;
	background-size: 6px 11px;
}
.news-single__nav-arrow--prev {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 10'><path d='M5 1 L1 5 L5 9' fill='none' stroke='%23222222' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}
.news-single__nav-arrow--next {
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 10'><path d='M1 1 L5 5 L1 9' fill='none' stroke='%23222222' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}

/* 一覧へ戻る */
.news-single__back {
	text-align: center;
}
.news-single__back-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 200px;
	height: 44px;
	padding: 0 32px;
	border: 1px solid var(--color-text);
	border-radius: 22px;
	background: transparent;
	color: var(--color-text);
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-size: 15px;
	letter-spacing: 0.05em;
	text-decoration: none;
	transition: background .25s var(--ease), color .25s var(--ease);
}
.news-single__back-btn:hover {
	background: var(--color-text);
	color: #fff;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.news-single { padding: 40px 0 70px; }
	.news-single__inner { padding: 0 var(--gutter-sp); }

	.news-single__head { margin-bottom: 28px; padding-bottom: 22px; }
	.news-single__date { font-size: 13px; margin-bottom: 14px; }
	.news-single__title { font-size: 18px; line-height: 1.66; }

	.news-single__photo { margin-bottom: 30px; }

	.news-single__body { font-size: 14px; line-height: 1.85; margin-bottom: 50px; }
	.news-single__body h2 { font-size: 17px; }
	.news-single__body h3 { font-size: 15px; }

	.news-single__nav { padding-top: 20px; margin-bottom: 36px; }
	.news-single__nav a { gap: 10px; font-size: 13px; }

	.news-single__back-btn { min-width: 180px; height: 42px; font-size: 14px; }
}

/* ============================================================
   判断の記録（insights）アーカイブ
   ============================================================ */
.insights-archive { background: var(--color-bg); }
.insights-content {
	padding: 100px 0 120px;
}
/* PC：縦書きタイトル「判断の記録」の中央字「の」に lead 上端を揃える。
   ヒーローは page-hero base で min-height:360px / height:50vh。
   タイトル開始 ≒ ヒーロー上端から 124px、行送り 32×1.5=48px、「の」は3文字目で中央 ≒ 244px。 */
.insights-archive .insights-content {
	padding-top: 0;
	margin-top: min(-116px, calc(244px - 50vh));
	position: relative;
	z-index: 3;
}
.insights-content__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 140px;
}

/* リード文（右寄せ） */
.insights-lead {
	display: flex;
	justify-content: flex-end;
	margin-bottom: 90px;
}
.insights-lead__text {
	margin: 0;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	line-height: 1.66;
	letter-spacing: 0.08em;
	color: var(--color-text);
	text-align: right;
}

/* カテゴリフィルター（横並びタブ） */
.insights-sort {
	display: flex;
	justify-content: flex-end;
	margin-bottom: 60px;
}
.insights-sort__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: 30px;
}
.insights-sort__item { position: relative; }
.insights-sort__item a {
	display: inline-block;
	position: relative;
	padding: 0 0 8px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	line-height: 1;
	color: var(--color-text);
	text-decoration: none;
	transition: opacity .25s var(--ease);
}
.insights-sort__item a:hover { opacity: .6; }
.insights-sort__item.is-current a::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 1px;
	background: var(--color-text);
}

/* グリッド（PC: 3列） */
.insights-grid {
	list-style: none;
	margin: 0 0 80px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 70px 65px;
}
.insights-card { margin: 0; }
.insights-card__link {
	display: block;
	text-decoration: none;
	color: var(--color-text);
	transition: opacity .25s var(--ease);
}
.insights-card__link:hover { opacity: .75; }

.insights-card__photo {
	position: relative;
	aspect-ratio: 290 / 200;
	background: #fff;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: 27px;
}
.insights-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.insights-card__photo-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	opacity: .5;
}
.insights-card__photo-placeholder img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.insights-card__meta {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 10px;
}
.insights-card__date {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
	line-height: 1;
}
.insights-card__cat {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 98px;
	height: 22px;
	padding: 0 10px;
	background: var(--color-text);
	color: #fff;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 13px;
	letter-spacing: 0.05em;
	line-height: 1;
	white-space: nowrap;
}
.insights-card__title {
	margin: 0;
	font-family: var(--font-jp-gothic);
	font-weight: 400;
	font-size: 15px;
	line-height: 1.66;
	letter-spacing: 0.02em;
	color: var(--color-text);
}

.insights-empty {
	text-align: center;
	color: var(--color-line);
	font-size: 15px;
	padding: 80px 0;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.insights-content { padding: 30px 0 70px; }
	/* SP は PC の縦書きタイトル整列ロジックを解除 */
	.insights-archive .insights-content {
		padding-top: 30px;
		margin-top: 0;
	}
	.insights-content__inner { padding: 0 30px; }

	.insights-lead { justify-content: flex-end; margin-bottom: 48px; }
	.insights-lead__text {
		font-size: 19px;
		line-height: 1.68;
		letter-spacing: 0.08em;
		max-width: 225px;
		text-align: left;
	}

	.insights-sort { justify-content: flex-start; margin-bottom: 30px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
	.insights-sort__list { gap: 0; flex-wrap: nowrap; }
	.insights-sort__item a { font-size: 14px; padding: 0 0 8px; margin-right: 28px; white-space: nowrap; }
	.insights-sort__item:last-child a { margin-right: 0; }

	.insights-grid {
		grid-template-columns: 1fr;
		gap: 28px;
		margin-bottom: 60px;
	}
	.insights-card__photo {
		aspect-ratio: 315 / 217;
		margin-bottom: 27px;
	}
	.insights-card__meta { gap: 12px; margin-bottom: 12px; }
	.insights-card__date { font-size: 15px; letter-spacing: 0.05em; }
	.insights-card__cat { min-width: 106px; height: 24px; font-size: 14px; padding: 0 10px; }
	.insights-card__title { font-size: 16px; line-height: 1.75; letter-spacing: 0.02em; }
}

/* ============================================================
   お問い合わせ（page-contact.php / Snow Monkey Forms）
   ============================================================ */
.contact-page { background: var(--color-bg); }
/* 追従タイトルの mask 終点を本文下端と揃える。.contact-content padding-bottom: PC 120px / SP 60px に合わせる。 */
.contact-page.profile-page .profile-title { bottom: 120px; }
@media (max-width: 768px) {
	.contact-page.profile-page .profile-title { bottom: 60px; }
}
.contact-content { padding: 80px 0 120px; }
.contact-content__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 140px;
}

/* リード（Figma固定） */
.contact-lead {
	max-width: 754px;
	margin: 0 auto 50px;
}
.contact-lead__heading {
	margin: 0 0 30px;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1;
	color: var(--color-text);
}
.contact-lead__body {
	margin: 0;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}

/* フォーム背景（白いボックス） */
.contact-form-wrap {
	background: #fff;
	max-width: 754px;
	margin: 0 auto;
	padding: 60px 60px 70px;
}
.contact-form-wrap__head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 24px;
	margin-bottom: 30px;
}
.contact-form-wrap__title {
	margin: 0;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 20px;
	letter-spacing: 0.03em;
	line-height: 1;
	color: var(--color-text);
}
.contact-form-wrap__required-note {
	margin: 0;
	font-family: var(--font-jp-gothic);
	font-size: 13px;
	letter-spacing: 0.05em;
	color: #f54500;
}

/* ===== 送信完了画面 ===== */
/* 完了要素は通常時は非表示。JS が完了を検知して .is-complete を付与する */
.contact-complete-head { display: none; }
.contact-complete-actions { display: none; }

/* 完了時：ヒーロー・追従タイトル・リード・フォーム見出しを隠す */
.contact-page.is-complete .page-hero,
.contact-page.is-complete .profile-title,
.contact-content.is-complete .contact-lead,
.contact-content.is-complete .contact-form-wrap__head {
	display: none;
}

/* 完了時：白ボックスの装飾を解除して背景になじませる */
.contact-content.is-complete .contact-form-wrap {
	background: transparent;
	padding: 0;
	max-width: none;
}

/* 完了時：中央寄せの縦組みレイアウト */
.contact-content.is-complete .contact-content__inner {
	display: flex;
	flex-direction: column;
	align-items: center;
	padding-top: 40px;
	padding-bottom: 40px;
}

/* 縦書き見出し */
.contact-content.is-complete .contact-complete-head {
	display: block;
	margin-bottom: 60px;
}
.contact-complete-head__title {
	margin: 0;
	writing-mode: vertical-rl;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 20px;
	letter-spacing: 0.18em;
	line-height: 1.9;
	color: var(--color-text);
}
.contact-complete-head__title span { display: block; }

/* 完了メッセージ本文（SMF 完了メッセージは .smf-form 内に差し込まれる） */
.contact-content.is-complete .contact-form-wrap__body .smf-form {
	max-width: 640px;
	margin: 0 auto;
	text-align: center;
}
.contact-content.is-complete .contact-form-wrap__body .smf-form p {
	margin: 0;
	text-align: center;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 2;
	letter-spacing: 0.05em;
	color: var(--color-text);
}

/* TOPへ ボタン */
.contact-content.is-complete .contact-complete-actions {
	display: flex;
	justify-content: center;
	margin-top: 60px;
}
.contact-complete-actions__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 200px;
	height: 44px;
	border: 1px solid var(--color-text);
	border-radius: 22px;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	letter-spacing: 0.1em;
	color: var(--color-text);
	text-decoration: none;
	background: transparent;
	transition: background .6s var(--ease), color .6s var(--ease);
}
.contact-complete-actions__btn:hover {
	background: var(--color-text);
	color: var(--color-white);
}

@media (max-width: 768px) {
	.contact-content.is-complete .contact-content__inner {
		padding-left: var(--gutter-sp);
		padding-right: var(--gutter-sp);
		padding-top: 20px;
	}
	.contact-content.is-complete .contact-complete-head { margin-bottom: 48px; }
	.contact-complete-head__title { font-size: 18px; }
	.contact-content.is-complete .contact-form-wrap__body .smf-form p { font-size: 14px; }
	.contact-content.is-complete .contact-complete-actions { margin-top: 48px; }
}

/* ===== Snow Monkey Forms 共通スタイル ===== */
/* SMF/WP の外側ラッパーすべての装飾（背景・ボーダー・shadow）を強制的に無効化
   親 .contact-form-wrap が白ボックスを担当するため、二重表示を防ぐ */
.contact-form-wrap__body div,
.contact-form-wrap__body form,
.contact-form-wrap__body fieldset,
.contact-form-wrap__body article,
.contact-form-wrap__body section {
	background: transparent !important;
	background-color: transparent !important;
	background-image: none !important;
	border: 0 !important;
	outline: 0 !important;
	box-shadow: none !important;
	border-radius: 0 !important;
}
.contact-form-wrap__body > *,
.contact-form-wrap__body > * > * {
	padding: 0 !important;
	margin: 0 !important;
	max-width: none !important;
	width: 100% !important;
	box-sizing: border-box !important;
}

/* SMF intro（form 内に挿入される h2, h3, p）のマージン復活 */
.contact-form-wrap__body h1,
.contact-form-wrap__body h2,
.contact-form-wrap__body h3,
.contact-form-wrap__body h4,
.contact-form-wrap__body h5,
.contact-form-wrap__body h6,
.contact-form-wrap__body .wp-block-heading {
	font-family: "Shippori Mincho", var(--font-jp-mincho) !important;
	font-weight: 500 !important;
	font-size: 18px !important;
	color: var(--color-text) !important;
	margin: 0 0 12px !important;
	line-height: 1.5 !important;
}
.contact-form-wrap__body p {
	font-family: var(--font-jp-gothic) !important;
	font-size: 14px !important;
	line-height: 1.85 !important;
	letter-spacing: 0.03em !important;
	margin: 0 0 14px !important;
}
/* form intro と最初のフィールドの間に余白 */
.contact-form-wrap__body .smf-form > p:last-of-type,
.contact-form-wrap__body .smf-form > h1:last-of-type,
.contact-form-wrap__body .smf-form > h2:last-of-type,
.contact-form-wrap__body .smf-form > h3:last-of-type,
.contact-form-wrap__body .smf-form > h4:last-of-type {
	margin-bottom: 28px !important;
}
/* ただし、フォームの個別アイテムや入力要素は元のスタイルに戻す */
.contact-form-wrap__body .smf-item,
.contact-form-wrap__body .smf-action {
	background: transparent !important;
	border: 0 !important;
	padding: 0 !important;
}
.contact-form-wrap__body input[type="text"],
.contact-form-wrap__body input[type="email"],
.contact-form-wrap__body input[type="tel"],
.contact-form-wrap__body input[type="url"],
.contact-form-wrap__body input[type="number"],
.contact-form-wrap__body textarea {
	background: #fff !important;
	width: 100% !important;
}

/* SMF の .smf-text-control / .smf-tel-control / .smf-email-control / .smf-url-control / .smf-textarea-control / .smf-placeholder
   は input をラップする div。padding-left:14px がついて input がインデントするのを解除 */
.contact-form-wrap__body .smf-text-control,
.contact-form-wrap__body .smf-tel-control,
.contact-form-wrap__body .smf-email-control,
.contact-form-wrap__body .smf-url-control,
.contact-form-wrap__body .smf-textarea-control,
.contact-form-wrap__body .smf-placeholder {
	padding: 0 !important;
	margin: 0 !important;
	border: 0 !important;
	background: transparent !important;
	border-radius: 0 !important;
	display: block !important;
	width: 100% !important;
	box-shadow: none !important;
}
.contact-form-wrap__body select { width: 160px !important; background: #fff !important; }
/* ラジオ・チェックボックスは固定サイズに（width:100% の影響を受けないように） */
.contact-form-wrap__body input[type="radio"],
.contact-form-wrap__body input[type="checkbox"] {
	width: 16px !important;
	height: 16px !important;
	flex: 0 0 16px !important;
}
/* ラジオ・チェックボックスを縦並びにする
   構造: .smf-radio-buttons-control > .smf-radio-buttons-control__control（全アイテムのcontainer）> .smf-label（各アイテム） */
.contact-form-wrap__body .smf-radio-buttons-control,
.contact-form-wrap__body .smf-checkboxes-control {
	display: block !important;
}
.contact-form-wrap__body .smf-radio-buttons-control__control,
.contact-form-wrap__body .smf-checkboxes-control__control {
	display: flex !important;
	flex-direction: column !important;
	gap: 10px !important;
	width: 100% !important;
	align-items: flex-start !important;
}
.contact-form-wrap__body .smf-radio-buttons-control__control .smf-label,
.contact-form-wrap__body .smf-checkboxes-control__control .smf-label {
	display: inline-flex !important;
	align-items: center !important;
	width: auto !important;
}
.contact-form-wrap__body .smf-radio-buttons-control__control .smf-label label,
.contact-form-wrap__body .smf-checkboxes-control__control .smf-label label {
	display: inline-flex !important;
	align-items: center !important;
	gap: 10px !important;
	font-family: var(--font-jp-gothic) !important;
	font-size: 14px !important;
	color: var(--color-text) !important;
	cursor: pointer !important;
	font-weight: 400 !important;
}
.contact-form-wrap__body .smf-radio-button-control,
.contact-form-wrap__body .smf-checkbox-control {
	display: inline-flex !important;
	align-items: center !important;
	gap: 10px !important;
	width: auto !important;
}

/* SMF 送信ボタンの2重ボーダー対策：外側 .smf-button-control（span）の装飾を無効化 */
.contact-form-wrap__body .smf-action {
	margin-top: 36px !important;
	display: flex !important;
	justify-content: center !important;
	gap: 16px !important;
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
}
.contact-form-wrap__body .smf-button-control,
.contact-form-wrap__body span.smf-button-control {
	display: inline-block !important;
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	box-shadow: none !important;
	width: auto !important;
	min-width: 0 !important;
}
/* 実ボタン .smf-button-control__control にのみピル状ボーダーを適用 */
.contact-form-wrap__body .smf-button-control__control,
.contact-form-wrap__body button[type="submit"],
.contact-form-wrap__body input[type="submit"] {
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	min-width: 200px !important;
	height: 44px !important;
	padding: 0 28px !important;
	border: 1px solid var(--color-text) !important;
	border-radius: 22px !important;
	background: transparent !important;
	color: var(--color-text) !important;
	font-family: "Zen Old Mincho", var(--font-jp-mincho) !important;
	font-weight: 500 !important;
	font-size: 16px !important;
	letter-spacing: 0.05em !important;
	width: auto !important;
	cursor: pointer !important;
	transition: background-color .6s var(--ease), color .6s var(--ease) !important;
}
/* ホバー：静かに反転（ease-out で減速） */
.contact-form-wrap__body .smf-button-control__control:hover,
.contact-form-wrap__body button[type="submit"]:hover,
.contact-form-wrap__body input[type="submit"]:hover {
	background: var(--color-text) !important;
	color: #fff !important;
}
.contact-form-wrap__body .smf-button-control__control:focus-visible,
.contact-form-wrap__body button[type="submit"]:focus-visible,
.contact-form-wrap__body input[type="submit"]:focus-visible {
	outline: 2px solid var(--color-text) !important;
	outline-offset: 2px !important;
}

.contact-form-wrap__body .smf-item {
	display: block;
	margin: 0 0 32px;
}
.contact-form-wrap__body .smf-item:last-child { margin-bottom: 0; }
.contact-form-wrap__body .smf-item__label,
.contact-form-wrap__body label.smf-item__label {
	display: block;
	margin: 0 0 8px;
	font-family: var(--font-jp-gothic);
	font-weight: 400;
	font-size: 15px;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.contact-form-wrap__body .smf-item__label__text { display: inline; }
.contact-form-wrap__body .smf-item__label__required,
.contact-form-wrap__body .smf-item__label .__required,
.contact-form-wrap__body .smf-item__label sup {
	display: inline-block;
	margin-left: 6px;
	color: #f54500;
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 13px;
	letter-spacing: 0.05em;
	vertical-align: middle;
	background: none !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
}
.contact-form-wrap__body .smf-item__label__required::before {
	content: "※";
}
/* required の中身が「必須」テキストの場合は ※ に置き換え */
.contact-form-wrap__body .smf-item__label__required { font-size: 0; }
.contact-form-wrap__body .smf-item__label__required::before { font-size: 13px; }
/* ラベル文言内の「（必須）」を JS で差し替えた ※ マーク。
   色は「※このマークの質問は回答必須事項です」(.contact-form-wrap__required-note) と同じ #f54500。 */
.contact-form-wrap__body .smf-required-mark {
	margin-left: 4px;
	color: #f54500;
}

/* テキスト系入力 */
.contact-form-wrap__body input[type="text"],
.contact-form-wrap__body input[type="email"],
.contact-form-wrap__body input[type="tel"],
.contact-form-wrap__body input[type="url"],
.contact-form-wrap__body input[type="number"],
.contact-form-wrap__body .smf-text-control,
.contact-form-wrap__body .smf-tel-control,
.contact-form-wrap__body .smf-email-control,
.contact-form-wrap__body .smf-url-control {
	display: block;
	width: 100%;
	height: 40px;
	padding: 0 14px;
	background: #fff;
	border: 1px solid #d5d5d5;
	border-radius: 5px;
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	color: var(--color-text);
	box-sizing: border-box;
	transition: border-color .2s var(--ease);
}
.contact-form-wrap__body input[type="text"]:focus,
.contact-form-wrap__body input[type="email"]:focus,
.contact-form-wrap__body input[type="tel"]:focus,
.contact-form-wrap__body input[type="url"]:focus,
.contact-form-wrap__body input[type="number"]:focus,
.contact-form-wrap__body .smf-text-control:focus,
.contact-form-wrap__body .smf-tel-control:focus,
.contact-form-wrap__body .smf-email-control:focus,
.contact-form-wrap__body .smf-url-control:focus {
	outline: 0;
	border-color: var(--color-text);
}
.contact-form-wrap__body input::placeholder,
.contact-form-wrap__body textarea::placeholder {
	color: #b8b8b8;
}

/* 都道府県セレクト */
.contact-form-wrap__body select,
.contact-form-wrap__body .smf-select-control {
	display: block;
	width: 160px;
	height: 40px;
	padding: 0 38px 0 14px;
	background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'><path d='M1 1 L4 4 L7 1' fill='none' stroke='%23222222' stroke-width='1' stroke-linecap='round' stroke-linejoin='round'/></svg>") no-repeat right 14px center / 8px 5px;
	border: 1px solid #d5d5d5;
	border-radius: 5px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 14px;
	color: var(--color-text);
	-webkit-appearance: none;
	appearance: none;
	box-sizing: border-box;
	cursor: pointer;
	transition: border-color .2s var(--ease);
}
.contact-form-wrap__body select:focus,
.contact-form-wrap__body .smf-select-control:focus {
	outline: 0;
	border-color: var(--color-text);
}

/* テキストエリア */
.contact-form-wrap__body textarea,
.contact-form-wrap__body .smf-textarea-control {
	display: block;
	width: 100%;
	min-height: 250px;
	padding: 18px;
	background: #fff;
	border: 1px solid #d5d5d5;
	border-radius: 5px;
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.71;
	color: var(--color-text);
	resize: vertical;
	box-sizing: border-box;
	transition: border-color .2s var(--ease);
}
.contact-form-wrap__body textarea:focus,
.contact-form-wrap__body .smf-textarea-control:focus {
	outline: 0;
	border-color: var(--color-text);
}

/* バリデーションエラー */
.contact-form-wrap__body .smf-item--invalid input,
.contact-form-wrap__body .smf-item--invalid textarea,
.contact-form-wrap__body .smf-item--invalid select {
	border-color: #f54500;
}
.contact-form-wrap__body .smf-error {
	display: block;
	margin-top: 6px;
	font-family: var(--font-jp-gothic);
	font-size: 12px;
	color: #f54500;
}

/* アクションボタン（確認画面へ / 送信 / 戻る） */
.contact-form-wrap__body .smf-action {
	margin-top: 36px;
	display: flex;
	justify-content: center;
	gap: 16px;
}
.contact-form-wrap__body .smf-button-control,
.contact-form-wrap__body button[type="submit"],
.contact-form-wrap__body input[type="submit"],
.contact-form-wrap__body input[type="button"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 200px;
	height: 44px;
	padding: 0 28px;
	border: 1px solid var(--color-text);
	border-radius: 22px;
	background: transparent;
	color: var(--color-text);
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 16px;
	letter-spacing: 0.05em;
	cursor: pointer;
	transition: background .25s var(--ease), color .25s var(--ease);
	-webkit-appearance: none;
	appearance: none;
}
.contact-form-wrap__body .smf-button-control:hover,
.contact-form-wrap__body button[type="submit"]:hover,
.contact-form-wrap__body input[type="submit"]:hover {
	background: var(--color-text);
	color: #fff;
}

/* 完了 / エラーメッセージ */
.contact-form-wrap__body .smf-complete,
.contact-form-wrap__body .smf-system-error {
	padding: 20px 0;
	text-align: center;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	color: var(--color-text);
	line-height: 1.93;
}
.contact-form-wrap__body .smf-system-error { color: #f54500; }

/* ===== ラジオボタン / チェックボックス（ご相談テーマなど） ===== */
.contact-form-wrap__body .smf-radio-buttons-control,
.contact-form-wrap__body .smf-checkboxes-control {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin-top: 4px;
}
.contact-form-wrap__body .smf-radio-buttons-control__control,
.contact-form-wrap__body .smf-checkboxes-control__control {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	letter-spacing: 0.03em;
	color: var(--color-text);
	cursor: pointer;
}
.contact-form-wrap__body input[type="radio"],
.contact-form-wrap__body input[type="checkbox"] {
	-webkit-appearance: none;
	appearance: none;
	width: 16px;
	height: 16px;
	margin: 0;
	border: 1px solid #b8b8b8;
	background: #fff;
	cursor: pointer;
	flex-shrink: 0;
	position: relative;
	transition: border-color .2s var(--ease);
}
.contact-form-wrap__body input[type="radio"] { border-radius: 50%; }
.contact-form-wrap__body input[type="checkbox"] { border-radius: 2px; }
.contact-form-wrap__body input[type="radio"]:checked,
.contact-form-wrap__body input[type="checkbox"]:checked {
	border-color: var(--color-text);
}
.contact-form-wrap__body input[type="radio"]:checked::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 8px;
	height: 8px;
	background: var(--color-text);
	border-radius: 50%;
	transform: translate(-50%, -50%);
}
.contact-form-wrap__body input[type="checkbox"]:checked::after {
	content: "";
	position: absolute;
	top: 1px;
	left: 4px;
	width: 5px;
	height: 9px;
	border-right: 1.5px solid var(--color-text);
	border-bottom: 1.5px solid var(--color-text);
	transform: rotate(45deg);
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.contact-content { padding: 30px 0 60px; }
	.contact-content__inner {
		padding-left: 32%;   /* Figma: 120/375 = 32%（縦書きヘッダーの右側に揃える） */
		padding-right: 0;
		max-width: none;
	}

	.contact-lead {
		padding-left: 0;
		margin-bottom: 30px;
		max-width: 225px;
	}
	.contact-lead__heading {
		font-size: 19px;
		letter-spacing: 0.1em;
		line-height: 1.68;
		margin-bottom: 25px;
	}
	.contact-lead__body {
		font-size: 15px;
		line-height: 1.93;
	}

	.contact-form-wrap {
		margin: 0;
		/* SP は内側コンテンツ幅いっぱい（inner は padding-right:0）まで広げ、白背景を画面右端へ密着させる */
		max-width: none;
		width: auto;
		padding: 25px 30px 30px 25px;
	}
	.contact-form-wrap__head {
		flex-direction: column;
		align-items: flex-start;
		gap: 6px;
		margin-bottom: 24px;
	}
	.contact-form-wrap__title { font-size: 16px; letter-spacing: 0.03em; }
	.contact-form-wrap__required-note { font-size: 13px; letter-spacing: 0.05em; line-height: 1.3; }

	.contact-form-wrap__body .smf-item { margin-bottom: 18px; }
	.contact-form-wrap__body .smf-item__label,
	.contact-form-wrap__body label.smf-item__label { font-size: 14px; }
	.contact-form-wrap__body input[type="text"],
	.contact-form-wrap__body input[type="email"],
	.contact-form-wrap__body input[type="tel"],
	.contact-form-wrap__body .smf-text-control,
	.contact-form-wrap__body .smf-tel-control,
	.contact-form-wrap__body .smf-email-control { height: 40px; font-size: 14px; }
	.contact-form-wrap__body select,
	.contact-form-wrap__body .smf-select-control {
		width: 100%;
		max-width: 160px;
		height: 40px;
		font-size: 14px;
	}
	.contact-form-wrap__body textarea,
	.contact-form-wrap__body .smf-textarea-control { min-height: 250px; font-size: 14px; }
	/* 確認画面のボタン（修正する／送信）は SP では横並びだと重なるため縦2段に。
	   DOM 順は [修正する(戻る) → 送信] のため column-reverse で「送信」を上・「修正する」を下に配置する。
	   ボタン幅はラベル文字数で変わり端が揃わないため、SP では両ボタンをフォーム幅いっぱい(100%)に
	   統一して左右の端を完全に揃える。 */
	.contact-form-wrap__body .smf-action {
		margin-top: 30px;
		flex-direction: column-reverse;
		align-items: stretch;
		gap: 14px;
	}
	/* 上の 7251〜 のブロックが width:auto / min-width:200px を !important で指定しているため、
	   ここでも !important で上書きしないとフォーム幅いっぱいにならない。 */
	.contact-form-wrap__body .smf-action > * { width: 100% !important; margin: 0 !important; }
	.contact-form-wrap__body .smf-action .smf-button-control,
	.contact-form-wrap__body .smf-action span.smf-button-control,
	.contact-form-wrap__body .smf-action .smf-backbutton-control,
	.contact-form-wrap__body .smf-action .smf-button-control__control,
	.contact-form-wrap__body .smf-action .smf-backbutton-control__control,
	.contact-form-wrap__body .smf-action button,
	.contact-form-wrap__body .smf-action input[type="submit"],
	.contact-form-wrap__body .smf-action input[type="button"] {
		width: 100% !important;
		min-width: 0 !important;
		height: 44px !important;
		font-size: 16px !important;
	}
}

/* ============================================================
   ポリシー類（プライバシーポリシー / 保険個人情報 / M&Aガイドライン）
   ============================================================ */
.policy-page { background: var(--color-bg); padding: 84px 0 100px; }
.policy-page__wrap {
	max-width: 1000px;
	margin: 0 auto;
	padding: 0 20px;
}

/* ヘッダー */
.policy-page__head { margin-bottom: 50px; padding-left: 0; }
.policy-page__title {
	margin: 0 0 18px;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 32px;
	letter-spacing: 0.05em;
	line-height: 1.25;
	color: var(--color-text);
}
.policy-page__en {
	margin: 0 0 96px;
	font-family: var(--font-en-serif);
	font-weight: 400;
	font-size: 13px;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.policy-page__intro {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.policy-page__intro p { margin: 0 0 18px; }
.policy-page__intro p:last-child { margin-bottom: 0; }

/* 細い水平区切り線 */
.policy-page__divider {
	height: 1px;
	background: #a0a0a0;
	margin: 0 0 80px;
}

/* 本体 PC: navigation + content */
.policy-page__body {
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 40px;
	align-items: start;
}

/* 左 navigation（PC: sticky）。
   ナビ自身を本文列の高さまで伸ばした「コンテナ」とし、中の sticky 要素が
   コンテナ下端で追従を止める。margin-bottom を増やすほどコンテナ下端＝終着点が
   上に上がる。205px にすると、メニュー終着点が本文末尾の段落の終わり付近
   （署名・お問い合わせ先ブロックの手前）で止まる。 */
.policy-page__nav {
	align-self: stretch;
	width: 200px;
	margin-bottom: 155px;
}
.policy-page__nav-sticky {
	position: sticky;
	top: 130px;
}
.policy-page__nav-toggle {
	display: block;
	background: transparent;
	border: 0;
	padding: 0;
	margin: 0 0 20px;
	cursor: default;
	color: var(--color-text);
	font-family: inherit;
	pointer-events: none; /* PCではクリック不能 */
}
.policy-page__nav-label {
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 13px;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.policy-page__nav-arrow { display: none; }
.policy-page__nav-list {
	list-style: none;
	margin: 0;
	padding: 0 0 0 16px;
}
.policy-page__nav-list li {
	margin: 0 0 14px;
	position: relative;
}
.policy-page__nav-list li:last-child { margin-bottom: 0; }
.policy-page__nav-list a {
	display: block;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 13px;
	letter-spacing: 0.05em;
	line-height: 1.7;
	color: var(--color-text);
	text-decoration: none;
	transition: opacity .25s var(--ease);
	/* 折り返した行は「1. 」の幅ぶん字下げして本文の頭に揃える */
	padding-left: 1.6em;
	text-indent: -1.6em;
}
.policy-page__nav-list a:hover { opacity: .55; }
/* 選択中の項目に●を表示 */
.policy-page__nav-list li::before {
	content: "";
	position: absolute;
	left: -16px;
	top: 0.65em;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--color-text);
	opacity: 0;
	transition: opacity .25s var(--ease);
}
.policy-page__nav-list li:has(a.is-active)::before {
	opacity: 1;
}
.policy-page__nav-list a:hover { opacity: .55; }
.policy-page__nav-list a.is-active { font-weight: 500; }

/* 本文 */
.policy-page__content {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.93;
	letter-spacing: 0.05em;
	color: var(--color-text);
	/* 本文に直書きされた長いURL等が画面幅を超えると横スクロールが発生し、
	   SP では固定ヘッダーのハンバーガーが画面外へ押し出される。長い文字列は
	   折り返して必ず本文幅に収める。 */
	overflow-wrap: anywhere;
	word-break: break-word;
}
.policy-page__content h2,
.policy-page__content h3 {
	margin: 50px 0 25px;
	padding: 10px 15px;
	background: #e8ebe8;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 17px;
	letter-spacing: 0.05em;
	line-height: 1.7;
	color: var(--color-text);
	scroll-margin-top: 120px;
}
.policy-page__content h2:first-child,
.policy-page__content h3:first-child { margin-top: 0; }
.policy-page__content h4 {
	margin: 28px 0 12px;
	font-family: "Zen Old Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 16px;
	color: var(--color-text);
}
.policy-page__content p { margin: 0 0 18px; }
.policy-page__content p:last-child { margin-bottom: 0; }
/* エディタ本文末尾などに入る空段落は余白の原因になるため畳む */
.policy-page__content p:empty { display: none; }
.policy-page__content ul,
.policy-page__content ol {
	margin: 14px 0 24px;
	padding-left: 22px;
}
.policy-page__content ul { list-style: disc outside; }
.policy-page__content ol { list-style: decimal outside; }
.policy-page__content li {
	margin-bottom: 4px;
	padding-left: 6px;
}
.policy-page__content li::marker { color: var(--color-text); }
.policy-page__content strong { font-weight: 500; }
.policy-page__content a {
	color: var(--color-text);
	text-decoration: underline;
	text-underline-offset: 4px;
}
/* 末尾の制定日署名・お問い合わせ先（右寄せ）。
   直前の本文段落との間に余白を確保する。 */
.policy-page__content .has-text-align-right {
	text-align: right;
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 14px;
	line-height: 1.7;
	letter-spacing: 0.05em;
	margin-top: 64px;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.policy-page { padding: 22px 0 60px; }
	.policy-page__wrap { padding: 0 var(--gutter-sp); }
	.policy-page__head { padding-left: 0; margin-bottom: 30px; }
	.policy-page__title { font-size: 23px; }
	.policy-page__en { margin-bottom: 64px; font-size: 11px; }
	.policy-page__intro { font-size: 15px; line-height: 1.93; }
	.policy-page__divider { margin-bottom: 30px; }

	/* SP: 1列レイアウト、navigation はアコーディオン */
	.policy-page__body {
		display: block;
		grid-template-columns: 1fr;
	}
	.policy-page__nav {
		position: static;
		align-self: auto;
		width: 100%;
		margin-bottom: 30px;
		padding: 0;
		border: 0;
	}
	.policy-page__nav-sticky { position: static; }
	.policy-page__nav-toggle {
		display: flex;
		align-items: center;
		justify-content: space-between;
		width: 100%;
		padding: 0;
		margin: 0;
		background: transparent;
		border: 0;
		cursor: pointer;
		pointer-events: auto;
	}
	.policy-page__nav-arrow {
		display: inline-block;
		width: 8px;
		height: 15px;
		background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 15'><line x1='4' y1='0' x2='4' y2='14' stroke='%23222222' stroke-width='1' shape-rendering='crispEdges'/><path d='M0.5 10 L4 14.5 L7.5 10' fill='none' stroke='%23222222' stroke-width='1'/></svg>");
		background-repeat: no-repeat;
		background-position: center;
		background-size: 8px 15px;
		transition: transform .3s var(--ease);
	}
	.policy-page__nav-toggle[aria-expanded="true"] .policy-page__nav-arrow {
		transform: rotate(180deg);
	}
	.policy-page__nav-list {
		display: none;
		margin-top: 16px;
	}
	.policy-page__nav-toggle[aria-expanded="true"] + .policy-page__nav-list {
		display: block;
	}

	.policy-page__content { font-size: 15px; line-height: 1.93; }
	.policy-page__content h2,
	.policy-page__content h3 { margin-top: 36px; padding: 10px 15px; font-size: 17px; }
	.policy-page__content h4 { font-size: 15px; }
	.policy-page__content .has-text-align-right { margin-top: 0; }
}

/* ============================================================
   Recruit ページ（page-recruit.php）
   ============================================================ */
.recruit-page { background: #222; color: #fff; overflow-x: clip; }

/* ----- MV -----
   MVは100vhの「プレースホルダー」。中身（bg/catch/scroll）は position: fixed で
   画面に固定し、後続セクションが上にスクロールして覆っていく方式。
   この方式なら sticky のSafariバグを完全に回避できる。 */
.recruit-mv {
	position: relative;
	height: 100vh;
	min-height: 600px;
	color: #fff;
}
.recruit-mv__bg {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	height: 100vh;
	min-height: 600px;
	z-index: 0;
	overflow: hidden;
	transition: opacity .6s var(--ease);
}
.is-recruit-page.is-mv-hidden .recruit-mv__bg,
.is-recruit-page.is-mv-hidden .recruit-mv__catch,
.is-recruit-page.is-mv-hidden .recruit-mv__scroll {
	opacity: 0;
	pointer-events: none;
}
.recruit-mv__bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: .6;
}
.recruit-mv__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(34,34,34,0) 0%, rgba(34,34,34,.85) 90%);
}
.recruit-mv__catch {
	position: fixed;
	top: 50vh;
	left: 50%;
	transform: translate(-50%, -50%);
	display: flex;
	flex-direction: row-reverse;
	align-items: flex-start;
	gap: 32px;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	color: #fff;
	z-index: 0;
	transition: opacity .6s var(--ease);
}
.recruit-mv__line {
	margin: 0;
	writing-mode: vertical-rl;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1.5;
	white-space: nowrap;
	font-feature-settings: "palt";
}
.recruit-mv__em {
	font-size: 40px;
	letter-spacing: 0.1em;
}
.recruit-mv__scroll {
	position: fixed;
	right: 80px;
	bottom: 70px;
	margin: 0;
	font-family: var(--font-en-serif);
	font-size: 13px;
	letter-spacing: 0.05em;
	color: #fff;
	white-space: nowrap;
	z-index: 0;
	transition: opacity .6s var(--ease);
}

/* ----- 概要 ----- */
.recruit-overview {
	position: relative;
	z-index: 2;
	background: linear-gradient(180deg, rgba(34,34,34,0) 0%, #222 600px);
	padding: 600px 0 280px;
	text-align: center;
}
.recruit-overview__inner {
	max-width: 600px;
	margin: 0 auto;
	padding: 0 20px;
}
.recruit-overview__body {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 2.33;
	letter-spacing: 0.05em;
	color: #fff;
}
.recruit-overview__body p { margin: 0 0 30px; }
.recruit-overview__body p:last-child { margin-bottom: 0; }

/* ----- 共通：sticky 縦書きタイトル ----- */
.recruit-about__title-block {
	display: flex;
	gap: 24px;
	align-items: flex-start;
}
.recruit-about__title {
	margin: 0;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 28px;
	letter-spacing: 0.2em;
	line-height: 1.7;
	color: #fff;
	writing-mode: vertical-rl;
	text-orientation: mixed;
	font-feature-settings: "palt";
}
/* 縦書き中の Latin 文字を 1文字ずつ縦に並べる（直立） */
.recruit-about__title .tcy {
	text-orientation: upright;
	-webkit-text-orientation: upright;
}
.recruit-about__en {
	margin: 0;
	writing-mode: vertical-rl;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.1em;
	color: #fff;
}

/* ----- UKパートナーズについて ----- */
.recruit-about {
	position: relative;
	z-index: 2;
	background: #222;
	display: grid;
	grid-template-columns: 386px 1fr;
	padding: 0 0 200px;
}
.recruit-about__sticky {
	position: sticky;
	top: 130px;
	align-self: start;
	padding-left: 140px;
	padding-top: 90px;
}
.recruit-about__content {
	padding-right: 140px;
	padding-top: 90px;
}

/* セクション共通ヘッダー */
.recruit-block__head { margin-bottom: 80px; }
.recruit-block__en {
	margin: 0 0 48px;
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.15em;
	color: #fff;
}
.recruit-block__en::before {
	content: "";
	display: inline-block;
	width: 30px;
	height: 1px;
	background: #fff;
	margin-right: 12px;
}
.recruit-block__title {
	margin: 0;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 1.5;
	color: #fff;
}

/* スタンス */
.recruit-stance { margin-bottom: 120px; }
.recruit-stance__list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.recruit-stance__list li {
	border-bottom: 1px solid #656565;
	padding: 32px 0;
}
.recruit-stance__list li:first-child { padding-top: 24px; }
.recruit-stance__num {
	margin: 0 0 14px;
	font-family: var(--font-en-serif);
	font-size: 18px;
	color: #fff;
}
.recruit-stance__text {
	margin: 0;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 18px;
	letter-spacing: 0.1em;
	line-height: 1.65;
	color: #fff;
}
.recruit-stance__note {
	margin: 40px 0 0;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.85;
	letter-spacing: 0.05em;
	color: #fff;
}

/* 支援内容 */
.recruit-work .recruit-block__head { margin-bottom: 16px; }
.recruit-work__lead {
	margin: 0 0 80px;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.85;
	letter-spacing: 0.05em;
	color: #fff;
}
.recruit-work__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
}
.recruit-work__card {
	border: 1px solid #656565;
	min-height: 256px;
	padding: 154px 25px 24px;
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.recruit-work__title {
	margin: 0;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 18px;
	letter-spacing: 0.1em;
	color: #fff;
}
.recruit-work__text {
	margin: 0;
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	line-height: 1.71;
	letter-spacing: 0.05em;
	color: #fff;
}

/* ----- 私たちが求める人物像 ----- */
.recruit-person {
	position: relative;
	z-index: 2;
	background: #222;
	display: grid;
	grid-template-columns: 386px 1fr;
	padding: 90px 0 200px;
	overflow: hidden;
}
.recruit-person__sticky {
	position: sticky;
	top: 130px;
	height: fit-content;
	padding-left: 140px;
}
.recruit-person__nav {
	margin-top: 360px;
	display: flex;
	gap: 16px;
}
.recruit-person__prev,
.recruit-person__next {
	width: 39px;
	height: 39px;
	border: 1px solid #fff;
	border-radius: 50%;
	background: transparent;
	cursor: pointer;
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	transition: background-color .3s var(--ease);
}
.recruit-person__prev:hover,
.recruit-person__next:hover {
	background: rgba(255, 255, 255, 0.1);
}
.recruit-person__arrow {
	width: 8px;
	height: 8px;
	border-top: 1px solid #fff;
	border-right: 1px solid #fff;
}
.recruit-person__arrow--prev { transform: rotate(-135deg); margin-left: 4px; }
.recruit-person__arrow--next { transform: rotate(45deg); margin-right: 4px; }

.recruit-person__track {
	display: flex;
	gap: 30px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	padding-right: 140px;
	scrollbar-width: none;
}
.recruit-person__track::-webkit-scrollbar { display: none; }
.recruit-person__card {
	flex: 0 0 486px;
	min-height: 608px;
	background: #939393;
	padding: 40px 40px 40px;
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
}
.recruit-person__illust {
	margin: 0 -40px 60px;
	width: calc(100% + 80px);
	display: flex;
	justify-content: center;
}
.recruit-person__illust img {
	max-width: 100%;
	height: auto;
	display: block;
}
.recruit-person__num {
	margin: 0 0 32px;
	font-family: var(--font-en-serif);
	font-size: 18px;
	color: #fff;
}
.recruit-person__text {
	margin: 0;
	min-height: calc(20px * 1.6 * 3);
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 20px;
	letter-spacing: 0.1em;
	line-height: 1.6;
	color: #fff;
}

/* ----- 現在の募集状況について ----- */
.recruit-status {
	position: relative;
	z-index: 2;
	background: #222;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 50px;
	padding: 90px 140px 200px;
	align-items: center;
}
.recruit-status__photo {
	overflow: hidden;
	aspect-ratio: 762 / 551;
	margin-left: -140px;
}
.recruit-status__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.recruit-status__body { max-width: 500px; }
.recruit-status__en {
	margin: 0 0 20px;
	font-family: var(--font-en-serif);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: #fff;
}
.recruit-status__title {
	margin: 0 0 36px;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 500;
	font-size: 24px;
	letter-spacing: 0.1em;
	line-height: 2;
	color: #fff;
}
.recruit-status__text {
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.87;
	letter-spacing: 0.05em;
	color: #fff;
}
.recruit-status__text p { margin: 0 0 24px; }
.recruit-status__text p:last-child { margin-bottom: 0; }

/* ----- Entry CTA ----- */
.recruit-entry {
	position: relative;
	z-index: 2;
	background: #fff;
	color: var(--color-text);
	padding: 120px 0 160px;
	text-align: center;
}
.recruit-entry__inner {
	max-width: 1000px;
	margin: 0 auto;
	padding: 0 20px;
}
.recruit-entry__en {
	margin: 0 0 50px;
	font-family: var(--font-en-serif);
	font-size: 70px;
	letter-spacing: 0.05em;
	line-height: 1;
	color: var(--color-text);
}
.recruit-entry__lead {
	margin: 0 0 30px;
	font-family: "Shippori Mincho", var(--font-jp-mincho);
	font-weight: 400;
	font-size: 20px;
	letter-spacing: 0.05em;
	line-height: 1.4;
	color: var(--color-text);
	white-space: nowrap;
}
.recruit-entry__text {
	margin: 0 0 18px;
	font-family: var(--font-jp-gothic);
	font-size: 15px;
	line-height: 1.87;
	letter-spacing: 0.05em;
	color: var(--color-text);
	white-space: nowrap;
}
.recruit-entry__note {
	margin: 0 0 40px;
	font-family: var(--font-jp-gothic);
	font-size: 14px;
	letter-spacing: 0.05em;
	color: var(--color-text);
}
.recruit-entry__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 380px;
	height: 80px;
	border: 2px solid var(--color-text);
	border-radius: 40px;
	background: transparent;
	color: var(--color-text);
	font-family: var(--font-jp-gothic);
	font-weight: 500;
	font-size: 20px;
	letter-spacing: 0.05em;
	text-decoration: none;
	transition: background-color .6s var(--ease), color .6s var(--ease);
}
.recruit-entry__button:hover {
	background: var(--color-text);
	color: #fff;
}

/* ----- SP ----- */
@media (max-width: 768px) {
	.recruit-mv { min-height: 580px; }
	.recruit-mv__catch { gap: 22px; }
	.recruit-mv__line { font-size: 20px; }
	.recruit-mv__em { font-size: 32px; }
	.recruit-mv__scroll { right: 20px; bottom: 30px; font-size: 11px; }

	.recruit-overview {
		padding: 240px 0 90px;
		background: linear-gradient(180deg, rgba(34,34,34,0) 0%, #222 240px);
	}
	.recruit-overview__inner { max-width: 315px; padding: 0; }
	.recruit-overview__body { font-size: 14px; line-height: 2; }

	/* 縦書きタイトル：SPも sticky で左寄せ */
	.recruit-about,
	.recruit-person {
		display: grid;
		grid-template-columns: 106px 1fr;
		padding: 0;
		padding-bottom: 90px;
	}
	.recruit-about__sticky {
		position: sticky;
		top: 80px;
		align-self: start;
		padding: 90px 0 0 var(--gutter-sp);
	}
	.recruit-person__sticky {
		position: sticky;
		top: 80px;
		height: fit-content;
		padding: 90px 0 0 var(--gutter-sp);
	}
	.recruit-about__title { font-size: 23px; line-height: 1.3; }
	.recruit-about__en { font-size: 11px; letter-spacing: 0.05em; }
	.recruit-about__title-block { gap: 8px; }

	.recruit-about__content { padding: 90px var(--gutter-sp) 0 0; }
	.recruit-block__head { margin-bottom: 24px; }
	.recruit-block__title { font-size: 19px; }
	.recruit-block__en { font-size: 13px; }
	.recruit-block__en { margin-bottom: 24px; }
	.recruit-block__en::before { width: 25px; }

	.recruit-stance { margin-bottom: 80px; }
	.recruit-stance__list li { padding: 24px 0; }
	.recruit-stance__num { font-size: 16px; margin-bottom: 10px; }
	.recruit-stance__text { font-size: 16px; line-height: 1.75; }
	.recruit-stance__note { font-size: 14px; }

	.recruit-work__lead { font-size: 14px; }
	.recruit-work__grid {
		grid-template-columns: 1fr;
		gap: 14px;
	}
	.recruit-work__card { min-height: 240px; padding: 145px 25px 24px; }
	.recruit-work__title { font-size: 17px; }
	.recruit-work__text { font-size: 13px; }

	/* 人物像スライダー */
	.recruit-person { padding-bottom: 70px; }
	.recruit-person__sticky {
		position: static;
		padding: 90px 0 0 var(--gutter-sp);
	}
	.recruit-person__nav { display: none; }
	.recruit-person__track {
		padding: 90px var(--gutter-sp) 0 0;
		gap: 10px;
		overflow-x: auto;
	}
	.recruit-person__card { flex: 0 0 223px; min-height: 330px; padding: 20px 20px 22px; }
	.recruit-person__illust { margin: 0 -20px 30px; width: calc(100% + 40px); }
	.recruit-person__num { font-size: 14px; margin: 0 0 14px; }
	.recruit-person__text { font-size: 14px; line-height: 1.6; letter-spacing: 0.1em; min-height: calc(14px * 1.6 * 4); }

	.recruit-status {
		grid-template-columns: 1fr;
		gap: 0;
		padding: 0 var(--gutter-sp) 80px;
	}
	.recruit-status__photo {
		border-radius: 0;
		margin-left: calc(var(--gutter-sp) * -1);
		margin-right: 0;
		aspect-ratio: 361 / 261;
		margin-bottom: 36px;
	}
	.recruit-status__body { max-width: 100%; }
	.recruit-status__en { margin-bottom: 14px; font-size: 11px; }
	.recruit-status__title { font-size: 23px; line-height: 1.74; margin-bottom: 24px; }
	.recruit-status__text { font-size: 15px; }
	.recruit-status__text p { margin-bottom: 20px; }

	.recruit-entry { padding: 68px var(--gutter-sp) 100px; }
	.recruit-entry__inner { padding: 0; }
	.recruit-entry__en { font-size: 70px; margin-bottom: 36px; }
	.recruit-entry__lead { font-size: 19px; line-height: 1.7; letter-spacing: 0.05em; white-space: normal; }
	.recruit-entry__text { font-size: 15px; line-height: 1.87; white-space: normal; }
	.recruit-entry__note { font-size: 13px; margin-bottom: 30px; }
	.recruit-entry__button { min-width: 0; width: 100%; max-width: 316px; height: 65px; font-size: 16px; border-width: 1.6px; }
}
