/* ==========================================================================
   訪問診療・在宅医療のレセプト代行（/home-visit/）ページ限定スタイル

   - 全セレクターを .msv-* 名前空間に閉じる。テーマ共通の .container / .btn /
     .btn-primary には一切依存しない（vk-blocks経由のBootstrap系CSSとの衝突回避）。
   - inc/enqueue.php の is_page('home-visit') 判定でこのページのみ読み込む
     （/contact/ の contact.css と同じ方式）。
   - alignfull は使わない。page.php の .site-body-container（max-width 1140px・
     display:flex）の内側で完結させ、横スクロールを発生させない設計にしている。
   - セクション番号はCSSカウンターで自動採番する。管理画面でセクションを増減・
     並べ替えしても番号が崩れないよう、見出しテキストに番号を書かない。

   【詳細度についての注意】
   WordPressコアは .is-layout-flow > * + * { margin-block-start: … } を
   詳細度0-1-0で出力し、その <style id="core-block-supports-inline-css"> は
   テーマがenqueueしたCSSより後ろのhead末尾に置かれる。同詳細度では後勝ちで
   コア側が勝ってしまうため、**このファイルの余白指定はすべて .entry-body を
   前置して詳細度0-2-0にしてある。** セレクターから .entry-body を外すと
   ブロック間の余白がコア既定値に戻るので、リファクタ時に外さないこと。
   ========================================================================== */

.entry-body {
	--msv-ink: #2E2A22;
	--msv-ink-soft: #5C5546;
	--msv-bg-warm: #FDFBF4;
	--msv-tint: #F8F5EB;
	--msv-peach: #F9E3D2;
	--msv-orange: #EF8F35;
	--msv-orange-deep: #C86F14;
	--msv-orange-text: #A85F10;
	--msv-dark: #2B2620;
	--msv-line: #E8E2D2;
	--msv-radius: 14px;
	--msv-shadow: 0 1px 2px rgba(46, 42, 34, .04);

	counter-reset: msv-section;
}

/* コアのブロック間余白を打ち消す（以降のルールで余白を明示的に決める） */
.entry-body .msv-hero > *,
.entry-body .msv-section > *,
.entry-body .msv-card > *,
.entry-body .msv-cards > *,
.entry-body .msv-price-list > *,
.entry-body .msv-price-row > *,
.entry-body .msv-caution > *,
.entry-body .msv-faq > *,
.entry-body .msv-trust > *,
.entry-body .msv-cta > *,
.entry-body .msv-cta-mini > *,
.entry-body .msv-btn-row > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* 共通ブロック ------------------------------------------------------------ */
.entry-body .msv-hero,
.entry-body .msv-section,
.entry-body .msv-trust,
.entry-body .msv-cta-mini,
.entry-body .msv-cta {
	color: var(--msv-ink);
	line-height: 1.9;
	overflow-wrap: anywhere;
	margin: 0 0 48px;
}

.entry-body .msv-hero p,
.entry-body .msv-section p,
.entry-body .msv-trust p,
.entry-body .msv-cta p {
	margin-bottom: 12px;
}

/* FV ---------------------------------------------------------------------- */
.entry-body .msv-hero {
	background: var(--msv-bg-warm);
	border: 1px solid var(--msv-line);
	border-radius: var(--msv-radius);
	padding: 32px 32px 28px;
}

.entry-body .msv-hero-lead {
	margin-bottom: 16px;
	font-size: 1.5em;
	line-height: 1.5;
	font-weight: 700;
	color: var(--msv-ink);
}

.entry-body .msv-hero-items {
	margin-bottom: 6px;
	font-weight: 700;
	color: var(--msv-orange-text);
}

.entry-body .msv-hero-note {
	margin-bottom: 20px;
	color: var(--msv-ink-soft);
	font-size: .95em;
}

/* セクション見出し -------------------------------------------------------- */
.entry-body .msv-section-tint {
	background: var(--msv-tint);
	border-radius: var(--msv-radius);
	padding: 28px 28px 20px;
}

.entry-body .msv-h2 {
	margin-bottom: 12px;
	font-size: 1.4em;
	line-height: 1.5;
	font-weight: 700;
	color: var(--msv-ink);
	display: flex;
	align-items: baseline;
	gap: 12px;
}

/* 番号付き見出し（解説記事などの .msv-h2-sub は採番しない） */
.entry-body .msv-h2:not(.msv-h2-sub)::before {
	counter-increment: msv-section;
	content: counter(msv-section);
	flex: 0 0 auto;
	width: 1.7em;
	height: 1.7em;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: var(--msv-orange);
	color: #fff;
	font-size: .62em;
	font-weight: 700;
}

.entry-body .msv-h2-sub {
	font-size: 1.15em;
}

.entry-body .msv-h3 {
	margin-bottom: 8px;
	font-size: 1.05em;
	line-height: 1.6;
	font-weight: 700;
	color: var(--msv-ink);
}

.entry-body .msv-subhead {
	margin-top: 20px;
	margin-bottom: 8px;
	font-size: 1em;
	font-weight: 700;
	color: var(--msv-ink);
	border-bottom: 2px solid var(--msv-peach);
	padding-bottom: 6px;
}

.entry-body .msv-lead {
	margin-bottom: 20px;
	color: var(--msv-ink-soft);
}

.entry-body .msv-note {
	margin-bottom: 8px;
	font-size: .92em;
	color: var(--msv-ink-soft);
}

/* カードグリッド ---------------------------------------------------------- */
.entry-body .msv-cards {
	display: grid;
	gap: 16px;
	margin-bottom: 16px;
}

.entry-body .msv-cards-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.entry-body .msv-cards-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.entry-body .msv-card {
	min-width: 0;
	background: #fff;
	border: 1px solid var(--msv-line);
	border-radius: var(--msv-radius);
	padding: 20px;
	box-shadow: var(--msv-shadow);
}

.entry-body .msv-card p { margin-bottom: 8px; }
.entry-body .msv-card p:last-child { margin-bottom: 0; }

/* よくある悩みカード（見出しを持たない1文カード） -------------------------- */
.entry-body .msv-worry {
	display: flex;
	align-items: center;
	border-left: 4px solid var(--msv-peach);
	font-weight: 700;
}

.entry-body .msv-worry p { margin-bottom: 0; }

.entry-body .msv-worry-note {
	margin-top: 4px;
	margin-bottom: 0;
	font-weight: 700;
	color: var(--msv-orange-text);
}

/* プランカード ------------------------------------------------------------ */
.entry-body .msv-price {
	margin-bottom: 10px;
	font-size: 1.5em;
	font-weight: 700;
	color: var(--msv-orange-deep);
	line-height: 1.4;
}

.entry-body .msv-price-unit {
	font-size: .5em;
	font-weight: 500;
	color: var(--msv-ink-soft);
}

.entry-body .msv-points {
	margin-top: 12px;
	margin-bottom: 0;
	padding-left: 1.2em;
	font-size: .95em;
	color: var(--msv-ink-soft);
}

.entry-body .msv-points li { margin-bottom: 4px; }

/* 運用セクション（実務の流れに代わる主役ブロック） ------------------------ */
.entry-body .msv-section-operation {
	background: var(--msv-peach);
	border-radius: var(--msv-radius);
	padding: 32px 28px 24px;
}

.entry-body .msv-section-operation .msv-h2 {
	font-size: 1.55em;
}

.entry-body .msv-lead-strong {
	margin-bottom: 20px;
	font-size: 1.05em;
	color: var(--msv-ink);
}

.entry-body .msv-subhead-note {
	margin-bottom: 14px;
	font-weight: 700;
	color: var(--msv-orange-text);
}

.entry-body .msv-cards-op .msv-card {
	border-color: #fff;
}

/* 料金 -------------------------------------------------------------------- */
.entry-body .msv-price-list {
	background: #fff;
	border: 1px solid var(--msv-line);
	border-radius: var(--msv-radius);
	margin-bottom: 16px;
	overflow: hidden;
}

.entry-body .msv-price-row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 8px;
	padding: 16px 20px;
	border-bottom: 1px solid var(--msv-line);
}

.entry-body .msv-price-row:last-child { border-bottom: 0; }

.entry-body .msv-price-name {
	margin-bottom: 0;
	font-weight: 700;
}

.entry-body .msv-price-value {
	margin-bottom: 0;
	font-size: 1.35em;
	font-weight: 700;
	color: var(--msv-orange-deep);
}

.entry-body .msv-caution {
	background: #fff;
	border: 1px solid var(--msv-line);
	border-radius: var(--msv-radius);
	padding: 18px 20px;
	margin-bottom: 16px;
	font-size: .95em;
}

.entry-body .msv-caution-title { margin-bottom: 8px; }
.entry-body .msv-caution ul { margin: 0; padding-left: 1.2em; }
.entry-body .msv-caution li { margin-bottom: 4px; color: var(--msv-ink-soft); }

/* 料金直後の小CTA（最終CTAより小さく、料金セクションと地続きに見せる） -------- */
.entry-body .msv-cta-mini {
	background: var(--msv-peach);
	border-radius: var(--msv-radius);
	padding: 22px 24px 20px;
	text-align: center;
	margin-top: -24px;
}

.entry-body .msv-cta-mini-title {
	margin-bottom: 6px;
	font-size: 1.1em;
	line-height: 1.6;
	font-weight: 700;
	color: var(--msv-ink);
}

.entry-body .msv-cta-mini-lead {
	margin-bottom: 14px;
	font-size: .95em;
	color: var(--msv-ink-soft);
}

.entry-body .msv-cta-mini .msv-btn-row { justify-content: center; }

.entry-body .msv-cta-mini .msv-btn .wp-block-button__link {
	padding: 12px 24px;
	font-size: .95em;
	box-shadow: 0 3px 10px rgba(200, 111, 20, .22);
}

/* 点検体制 ---------------------------------------------------------------- */
.entry-body .msv-trust {
	background: var(--msv-tint);
	border-left: 4px solid var(--msv-orange);
	border-radius: 0 var(--msv-radius) var(--msv-radius) 0;
	padding: 20px 24px;
}

.entry-body .msv-trust p:last-child { margin-bottom: 0; }

/* FAQ --------------------------------------------------------------------- */
.entry-body .msv-faq {
	background: #fff;
	border: 1px solid var(--msv-line);
	border-radius: var(--msv-radius);
	padding: 4px 20px 12px;
}

.entry-body .msv-faq-q {
	margin-top: 16px;
	margin-bottom: 8px;
	padding-left: 1.7em;
	position: relative;
	font-size: 1em;
	font-weight: 700;
	line-height: 1.6;
}

.entry-body .msv-faq-q::before {
	content: "Q";
	position: absolute;
	left: 0;
	top: 0;
	color: var(--msv-orange-text);
	font-weight: 700;
}

.entry-body .msv-faq-a {
	margin-bottom: 16px;
	padding: 0 0 16px 1.7em;
	position: relative;
	color: var(--msv-ink-soft);
	border-bottom: 1px solid var(--msv-line);
}

.entry-body .msv-faq-a::before {
	content: "A";
	position: absolute;
	left: 0;
	top: 0;
	color: var(--msv-ink-soft);
	font-weight: 700;
}

.entry-body .msv-faq-a:last-child { border-bottom: 0; margin-bottom: 4px; }

/* 解説記事 ---------------------------------------------------------------- */
.entry-body .msv-related {
	margin: 0;
	padding-left: 1.2em;
}

.entry-body .msv-related li { margin-bottom: 6px; }

/* CTA --------------------------------------------------------------------- */
.entry-body .msv-cta {
	background: var(--msv-dark);
	border-radius: var(--msv-radius);
	padding: 36px 28px 30px;
	text-align: center;
	color: #fff;
}

.entry-body .msv-cta-title {
	margin-bottom: 12px;
	font-size: 1.35em;
	line-height: 1.6;
	font-weight: 700;
	color: #fff;
	display: block;
}

.entry-body .msv-cta-lead {
	margin-bottom: 22px;
	color: #E8E2D2;
}

.entry-body .msv-cta-back {
	margin-top: 18px;
	margin-bottom: 0;
	font-size: .9em;
	color: #E8E2D2;
}

.entry-body .msv-cta-back a { color: #fff; }

/* ボタン（coreのwp-block-buttonを名前空間側で上書きする） ------------------ */
.entry-body .msv-btn-row {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0;
}

.entry-body .msv-cta .msv-btn-row { justify-content: center; }

.entry-body .msv-btn .wp-block-button__link {
	background-color: var(--msv-orange);
	color: #26190A;
	border-radius: 999px;
	padding: 14px 28px;
	font-weight: 700;
	font-size: 1em;
	line-height: 1.4;
	text-decoration: none;
	box-shadow: 0 4px 14px rgba(200, 111, 20, .25);
}

.entry-body .msv-btn .wp-block-button__link:hover,
.entry-body .msv-btn .wp-block-button__link:focus {
	background-color: var(--msv-orange-deep);
	color: #fff;
}

/* 準備物カードの期間ラベル ------------------------------------------------ */
.entry-body .msv-term {
	display: inline-block;
	margin-bottom: 8px;
	padding: 2px 10px;
	border-radius: 999px;
	background: var(--msv-peach);
	color: var(--msv-orange-text);
	font-size: .8em;
	font-weight: 700;
	line-height: 1.7;
}

/* 日本語の改行位置 -------------------------------------------------------- */
/* 日本語は既定でほぼ全ての文字間が改行可能なため、狭い画面では
   「レセプ／ト代行」「サポー／ト内容」のように語の途中で割れる。
   本文・投稿タイトルへ表示専用の文字や強制改行を入れずCSSだけで解消する。

   - 全ブラウザ共通のフォールバック … word-break: keep-all で「・」「、」等の
     区切り位置でのみ改行させ、text-wrap: balance で行長を均す。
   - Chrome / Edge 119+ … @supports で word-break: auto-phrase（文節解析）へ
     格上げする。MDN BCDでは Safari は preview のみ・Firefox は未対応（2026-09時点）
     のため、keep-all 側が実際のフォールバックになる。

   セレクターはこのファイル（/home-visit/ 限定enqueue）に閉じているので他ページへ波及しない。 */
.page-header-title,
.entry-body .msv-hero-lead,
.entry-body .msv-hero-items,
.entry-body .msv-h2,
.entry-body .msv-h3,
.entry-body .msv-cta-title,
.entry-body .msv-cta-mini-title,
.entry-body .msv-subhead {
	word-break: keep-all;
	text-wrap: balance;
}

/* 「訪問診療クリニックでの運用について」のように区切り文字を持たない長い連なりは、
   keep-all だと1行に収まらず結局語中で割れる。balance も「クリニ／ック」を生むため、
   この見出しだけ既定の改行に戻す（auto-phrase 対応ブラウザでは下の@supportsが優先）。 */
.entry-body .msv-section-operation .msv-h2 {
	word-break: normal;
	text-wrap: wrap;
}

@supports (word-break: auto-phrase) {
	.page-header-title,
	.entry-body .msv-hero-lead,
	.entry-body .msv-hero-items,
	.entry-body .msv-h2,
	.entry-body .msv-h3,
	.entry-body .msv-cta-title,
	.entry-body .msv-subhead,
	.entry-body .msv-subhead-note,
	.entry-body .msv-faq-q,
	.entry-body .msv-price-name,
	.entry-body .msv-worry p,
	.entry-body .msv-section-operation .msv-h2,
	.entry-body .msv-cta-mini-title,
	.entry-body .msv-cta-mini-lead {
		word-break: auto-phrase;
	}
}

/* タブレット -------------------------------------------------------------- */
@media (max-width: 900px) {
	.entry-body .msv-cards-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* スマートフォン ---------------------------------------------------------- */
@media (max-width: 600px) {
	.entry-body .msv-hero {
		padding: 24px 20px 22px;
	}

	.entry-body .msv-hero-lead { font-size: 1.3em; }

	.entry-body .msv-section-tint,
	.entry-body .msv-section-operation {
		padding: 22px 18px 16px;
	}

	.entry-body .msv-h2 { font-size: 1.25em; gap: 10px; }
	.entry-body .msv-section-operation .msv-h2 { font-size: 1.3em; }

	/* 番号を持たない補助見出し（解説記事）はPCと同じ従属サイズに戻す。
	   1.25emのままだと360〜375pxで「解説記／事」と語中で割れる。 */
	.entry-body .msv-h2.msv-h2-sub { font-size: 1.08em; }

	.entry-body .msv-cards-2,
	.entry-body .msv-cards-3 { grid-template-columns: minmax(0, 1fr); }

	.entry-body .msv-card { padding: 18px 16px; }

	.entry-body .msv-price-row {
		flex-direction: column;
		align-items: flex-start;
		gap: 2px;
		padding: 14px 16px;
	}

	.entry-body .msv-faq { padding: 4px 16px 12px; }

	.entry-body .msv-cta {
		padding: 28px 20px 24px;
	}

	.entry-body .msv-btn .wp-block-button__link {
		display: block;
		padding: 14px 20px;
	}

	.entry-body .msv-cta-mini { padding: 20px 18px 18px; }

	.entry-body .msv-hero,
	.entry-body .msv-section,
	.entry-body .msv-trust,
	.entry-body .msv-cta-mini,
	.entry-body .msv-cta { margin-bottom: 36px; }

	.entry-body .msv-cta-mini { margin-top: -18px; }
}
