/*
 * renews-core 表示部品の基本スタイル。
 * 色は renews-theme の theme.json プリセットを使い、別テーマでも読めるよう既定値を持つ。
 * 本文中の表示部品（.renews-part--*）の HTML 契約は docs/html-contract.md を参照。
 */
:root {
	--rn-slate: var(--wp--preset--color--deep-slate, #183647);
	--rn-slate-dark: var(--wp--preset--color--deep-slate-dark, #102536);
	--rn-teal: var(--wp--preset--color--signal-teal, #168b86);
	--rn-teal-text: var(--wp--preset--color--teal-text, #0e6f6b);
	--rn-teal-tint: var(--wp--preset--color--teal-tint, #e8f5f3);
	--rn-mint: var(--wp--preset--color--mint, #6ed1c1);
	--rn-gold: var(--wp--preset--color--gold, #d99f44);
	--rn-gold-text: var(--wp--preset--color--gold-text, #85591a);
	--rn-gold-tint: var(--wp--preset--color--gold-tint, #fff4e0);
	--rn-text: var(--wp--preset--color--text, #233849);
	--rn-muted: var(--wp--preset--color--muted, #5a6c7d);
	--rn-bg: var(--wp--preset--color--bg, #f4f7f8);
	--rn-paper: var(--wp--preset--color--paper, #ffffff);
	--rn-edge: var(--wp--preset--color--edge, #dce5e8);
	--rn-red: var(--wp--preset--color--alert-red, #ad443c);
	--rn-red-tint: var(--wp--preset--color--alert-tint, #fbeeec);
	--rn-radius: 10px;
}

.screen-reader-text {
	border: 0;
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	width: 1px;
	word-wrap: normal !important;
}

.renews-editor-placeholder {
	border: 1px dashed var(--rn-edge);
	border-radius: 6px;
	color: var(--rn-muted);
	font-size: 13px;
	padding: 12px;
}

/* ---------- ラベル・バッジ ---------- */
.renews-labels { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; font-size: 12px; }
.renews-label { border-radius: 4px; padding: 2px 8px; line-height: 1.8; font-weight: 700; background: var(--rn-teal-tint); color: var(--rn-teal-text); }
.renews-label a { color: inherit; text-decoration: none; }
.renews-label a:hover, .renews-label a:focus-visible { text-decoration: underline; }
.renews-label__prefix { font-weight: 600; opacity: .85; }
.renews-label--business { background: var(--rn-paper); border: 1px solid #c9e3de; border-radius: 999px; color: #2f6d65; }
.renews-label--type { background: #edf1f4; color: #3d5666; }
.renews-label--alert { background: var(--rn-gold-tint); color: var(--rn-gold-text); }

.renews-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.renews-badge { display: inline-block; border: 1px solid var(--rn-edge); border-radius: 4px; padding: 2px 8px; font-size: 12px; font-weight: 700; background: var(--rn-paper); color: var(--rn-text); text-decoration: none; }
.renews-badge--policy, .renews-badge--bill, .renews-badge--under_review { border-color: #ecd3a6; background: var(--rn-gold-tint); color: var(--rn-gold-text); }
.renews-badge--promulgated, .renews-badge--enacted { border-color: #c9e3de; color: var(--rn-teal-text); }
.renews-badge--effective { border-color: var(--rn-teal); background: var(--rn-teal-tint); color: var(--rn-teal-text); }
.renews-badge--superseded, .renews-badge--historical, .renews-badge--expired, .renews-badge--closed { background: #edf1f4; color: #3d5666; }
.renews-badge--corrected { border-color: #e2b9b4; background: var(--rn-red-tint); color: var(--rn-red); }

/* ---------- 日付 ---------- */
.renews-dates { display: flex; flex-wrap: wrap; gap: 4px 18px; margin: 0; font-size: 13px; color: var(--rn-muted); }
.renews-dates > div { display: flex; gap: 6px; }
.renews-dates dt { font-weight: 700; color: var(--rn-text); }
.renews-dates dd { margin: 0; }
.renews-card-meta__dates { display: flex; flex-wrap: wrap; gap: 0 12px; margin: 8px 0 0; font-size: 12px; color: var(--rn-muted); }

/* ---------- お知らせ ---------- */
.renews-status-banner { display: grid; gap: 8px; margin: 16px 0; }
.renews-status { margin: 0; padding: 12px 14px; border-radius: 6px; border-left: 4px solid var(--rn-gold); background: var(--rn-gold-tint); font-size: 14px; }
.renews-status--superseded { border-left-color: var(--rn-teal); background: var(--rn-teal-tint); font-weight: 700; }
.renews-status--historical, .renews-status--expired { border-left-color: #8296a3; background: #edf1f4; }
.renews-status a { color: var(--rn-teal-text); }

/* ---------- 要点 ---------- */
.renews-keypoints { margin: 20px 0; padding: 18px 20px; border: 1px solid #c8e6de; border-radius: 8px; background: var(--rn-teal-tint); }
.renews-keypoints__title { margin: 0 0 8px; font-size: 17px; border: 0; padding: 0; }
.renews-keypoints ul { margin: 0; padding-left: 1.3em; line-height: 1.9; }
.renews-keypoints__target { margin: 10px 0 0; font-size: 14px; }

/* ---------- 閲覧ツール ---------- */
.renews-reader-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 14px 0; font-size: 13px; }
.renews-reader-tools[hidden] { display: none; }
.renews-reader-tools__label { font-weight: 700; color: var(--rn-muted); margin-right: 4px; }
.renews-reader-tools button { min-height: 44px; min-width: 44px; padding: 0 12px; border: 1px solid var(--rn-edge); border-radius: 6px; background: var(--rn-paper); color: var(--rn-text); font: inherit; cursor: pointer; }
.renews-reader-tools button:hover { border-color: var(--rn-teal); color: var(--rn-teal-text); }
.renews-reader-tools__feedback { flex-basis: 100%; color: var(--rn-teal-text); min-height: 1em; }
.renews-readable { font-size: calc(1em * var(--renews-font-scale, 1)); }

/* ---------- 目次 ---------- */
.renews-toc { font-size: 14px; }
.renews-toc ol { margin: 0; padding-left: 1.4em; line-height: 1.7; }
.renews-toc li { margin: 6px 0; }
.renews-toc a { color: var(--rn-text); }
.renews-toc a:hover { color: var(--rn-teal-text); }
.renews-toc__item--h3 { margin-left: 1em; list-style: circle; font-size: 13px; }
.renews-toc--aside { padding: 18px; border: 1px solid var(--rn-edge); border-radius: 8px; background: var(--rn-paper); }
.renews-toc__kicker { margin: 0; font-size: 11px; letter-spacing: .12em; font-weight: 800; color: var(--rn-teal-text); }
.renews-toc__title { margin: 2px 0 10px; font-weight: 800; color: var(--rn-slate); }
.renews-toc--mobile { margin: 16px 0; border: 1px solid var(--rn-edge); border-radius: 8px; background: var(--rn-paper); }
.renews-toc--mobile summary { padding: 12px 16px; min-height: 44px; cursor: pointer; font-weight: 700; color: var(--rn-slate); }
.renews-toc--mobile ol { padding: 0 16px 12px 2.2em; }

/* ---------- 出典・訂正 ---------- */
.renews-sources, .renews-corrections { margin: 32px 0 0; padding: 18px 20px; border: 1px solid var(--rn-edge); border-radius: 8px; background: #f3f6f7; font-size: 14px; }
.renews-sources__heading, .renews-corrections__heading { margin: 0 0 10px; font-size: 17px; border: 0; padding: 0; }
.renews-sources ul, .renews-corrections ol { margin: 0; padding-left: 1.3em; display: grid; gap: 10px; }
.renews-sources__title { display: block; font-weight: 700; }
.renews-sources__detail, .renews-corrections__reason { display: block; color: var(--rn-muted); font-size: 13px; }
.renews-sources__note { margin: 12px 0 0; font-size: 12px; color: var(--rn-muted); }
.renews-corrections__item--major { color: var(--rn-red); }

/* ---------- 関連記事 ---------- */
.renews-related__heading { margin: 2px 0 16px; }
.renews-kicker { margin: 0; font-size: 11px; letter-spacing: .12em; font-weight: 800; color: var(--rn-teal-text); }
.renews-related__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.renews-related__item a { display: flex; flex-direction: column; height: 100%; overflow: hidden; border: 1px solid var(--rn-edge); border-radius: 9px; background: var(--rn-paper); color: inherit; text-decoration: none; }
.renews-related__item a:hover .renews-related__title { color: var(--rn-teal-text); }
.renews-related__image { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.renews-related__body { display: grid; gap: 6px; padding: 14px 16px 16px; }
.renews-related__reason { justify-self: start; font-size: 12px; font-weight: 700; color: var(--rn-teal-text); background: var(--rn-teal-tint); border-radius: 4px; padding: 1px 8px; }
.renews-related__title { font-weight: 800; color: var(--rn-slate); line-height: 1.5; }
.renews-related__date { font-size: 12px; color: var(--rn-muted); }
@media (max-width: 781px) {
	.renews-related__list { grid-template-columns: 1fr; }
	.renews-related__item a { flex-direction: row; }
	.renews-related__image { width: 36%; flex: 0 0 36%; aspect-ratio: 4 / 3; }
}

/* ---------- 検索・絞り込み ---------- */
.renews-search-form { display: grid; gap: 12px; padding: 16px; border: 1px solid var(--rn-edge); border-radius: 8px; background: var(--rn-paper); }
.renews-search-form label { display: block; margin-bottom: 4px; font-size: 13px; font-weight: 700; color: var(--rn-slate); }
.renews-search-form input, .renews-search-form select { width: 100%; min-height: 44px; padding: 8px 10px; border: 1px solid #c3d3d9; border-radius: 6px; background: var(--rn-paper); color: var(--rn-text); font: inherit; font-size: 15px; }
.renews-search-form__filters { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.renews-button, .renews-search-form button { justify-self: start; min-height: 44px; padding: 0 22px; border: 0; border-radius: 6px; background: var(--rn-teal-text); color: #fff; font: inherit; font-weight: 700; cursor: pointer; }
.renews-button:hover, .renews-search-form button:hover { background: var(--rn-slate); }
.renews-filter-summary { margin: 16px 0; }
.renews-filter-summary__count { margin: 0 0 8px; font-size: 15px; }
.renews-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.renews-chips > li { flex: 0 0 auto; }
.renews-chip { display: inline-flex; align-items: center; min-height: 36px; white-space: nowrap; padding: 4px 14px; border: 1px solid var(--rn-edge); border-radius: 999px; background: var(--rn-paper); color: #34596a; font-size: 13px; font-weight: 700; text-decoration: none; }
.renews-chip:hover, .renews-chip[aria-current] { border-color: #a9dad2; background: var(--rn-teal-tint); color: var(--rn-teal-text); }
.renews-chip--remove::after { content: "×"; margin-left: 8px; font-weight: 400; }
.renews-filter-summary__clear { display: inline-block; margin-top: 8px; font-size: 13px; }
.renews-no-results { padding: 20px; border: 1px solid var(--rn-edge); border-radius: 8px; background: var(--rn-paper); }
.renews-no-results__title { margin-top: 0; font-weight: 800; color: var(--rn-slate); }

/* ---------- 分野カード ---------- */
.renews-category-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.renews-category-card { display: block; height: 100%; padding: 14px 16px; border: 1px solid #dce8e9; border-radius: 8px; background: var(--rn-paper); color: inherit; text-decoration: none; }
a.renews-category-card:hover { border-color: var(--rn-mint); background: #f2fbf8; }
.renews-category-card__name { display: block; color: var(--rn-slate); }
a.renews-category-card .renews-category-card__name::after { content: " →"; color: var(--rn-teal-text); }
.renews-category-card__desc, .renews-category-card__note { display: block; font-size: 13px; color: var(--rn-muted); line-height: 1.6; }
.renews-category-card--empty { background: #f7f9fa; }
@media (max-width: 599px) { .renews-category-cards { grid-template-columns: 1fr; } }

/* ---------- 広告 ---------- */
.renews-ad { display: flex; flex-direction: column; align-items: center; gap: 6px; margin: 28px auto; max-width: 100%; }
.renews-ad__label { font-size: 11px; letter-spacing: .12em; color: var(--rn-muted); font-weight: 700; }
.renews-ad__box { width: min(var(--renews-ad-w), 100%); min-height: var(--renews-ad-h); display: flex; align-items: center; justify-content: center; overflow: hidden; }
@media (max-width: 781px) {
	.renews-ad__box { width: min(var(--renews-ad-mw), 100%); min-height: var(--renews-ad-mh); }
	.renews-ad--desktop-only { display: none; }
}

/* ---------- 本文中の表示部品（bridge が保存する HTML スナップショット） ---------- */
.renews-part { margin: 24px 0; }
.renews-part__title { margin: 0 0 10px; font-size: 16px; font-weight: 800; color: var(--rn-slate); }
.renews-part__note { margin: 8px 0 0; font-size: 12px; color: var(--rn-muted); }
.renews-part__source { display: block; margin-top: 6px; font-size: 12px; color: var(--rn-muted); }

/* 表（比較表・適用条件・影響・地域別・数値表・グラフ代替）：表の中だけ横スクロール */
.renews-part--comparison-table, .renews-part--eligibility-matrix, .renews-part--impact-matrix,
.renews-part--regional-breakdown, .renews-part--data-chart .renews-part__table, .renews-part--calculation-case .renews-part__table {
	max-width: 100%; overflow-x: auto; border: 1px solid var(--rn-edge); border-radius: 6px; background: var(--rn-paper);
}
.renews-part table { width: 100%; min-width: 520px; border-collapse: collapse; font-size: 14px; }
.renews-part caption { caption-side: top; text-align: left; padding: 10px 12px 6px; font-weight: 800; color: var(--rn-slate); }
.renews-part th, .renews-part td { border: 1px solid var(--rn-edge); padding: 10px 12px; vertical-align: top; text-align: left; }
.renews-part thead th { background: var(--rn-slate); color: #fff; }
.renews-part tbody th { background: #f5f8f9; }
.renews-part [role="region"]:focus-visible, .renews-part[role="region"]:focus-visible { outline: 3px solid var(--rn-gold); outline-offset: 2px; }

/* カード系（事実・期限・数値） */
.renews-part--fact-card, .renews-part--deadline-card, .renews-part--case-facts, .renews-part--issue-outcome {
	padding: 16px 18px; border: 1px solid var(--rn-edge); border-radius: 8px; background: var(--rn-paper);
}
.renews-part--deadline-card { border-left: 4px solid var(--rn-gold); }
.renews-part--metric-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.renews-part--metric-cards .renews-metric { padding: 14px; border: 1px solid var(--rn-edge); border-radius: 8px; background: var(--rn-paper); }
.renews-metric__label { display: block; font-size: 12px; color: var(--rn-muted); }
.renews-metric__value { display: block; font-size: 22px; font-weight: 800; color: var(--rn-slate); }

/* 時系列・手順 */
.renews-part--status-timeline ol, .renews-part--process-steps ol { margin: 0; padding: 0; list-style: none; border-left: 3px solid var(--rn-edge); }
.renews-part--status-timeline li, .renews-part--process-steps li { position: relative; margin: 0 0 14px; padding-left: 18px; }
.renews-part--status-timeline li::before, .renews-part--process-steps li::before { content: ""; position: absolute; left: -8px; top: .55em; width: 13px; height: 13px; border-radius: 50%; background: var(--rn-paper); border: 3px solid var(--rn-teal); }
.renews-part--status-timeline time { display: block; font-weight: 800; color: var(--rn-slate); }
.renews-part--process-steps { counter-reset: renews-step; }
.renews-part--process-steps li { counter-increment: renews-step; }
.renews-part--process-steps li > strong:first-child::before { content: counter(renews-step) ". "; }

/* チェックリスト */
.renews-part--action-checklist ul, .renews-part--document-checklist ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.renews-part--action-checklist li, .renews-part--document-checklist li { position: relative; padding: 10px 12px 10px 38px; border: 1px solid var(--rn-edge); border-radius: 6px; background: var(--rn-paper); }
.renews-part--action-checklist li::before, .renews-part--document-checklist li::before { content: "✓"; position: absolute; left: 12px; top: 10px; color: var(--rn-teal-text); font-weight: 800; }

/* 状態・注意・用語 */
.renews-part--status-banner { padding: 12px 14px; border-left: 4px solid var(--rn-gold); border-radius: 6px; background: var(--rn-gold-tint); }
.renews-part--glossary dl { margin: 0; display: grid; gap: 10px; }
.renews-part--glossary dt { font-weight: 800; color: var(--rn-slate); }
.renews-part--glossary dd { margin: 0 0 0 1em; }
.renews-part--key-points { padding: 18px 20px; border: 1px solid #c8e6de; border-radius: 8px; background: var(--rn-teal-tint); }
.renews-part--source-panel, .renews-part--correction-history { padding: 18px 20px; border: 1px solid var(--rn-edge); border-radius: 8px; background: #f3f6f7; font-size: 14px; }
.renews-part--editorial-view { padding: 14px 16px; border: 1px dashed #9db3bd; border-radius: 6px; }
.renews-part--editorial-view::before { content: "編集部の見解"; display: inline-block; margin-bottom: 6px; padding: 0 8px; border-radius: 4px; background: #edf1f4; font-size: 12px; font-weight: 800; color: #3d5666; }
.renews-part--visual-placeholder { display: none; } /* 編集専用。公開ページには出さない（デザイン v1.0 §4） */

/* ---------- 印刷 ---------- */
@media print {
	.renews-ad, .renews-reader-tools, .renews-toc--aside, .renews-business-nav, .renews-search-form, .renews-related { display: none !important; }
	.renews-part table { min-width: 0; }
	.renews-part--comparison-table, .renews-part--eligibility-matrix, .renews-part--impact-matrix, .renews-part--regional-breakdown { overflow: visible; }
	.renews-sources a::after { content: " (" attr(href) ")"; font-size: 11px; word-break: break-all; }
}

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