/*
 * 问道核电可行性 · 样式
 * 颜色取主题调色板（问道学科主题的 base / contrast / accent-1…6、cinnabar、ochre），夜读时主题改写这些变量，
 * 这里自动跟着变；用于其他主题时取括号里的默认值。五要素另有一套五行色，夜读时提亮。
 */
.rnf {
	--rnf-bg: var(--wp--preset--color--base, #fbfaf6);
	--rnf-fg: var(--wp--preset--color--contrast, #1c2421);
	--rnf-soft: var(--wp--preset--color--accent-5, #f2f0e8);
	--rnf-tint: var(--wp--preset--color--accent-1, #ddebe7);
	--rnf-warm: var(--wp--preset--color--accent-2, #f4e7d7);
	--rnf-accent: var(--wp--preset--color--accent-3, #2b5f66);
	--rnf-muted: var(--wp--preset--color--accent-4, #5d6964);
	--rnf-line: color-mix(in srgb, currentColor 16%, transparent);
	--rnf-bad: var(--wp--preset--color--cinnabar, #a8392b);
	--rnf-warn: var(--wp--preset--color--ochre, #9a7630);
	--rnf-good: #3e7a4b;
	--rnf-metal: #8a7f5c;
	--rnf-water: #2f5d8a;
	--rnf-wood: #3e7a4b;
	--rnf-fire: #b0412e;
	--rnf-earth: #a57a2a;
	color: var(--rnf-fg);
	font-variant-numeric: tabular-nums;
	margin-block: 1.5em;
	container-type: inline-size;
}
:root[data-rd-scheme="night"] .rnf,
.rnf-dark .rnf {
	--rnf-good: #8cc79a;
	--rnf-metal: #cfc39b;
	--rnf-water: #8db8e3;
	--rnf-wood: #8cc79a;
	--rnf-fire: #ec8f7c;
	--rnf-earth: #ddb46a;
	--rnf-bad: #ec8f7c;
	--rnf-warn: #ddb46a;
}
@media (prefers-color-scheme: dark) {
	:root[data-rd-scheme="auto"] .rnf {
		--rnf-good: #8cc79a;
		--rnf-metal: #cfc39b;
		--rnf-water: #8db8e3;
		--rnf-wood: #8cc79a;
		--rnf-fire: #ec8f7c;
		--rnf-earth: #ddb46a;
		--rnf-bad: #ec8f7c;
		--rnf-warn: #ddb46a;
	}
}

.rnf *, .rnf *::before, .rnf *::after { box-sizing: border-box; }
.rnf-title { margin: 0 0 .5em; font-size: 1.25em; }
.rnf-title a { color: inherit; text-decoration: none; }
.rnf-title a:hover { text-decoration: underline; }
.rnf-lead { color: var(--rnf-muted); margin: 0 0 1em; }
.rnf-note, .rnf-foot { color: var(--rnf-muted); font-size: .875em; line-height: 1.6; }
.rnf-foot { margin-top: 1.25em; border-top: 1px solid var(--rnf-line); padding-top: .75em; }
.rnf-grade { color: var(--rnf-accent); white-space: nowrap; }
.rnf-empty { padding: 1em; border: 1px dashed var(--rnf-line); color: var(--rnf-muted); }
.rnf-stale { padding: .6em .9em; border-left: 3px solid var(--rnf-warn); background: var(--rnf-warm); font-size: .9em; }
.rnf-scroll { overflow-x: auto; max-width: 100%; }

/* 项目信息 */
.rnf-info { display: grid; grid-template-columns: max-content 1fr; gap: .3em 1em; margin: 0 0 1.25em; font-size: .95em; }
.rnf-info__row { display: contents; }
.rnf-info dt { color: var(--rnf-muted); }
.rnf-info dd { margin: 0; }

/* 判定 */
.rnf-verdict { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25em 1em; padding: .9em 1.1em; margin: 0 0 1.25em; border-left: 4px solid var(--rnf-accent); background: var(--rnf-soft); }
.rnf-verdict__label { font-size: .85em; color: var(--rnf-muted); }
.rnf-verdict__value { font-size: 1.35em; }
.rnf-verdict__desc { flex-basis: 100%; font-size: .9em; color: var(--rnf-muted); }
.rnf-verdict--in { border-color: var(--rnf-good); }
.rnf-verdict--in .rnf-verdict__value { color: var(--rnf-good); }
.rnf-verdict--edge { border-color: var(--rnf-warn); }
.rnf-verdict--edge .rnf-verdict__value { color: var(--rnf-warn); }
.rnf-verdict--fixable, .rnf-verdict--out { border-color: var(--rnf-bad); }
.rnf-verdict--fixable .rnf-verdict__value, .rnf-verdict--out .rnf-verdict__value { color: var(--rnf-bad); }

.rnf-badge { display: inline-block; padding: .05em .55em; border-radius: 1em; font-size: .85em; white-space: nowrap; border: 1px solid currentColor; }
.rnf-badge--in { color: var(--rnf-good); }
.rnf-badge--edge { color: var(--rnf-warn); }
.rnf-badge--fixable, .rnf-badge--out { color: var(--rnf-bad); }
.rnf-badge--out { background: color-mix(in srgb, var(--rnf-bad) 10%, transparent); }

/* 版式 */
.rnf-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25em; margin-bottom: 1.25em; align-items: start; }
/* 按区块自身宽度分栏（文章栏里一栏，宽版或全宽时两栏） */
@container (min-width: 900px) {
	.rnf-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); }
	.rnf-grid:has(> .rnf-grid__side .rnf-ring-figure) { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }
}
@container (min-width: 620px) {
	.rnf-ring .rnf-grid { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
}

/* 表 */
.rnf-table { width: 100%; border-collapse: collapse; font-size: .92em; margin: 0 0 1em; }
.rnf-table caption { text-align: left; font-weight: 600; padding-bottom: .4em; }
.rnf-table th, .rnf-table td { padding: .38em .6em; border-bottom: 1px solid var(--rnf-line); text-align: left; vertical-align: top; }
.rnf-table thead th { font-weight: 600; color: var(--rnf-muted); font-size: .9em; border-bottom-width: 2px; }
.rnf-table tbody th { font-weight: 500; }
.rnf-numbers td { text-align: right; white-space: nowrap; }
.rnf-numbers th, .rnf-ring-table tbody th, .rnf-compare-table tbody th { white-space: nowrap; }
.rnf-compare-table tbody th { white-space: normal; min-width: 11em; }
.rnf-compare-table td { white-space: nowrap; }
.rnf-cf td { position: relative; min-width: 5em; }
.rnf-cf__bar { display: block; height: 4px; width: calc(var(--rnf-v, 0) * 100%); background: var(--rnf-accent); border-radius: 2px; margin-bottom: .25em; }

.rnf-boundary-list { list-style: none; padding: 0; margin: 0 0 1em; font-size: .88em; }
.rnf-boundary { display: flex; justify-content: space-between; gap: 1em; padding: .25em 0; border-bottom: 1px dotted var(--rnf-line); }
.rnf-boundary b { font-weight: 600; color: var(--rnf-good); }
.rnf-boundary.is-out b { color: var(--rnf-bad); }
.rnf-line { margin: .35em 0; font-size: .92em; }
.rnf-line > span:first-child { color: var(--rnf-muted); }

/* 终局分布 */
.rnf-stackwrap { margin: .75em 0; }
.rnf-stack { display: flex; height: 12px; border-radius: 3px; overflow: hidden; background: var(--rnf-soft); }
.rnf-stack__seg { display: block; height: 100%; }
.rnf-stack__legend { list-style: none; padding: 0; margin: .4em 0 0; display: flex; flex-wrap: wrap; gap: .2em 1em; font-size: .82em; color: var(--rnf-muted); }
.rnf-stack__legend i { display: inline-block; width: .8em; height: .8em; border-radius: 2px; margin-right: .3em; vertical-align: -.05em; }
.rnf-fate--steady { background: var(--rnf-good); }
.rnf-fate--bankrupt_build { background: var(--rnf-bad); }
.rnf-fate--bankrupt_op { background: var(--rnf-warn); }
.rnf-fate--no_attractor, .rnf-fate--collapse { background: var(--rnf-muted); }
.rnf-fate--oscillate, .rnf-fate--runaway { background: var(--rnf-water); }

/* 设计目标 */
.rnf-targets h4 { margin: 1.5em 0 .6em; font-size: 1.05em; }
.rnf-target-list { list-style: none; padding: 0; margin: 0; display: grid; gap: .75em; }
.rnf-target { display: grid; grid-template-columns: 4.5em 1fr; gap: .75em; padding: .75em .9em; background: var(--rnf-soft); border-radius: 4px; }
.rnf-target__no { color: var(--rnf-accent); font-weight: 600; }
.rnf-target p { margin: .3em 0 0; font-size: .92em; line-height: 1.6; }
.rnf-target__why { color: var(--rnf-muted); font-size: .85em !important; }

/* 图 */
.rnf-figure { margin: 0 0 1em; }
.rnf-figure svg { display: block; width: 100%; height: auto; font-family: inherit; }
.rnf-figure figcaption { font-size: .82em; color: var(--rnf-muted); margin-top: .4em; line-height: 1.5; }
.rnf-bounds__svg { min-width: 520px; }
.rnf-compare .rnf-bounds__svg { min-width: 720px; }
.rnf-margins__svg { min-width: 460px; }
.rnf-axis__grid { stroke: var(--rnf-line); stroke-width: 1; }
.rnf-axis__zero { stroke: var(--rnf-fg); stroke-width: 1; opacity: .5; }
.rnf-axis__sep { stroke: var(--rnf-line); stroke-dasharray: 3 3; }
.rnf-axis__tick { font-size: 10px; fill: var(--rnf-muted); }
.rnf-axis__title { font-size: 11px; fill: var(--rnf-muted); font-weight: 600; }
.rnf-axis__label { font-size: 11px; fill: var(--rnf-fg); }
a .rnf-axis__label:hover { text-decoration: underline; }
.rnf-bar { fill: color-mix(in srgb, var(--rnf-accent) 45%, transparent); }
.rnf-bar.is-out { fill: color-mix(in srgb, var(--rnf-bad) 45%, transparent); }
.rnf-bar__mid { stroke: var(--rnf-fg); stroke-width: 2; }
.rnf-mark--ign { fill: var(--rnf-warn); }
.rnf-mark--max { stroke: var(--rnf-fg); stroke-width: 2; }
.rnf-cap { fill: color-mix(in srgb, var(--rnf-good) 22%, transparent); }
.rnf-over { stroke: var(--rnf-accent); stroke-width: 3; stroke-linecap: round; }
.rnf-over.is-out { stroke: var(--rnf-bad); }
.rnf-over__mid { fill: var(--rnf-bg); stroke: var(--rnf-fg); stroke-width: 2; }
.rnf-mbar { fill: var(--rnf-accent); opacity: .8; }
.rnf-mbar.is-near { fill: var(--rnf-warn); }
.rnf-mbar.is-out { fill: var(--rnf-bad); }

/* 生克环 */
.rnf-ring-figure { max-width: 420px; margin-inline: auto; }
.rnf-ring__sheng { fill: none; stroke: var(--rnf-fg); stroke-width: 2.2; opacity: .75; }
.rnf-ring__ke { stroke: var(--rnf-muted); stroke-width: 1.4; stroke-dasharray: 5 4; opacity: .8; }
.rnf-ring__sheng.is-weak, .rnf-ring__ke.is-weak { stroke: var(--rnf-bad); opacity: 1; }
.rnf-ring__sheng.is-strong, .rnf-ring__ke.is-strong { stroke: var(--rnf-good); opacity: 1; }
.rnf-ring__sheng.is-first, .rnf-ring__ke.is-first { stroke-width: 4.5; }
.rnf-ring__head { fill: var(--rnf-fg); opacity: .75; }
.rnf-ring__head--ke { fill: var(--rnf-muted); }
.rnf-ring__val { font-size: 11px; fill: var(--rnf-fg); font-weight: 600; }
.rnf-ring__val--ke { font-size: 10px; font-weight: 500; fill: var(--rnf-muted); paint-order: stroke; stroke: var(--rnf-bg); stroke-width: 3px; }
.rnf-ring__val.is-weak { fill: var(--rnf-bad); }
.rnf-ring__val.is-strong { fill: var(--rnf-good); }
.rnf-ring__node circle { fill: var(--rnf-bg); stroke-width: 2.5; }
.rnf-ring__name { font-size: 12px; font-weight: 600; fill: var(--rnf-fg); }
.rnf-ring__phase { font-size: 11px; }
.rnf-ring__node--metal circle { stroke: var(--rnf-metal); } .rnf-ring__node--metal .rnf-ring__phase { fill: var(--rnf-metal); }
.rnf-ring__node--water circle { stroke: var(--rnf-water); } .rnf-ring__node--water .rnf-ring__phase { fill: var(--rnf-water); }
.rnf-ring__node--wood circle { stroke: var(--rnf-wood); } .rnf-ring__node--wood .rnf-ring__phase { fill: var(--rnf-wood); }
.rnf-ring__node--fire circle { stroke: var(--rnf-fire); } .rnf-ring__node--fire .rnf-ring__phase { fill: var(--rnf-fire); }
.rnf-ring__node--earth circle { stroke: var(--rnf-earth); } .rnf-ring__node--earth .rnf-ring__phase { fill: var(--rnf-earth); }
.rnf-elements { list-style: none; padding: 0; margin: 0 0 1em; display: grid; gap: .4em; font-size: .93em; }
.rnf-el { padding-left: .8em; border-left: 3px solid var(--rnf-line); }
.rnf-el--0 { border-color: var(--rnf-metal); } .rnf-el--1 { border-color: var(--rnf-water); } .rnf-el--2 { border-color: var(--rnf-wood); }
.rnf-el--3 { border-color: var(--rnf-fire); } .rnf-el--4 { border-color: var(--rnf-earth); }

/* 表单与按钮 */
.rnf-tools-bar { display: flex; flex-wrap: wrap; gap: .5em; margin: .5em 0 1em; }
.rnf-btn { font: inherit; font-size: .9em; padding: .4em 1em; border: 1px solid var(--rnf-line); border-radius: 4px; background: transparent; color: inherit; cursor: pointer; }
.rnf-btn:hover { border-color: var(--rnf-accent); color: var(--rnf-accent); }
.rnf-btn:disabled { opacity: .5; cursor: progress; }
.rnf-btn--primary { background: var(--rnf-accent); border-color: var(--rnf-accent); color: var(--rnf-bg); }
.rnf-btn--primary:hover { color: var(--rnf-bg); filter: brightness(1.1); }
.rnf-try { padding: 1em; margin: 0 0 1.25em; background: var(--rnf-soft); border-radius: 6px; }
.rnf-form { margin: 0 0 1em; }
.rnf-presets { display: grid; grid-template-columns: repeat(auto-fit, minmax(14em, 1fr)); gap: .75em; margin-bottom: 1em; }
.rnf-fieldset { border: 1px solid var(--rnf-line); border-radius: 6px; padding: .75em 1em 1em; margin: 0 0 1em; }
.rnf-fieldset legend { padding: 0 .4em; font-weight: 600; font-size: .92em; }
.rnf-fields { display: grid; grid-template-columns: repeat(auto-fit, minmax(16em, 1fr)); gap: .75em 1.25em; }
.rnf-field { display: flex; flex-direction: column; gap: .25em; font-size: .9em; }
.rnf-field--wide { grid-column: 1 / -1; }
.rnf-field__label { color: var(--rnf-muted); }
.rnf .rnf-select, .rnf-admin .rnf-select { font: inherit; padding: .35em .5em; border: 1px solid var(--rnf-line); border-radius: 4px; background: var(--rnf-bg); color: inherit; max-width: 100%; }
.rnf .rnf-num, .rnf-admin .rnf-num { font: inherit; width: 5.2em; padding: .3em .4em; border: 1px solid var(--rnf-line); border-radius: 4px; background: var(--rnf-bg); color: inherit; }
.rnf-range { display: flex; flex-wrap: wrap; align-items: center; gap: .3em; }
.rnf-range__sep { color: var(--rnf-muted); }
.rnf-x0 { display: inline-flex; flex-direction: column; font-size: .85em; margin-right: .4em; }
.rnf-advanced { margin: 0 0 1em; }
.rnf-advanced summary { cursor: pointer; font-weight: 600; font-size: .92em; margin-bottom: .5em; }
.rnf-mtable td { padding: .2em .3em; }
.rnf-mtable th { font-size: .9em; }
.rnf-runbar { display: flex; flex-wrap: wrap; align-items: end; gap: .75em 1em; margin: 0 0 1em; }
.rnf-runbar__btns { display: flex; gap: .5em; }
.rnf-progress { flex: 1 1 16em; display: flex; flex-direction: column; gap: .25em; font-size: .85em; color: var(--rnf-muted); }
.rnf-progress[hidden] { display: none; }
.rnf-progress__track { display: block; height: 6px; background: var(--rnf-soft); border-radius: 3px; overflow: hidden; }
.rnf-progress__bar { display: block; height: 100%; width: 0; background: var(--rnf-accent); transition: width .2s; }
.rnf-result.is-stale { opacity: .55; }
.rnf-source { font-size: .88em; color: var(--rnf-muted); }

/* 后台 */
.rnf-admin { container-type: inline-size; --rnf-bg: #fff; --rnf-fg: #1d2327; --rnf-soft: #f6f7f7; --rnf-tint: #f0f6fc; --rnf-warm: #fcf9e8; --rnf-accent: #2271b1; --rnf-muted: #50575e; --rnf-line: #dcdcde; --rnf-bad: #b32d2e; --rnf-warn: #996800; --rnf-good: #00a32a; --rnf-metal: #8a7f5c; --rnf-water: #2f5d8a; --rnf-wood: #3e7a4b; --rnf-fire: #b0412e; --rnf-earth: #a57a2a; }
.rnf-admin .rnf-table { font-size: 13px; }
.rnf-card { max-width: 860px; }
.rnf-card--wide { max-width: 1100px; }
.rnf-batch { margin: .5em 0 1em; }
.rnf-seed-log { margin-top: .75em; }
.rnf-diag { background: #f6f7f7; padding: .6em .8em; font-size: 12px; line-height: 1.5; white-space: pre-wrap; max-height: 28em; overflow: auto; }
.rnf-seed-list { margin: .5em 0; }
.rnf-seed-list .is-error { color: #b32d2e; }
.rnf-batch td:first-child { width: 2em; }

@media print {
	.rnf-tools-bar, .rnf-try, .rnf-form, .rnf-runbar { display: none !important; }
	.rnf-result.is-stale { opacity: 1; }
	.rnf-target { break-inside: avoid; }
}
