/*
 * Ideal Marriage Ginza — theme.json で表せない見た目の補い。
 * 値はデザイン仕様書（作業4）のとおり。色は theme.json の変数を使う。
 * 切り替えの幅は 782px（WordPress のビューポート設定 tablet と同じ）。
 */

/* ---------- 共通 ---------- */
:root {
	--im-navy: var(--wp--preset--color--navy);
	--im-navy-deep: var(--wp--preset--color--navy-deep);
	--im-gold: var(--wp--preset--color--gold);
	--im-cream: var(--wp--preset--color--cream);
	--im-white: var(--wp--preset--color--white);
	--im-ink: var(--wp--preset--color--ink);
	--im-ink-muted: var(--wp--preset--color--ink-muted);
	--im-line: var(--wp--custom--color--line);
	--im-header-height: 118px;
	--im-icon-tel: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5'%3E%3Cpath d='M6.5 3.5h3l1.5 4-2 1.5a11 11 0 006 6l1.5-2 4 1.5v3c0 1-1 2-2 2C10.5 19.5 4.5 13.5 4.5 5.5c0-1 1-2 2-2z'/%3E%3C/svg%3E");
	--im-icon-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");
	--im-icon-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E");
	--im-line-strong: var(--wp--preset--color--navy);
	--im-bronze: var(--wp--preset--color--bronze);
	--im-sans: var(--wp--preset--font-family--sans);
	--im-serif: var(--wp--preset--font-family--serif);
	--im-icon-menu: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5'%3E%3Cpath d='M4 7h16M4 12h16M4 17h16'/%3E%3C/svg%3E");
}

html {
	scroll-padding-top: calc(var(--im-header-height) + 16px);
}

body {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

/* ヘッダー・本文・帯・フッターの間に、余計なすき間を入れない */
.wp-site-blocks > * + * {
	margin-block-start: 0;
}

/* 部品の中で並びを自分で決めているまとまりは、ブロックの間の余白を使わない */
:is(.im-header, .im-overlay, .im-footer, .im-cta-band, .im-sticky-cta) :is(.is-layout-flow, .is-layout-flex) > * {
	margin-block: 0;
}

a {
	text-underline-offset: 3px;
}

/* フォーカスの枠：3px、要素から3px離す。濃紺の上では明るい色。仕様書2章「ボタンの状態」 */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--custom--color--link);
	outline-offset: 3px;
}

.im-footer :focus-visible,
.im-cta-band :focus-visible {
	outline-color: var(--wp--custom--color--focus-on-navy);
}

/* 動きは色の変化（0.15秒）と開閉だけ。「視差効果を減らす」設定では止める */
a,
.wp-element-button,
.wp-block-button__link,
.wp-block-navigation-item__content {
	transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		transition: none !important;
		animation: none !important;
		scroll-behavior: auto !important;
	}
}

/* ---------- ボタン ---------- */
/* 予約ボタン（塗り）：高さ56px、左右32px、角丸4px。色は theme.json の elements.button */
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 56px;
	box-sizing: border-box;
	text-align: center;
}

.wp-block-button:not(.is-style-outline) .wp-block-button__link:active {
	background-color: var(--wp--custom--color--gold-pressed);
}

/* 枠だけのボタン（電話する・メニューなど） */
.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.is-style-outline > .wp-block-button__link:not(.has-background) {
	background-color: var(--im-white);
	color: var(--im-navy);
	border: 1px solid var(--im-navy);
}

.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background-color: var(--im-cream);
	color: var(--im-navy);
}

/* 置く場所による高さの違い（ヘッダー48px、スマホのヘッダー44px、スマホ固定ボタン52px） */
.im-btn-header .wp-block-button__link {
	min-height: 48px;
	padding: 0 18px;
	font-size: 15px;
	white-space: nowrap;
}

.im-btn-header-sp .wp-block-button__link {
	min-height: 44px;
	padding: 0 10px;
	font-size: 14px;
	letter-spacing: 0;
	white-space: nowrap;
}

/* ---------- ヘッダー ---------- */
.im-site-header {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 50;
}

.im-header {
	background: var(--im-white);
	border-bottom: 1px solid var(--im-line);
	font-size: 15px;
	line-height: 1.6;
}

.im-header p {
	margin: 0;
}

.im-header__top {
	background: var(--im-cream);
	border-bottom: 1px solid var(--im-line);
}

.im-header__top-inner {
	box-sizing: border-box;
	max-width: calc(1120px + 48px);
	min-height: 36px;
	margin: 0 auto;
	padding: 0 24px;
	gap: 24px;
	font-size: 13px;
}

.im-header__tel .im-tel-link,
.im-overlay__tel .im-tel-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--im-navy);
	font-weight: 700;
	font-size: 15px;
	text-decoration: none;
}

.im-header__tel .im-tel-link::before,
.im-overlay__tel .im-tel-link::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background-color: currentColor;
	-webkit-mask: var(--im-icon-tel) center / contain no-repeat;
	mask: var(--im-icon-tel) center / contain no-repeat;
}

.im-header__hours {
	color: var(--im-ink);
}

/* 上段（高さ36px）の中でも、押せる範囲は高さ44pxを確保する（上下にはみ出させる） */
.im-header__top .im-tel-link,
.im-header__sub a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	margin-block: -4px;
}

.im-header__sub a,
.im-overlay__sub a {
	color: var(--im-navy);
}

.im-header__main {
	box-sizing: border-box;
	max-width: calc(1120px + 48px);
	margin: 0 auto;
	padding: 16px 24px;
	gap: 16px;
}

/*
 * 幅783〜1179px（タブレットの横向き・小さいノートパソコン）は、パソコンのメニューが1行に収まらないため、
 * ヘッダーだけスマホと同じ並び（ロゴ・予約ボタン・メニュー）にする。デザインに定めのない幅のための補い。
 */
@media (min-width: 783px) and (max-width: 1179px) {
	:root {
		--im-header-height: 80px;
	}

	.im-header .im-header__top,
	.im-header .im-nav-pc,
	.im-header .im-header__cta {
		display: none !important;
	}

	.im-header .im-header__sp.wp-block-hidden-desktop {
		display: flex !important;
	}
}

.im-header__logo,
.im-footer__logo,
.im-footer__ibj-banner {
	margin: 0;
	line-height: 0;
}

.im-header__logo a,
.im-footer__logo a {
	display: block;
}

.im-header__logo {
	flex: none;
}

/* ロゴのリンクも押せる範囲を高さ44px以上にする */
.im-header__logo a {
	padding-block: 9px;
	margin-block: -9px;
}

.im-header__logo img {
	display: block;
	max-width: none;
}

/* メニュー（パソコン）：Sans 700・15px、現在のページは濃紺の下線2pxと太字 */
.im-nav-pc .wp-block-navigation__container {
	gap: 24px;
}

.im-nav-pc .wp-block-navigation-item {
	white-space: nowrap;
}

.im-nav-pc .wp-block-navigation-item__content {
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--im-navy);
	font-size: 15px;
	font-weight: 700;
	text-decoration: none;
}

.im-nav-pc .wp-block-navigation-item__content:hover {
	text-decoration: underline;
}

.im-nav-pc .current-menu-item > .wp-block-navigation-item__content {
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 8px;
}

.im-header__sp {
	gap: 8px;
}

/* スマホの「メニュー」ボタン：56×44px、枠だけ、線のアイコンと文字 */
.im-header .im-nav-sp .wp-block-navigation__responsive-container-open {
	white-space: nowrap;
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 2px;
	box-sizing: border-box;
	width: 56px;
	height: 44px;
	padding: 0;
	border: 1px solid var(--im-navy);
	border-radius: 4px;
	background: var(--im-white);
	color: var(--im-navy);
	font-family: inherit;
	font-size: 13px;
	font-weight: 700;
	line-height: 1;
	letter-spacing: 0;
}

.im-nav-sp .wp-block-navigation__responsive-container-open::before {
	content: "";
	width: 20px;
	height: 20px;
	background-color: currentColor;
	-webkit-mask: var(--im-icon-menu) center / contain no-repeat;
	mask: var(--im-icon-menu) center / contain no-repeat;
}

@media (max-width: 782px) {
	:root {
		--im-header-height: 64px;
	}

	html {
		scroll-padding-bottom: 80px;
	}

	.im-header__main {
		min-height: 64px;
		padding: 10px 12px;
		gap: 8px;
	}

	.im-header__logo img {
		width: 139px !important;
		height: 26px !important;
	}
}

/* 幅320pxの端末でも横に送らせない（ロゴを少し小さくする） */
@media (max-width: 359px) {
	.im-header__main {
		padding-inline: 8px;
		gap: 6px;
	}

	.im-header__logo img {
		width: 112px !important;
		height: 21px !important;
	}

	.im-header__logo a {
		padding-block: 12px;
		margin-block: -12px;
	}
}

/* ---------- スマホのメニュー画面（ナビゲーションのオーバーレイ） ---------- */
/* 画面いっぱいに開く（白地で下のページを隠す） */
.im-header .im-nav-sp .wp-block-navigation__responsive-container.is-menu-open {
	background-color: var(--im-white) !important;
	color: var(--im-ink) !important;
}
.im-overlay {
	box-sizing: border-box;
	min-height: 100%;
	padding: 10px 12px 40px;
	background: var(--im-white);
	color: var(--im-ink);
}

.im-overlay p {
	margin: 0;
}

.im-overlay__bar {
	min-height: 44px;
	margin-bottom: 8px;
}

.im-overlay .wp-block-navigation-overlay-close {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	min-width: 56px;
	min-height: 44px;
	padding: 0 12px;
	border: 1px solid var(--im-navy);
	border-radius: 4px;
	background: var(--im-white);
	color: var(--im-navy);
	font-family: inherit;
	font-size: 14px;
	font-weight: 700;
}

.im-overlay__nav,
.im-overlay__nav .wp-block-navigation__container {
	width: 100%;
	gap: 0;
}

.im-overlay__nav .wp-block-navigation-item {
	width: 100%;
	border-bottom: 1px solid var(--im-line);
}

.im-overlay__nav .wp-block-navigation-item__content {
	display: flex;
	align-items: center;
	box-sizing: border-box;
	width: 100%;
	min-height: 56px;
	padding: 0 4px;
	color: var(--im-navy);
	font-size: 16px;
	font-weight: 700;
	text-decoration: none;
}

.im-overlay__nav .current-menu-item > .wp-block-navigation-item__content {
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 8px;
}

.im-overlay__contact {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin-top: 24px;
	font-size: 14px;
}

.im-overlay__tel .im-tel-link {
	min-height: 44px;
	font-size: 18px;
}

.im-overlay__sub a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

/* ---------- 予約案内の帯（im/cta-band） ---------- */
.wp-block-cover.im-cta-band {
	min-height: 0;
	padding: clamp(56px, 7vw, 88px) 24px;
	color: var(--im-white);
}

.im-cta-band .wp-block-cover__inner-container {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 24px;
	text-align: center;
}

.im-cta-band .wp-block-cover__inner-container > * {
	margin-block: 0;
}

.im-cta-band__title {
	color: var(--im-white);
	font-size: var(--wp--preset--font-size--section);
	line-height: 1.6;
}

/* 見出しの上の金の線（48×2px）。線と見出しの間は16px */
.im-cta-band__title::before {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin: 0 auto 16px;
	background: var(--im-gold);
}

.im-cta-band__text {
	max-width: 640px;
	color: var(--im-white);
}

.im-cta-band__tel {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: center;
	gap: 4px 12px;
	color: var(--im-white);
}

.im-cta-band__tel .im-cta-tel-sep {
	display: none;
}

.im-cta-band__tel .im-tel-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--im-gold);
	font-size: 22px;
	font-weight: 700;
	text-decoration: none;
}

.im-cta-band__tel .im-tel-hours,
.im-cta-band__note {
	color: var(--wp--custom--color--on-navy-soft);
	font-size: 14px;
}

@media (max-width: 782px) {
	.im-cta-band__title br {
		display: none;
	}

	.im-cta-band__buttons,
	.im-cta-band__buttons .wp-block-button,
	.im-cta-band__buttons .wp-block-button__link {
		width: 100%;
	}
}

/* ---------- フッター ---------- */
.im-footer {
	padding: clamp(40px, 5vw, 64px) 0 32px;
	background: var(--im-navy-deep);
	color: var(--wp--custom--color--on-navy-soft);
	font-size: 15px;
	line-height: 1.8;
}

.im-footer p {
	margin: 0;
}

.im-footer__inner {
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	gap: 40px;
	max-width: calc(1120px + 48px);
	margin: 0 auto;
	padding: 0 24px;
}

.im-footer__top {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 40px 64px;
}

.im-footer__info {
	display: flex;
	flex: 1 1 320px;
	flex-direction: column;
	gap: 12px;
	min-width: 0;
}

/* ロゴは濃紺の文字のため、生成りの台の上に置く（台全体をリンクにして高さ56px） */
.im-footer__logo {
	align-self: flex-start;
}

.im-footer__logo a {
	padding: 12px 16px;
	background: var(--im-cream);
	border-radius: 2px;
}

.im-footer__name {
	color: var(--im-white);
	font-size: 17px;
	font-weight: 700;
}

.im-footer__desc,
.im-footer__address,
.im-footer__tel {
	font-size: 14px;
}

.im-footer__tel .im-tel-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--im-white);
	font-size: 17px;
	font-weight: 700;
	text-decoration: none;
}

.im-footer__col {
	min-width: 0;
}

.im-footer__col--about {
	flex: 0 1 220px;
}

.im-footer__col--guide {
	flex: 0 1 260px;
}

/* リンクの見出し：金・Sans 700・14px（仕様書5章 共通部品） */
.im-footer__heading {
	margin: 0 0 8px;
	padding-bottom: 8px;
	border-bottom: 1px solid var(--im-gold);
	color: var(--im-gold);
	font-family: var(--wp--preset--font-family--sans);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.6;
	letter-spacing: 0.03em;
}

.im-footer__links,
.im-footer__legal {
	margin: 0;
	padding: 0;
	list-style: none;
}

.im-footer__links a {
	display: flex;
	align-items: center;
	min-height: 44px;
	color: var(--wp--custom--color--on-navy-soft);
	text-decoration: none;
}

.im-footer__links a:hover,
.im-footer__links a:focus-visible {
	text-decoration: underline;
}

.im-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px 32px;
	padding-top: 24px;
	border-top: 1px solid var(--wp--custom--color--line-on-navy);
}

.im-footer__ibj {
	align-items: center;
	gap: 12px 16px;
}

.im-footer__check {
	font-size: 14px;
}

.im-footer__legal {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 24px;
	font-size: 14px;
}

.im-footer__legal a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--wp--custom--color--on-navy-soft);
}

.im-footer__notes {
	display: flex;
	flex-direction: column;
	gap: 4px;
	font-size: 14px;
}

/* ---------- スマホ下部の固定ボタン ---------- */
.im-sticky-cta {
	position: fixed;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 40;
	box-sizing: border-box;
	padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
	background: var(--im-white);
	border-top: 1px solid var(--im-line);
	box-shadow: var(--wp--preset--shadow--sticky);
}

.wp-block-buttons.im-sticky-cta__buttons {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
	margin: 0;
}

.im-sticky-cta__buttons .wp-block-button {
	width: 100%;
	margin: 0;
}

.im-btn-sticky .wp-block-button__link {
	flex-direction: column;
	width: 100%;
	min-height: 52px;
	padding: 0 8px;
	font-size: 15px;
	line-height: 1.4;
	white-space: nowrap;
}

.im-sticky-tel__label {
	font-size: 15px;
	font-weight: 700;
}

.im-sticky-tel__hours {
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0;
}

/* 固定ボタンがフッターを隠さないよう、フッターの下に80pxの余白を足す */
@media (max-width: 782px) {
	.im-footer__col--about,
	.im-footer__col--guide {
		flex-basis: 100%;
	}

	body:has(.im-sticky-cta) .im-footer {
		padding-bottom: calc(32px + 80px);
	}
}

/* ---------- 注記（im/note） ---------- */
.is-style-note {
	color: var(--im-ink-muted);
	font-size: 14px;
	line-height: 1.8;
}

/* =====================================================================
   部品（構成書B章）。デザイン仕様書4章・5章の値。
   ===================================================================== */

/* ---------- 区画と見出し ---------- */
.im-section {
	padding-block: var(--wp--preset--spacing--section);
}

/* 区画の中のブロックの間は32px（見出しとリードは16px）。仕様書4章「ブロックの間 24〜40px」 */
.im-section.is-layout-constrained > * + * {
	margin-block-start: 32px;
}

.im-section.is-layout-constrained > .im-section-title + * {
	margin-block-start: 16px;
}

.im-section.is-layout-constrained > .im-section-title + :not(.im-section-lead) {
	margin-block-start: 32px;
}

.im-section.is-layout-constrained > .im-section-lead + * {
	margin-block-start: 32px;
}

/* 自分で並びを決めるまとまりの中では、ブロックの間の余白を使わない */
:is(.im-worries__body, .im-advisor-msg__inner, .im-posts__cols, .im-checks__cols, .im-page-header__row, .im-assurance__item, .im-stat, .im-post-card, .im-post-row, .im-related__card, .im-cta-inline, .im-author, .im-faq) > * {
	margin-block: 0;
}

/* 見出しは文の区切りで折り返す（日本語の文節。対応していない閲覧ソフトでは通常の折り返し） */
.im-section-title,
.im-hero__main,
.im-page-title,
.im-reasons__title,
.im-related__title {
	word-break: auto-phrase;
	text-wrap: pretty;
}

/* 区画の見出し（h2）とページ見出し（h1）の上の金の線：幅48px・高さ2px、見出しとの間16px */
.im-section-title::before,
.im-page-title::before {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	margin-bottom: 16px;
	background: var(--im-gold);
}

/* 見出しの大きさ「カードの見出し」「手順・質問の見出し」は Sans 700（仕様書3章） */
:is(h1, h2, h3, h4, h5, h6).has-card-font-size,
:is(h1, h2, h3, h4, h5, h6).has-step-font-size {
	font-family: var(--im-sans);
	font-weight: 700;
	line-height: 1.6;
	letter-spacing: 0.03em;
}

/* 次のページへ送るリンク：濃紺の太字＋下線＋右向きの矢印（18px）。高さ44px */
.im-more a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	color: var(--im-navy);
	font-weight: 700;
	text-underline-offset: 4px;
}

.im-more a::after {
	content: "";
	flex: none;
	width: 18px;
	height: 18px;
	background: currentColor;
	-webkit-mask: var(--im-icon-arrow) center / contain no-repeat;
	mask: var(--im-icon-arrow) center / contain no-repeat;
}

/* [要確認] の目印。文字は原稿どおり残す */
mark.im-tbc {
	padding: 0 4px;
	background: #FFF1C2;
	color: #5C4300;
	font-size: 13px;
}

/* 線のアイコン（WordPress のアイコンブロック）。線の太さ1.5px、色は文字色 */
.wp-block-icon svg.im-icon {
	display: block;
	width: 100%;
	height: 100%;
}

.im-icon path {
	fill: none;
	stroke: currentColor;
	stroke-width: 1.5;
}

/* カード：白地、1pxの枠、角丸2px、影なし、内側24px */
.wp-block-group.is-style-card {
	padding: 24px;
	border: 1px solid var(--im-line);
	border-radius: 2px;
	background: var(--im-white);
}

.wp-block-group.is-style-card > * {
	margin-block: 0;
}

.wp-block-group.is-style-card > * + * {
	margin-block-start: 8px;
}

/* 段落スタイル「番号」「ラベル」 */
.is-style-numeral {
	color: var(--im-bronze);
	font-family: var(--im-serif);
	font-size: 40px;
	font-weight: 600;
	line-height: 1;
}

.is-style-label {
	color: var(--im-bronze);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.12em;
	line-height: 1.6;
}

/* ---------- 1 im/hero-top ---------- */
.im-hero {
	position: relative;
	overflow: hidden;
	padding-block: clamp(48px, 8vw, 104px);
}

.im-hero__text {
	position: relative;
	z-index: 1;
}

.im-hero__text > * {
	margin-block: 0;
}

.im-hero__text > * + * {
	margin-block-start: 24px;
}

.im-hero__title {
	font-family: var(--im-sans);
	font-size: inherit;
	letter-spacing: normal;
}

.im-hero__eyebrow {
	display: block;
	color: var(--im-bronze);
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0.1em;
	line-height: 1.7;
}

.im-hero__main {
	display: block;
	margin-top: 16px;
	color: var(--im-navy);
	font-family: var(--im-serif);
	font-size: var(--wp--preset--font-size--hero);
	font-weight: 600;
	letter-spacing: 0.04em;
	line-height: 1.5;
}

.im-hero__lead {
	max-width: 520px;
}

.im-hero__text > .im-hero__note {
	margin-block-start: 10px;
	font-size: 14px;
}

.im-hero__text > .im-hero__sub {
	margin-block-start: 0;
}

.im-hero__sub a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--im-navy);
	font-size: 15px;
	text-underline-offset: 4px;
}

.im-art {
	display: block;
}

.im-art img {
	display: block;
	width: 100%;
	height: auto;
}

@media (min-width: 783px) {
	.im-hero {
		display: flex;
		align-items: center;
		min-height: 560px;
	}

	.im-hero.is-layout-constrained > .im-hero__text {
		width: 100%;
		max-width: 580px;
		margin-left: max(0px, (100% - 1120px) / 2) !important;
		margin-right: auto !important;
	}

	/* パソコン：画像01を区画いっぱいに敷き、左の余白に文字を置く。画像の上に色は重ねない */
	.im-hero.is-layout-constrained > .im-art {
		position: absolute;
		inset: 0;
		max-width: none;
		margin: 0 !important;
	}

	.im-hero .im-art img {
		width: 100%;
		height: 100%;
		object-fit: cover;
		object-position: 70% 50%;
	}
}

@media (max-width: 782px) {
	.im-hero {
		padding-bottom: 0;
	}

	/* スマホ：文字の下に画像02。下側を1:1で切り抜く。予約ボタンは幅いっぱい */
	.im-hero.is-layout-constrained > .im-art {
		max-width: none;
		margin-top: 32px;
		margin-inline: calc(-1 * var(--wp--style--root--padding-left)) calc(-1 * var(--wp--style--root--padding-right)) !important;
	}

	.im-hero .im-art img {
		aspect-ratio: 1 / 1;
		object-fit: cover;
		object-position: 50% 100%;
	}

	.im-hero__cta,
	.im-hero__cta .wp-block-button,
	.im-hero__cta .wp-block-button__link {
		width: 100%;
	}
}

/* ---------- 2 im/page-header ---------- */
.wp-block-cover.im-page-header {
	min-height: 0;
	padding-left: 0;
	padding-right: 0;
	align-items: flex-start;
	padding-top: 16px;
	padding-bottom: clamp(40px, 6vw, 72px);
	border-bottom: 1px solid var(--im-line);
	background: var(--wp--preset--color--sand);
}

.wp-block-cover.im-page-header .wp-block-cover__inner-container {
	box-sizing: border-box;
	color: var(--im-ink);
}

.im-page-header .wp-block-cover__inner-container > * {
	margin-block: 0;
}

.im-page-header .wp-block-breadcrumbs {
	--separator: "＞";
	margin-bottom: clamp(32px, 5vw, 56px);
	font-size: 14px;
}

.im-page-header.is-split .wp-block-breadcrumbs {
	margin-bottom: clamp(24px, 4vw, 40px);
}

.wp-block-breadcrumbs li:not(:last-child)::after {
	margin: 0 8px;
	color: var(--im-ink-muted);
	opacity: 1;
}

.wp-block-breadcrumbs a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--im-navy);
}

.wp-block-breadcrumbs [aria-current="page"] {
	color: var(--im-ink);
}

.im-page-title {
	max-width: 620px;
	margin: 0;
	font-size: var(--wp--preset--font-size--page-title);
}

.im-page-header__lead {
	max-width: 620px;
	margin-top: 16px !important;
}

.im-page-header__row {
	display: flex;
	flex-wrap: wrap;
	gap: 32px clamp(32px, 6vw, 80px);
	align-items: center;
	justify-content: space-between;
}

.im-page-header__text {
	flex: 1 1 380px;
	min-width: 0;
	max-width: 600px;
}

.im-page-header__text > * {
	margin-block: 0;
}

.im-page-header__text .im-page-header__lead {
	margin-top: 20px !important;
}

.im-page-header__photo {
	flex: 0 1 360px;
	min-width: 0;
	width: 360px;
	max-width: 100%;
}

.im-page-header__photo img {
	width: 100%;
	aspect-ratio: 644 / 744;
	object-fit: cover;
	border-radius: 2px;
}

.im-page-header__person {
	margin-top: 28px !important;
	padding-top: 20px;
	border-top: 1px solid var(--im-line-strong);
}

.im-page-header__person .im-person__name {
	font-size: clamp(22px, 2.2vw, 28px);
}

.im-page-header__person .im-person__role {
	color: var(--im-ink);
	font-size: 15px;
}

/* ---------- 3 im/assurance-3 ---------- */
.im-assurance.im-section {
	padding-block: clamp(32px, 4vw, 48px);
	border-block: 1px solid var(--im-line);
}

.im-assurance__list.is-layout-grid {
	gap: 32px;
}

.im-assurance__item {
	display: flex;
	gap: 16px;
	align-items: flex-start;
}

.im-assurance__icon {
	flex: none;
	width: 32px;
	height: 32px;
	margin-top: 4px !important;
	color: var(--im-navy);
}

.im-assurance__body > * {
	margin-block: 0;
}

.im-assurance__body > * + * {
	margin-block-start: 6px;
}

.im-assurance__title {
	color: var(--im-navy);
	font-family: var(--im-sans);
	font-size: 18px;
	font-weight: 700;
	letter-spacing: 0.03em;
	line-height: 1.6;
}

.im-assurance__text {
	font-size: 15px;
	line-height: 1.8;
}

/* ---------- 4 im/worries-cards ---------- */
.im-worries__body {
	display: flex;
	flex-wrap: wrap;
	gap: 32px;
	align-items: flex-start;
}

.im-worries__image {
	flex: 1 1 320px;
	min-width: 0;
}

.im-worries__image img,
.im-worries__image .components-placeholder {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: 2px;
}

.im-worries__cards.is-layout-grid {
	flex: 2 1 480px;
	min-width: 0;
	gap: 16px;
}

.im-card__title {
	color: var(--im-navy);
	font-family: var(--im-sans);
	font-size: 18px;
	font-weight: 700;
	letter-spacing: 0.03em;
	line-height: 1.6;
}

.im-card__text {
	font-size: 15px;
	line-height: 1.8;
}

.im-worries__close {
	max-width: 760px;
	color: var(--im-navy);
	font-size: 17px;
	line-height: 2;
}

.im-section.is-layout-constrained > .im-worries__close {
	margin-left: max(0px, (100% - 1120px) / 2) !important;
}

/* ---------- 5 im/advisor-message ---------- */
.im-advisor-msg__inner {
	display: flex;
	flex-wrap: wrap;
	gap: clamp(32px, 5vw, 64px);
	align-items: flex-start;
}

.im-advisor-msg__aside {
	flex: 1 1 300px;
	min-width: 0;
	max-width: 400px;
}

.im-advisor-msg__aside > * {
	margin-block: 0;
}

.im-advisor-msg__photo img {
	width: 100%;
	aspect-ratio: 644 / 744;
	object-fit: cover;
	border-radius: 2px;
}

.im-advisor-msg__person {
	margin-top: 16px !important;
}

.im-person > * {
	margin-block: 0;
}

.im-person__name {
	color: var(--im-navy);
	font-family: var(--im-serif);
	font-size: 22px;
	font-weight: 600;
	line-height: 1.5;
}

.im-person > .im-person__role {
	margin-top: 4px;
	color: var(--im-ink-muted);
	font-size: 14px;
}

.im-advisor-msg__text {
	flex: 2 1 480px;
	min-width: 0;
}

.im-advisor-msg__text > * {
	margin-block: 0;
}

.im-advisor-msg__text > * + * {
	margin-block-start: 24px;
}

@media (max-width: 782px) {
	.im-advisor-msg__aside {
		max-width: 70%;
	}
}

/* 引用ブロックのスタイル「アドバイザーの言葉」：Serif、上下に1pxの金の線 */
.wp-block-quote.is-style-advisor {
	margin-inline: 0;
	padding: 24px 28px;
	border: 0;
	border-block: 1px solid var(--im-gold);
	background: var(--im-cream);
	color: var(--im-navy);
	font-family: var(--im-serif);
	font-size: clamp(17px, 1.72vw, 22px);
	font-weight: 600;
	line-height: 2;
}

.wp-block-quote.is-style-advisor p {
	margin: 0;
	font-size: inherit;
	line-height: inherit;
}

.im-prose .wp-block-quote.is-style-advisor {
	padding: 28px 32px;
}

/* ---------- 6 im/reasons-3 ---------- */
.im-reasons__list.is-layout-grid {
	gap: 32px;
}

.im-reasons__item {
	padding-top: 24px;
	border-top: 1px solid var(--im-line-strong);
}

.im-reasons__item > * {
	margin-block: 0;
}

.im-reasons__item > * + * {
	margin-block-start: 16px;
}

.im-reasons__title {
	font-size: var(--wp--preset--font-size--subsection);
}

/* ---------- 21 im/cta-inline（区画の終わり。左ぞろえ） ---------- */
.im-cta-inline > * + * {
	margin-block-start: 10px;
}

.im-cta-inline__note {
	font-size: 14px;
}

.im-section.is-layout-constrained > .im-cta-lead + .wp-block-block,
.im-section.is-layout-constrained > .im-cta-lead + .im-cta-inline {
	margin-block-start: 12px;
}

@media (max-width: 782px) {
	.im-cta-inline .wp-block-buttons,
	.im-cta-inline .wp-block-button,
	.im-cta-inline .wp-block-button__link {
		width: 100%;
	}
}

/* ---------- 9 im/plan-compare ---------- */
.im-plan-compare__table {
	width: 100%;
	border-collapse: collapse;
	font-size: 15px;
	line-height: 1.7;
}

.im-plan-compare__table thead th {
	padding: 14px 16px;
	background: var(--im-navy);
	color: var(--im-white);
	font-weight: 700;
	text-align: left;
}

.im-plan-compare__table td,
.im-plan-compare__table tbody th {
	padding: 18px 16px;
	border-bottom: 1px solid var(--im-line);
	text-align: left;
	vertical-align: top;
}

.im-plan-compare__table .is-money {
	font-size: 17px;
	font-weight: 700;
}

.im-plan-compare__name {
	font-family: var(--im-serif);
	font-weight: 600;
}

/* 簡易版：行がコース */
.im-plan-compare__table.is-simple tbody th {
	color: var(--im-navy);
	font-size: 18px;
}

.im-plan-compare__table.is-simple thead th:first-child {
	width: 17%;
}

.im-plan-compare__table.is-simple thead th:nth-child(n+3),
.im-plan-compare__table.is-simple td.is-money,
.im-plan-compare__table.is-simple td.is-num {
	text-align: right;
	white-space: nowrap;
}

/* 全項目版：行が項目、列がコース（3列は同じ幅・同じ見た目） */
.im-plan-compare__table.is-full {
	table-layout: fixed;
}

.im-plan-compare__table.is-full thead th {
	padding: 16px;
}

.im-plan-compare__table.is-full thead th:first-child {
	width: 19%;
}

.im-plan-compare__table.is-full thead th + th {
	border-left: 1px solid var(--wp--custom--color--line-on-navy);
	font-size: 19px;
}

.im-plan-compare__table.is-full tbody th {
	padding: 14px 16px;
	background: var(--im-cream);
	color: var(--im-navy);
	font-weight: 700;
}

.im-plan-compare__table.is-full td {
	padding: 14px 16px;
	border-left: 1px solid var(--im-line);
}

.im-plan-compare__table.is-full td.is-money {
	font-size: 18px;
}

/* スマホ：表をやめ、コースごとのカードを縦に並べる（横に送らせない） */
.im-plan-compare__cards {
	display: none;
	flex-direction: column;
	gap: 16px;
}

.im-plan-compare__card {
	border: 1px solid var(--im-line);
	border-radius: 2px;
	background: var(--im-white);
}

.im-plan-compare__card-title {
	margin: 0;
	padding: 14px 20px;
	background: var(--im-navy);
	color: var(--im-white);
	font-family: var(--im-serif);
	font-size: 19px;
	font-weight: 600;
	line-height: 1.5;
}

.im-plan-compare__card-body {
	padding: 16px 20px 20px;
}

.im-plan-compare__target {
	margin: 0 0 12px;
	font-size: 15px;
	line-height: 1.8;
}

.im-plan-compare__card dl {
	margin: 0;
}

.im-plan-compare__row {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	padding: 10px 0;
	border-top: 1px solid var(--im-line);
}

.im-plan-compare__row dt {
	font-size: 15px;
}

.im-plan-compare__row dd {
	margin: 0;
	font-size: 15px;
	text-align: right;
}

.im-plan-compare__row dd.is-money {
	font-size: 17px;
	font-weight: 700;
}

.im-plan-compare.is-full .im-plan-compare__cards {
	gap: 20px;
}

.im-plan-compare.is-full .im-plan-compare__row {
	flex-direction: column;
	gap: 2px;
	padding: 12px 0;
}

.im-plan-compare.is-full .im-plan-compare__row dt {
	color: var(--im-ink-muted);
	font-size: 13px;
	font-weight: 700;
}

.im-plan-compare.is-full .im-plan-compare__row dd {
	font-size: 16px;
	line-height: 1.7;
	text-align: left;
}

@media (max-width: 782px) {
	.im-plan-compare__table-wrap {
		display: none;
	}

	.im-plan-compare__cards {
		display: flex;
	}
}

.im-note-list {
	padding-left: 1.2em;
	line-height: 1.9;
}

/* ---------- 10 im/plan-detail（開閉式） ---------- */
.im-plan-details > * {
	margin-block: 0;
}

.im-plan-details > * + * {
	margin-block-start: 16px;
}

.im-plan-detail {
	border: 1px solid var(--im-line);
	border-radius: 2px;
	background: var(--im-white);
}

.im-plan-detail__summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 56px;
	padding: 20px 24px;
	cursor: pointer;
	list-style: none;
}

.im-plan-detail__summary::-webkit-details-marker {
	display: none;
}

.im-plan-detail__title {
	margin: 0;
	font-size: var(--wp--preset--font-size--subsection);
}

.im-plan-detail.is-open .im-plan-detail__title {
	padding: 20px 24px;
}

/* 開閉の印（＋／－）。色は文字色 */
.im-plan-detail__mark {
	position: relative;
	flex: none;
	width: 16px;
	height: 16px;
	color: var(--im-navy);
}

.im-plan-detail__mark::before,
.im-plan-detail__mark::after {
	content: "";
	position: absolute;
	top: 7px;
	left: 0;
	width: 16px;
	height: 2px;
	background: currentColor;
}

.im-plan-detail__mark::after {
	transform: rotate(90deg);
}

details[open] > .im-plan-detail__summary .im-plan-detail__mark::after {
	display: none;
}

.im-plan-detail__body {
	padding: 0 24px 28px;
}

.im-plan-detail__body > * {
	margin-block: 0;
}

.im-plan-detail__body > * + * {
	margin-block-start: 24px;
}

.im-plan-detail__cols {
	gap: 24px 48px;
	margin-bottom: 0;
}

.im-plan-detail .wp-block-column > * {
	margin-block: 0;
}

.im-plan-detail .wp-block-column > * + * {
	margin-block-start: 8px;
}

.im-plan-detail .wp-block-column > * + h4 {
	margin-block-start: 20px;
}

.im-plan-detail h4 {
	padding-bottom: 8px;
	border-bottom: 1px solid var(--im-line-strong);
	color: var(--im-navy);
	font-size: 16px;
}

.im-plan-detail .wp-block-list {
	padding-left: 1.2em;
	font-size: 15px;
	line-height: 2;
}

.im-plan-detail .wp-block-column p {
	font-size: 15px;
}

/* ---------- 11 im/flow-steps ---------- */
.im-flow__list.is-layout-grid {
	gap: 16px;
}

.im-step.is-style-card {
	padding: 24px 20px;
}

.im-step.is-style-card > * + * {
	margin-block-start: 10px;
}

.im-step__title {
	color: var(--im-navy);
	font-family: var(--im-sans);
	font-size: 17px;
	font-weight: 700;
	line-height: 1.6;
}

.im-step__text {
	font-size: 15px;
	line-height: 1.8;
}

/* ---------- 12 im/data-stats（濃紺の帯） ---------- */
.im-stats .im-section-title,
.im-stats p {
	color: var(--im-white);
}

.im-stats .im-section-lead {
	max-width: 760px;
}

.im-section.is-layout-constrained > .im-stats__list,
.im-stats__list.is-layout-grid {
	gap: 0;
	border-block: 1px solid var(--im-gold);
}

.im-stat {
	padding: 28px 16px;
}

.im-stat > * + * {
	margin-block-start: 4px;
}

.im-stat + .im-stat {
	border-left: 1px solid var(--wp--custom--color--line-on-navy);
}

.im-stats p.im-stat__label,
.im-stats p.im-stat__asof,
.im-stats p.is-style-note {
	color: var(--wp--custom--color--on-navy-soft);
}

.im-stat__label {
	font-size: 15px;
}

.im-stats p.im-stat__value {
	color: var(--im-gold);
	font-family: var(--im-serif);
	font-size: var(--wp--preset--font-size--stat);
	font-weight: 600;
	line-height: 1.3;
}

.im-stat__unit {
	margin-left: 4px;
	color: var(--im-white);
	font-size: 18px;
}

.im-stat__asof {
	font-size: 14px;
}

.im-stats .im-more a {
	color: var(--im-white);
}

@media (max-width: 782px) {
	.im-stat + .im-stat {
		border-top: 1px solid var(--wp--custom--color--line-on-navy);
		border-left: 0;
	}
}

/* ---------- 13 im/data-bars ---------- */
.im-data-bars__table {
	width: 100%;
	border-collapse: collapse;
	border-top: 1px solid var(--im-line-strong);
}

.im-data-bars__table th,
.im-data-bars__table td {
	padding: 12px 4px;
	border-bottom: 1px solid var(--im-line);
	text-align: left;
	vertical-align: middle;
}

.im-data-bars__table tbody th {
	width: 30%;
	color: var(--im-navy);
	font-weight: 700;
}

.im-data-bars__table td {
	display: flex;
	align-items: center;
	gap: 12px;
}

.im-data-bars__value {
	flex: none;
	min-width: 4.5em;
	font-weight: 700;
}

.im-data-bars__track {
	flex: 1 1 auto;
	height: 12px;
	background: var(--wp--preset--color--sand);
}

.im-data-bars__bar {
	display: block;
	height: 100%;
	background: var(--im-navy);
}

/* ---------- 14 im/faq-accordion ---------- */
.im-faq {
	border-top: 1px solid var(--im-line-strong);
}

.im-faq .wp-block-accordion,
.im-faq .wp-block-accordion-item {
	margin: 0;
}

.im-faq .wp-block-accordion-item {
	border-bottom: 1px solid var(--im-line);
}

.im-faq .wp-block-accordion-heading {
	margin: 0;
	color: var(--im-navy);
	font-family: var(--im-sans);
	font-size: 17px;
	font-weight: 700;
	letter-spacing: 0.03em;
	line-height: 1.7;
}

.im-faq .wp-block-accordion-heading__toggle {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	width: 100%;
	min-height: 56px;
	padding: 20px 4px;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	letter-spacing: inherit;
	text-align: left;
	cursor: pointer;
}

.im-faq .wp-block-accordion-heading__toggle:hover .wp-block-accordion-heading__toggle-title {
	text-decoration: underline;
}

.im-faq .wp-block-accordion-heading__toggle-icon {
	flex: none;
	font-size: 22px;
	font-weight: 400;
	line-height: 1;
}

.im-faq .wp-block-accordion-panel {
	padding: 0 4px 24px;
}

.im-faq .wp-block-accordion-panel > * {
	margin-block: 0;
}

/* ---------- 15 im/info-table（項目と内容） ---------- */
.wp-block-table.is-style-info {
	margin: 0;
}

.wp-block-table.is-style-info table {
	width: 100%;
	border-collapse: collapse;
	border-top: 1px solid var(--im-line-strong);
}

.wp-block-table.is-style-info td {
	padding: 16px 4px;
	border: 0;
	border-bottom: 1px solid var(--im-line);
	vertical-align: top;
}

.wp-block-table.is-style-info td:first-child {
	width: 30%;
	padding-right: 24px;
	color: var(--im-navy);
	font-weight: 700;
}

@media (max-width: 782px) {
	/* スマホ：項目名の下に内容を置く */
	.wp-block-table.is-style-info tr {
		display: block;
		padding: 16px 4px;
		border-bottom: 1px solid var(--im-line);
	}

	.wp-block-table.is-style-info td,
	.wp-block-table.is-style-info td:first-child {
		display: block;
		width: auto;
		padding: 0;
		border: 0;
	}

	.wp-block-table.is-style-info td:first-child {
		margin-bottom: 4px;
	}
}

.im-callout {
	box-sizing: border-box;
	padding: 16px 20px;
	border: 1px solid var(--im-line);
	border-radius: 2px;
	background: var(--im-cream);
}

.im-section.is-layout-constrained > h3 + * {
	margin-block-start: 12px;
}

/* ---------- 16 im/check-list ---------- */
.wp-block-list.is-style-check {
	padding: 0;
	list-style: none;
}

.wp-block-list.is-style-check li {
	position: relative;
	padding-left: 34px;
}

.wp-block-list.is-style-check li + li {
	margin-top: 12px;
}

/* 印は CSS で描き、読み上げには出さない */
.wp-block-list.is-style-check li::before {
	content: "";
	position: absolute;
	top: 5px;
	left: 0;
	width: 22px;
	height: 22px;
	background: var(--im-navy);
	-webkit-mask: var(--im-icon-check) center / contain no-repeat;
	mask: var(--im-icon-check) center / contain no-repeat;
}

.im-checks__cols {
	display: flex;
	flex-wrap: wrap;
	gap: 56px 64px;
}

.im-checks__col {
	flex: 1 1 420px;
	min-width: 0;
}

.im-checks__col > * {
	margin-block: 0;
}

.im-checks__col > * + * {
	margin-block-start: 24px;
}

.im-checks__col > .im-section-title + .im-section-lead {
	margin-block-start: 16px;
}

.im-checks__col > h3 + * {
	margin-block-start: 12px;
}

/* ---------- 文章だけの区画 ---------- */
.im-text-block > * {
	margin-block: 0;
}

.im-text-block > * + * {
	margin-block-start: 16px;
}

.im-text-block > p + h3 {
	margin-block-start: 24px;
}

.im-text-block > h3 + p {
	margin-block-start: 8px;
}

.im-section.is-layout-constrained > .im-text-block + .im-text-block {
	margin-block-start: 56px;
}

.im-prose.is-layout-constrained > * + * {
	margin-block-start: 24px;
}

.im-note-rule {
	padding-top: 16px;
	border-top: 1px solid var(--im-line);
}

/* ---------- 7 im/media-text ---------- */
.im-section.is-layout-constrained > .im-media-text__text {
	max-width: 760px;
	margin-left: max(0px, (100% - 1120px) / 2) !important;
}

.im-media-text__text > * {
	margin-block: 0;
}

.im-media-text__text > * + * {
	margin-block-start: 24px;
}

.im-media-text__text > .im-section-title + * {
	margin-block-start: 16px;
}

.wp-block-media-text.im-media-text__block .wp-block-media-text__content {
	padding: 0 0 0 clamp(48px, 5vw, 64px);
}

.wp-block-media-text.im-media-text__block.has-media-on-the-right .wp-block-media-text__content {
	padding: 0 clamp(48px, 5vw, 64px) 0 0;
}

.wp-block-media-text.im-media-text__block img {
	border-radius: 2px;
}

.im-media-text__block .wp-block-media-text__content > * + * {
	margin-block-start: 24px;
}

@media (max-width: 600px) {
	.wp-block-media-text.im-media-text__block.is-stacked-on-mobile .wp-block-media-text__content {
		padding: 32px 0 0;
	}
}

/* ---------- 18 im/post-list ---------- */
.im-posts__cols {
	display: flex;
	flex-wrap: wrap;
	gap: clamp(40px, 5vw, 64px);
}

.im-posts__column {
	flex: 3 1 520px;
	min-width: 0;
}

.im-posts__news {
	flex: 2 1 320px;
	min-width: 0;
}

.im-posts__column > *,
.im-posts__news > * {
	margin-block: 0;
}

.im-posts__column > * + *,
.im-posts__news > * + * {
	margin-block-start: 24px;
}

.im-posts__column > .im-section-title + .im-section-lead {
	margin-block-start: 16px;
}

.im-post-cards .wp-block-post-template.is-layout-grid {
	gap: 20px;
}

.wp-block-post-template {
	margin: 0;
	padding: 0;
	list-style: none;
}

/* カード全体を1つのリンクにする（題名のリンクを、カードいっぱいに広げる） */
.im-post-card,
.im-post-row {
	position: relative;
}

.im-post-card > * + * {
	margin-block-start: 10px;
}

.im-post-card .wp-block-post-featured-image img {
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: 2px;
}

.im-post-card__term {
	color: var(--im-bronze);
	font-size: 13px;
	font-weight: 700;
}

.im-post-card__title,
.im-post-row__title {
	margin: 0;
	font-family: var(--im-sans);
	font-size: 16px;
	font-weight: 700;
	letter-spacing: 0.03em;
	line-height: 1.6;
}

.im-post-card__title a,
.im-post-row__title a {
	color: var(--im-navy);
	text-decoration: none;
}

.im-post-card__title a::after,
.im-post-row__title a::after,
.im-related__title a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.im-post-card:hover .im-post-card__title a,
.im-post-row:hover .im-post-row__title a {
	text-decoration: underline;
}

.im-post-card:has(a:focus-visible),
.im-post-row:has(a:focus-visible),
.im-related__card:has(a:focus-visible) {
	outline: 3px solid var(--im-navy);
	outline-offset: 3px;
}

.im-post-card a:focus-visible,
.im-post-row a:focus-visible,
.im-related__card a:focus-visible {
	outline: none;
}

.im-post-card__date,
.im-post-row__date {
	color: var(--im-ink-muted);
	font-size: 14px;
}

.im-post-list .wp-block-post-template {
	border-top: 1px solid var(--im-line);
}

.im-post-list .wp-block-post-template > li {
	margin: 0;
	border-bottom: 1px solid var(--im-line);
}

.im-post-row {
	padding: 16px 4px;
}

.im-post-row > * + * {
	margin-block-start: 2px;
}

/* ---------- 19 im/author-box ---------- */
.im-author {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
	align-items: flex-start;
	padding: 24px;
	border: 1px solid var(--im-line);
	border-radius: 2px;
	background: var(--im-white);
}

.im-author__photo {
	flex: none;
	width: 96px;
}

.im-author__photo img {
	width: 96px;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: 2px;
}

.im-author__body {
	flex: 1 1 240px;
	min-width: 0;
}

.im-author__body > * {
	margin-block: 0;
}

.im-author__body > * + * {
	margin-block-start: 4px;
}

.im-author__body .im-person__name {
	font-size: 18px;
}

.im-author__text:empty {
	display: none;
}

/* ---------- 20 im/related-links ---------- */
.im-related__list.is-layout-grid {
	gap: 20px;
}

.im-related__card {
	position: relative;
	padding: 28px 72px 28px 32px;
	border: 1px solid var(--im-line);
	border-radius: 2px;
	background: var(--im-cream);
}

.im-related.has-cream-background-color .im-related__card {
	background: var(--im-white);
}

.im-related__card.is-single {
	border-color: var(--im-line-strong);
}

.im-related__card::after {
	content: "";
	position: absolute;
	top: 50%;
	right: 32px;
	width: 24px;
	height: 24px;
	margin-top: -12px;
	background: var(--im-navy);
	-webkit-mask: var(--im-icon-arrow) center / contain no-repeat;
	mask: var(--im-icon-arrow) center / contain no-repeat;
}

.im-related__card > * + * {
	margin-block-start: 4px;
}

.im-related__title {
	font-size: var(--wp--preset--font-size--subsection);
	line-height: 1.6;
}

.im-related__title a {
	color: var(--im-navy);
	text-decoration: none;
}

.im-related__card:hover .im-related__title a {
	text-decoration: underline;
}

.im-related__text {
	font-size: 15px;
}

.im-related.is-partner.im-section {
	padding-top: clamp(40px, 5vw, 64px);
	padding-bottom: 0;
}

/* ---------- 8 im/audience-entry（将来用） ---------- */
.im-entry__list.is-layout-grid {
	gap: 20px;
}

.im-entry__image img {
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: 2px;
}

/* ---------- 確認用ページ ---------- */
.im-parts-note {
	max-width: 1120px;
	margin: 16px auto !important;
	padding: 0 24px;
}

/* 濃紺の帯のリードは左ぞろえ（幅760pxまで） */
.im-section.is-layout-constrained.im-stats > .im-section-lead {
	margin-left: max(0px, (100% - 1120px) / 2) !important;
	margin-right: auto !important;
}

/* ページ見出しの文字は左ぞろえ（帯型は左60%の余白に置く） */
.im-page-header .wp-block-cover__inner-container.is-layout-constrained > :is(.im-page-title, .im-page-header__lead) {
	margin-left: max(0px, (100% - 1120px) / 2) !important;
	margin-right: auto !important;
}

/* スマホ：帯型のページ見出しの画像は、文字に重ねず帯の下に3:1で置く（仕様書5章の2案のうち、文字が画像に重ならない方） */
@media (max-width: 782px) {
	.wp-block-cover.im-page-header.is-band {
		flex-direction: column;
		align-items: stretch;
		padding-bottom: 0;
	}

	.wp-block-cover.im-page-header.is-band .wp-block-cover__image-background {
		position: relative;
		order: 2;
		width: 100%;
		max-width: none;
		height: auto;
		aspect-ratio: 3 / 1;
		margin: 32px 0 0;
	}

	.wp-block-cover.im-page-header.is-band .wp-block-cover__inner-container {
		width: 100%;
	}
}

/* パンくずのリンクは、押せる範囲を44px四方以上にする */
.wp-block-breadcrumbs a {
	justify-content: center;
	min-width: 44px;
}

/* 編集画面だけ：コースの詳細のコース名と案内 */
.im-plan-detail.is-editing .im-plan-detail__title {
	padding: 20px 24px 0;
}

.im-plan-detail__hint {
	margin: 4px 24px 16px;
	color: var(--im-ink-muted);
	font-size: 13px;
}

.im-author__title {
	margin-bottom: 4px !important;
	font-size: 14px;
	color: var(--im-bronze);
}

/* =====================================================================
   S3：ページで使う形
   ===================================================================== */

/* 見出しの番号（「STEP 1　…」「理由1　…」）：文字はそのままで、番号を見出しの上に置く */
.im-numbered__num {
	display: block;
	margin-bottom: 8px;
	color: var(--im-bronze);
	font-family: var(--im-serif);
	font-weight: 600;
}

.im-numbered.is-step .im-numbered__num {
	font-size: 40px;
	line-height: 1;
}

.im-numbered.is-reason .im-numbered__num {
	font-family: var(--im-sans);
	font-size: 15px;
	font-weight: 700;
	letter-spacing: 0.12em;
}

.im-numbered__sep {
	display: none;
}

.im-numbered.is-step::before {
	display: none;
}

.im-flow-detail.is-layout-constrained > * + * {
	margin-block-start: 24px;
}

/* 項目と内容（グループで組む版）：先頭は濃紺の線、行の区切りは罫線。スマホは項目名の下に内容 */
.im-info {
	border-top: 1px solid var(--im-line-strong);
}

.im-info > * {
	margin-block: 0;
}

.im-info__row {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 24px;
	padding: 16px 4px;
	border-bottom: 1px solid var(--im-line);
}

.im-info__row > * {
	margin-block: 0;
}

.im-info__label {
	flex: 0 0 30%;
	min-width: 0;
	color: var(--im-navy);
	font-weight: 700;
}

.im-info__value {
	flex: 1 1 280px;
	min-width: 0;
}

.im-info__value .im-tel-link {
	color: var(--im-navy);
	font-weight: 700;
}

@media (max-width: 782px) {
	.im-info__label {
		flex-basis: 100%;
	}
}

/* 数値：2つ・1つのとき、白地の区画のとき */
.im-stats__list.is-two.is-layout-grid {
	grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
}

.im-stats__list.is-light {
	border-block: 1px solid var(--im-line-strong);
}

.im-stats__list.is-light .im-stat__label,
.im-stats__list.is-light .im-stat__asof {
	color: var(--im-ink-muted);
}

.im-stats__list.is-light .im-stat__value {
	color: var(--im-navy);
	font-family: var(--im-serif);
	font-size: var(--wp--preset--font-size--stat);
	font-weight: 600;
	line-height: 1.3;
}

.im-stats__list.is-light .im-stat__unit {
	color: var(--im-ink);
}

/* 割合の横棒：男性・女性を並べる */
.im-bars__pair {
	display: flex;
	flex-wrap: wrap;
	gap: 32px 48px;
}

.im-bars__pair > * {
	flex: 1 1 360px;
	min-width: 0;
	margin-block: 0;
}

.im-bars__col > * + * {
	margin-block-start: 12px;
}

.im-bars.is-layout-constrained > h3 + * {
	margin-block-start: 12px;
}

/* 士業と結婚コース */
.im-course__name {
	margin-top: 32px !important;
	color: var(--im-navy);
	font-size: var(--wp--preset--font-size--subsection);
}

.im-course__name + .im-section-lead {
	margin-block-start: 12px !important;
}

.im-plan-compare__table.is-single {
	background: var(--im-white);
}

.im-plan-compare__table.is-single thead th:last-child,
.im-plan-compare__table.is-single td {
	text-align: right;
}

.im-plan-compare__table.is-single tbody th {
	width: 40%;
	color: var(--im-navy);
}

.im-course__block > * {
	margin-block: 0;
}

.im-course__block > * + *,
.im-course__cols .wp-block-column > * + * {
	margin-block-start: 8px;
}

.im-course h4 {
	padding-bottom: 8px;
	border-bottom: 1px solid var(--im-line-strong);
	color: var(--im-navy);
	font-size: 16px;
}

.im-course__cols {
	gap: 24px 48px;
}

.im-course .im-course__cols .wp-block-list {
	padding-left: 1.2em;
	font-size: 15px;
	line-height: 2;
}

/* 文章とチェックの箇条書きが続く区画 */
.im-checks-flow.is-layout-constrained > h3 {
	margin-block-start: 40px;
}

.im-checks-flow.is-layout-constrained > h3 + * {
	margin-block-start: 12px;
}

/* 仮の枠（画像が届いていない箇所）：デザイン仕様書7章 */
.im-placeholder {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	min-height: 200px;
	padding: 24px;
	border: 1px dashed var(--wp--custom--color--line-field);
	border-radius: 2px;
	background: var(--wp--preset--color--sand);
	color: #3D4352;
	font-size: 13px;
}

.im-placeholder > * {
	margin-block: 0;
}

.im-cert {
	max-width: 480px;
}

.im-cert > * {
	margin-block: 0;
}

.im-figure-caption {
	margin-top: 8px !important;
	color: var(--im-ink-muted);
	font-size: 14px;
}

/* 地図 */
.im-map iframe {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	border: 0;
	border-radius: 2px;
}

.im-map.is-editing {
	min-height: 200px;
}

/* 電話番号（大きく） */
.im-tel-big .im-tel-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--im-navy);
	font-size: 28px;
	font-weight: 700;
	text-decoration: none;
}

.im-tel-section.is-layout-constrained > .im-tel-big {
	margin-block-start: 16px;
}

.im-tel-section.is-layout-constrained > .im-tel-hours-line {
	margin-block-start: 0;
	color: var(--im-ink-muted);
	font-size: 15px;
}

/* 予約ページの3つの約束 */
.im-assurance.is-contact.im-section {
	padding-block: clamp(40px, 5vw, 56px);
}

.im-assurance.is-contact .im-assurance__list .im-assurance__item {
	padding: 20px 24px;
	border: 1px solid var(--im-line);
	border-radius: 2px;
}

.im-assurance.is-contact.is-layout-constrained > .is-secret {
	margin-block-start: 24px;
}

.im-contact-steps > * {
	margin-block: 0;
}

.im-contact-steps > * + * {
	margin-block-start: 8px;
}

.im-steps-list {
	padding-left: 1.4em;
}

/* 予約フォームの場所（S4で Contact Form 7 を入れる） */
.im-form-slot {
	min-height: 120px;
	border: 1px dashed var(--wp--custom--color--line-field);
	border-radius: 2px;
	background: var(--im-white);
}

.im-form-slot__empty:empty {
	display: none;
}

.im-form__required {
	font-weight: 700;
}

.im-form-section.is-layout-constrained > .im-form__aside,
.im-form-section.is-layout-constrained > .im-form-slot + * {
	margin-block-start: 16px;
}

/* 予約完了のページ見出し */
.im-thanks-head.im-section {
	padding-top: 16px;
	padding-bottom: clamp(40px, 6vw, 72px);
	border-bottom: 1px solid var(--im-line);
}

.im-thanks-head.is-layout-constrained > .wp-block-breadcrumbs {
	--separator: "＞";
	margin-bottom: clamp(32px, 5vw, 56px);
	font-size: 14px;
}

.im-thanks-head.is-layout-constrained > * + * {
	margin-block-start: 16px;
}

/* 法定ページ */
.im-legal.is-layout-constrained > * + * {
	margin-block-start: 16px;
}

.im-legal.is-layout-constrained > .im-legal__h {
	margin-block-start: 48px;
	font-size: var(--wp--preset--font-size--subsection);
}

.im-legal.is-layout-constrained > h3 {
	margin-block-start: 24px;
}

.im-legal.is-layout-constrained > h3 + * {
	margin-block-start: 8px;
}

.im-legal.is-intro.im-section {
	padding-bottom: 0;
}

.im-legal .wp-block-list {
	padding-left: 1.4em;
}

/* よくある質問：トップは「Q.」「A.」を表示の印として付ける（文は質問ごとの同期パターン） */
.im-faq.has-qa .wp-block-accordion-heading__toggle-title::before {
	content: "Q. ";
}

.im-faq.has-qa .wp-block-accordion-panel > p:first-child::before {
	content: "A. ";
}

/* ページ見出しの注記 */
.im-page-header__note {
	max-width: 620px;
	margin-top: 12px !important;
	margin-left: max(0px, (100% - 1120px) / 2) !important;
}

/* 左右型のページ見出し（写真が横長のとき） */
.im-page-header__photo.is-landscape {
	flex: 0 1 460px;
	width: 460px;
}

.im-page-header__photo.is-landscape img {
	aspect-ratio: 3 / 2;
}

.im-page-header__text .wp-block-block,
.im-page-header__text .im-cta-inline {
	margin-top: 24px;
}

/* 番号付きの項目を縦に並べる版 */
.im-reasons__list.is-stack > * + * {
	margin-top: 32px;
}

.im-advisor-msg__text > .im-reasons__list + * {
	margin-top: 32px;
}

.im-worries__cards.is-full.is-layout-grid {
	gap: 16px;
}

/* ---------- コラム・お知らせの一覧と記事、404 ---------- */
.im-main.is-layout-constrained > * {
	margin-block: 0;
}

.im-cat-nav {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
}

.im-cat-nav > * {
	margin: 0 !important;
}

.im-cat-nav ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.im-cat-nav a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid var(--im-line);
	border-radius: 4px;
	background: var(--im-white);
	color: var(--im-navy);
	font-size: 15px;
	font-weight: 700;
	text-decoration: none;
}

.im-cat-nav .current-cat > a,
body.post-type-archive-column .im-cat-nav__all a {
	border-color: var(--im-navy);
	background: var(--im-navy);
	color: var(--im-white);
}

.im-archive.is-layout-constrained > * + * {
	margin-block-start: 32px;
}

.im-pagination {
	margin-top: 40px;
}

.im-pagination a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--im-navy);
	font-weight: 700;
}

.im-article-head.im-section {
	padding-top: 16px;
	padding-bottom: 32px;
}

.im-article-head.is-layout-constrained > .wp-block-breadcrumbs {
	--separator: "＞";
	margin-bottom: 32px;
	font-size: 14px;
}

.im-article-head.is-layout-constrained > * + * {
	margin-block-start: 12px;
}

.im-article__term {
	color: var(--im-bronze);
	font-size: 13px;
	font-weight: 700;
}

.im-article__term a {
	color: inherit;
}

.im-article__dates {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 16px;
	color: var(--im-ink-muted);
	font-size: 14px;
}

.im-article__dates > * {
	margin: 0 !important;
}

.im-article__author {
	color: var(--im-ink-muted);
	font-size: 14px;
}

.im-article-head.is-layout-constrained > .im-article__image {
	margin-block-start: 24px;
}

.im-article__image img {
	border-radius: 2px;
}

.im-article__body {
	padding-bottom: 32px;
	background: var(--im-white);
}

.im-article__body > h2 {
	margin-top: 48px;
}

.im-article-foot.im-section {
	padding-top: 0;
}

.im-article-foot.is-layout-constrained > * + * {
	margin-block-start: 32px;
}

.im-404.im-section {
	padding-top: clamp(56px, 7.5vw, 96px);
}

.im-404 .im-page-title {
	font-size: var(--wp--preset--font-size--page-title);
}

/* コラム・お知らせの記事は、頭から終わりまで白地 */
body.single-column .im-main,
body.single-news .im-main {
	background: var(--im-white);
}

.im-article__body {
	background: transparent;
}

/* 文の中のリンクも、押せる範囲を高さ44px確保する（上下の余白は行の高さを変えない） */
:where(.im-info__value, .wp-block-accordion-panel p, .im-legal p, .im-prose p, .im-section-lead) a {
	padding-block: 10px;
}

/* 帯型のページ見出し：文字は左の余白（画像の左55%）に収める */
@media (min-width: 783px) {
	.im-page-header.is-band .wp-block-cover__inner-container.is-layout-constrained > :is(.im-page-title, .im-page-header__lead, .im-page-header__note) {
		max-width: min(620px, 55%);
	}
}

/* =====================================================================
   予約フォーム（im/contact-form：Contact Form 7）。技術設計書8章、デザイン仕様書2章
   ===================================================================== */
.im-booking .wpcf7-form > * + * {
	margin-top: 28px;
}

.im-form__item > * {
	margin-block: 0;
}

.im-form__fieldset {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.im-form__label {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 8px;
	padding: 0;
	color: var(--im-navy);
	font-size: 16px;
	font-weight: 700;
}

.im-form__badge {
	padding: 1px 8px;
	border: 1px solid var(--wp--custom--color--line-field);
	border-radius: 2px;
	color: var(--im-ink-muted);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.6;
}

.im-form__badge.is-required {
	border-color: var(--im-navy);
	background: var(--im-navy);
	color: var(--im-white);
}

.im-booking :is(input[type="text"], input[type="email"], input[type="tel"], input[type="date"], select, textarea) {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	padding: 10px 12px;
	border: 1px solid var(--wp--custom--color--line-field);
	border-radius: 4px;
	background: var(--im-white);
	color: var(--im-ink);
	font: inherit;
	font-size: 16px;
	line-height: 1.6;
}

.im-booking textarea {
	min-height: 160px;
}

.im-booking ::placeholder {
	color: var(--wp--custom--color--disabled-text);
}

.im-booking :is(input, select, textarea):focus-visible {
	outline: 3px solid var(--wp--custom--color--link);
	outline-offset: 2px;
}

.im-form__help {
	margin-top: 6px !important;
	color: var(--im-ink-muted);
	font-size: 14px;
	line-height: 1.7;
}

.im-form__datetime {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.im-form__sub {
	flex: 1 1 200px;
	min-width: 0;
}

/* ラジオボタン・チェック欄：押せる範囲を高さ44px以上に */
.im-booking .wpcf7-radio,
.im-booking .wpcf7-acceptance {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 24px;
}

.im-booking .wpcf7-list-item {
	margin: 0;
}

.im-booking .wpcf7-list-item label {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	cursor: pointer;
}

.im-booking input[type="radio"],
.im-booking input[type="checkbox"] {
	flex: none;
	width: 22px;
	height: 22px;
	margin: 0;
	accent-color: var(--im-navy);
}

/* エラー：項目のすぐ下に文言。色だけで伝えない（文言と、枠の太さ） */
.im-booking .wpcf7-not-valid-tip {
	display: block;
	margin-top: 6px;
	color: var(--wp--custom--color--error);
	font-size: 15px;
	font-weight: 700;
}

.im-booking .wpcf7-not-valid-tip:empty {
	display: none;
}

.im-booking .wpcf7-not-valid {
	border: 2px solid var(--wp--custom--color--error) !important;
	background: var(--wp--custom--color--error-bg) !important;
}

.im-booking .wpcf7-response-output {
	margin: 0 !important;
	padding: 12px 16px !important;
	border: 0 !important;
	border-left: 4px solid var(--wp--custom--color--error) !important;
	background: var(--wp--custom--color--error-bg);
	color: var(--im-ink);
	font-weight: 700;
}

.im-booking .wpcf7-response-output:empty,
.im-booking form.init .wpcf7-response-output,
.im-booking form.sent .wpcf7-response-output {
	display: none;
}

.im-booking .wpcf7-response-output:focus {
	outline: 3px solid var(--wp--custom--color--link);
	outline-offset: 2px;
}

.im-booking .wpcf7-spinner {
	display: none;
}

/* 送信ボタン：予約ボタンと同じ見た目（高さ56px）。スマホは幅いっぱい */
.im-booking .im-form__button {
	min-height: 56px;
	padding: 0 32px;
	border: 1px solid var(--wp--custom--color--gold-border);
	border-radius: 4px;
	background: var(--im-gold);
	color: var(--im-navy);
	font-family: var(--im-sans);
	font-size: 17px;
	font-weight: 700;
	letter-spacing: 0.03em;
	cursor: pointer;
}

.im-booking .im-form__button:hover {
	background: var(--wp--custom--color--gold-hover);
}

.im-booking .im-form__button:disabled {
	border-color: var(--wp--custom--color--disabled-border);
	background: var(--wp--custom--color--disabled-bg);
	color: var(--wp--custom--color--disabled-text);
	cursor: wait;
}

@media (max-width: 782px) {
	.im-booking .im-form__button {
		width: 100%;
	}
}

.im-booking [hidden] {
	display: none !important;
}

/* 予約フォームの区画：フォームの背景は白 */
.im-form-section .im-booking {
	padding: clamp(20px, 4vw, 32px);
	border: 1px solid var(--im-line);
	border-radius: 2px;
	background: var(--im-white);
}

.im-booking .wpcf7-list-item label a {
	padding-block: 10px;
}
