/* ==========================================================================
   article.css — 記事詳細のレイアウトと、記事本文（.ep-prose）の文字組み。
   後半は「既存記事との互換」: 既存記事の本文に残るクラス（c-box-titled / point-box など）を
   新デザインで受ける。クラス名は既存のまま（本文は書き換えない）。対応表は DESIGN.md。
   ========================================================================== */

/* ---- 記事ヘッダー ---- */
.ep-article__header {
	width: min(100% - var(--ep-gutter) * 2, var(--ep-width-narrow));
	margin-inline: auto;
	padding-top: 80px;
}

.ep-article__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--ep-space-2xs) var(--ep-space-xs);
	color: var(--ep-color-ink-sub);
	font-size: var(--ep-fs-xs);
}

.ep-article__category {
	padding: 2px var(--ep-space-xs);
	border: 1px solid var(--ep-color-accent);
	border-radius: var(--ep-radius-pill);
	color: var(--ep-color-accent);
	font-size: var(--ep-fs-2xs);
	font-weight: var(--ep-weight-bold);
	transition: background-color var(--ep-duration-fast), color var(--ep-duration-fast);
}

.ep-article__category:hover {
	background: var(--ep-color-accent);
	color: var(--ep-color-on-dark);
}

.ep-article__date,
.ep-article__updated {
	font-family: var(--ep-font-latin);
}

.ep-article__label {
	margin-top: var(--ep-space-l);
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-size: var(--ep-fs-2xs);
	font-weight: var(--ep-weight-bold);
	letter-spacing: 0.2em;
}

.ep-article__title {
	margin-top: var(--ep-space-2xs);
	font-size: var(--ep-fs-2xl);
	line-height: 1.6;
}

.ep-article__lead {
	margin-top: var(--ep-space-l);
	line-height: var(--ep-lh-relaxed);
}

/* 見出し画像（アイキャッチ）: 既存素材をそのまま。切り抜かず縦横比を保つ */
.ep-article__eyecatch {
	width: min(100% - var(--ep-gutter) * 2, var(--ep-width-content));
	margin: 60px auto 0;
}

.ep-article__eyecatch img {
	width: 100%;
	height: auto;
	border-radius: var(--ep-radius-xl);
}

.ep-article__layout,
.ep-article__footer {
	width: min(100% - var(--ep-gutter) * 2, var(--ep-width-prose));
	margin-inline: auto;
}

.ep-article__layout {
	padding-block: 60px var(--ep-space-2xl);
}

.ep-article--news .ep-article__layout {
	padding-top: var(--ep-space-l);
}

.ep-article__footer {
	padding-bottom: var(--ep-space-2xl);
}

.ep-article__share {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--ep-space-xs);
	margin-top: var(--ep-space-l);
	padding-block: var(--ep-space-s);
	border-block: 1px solid var(--ep-color-line);
}

.ep-article__share-label,
.ep-article__filed-label {
	color: var(--ep-color-ink-sub);
	font-family: var(--ep-font-latin);
	font-size: 11px;
	letter-spacing: var(--ep-ls-wide);
}

.ep-article__share-link {
	color: var(--ep-color-accent);
	font-size: var(--ep-fs-xs);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.ep-article__filed {
	display: flex;
	align-items: center;
	gap: var(--ep-space-xs);
	margin-top: var(--ep-space-s);
}

.ep-related__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--ep-space-l) 36px;
}

.ep-related .ep-actions {
	margin-top: var(--ep-space-xl);
}

.ep-archive-links__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--ep-space-s);
}

.ep-archive-links__label {
	margin-right: var(--ep-space-xs);
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-size: var(--ep-fs-2xs);
	font-weight: var(--ep-weight-bold);
	letter-spacing: var(--ep-ls-wide);
}

.ep-archive-links__actions {
	display: flex;
	gap: var(--ep-space-2xs);
}

.ep-archive-links {
	padding-block: var(--ep-space-xl);
}

@media (max-width: 767px) {
	.ep-article__header {
		padding-top: var(--ep-space-l);
	}
	.ep-article__title {
		font-size: 22px;
	}
	.ep-article__eyecatch {
		margin-top: var(--ep-space-l);
	}
	.ep-article__eyecatch img {
		border-radius: var(--ep-radius-l);
	}
	.ep-article__layout {
		padding-top: var(--ep-space-l);
	}
	.ep-related__grid {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ---- 目次（main.js が本文の h2 から組み、最初の h2 の直前に移す） ---- */
.ep-toc {
	margin-block: var(--ep-space-xl) 0;
	padding: 30px 36px;
	border: 1px solid var(--ep-color-line);
	border-radius: var(--ep-radius-l);
	background: var(--ep-color-surface);
}

.ep-toc__summary {
	display: flex;
	align-items: center;
	gap: var(--ep-space-xs);
	cursor: pointer;
	list-style: none;
}

.ep-toc__summary::-webkit-details-marker {
	display: none;
}

.ep-toc__title {
	font-size: var(--ep-fs-lg);
	font-weight: var(--ep-weight-bold);
}

.ep-toc__en {
	color: var(--ep-color-ink-sub);
	font-family: var(--ep-font-latin);
	font-size: 11px;
	letter-spacing: 0.17em;
}

.ep-toc__icon {
	position: relative;
	width: 16px;
	height: 16px;
	margin-left: auto;
}

.ep-toc__icon::before,
.ep-toc__icon::after {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	width: 100%;
	border-top: 1.5px solid var(--ep-color-accent);
}

.ep-toc__icon::after {
	transform: rotate(90deg);
	transition: transform var(--ep-duration-base) var(--ep-ease);
}

.ep-toc[open] .ep-toc__icon::after {
	transform: rotate(0);
}

.ep-toc__list {
	margin-top: var(--ep-space-s);
	padding-top: var(--ep-space-s);
	border-top: 1px solid var(--ep-color-line);
}

.ep-toc__list li + li {
	margin-top: var(--ep-space-2xs);
}

.ep-toc__list a {
	display: grid;
	grid-template-columns: 34px 1fr;
	gap: var(--ep-space-3xs);
	font-size: var(--ep-fs-xs);
	line-height: 1.8;
}

.ep-toc__list a:hover {
	color: var(--ep-color-accent);
}

.ep-toc__num {
	padding-top: 0.15em;
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-size: var(--ep-fs-2xs);
	font-weight: var(--ep-weight-bold);
}

@media (max-width: 767px) {
	.ep-toc {
		padding: var(--ep-space-s);
	}
}

/* ==========================================================================
   記事本文（.ep-prose）— 投稿・お知らせ・本文を持つ固定ページの共通文字組み
   ========================================================================== */
.ep-prose {
	font-size: var(--ep-fs-sm);
	line-height: var(--ep-lh-relaxed);
	letter-spacing: 0.04em;
}

.ep-prose h2,
.ep-prose h3,
.ep-prose h4,
.ep-article__title {
	word-break: normal; /* 記事の見出しは長いので通常の折り返し（区切りは .title-seg が担当） */
}

.ep-prose > * + * {
	margin-top: 1.6em;
}

/* 旧エディタ（wpautop）がショートコードの前後に残す空の段落を詰める */
.ep-prose p:empty {
	display: none;
}

.ep-prose a:not([class]) {
	color: var(--ep-color-accent);
	text-decoration: underline;
	text-underline-offset: 4px;
}

.ep-prose strong {
	font-weight: var(--ep-weight-bold);
}

.ep-prose h2 {
	position: relative;
	margin-top: 96px;
	padding-bottom: var(--ep-space-xs);
	border-bottom: 1px solid var(--ep-color-line);
	font-size: 26px;
	line-height: 1.6;
}

.ep-prose h2::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -1px;
	width: 56px;
	height: 2px;
	background: var(--ep-color-accent);
}

.ep-prose h3 {
	margin-top: 56px;
	padding-left: var(--ep-space-xs);
	border-left: 3px solid var(--ep-color-accent);
	font-size: var(--ep-fs-lg);
	line-height: 1.6;
}

.ep-prose h4 {
	margin-top: var(--ep-space-l);
	color: var(--ep-color-accent);
	font-size: 17px;
	line-height: 1.6;
}

.ep-prose h2 + *,
.ep-prose h3 + *,
.ep-prose h4 + * {
	margin-top: var(--ep-space-s);
}

/* 本文中の画像（見出し画像を含む既存素材）: そのまま表示。切り抜かない */
.ep-prose img {
	height: auto;
}

.ep-prose figure img,
.ep-prose p > img:only-child {
	width: 100%;
}

.ep-prose figcaption {
	margin-top: var(--ep-space-2xs);
	color: var(--ep-color-ink-sub);
	font-size: var(--ep-fs-2xs);
	text-align: center;
}

.ep-prose ul:not([class]),
.ep-prose ol:not([class]),
.ep-prose .wp-block-list {
	padding-left: 1.4em;
}

.ep-prose li + li {
	margin-top: 0.6em;
}

.ep-prose ul > li::marker {
	color: var(--ep-color-accent);
}

.ep-prose ol > li::marker {
	color: var(--ep-color-accent);
	font-weight: var(--ep-weight-bold);
}

.ep-prose blockquote,
.ep-prose .is-style-article-quote {
	position: relative;
	padding: var(--ep-space-m) 30px var(--ep-space-m) 56px;
	border-radius: var(--ep-radius-l);
	background: var(--ep-color-surface);
	color: var(--ep-color-ink);
}

.ep-prose blockquote::before {
	content: "“";
	position: absolute;
	left: 20px;
	top: 6px;
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-size: 44px;
	line-height: 1;
}

.ep-prose blockquote > * + * {
	margin-top: 0.8em;
}

.ep-prose table {
	width: 100%;
	font-size: 15px;
	line-height: 1.7;
}

.ep-prose th,
.ep-prose td {
	padding: 12px 16px;
	border: 1px solid var(--ep-color-line);
	text-align: left;
	vertical-align: top;
}

.ep-prose th {
	background: var(--ep-color-surface);
	font-weight: var(--ep-weight-bold);
}

.ep-prose .is-style-article-compare thead th {
	background: var(--ep-color-accent);
	color: var(--ep-color-on-dark);
}

.ep-prose hr {
	border: 0;
	border-top: 1px solid var(--ep-color-line);
}

@media (max-width: 767px) {
	.ep-prose {
		font-size: 15.5px;
		line-height: 1.95;
	}
	.ep-prose h2 {
		margin-top: 64px;
		font-size: 21px;
	}
	.ep-prose h3 {
		margin-top: var(--ep-space-l);
		font-size: 18px;
	}
	.ep-prose blockquote {
		padding: var(--ep-space-s) var(--ep-space-s) var(--ep-space-s) 44px;
	}
}

/* ==========================================================================
   既存記事との互換（クラス名は既存のまま・inc/legacy-content.php のショートコード出力と一致）
   ========================================================================== */

/* 見出しの折り返し単位（h1・h2） */
.title-seg {
	display: inline-block;
}

/* マーカー [eip_marker] */
.c-marker {
	padding: 0 0.04em 0.06em;
	background: linear-gradient(transparent 62%, rgba(31, 77, 58, 0.16) 62%);
	-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
}

/* 注意書き [eip_note] / ブロックスタイル「注意書き」 */
.ep-prose .annotation,
.ep-prose .is-style-annotation {
	color: var(--ep-color-ink-sub);
	font-size: var(--ep-fs-2xs);
	line-height: 1.8;
}

.ep-prose .annotation sup {
	margin-right: 0.2em;
	font-size: 1em;
	vertical-align: baseline;
}

/* タイトル付きボックス [eip_box] / ブロックスタイル「タイトル付きボックス」 */
.ep-prose .c-box-titled,
.ep-prose .is-style-c-box-titled {
	padding: var(--ep-space-m) 32px 28px;
	border: 1px solid var(--ep-color-line);
	border-radius: var(--ep-radius-l);
	background: var(--ep-color-bg);
}

.ep-prose .c-box-titled__title {
	display: flex;
	align-items: center;
	gap: var(--ep-space-2xs);
	margin: 0 0 var(--ep-space-xs);
	padding-bottom: var(--ep-space-xs);
	border-bottom: 1px solid var(--ep-color-line);
	font-weight: var(--ep-weight-bold);
	line-height: 1.6;
}

.ep-prose .c-box-titled__title::before {
	content: "";
	flex: 0 0 auto;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--ep-color-accent);
}

.ep-prose .c-box-titled__body {
	font-size: 15px;
	line-height: 1.9;
}

.ep-prose .c-box-titled__body > :first-child { margin-top: 0; }
.ep-prose .c-box-titled__body > :last-child { margin-bottom: 0; }

.ep-prose .c-box-titled ul {
	margin: 0;
	padding-left: 1.3em;
}

.ep-prose .c-box-titled__body > ol {
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: ep-box-item;
}

.ep-prose .c-box-titled__body > ol > li {
	position: relative;
	padding-left: 2.6em;
	counter-increment: ep-box-item;
}

.ep-prose .c-box-titled__body > ol > li::before {
	content: counter(ep-box-item, decimal-leading-zero) ".";
	position: absolute;
	left: 0;
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-weight: var(--ep-weight-bold);
}

/* ポイント [eip_point] / ブロックスタイル「ポイント」 */
.ep-prose .point-box,
.ep-prose .is-style-point-paper {
	padding: 28px 32px;
	border: 1px solid var(--ep-color-accent);
	border-radius: var(--ep-radius-l);
	background: var(--ep-color-accent-soft);
}

.ep-prose .point-box__label {
	display: inline-block;
	padding: 2px var(--ep-space-xs);
	border-radius: var(--ep-radius-pill);
	background: var(--ep-color-accent);
	color: var(--ep-color-on-dark);
	font-family: var(--ep-font-latin);
	font-size: var(--ep-fs-2xs);
	font-weight: var(--ep-weight-bold);
	line-height: 1.6;
	letter-spacing: var(--ep-ls-wide);
}

.ep-prose .point-box > p:not(.point-box__label) {
	margin-top: var(--ep-space-2xs);
	font-size: 17px;
	font-weight: var(--ep-weight-bold);
	line-height: 1.9;
}

/* ステップ [eip_steps] */
.ep-prose .step-list {
	padding: 0;
	border-top: 1px solid var(--ep-color-line);
	list-style: none;
}

.ep-prose .step-list > li {
	display: grid;
	grid-template-columns: 88px 1fr;
	gap: var(--ep-space-s);
	margin: 0;
	padding-block: var(--ep-space-s);
	border-bottom: 1px solid var(--ep-color-line);
}

.ep-prose .step-list > li > span {
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-size: 13px;
	font-weight: var(--ep-weight-bold);
	letter-spacing: var(--ep-ls-wide);
}

.ep-prose .step-list h4 {
	margin: 0;
	color: var(--ep-color-ink);
	font-size: var(--ep-fs-sm);
}

.ep-prose .step-list p {
	margin-top: var(--ep-space-3xs);
	color: var(--ep-color-ink-sub);
	font-size: var(--ep-fs-xs);
	line-height: 1.8;
}

/* 内部リンクカード [eip_related] */
.ep-prose .internal-link-card {
	position: relative;
	display: block;
	padding: var(--ep-space-s) 56px var(--ep-space-s) var(--ep-space-m);
	border: 1px solid var(--ep-color-line);
	border-radius: var(--ep-radius-l);
	transition: border-color var(--ep-duration-fast);
}

.ep-prose .internal-link-card:hover {
	border-color: var(--ep-color-accent);
}

.ep-prose .internal-link-card small {
	display: block;
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-size: 11px;
	font-weight: var(--ep-weight-bold);
	letter-spacing: var(--ep-ls-wide);
}

.ep-prose .internal-link-card strong {
	display: block;
	margin-top: var(--ep-space-3xs);
	line-height: 1.7;
}

.ep-prose .internal-link-card i {
	position: absolute;
	right: var(--ep-space-m);
	top: 50%;
	color: var(--ep-color-accent);
	font-style: normal;
	transform: translateY(-50%);
}

/* あわせて読みたい [eip_also] */
.ep-prose .inline-related {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--ep-space-3xs) var(--ep-space-xs);
	padding-block: var(--ep-space-xs);
	border-block: 1px solid var(--ep-color-line);
	font-size: 15px;
}

.ep-prose .inline-related span {
	color: var(--ep-color-accent);
	font-size: var(--ep-fs-2xs);
	font-weight: var(--ep-weight-bold);
}

.ep-prose .inline-related a {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.ep-prose .inline-related i {
	color: var(--ep-color-accent);
	font-style: normal;
}

/* 表の枠 [eip_table] */
.ep-prose .table-wrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
}

.ep-prose .table-wrap table {
	min-width: 560px;
}

/* 会話の吹き出し [eip_talk]（アバター画像は既存素材） */
.ep-prose .eip-talk {
	display: flex;
	align-items: flex-start;
	gap: var(--ep-space-xs);
}

.ep-prose .eip-talk--r {
	flex-direction: row-reverse;
}

.ep-prose .eip-talk__avatar {
	flex: 0 0 64px;
	text-align: center;
}

.ep-prose .eip-talk__avatar img,
.ep-prose .eip-talk__avatar svg {
	width: 64px;
	height: 64px;
	border: 1px solid var(--ep-color-line);
	border-radius: 50%;
	object-fit: cover;
	fill: none;
	stroke: var(--ep-color-ink-sub);
}

.ep-prose .eip-talk__avatar span {
	display: block;
	margin-top: 4px;
	color: var(--ep-color-ink-sub);
	font-size: 11px;
	line-height: 1.4;
}

.ep-prose .eip-talk__balloon {
	position: relative;
	flex: 1;
	padding: var(--ep-space-xs) var(--ep-space-s);
	border-radius: var(--ep-radius-l);
	background: var(--ep-color-surface);
	font-size: 15px;
	line-height: 1.9;
}

.ep-prose .eip-talk__balloon > * + * {
	margin-top: 0.8em;
}

/* 編集部の結論（パターン editorial-cta） */
.ep-prose .editorial-cta {
	padding: 32px;
	border-top: 2px solid var(--ep-color-accent);
	background: var(--ep-color-surface);
}

.ep-prose .editorial-cta__label {
	color: var(--ep-color-accent);
	font-family: var(--ep-font-latin);
	font-size: var(--ep-fs-2xs);
	font-weight: var(--ep-weight-bold);
	letter-spacing: var(--ep-ls-wide);
}

.ep-prose .editorial-cta h3 {
	margin-top: var(--ep-space-2xs);
	padding: 0;
	border: 0;
}

.ep-prose .editorial-cta a {
	color: var(--ep-color-accent);
	font-weight: var(--ep-weight-bold);
}

/* 本文中の画像 figure（ブロックスタイル「記事本文の画像」） */
.ep-prose .is-style-article-figure img {
	width: 100%;
}

@media (max-width: 767px) {
	.ep-prose .c-box-titled,
	.ep-prose .point-box {
		padding: var(--ep-space-s);
	}
	.ep-prose .step-list > li {
		grid-template-columns: 1fr;
		gap: var(--ep-space-3xs);
	}
	.ep-prose .eip-talk__avatar {
		flex-basis: 48px;
	}
	.ep-prose .eip-talk__avatar img,
	.ep-prose .eip-talk__avatar svg {
		width: 48px;
		height: 48px;
	}
}
