:root {
	--bg: #0b1014;
	--panel: #151b20;
	--panel2: #1b2329;
	--line: #29323a;
	--card-head: #443e38;
	--card-body: #0f1418;
	--text: #b6bfc6;
	--muted: #737e87;
	--accent: #4fb3a8;
	--accent2: #e0a458;
	--danger: #d4695f;
	--radius: .5rem;
}

* { box-sizing: border-box; }

html {
	/*Корень задаёт масштаб интерфейса: 13px * масштаб (1…3).*/
	font-size: 39px;
}

html, body {
	margin: 0;
	height: 100%;
	background: var(--bg);
	color: var(--text);
	font: 1rem/1.45 "Segoe UI", "Inter", system-ui, sans-serif;
}

body { display: flex; flex-direction: column; }

header {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: .45rem;
	padding: .5rem .8rem;
	min-height: 3.4rem;
	background: var(--panel);
	border-bottom: 1px solid var(--line);
	flex: 0 0 auto;
}

.brand { font-size: 1.2rem; font-weight: 600; letter-spacing: .3px; margin-right: .3rem; }
.brand span { color: var(--accent); }

.spacer { flex: 1; }
.header-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .45rem; }
.header-icon { display: inline-flex; align-items: center; justify-content: center; width: 2.2rem; height: 2.2rem; padding: 0; }
.header-icon svg { width: 1.15rem; height: 1.15rem; display: block; }

button, select, input, textarea {
	font: inherit;
	color: var(--text);
	background: var(--panel2);
	border: 1px solid var(--line);
	border-radius: .4rem;
	padding: .35rem .65rem;
	outline: none;
}

button { cursor: pointer; }
button:hover { border-color: #3b4b5e; background: #202a36; }
button:disabled { opacity: .45; cursor: default; }
button.primary,
button.action-accent {
	background: rgba(148, 180, 205, .14);
	border-color: rgba(148, 180, 205, .46);
	color: #d7e8f5;
	font-weight: 600;
	box-shadow: none;
}
button.primary:hover,
button.action-accent:hover {
	background: rgba(148, 180, 205, .23);
	border-color: rgba(180, 211, 233, .75);
	color: #eef8ff;
}
button.action-accent:active { background: rgba(148, 180, 205, .3); }
button.danger { border-color: #6a3733; color: #f0b8b3; }

input:focus, select:focus, textarea:focus { border-color: var(--accent); }

#dirty { color: var(--accent2); visibility: hidden; font-size: 1.2rem; }
#dirty.on { visibility: visible; }

.muted { color: var(--muted); font-size: .85rem; }

main { flex: 1 1 auto; display: flex; min-height: 0; }

aside {
	width: clamp(260px, 22rem, 430px);
	flex: 0 0 auto;
	background: var(--panel);
	border-right: 1px solid var(--line);
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.aside-bar { display: flex; flex-wrap: wrap; gap: .4rem; padding: .5rem; border-bottom: 1px solid var(--line); }
.aside-bar button { flex: 1 1 auto; font-size: .85rem; white-space: nowrap; }

#tree { overflow: auto; padding: .4rem; }

.node {
	padding: .25rem .4rem;
	border-radius: .35rem;
	cursor: pointer;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.node:hover { background: #1e2833; }
.node.sel { background: #234047; }
.node .tag { color: var(--muted); font-size: .8rem; margin-left: .4rem; }

.group { margin-top: .7rem; }
.group > .head {
	font-size: .8rem;
	text-transform: uppercase;
	letter-spacing: .5px;
	color: var(--muted);
	padding: .3rem .4rem;
}

.child { padding-left: 1.2rem; }
.child2 { padding-left: 2.2rem; }

#work { flex: 1 1 auto; display: flex; flex-direction: column; min-width: 0; min-height: 0; }

.tabs { display: flex; gap: .15rem; padding: .5rem .8rem 0; border-bottom: 1px solid var(--line); flex-wrap: wrap; flex: 0 0 auto; }
.tabs button {
	border: 1px solid transparent;
	border-bottom: none;
	background: transparent;
	border-radius: .4rem .4rem 0 0;
	padding: .4rem .9rem;
	color: var(--muted);
}
.tabs button.active { background: var(--panel); border-color: var(--line); color: var(--text); }

.tab { padding: .8rem; overflow: auto; flex: 1 1 auto; min-height: 0; }
.hidden { display: none !important; }

.toolbar { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; margin-bottom: .5rem; }
.toolbar h3 { margin: 0; font-size: .95rem; }

.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: .8rem; }

.panel {
	background: var(--panel);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	padding: .8rem;
	margin-bottom: .8rem;
}

.panel h3 { margin: 0 0 .6rem; font-size: .85rem; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); }

.fields { display: grid; grid-template-columns: minmax(7rem, 10rem) minmax(0, 1fr); gap: .45rem .7rem; align-items: center; margin-bottom: .8rem; }
.fields.two { grid-template-columns: minmax(9rem, 12rem) minmax(0, 1fr) minmax(9rem, 12rem) minmax(0, 1fr); }
.fields label { color: var(--muted); font-size: .85rem; }
.fields input, .fields select { width: 100%; min-width: 0; }
.fields textarea { min-width: 0; }
.fields input[type="checkbox"] { width: auto; }
.fields .wide { grid-column: 2; display: flex; gap: .4rem; align-items: center; }
.fields .wide select { flex: 1 1 auto; min-width: 8rem; }

/* Узкая правая панель: эталон и кнопки — столбиком, без горизонтального выноса. */
.fields .wide.ref-stack { flex-direction: column; align-items: stretch; gap: .35rem; }
.fields .wide.ref-stack select { min-width: 0; width: 100%; }
.fields .wide.ref-stack button { width: 100%; }

/* Форма «Модель»: поля без подписей, друг под другом. */
.model-left-about { display: flex; flex-direction: column; gap: .45rem; }
.model-left-label { color: var(--muted); font-size: .75rem; margin-top: .2rem; }
.model-left-save { flex-wrap: wrap; margin: 0; }
.model-left-save button { flex: 1 1 auto; padding: .3rem .4rem; font-size: .82rem; }
.model-left-versions h4 { margin: .3rem 0; font-size: .8rem; color: var(--muted); }
.model-left-versions { display: flex; flex-direction: column; gap: .3rem; }
.version-item { border: 1px solid var(--line); border-radius: var(--radius); padding: .35rem .45rem; display: grid; grid-template-columns: 1fr auto; gap: .15rem .4rem; align-items: center; }
.version-head { display: flex; gap: .4rem; align-items: baseline; min-width: 0; }
.version-head b { font-size: .8rem; }
.version-head span { color: var(--muted); font-size: .7rem; }
.version-comment { grid-column: 1 / -1; color: var(--muted); font-size: .72rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.version-item button { padding: .15rem .35rem; font-size: .72rem; }
.model-overview-desc { white-space: pre-wrap; color: var(--text); }
.model-about-form { display: grid; gap: .5rem; margin-bottom: .8rem; }
.model-about-form input, .model-about-form textarea { width: 100%; }

/* Подписи — над полями: блок помещается в узкую панель без горизонтального выноса. */
#run-pane-initial .fields { display: block; }
#run-pane-initial .fields > label { display: block; margin: .45rem 0 .2rem; }
#run-pane-initial .fields > div { margin-bottom: .3rem; }
#run-pane-initial .fields input,
#run-pane-initial .fields select { width: 100%; }
#run-pane-initial .check { white-space: normal; }

.series-toolbar { display: flex; gap: .3rem; align-items: center; margin-bottom: .35rem; flex-wrap: wrap; }
.series-toolbar input { flex: 1 1 14rem; min-width: 8rem; }
.series-toolbar button { padding: .2rem .4rem; font-size: .72rem; }
.data-warning { border: 1px solid #b85c4e; background: rgba(184, 92, 78, .14); color: #ffb4a2; border-radius: var(--radius); padding: .35rem .45rem; font-size: .74rem; margin-bottom: .4rem; line-height: 1.35; }
.series-preview-actions { display: flex; gap: .3rem; }
.series-preview-actions button { font-size: .72rem; padding: .2rem .4rem; }
.series-norm { display: flex; align-items: center; gap: .3rem; flex-wrap: wrap; font-size: .72rem; color: var(--muted); }
.series-norm input { width: 9rem; font-size: .76rem; }
.series-norm button { font-size: .7rem; padding: .2rem .4rem; }
.series-variant-manager { display: flex; flex-direction: column; gap: .2rem; padding: .3rem .4rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel2); }
.series-variant-row { display: flex; align-items: center; gap: .3rem; font-size: .72rem; color: var(--muted); }
.series-variant-row > span { flex: 1 1 auto; }
.series-variant-row select { font-size: .7rem; padding: .1rem .2rem; }
.series-variant-row button { font-size: .66rem; padding: .1rem .25rem; }
.series-viewbar { display: flex; align-items: center; justify-content: space-between; gap: .4rem; flex-wrap: wrap; }
.series-modes, .series-zoom { display: flex; gap: .2rem; align-items: center; }
.series-modes button, .series-zoom button { font-size: .7rem; padding: .2rem .4rem; }
.series-modes button.active { border-color: var(--accent); color: var(--accent); }
.series-zoom button { min-width: 1.8rem; }
.series-legend { display: flex; flex-wrap: wrap; gap: .25rem .8rem; font-size: .72rem; color: var(--muted); margin: .1rem 0 .25rem; }
.series-legend .swatch { display: inline-block; width: .55rem; height: .55rem; border-radius: 50%; vertical-align: middle; margin-right: .25rem; }
.series-controls { display: flex; align-items: center; gap: .5rem; }
.series-controls input[type=range] { flex: 1 1 auto; }
.series-controls #series-year-label { min-width: 10rem; text-align: right; font-size: .75rem; }
#series-table tr.current td { background: var(--panel2); color: var(--text); }
#series-table tr.row-hidden td { opacity: .42; }
#series-table tr.row-selected td { background: rgba(224, 164, 88, .13); }
#series-table tr.row-focused td { background: rgba(224, 164, 88, .22); color: var(--text); }
#series-table td:first-child { width: 1.6rem; }
.chart-series-swatch { display: inline-block; width: 1.1rem; height: .22rem; margin-right: .35rem; border-radius: 1rem; background: var(--series-color); vertical-align: middle; }
.series-chart { user-select: none; }
.opt-problems { border: 1px solid #b85c4e; border-radius: var(--radius); padding: .4rem .5rem; margin-bottom: .4rem; background: rgba(184, 92, 78, .08); }
.opt-problems > summary { cursor: pointer; color: #ffb4a2; font-size: .78rem; }
.problems-head { display: flex; justify-content: space-between; color: #ffb4a2; font-size: .78rem; margin-bottom: .2rem; }
.opt-problem-row { display: grid; grid-template-columns: 1fr auto; gap: .2rem .5rem; align-items: center; padding: .25rem 0; border-top: 1px solid rgba(184,92,78,.25); }
.opt-problem-name { font-size: .78rem; color: #ffb4a2; }
.opt-problem-text { font-size: .7rem; color: var(--muted); grid-column: 1 / -1; }
.opt-problem-actions { display: flex; gap: .2rem; }
.opt-problem-actions button { font-size: .68rem; padding: .15rem .3rem; }
.series-group { margin-bottom: .5rem; }
.series-group-head { display: flex; align-items: center; gap: .3rem; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .3px; margin: .2rem 0; }
.series-group-head > span:last-child { margin-left: auto; }
.series-group .series-root { display: flex; flex-direction: column; gap: .3rem; }
.series-list { display: grid; }
.series-group > summary { cursor: pointer; }
.series-group > summary::before { content: '▸'; color: var(--accent); margin-right: .3rem; }
.series-group[open] > summary::before { content: '▾'; }
.series-list { display: flex; flex-direction: column; align-items: stretch; gap: .35rem; margin-bottom: .6rem; max-height: 38rem; overflow: auto; }
.series-hcard { border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.series-hcard.unmatched { opacity: .68; }
.series-hcard.problem { border-color: #b85c4e; }
.series-hcard.highlight { border-color: #e0a458; background: rgba(224, 164, 88, .1); }
.series-hsummary { display: flex; align-items: center; gap: .45rem; padding: .4rem .55rem; cursor: pointer; list-style: none; }
.series-hsummary::-webkit-details-marker { display: none; }
.series-hsummary::marker { content: ''; }
.series-htitle { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .88rem; }
.series-hbadges { display: flex; flex-wrap: wrap; gap: .15rem; margin-left: auto; justify-content: flex-end; }
.series-hchev { color: var(--muted); font-size: 1rem; width: 1rem; text-align: center; transition: transform .12s ease; }
.series-hcard[open] > .series-hsummary .series-hchev { transform: rotate(180deg); }
.series-hbody { display: flex; flex-direction: column; gap: .3rem; padding: .4rem .55rem .55rem; border-top: 1px solid var(--line); }
.series-subcard { border: 1px solid var(--line); border-radius: .3rem; background: var(--panel2); }
.series-subcard > summary { padding: .3rem .45rem; cursor: pointer; color: var(--muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; list-style: none; }
.series-subcard > summary::-webkit-details-marker { display: none; }
.series-subcard > summary::before { content: '▸'; color: var(--accent); margin-right: .3rem; }
.series-subcard[open] > summary::before { content: '▾'; }
.series-subbody { padding: .35rem .45rem .45rem; display: flex; flex-direction: column; gap: .3rem; }
.series-hlabel { color: var(--muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; }
.series-hrole { display: flex; flex-direction: column; gap: .2rem; }
.series-inline-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .25rem; }
.series-inline-actions button, .series-inline-actions select { font-size: .72rem; }
.series-role-card { border: 1px solid var(--line); border-radius: .3rem; padding: .3rem .4rem; display: flex; flex-direction: column; gap: .25rem; background: var(--panel); }
.series-role-card.current { border-color: var(--accent); }
.series-role-title { display: flex; justify-content: space-between; gap: .3rem; font-size: .78rem; }
.series-role-title span { color: var(--muted); font-size: .68rem; }
.series-role-actions { display: flex; flex-wrap: wrap; gap: .25rem; }
.series-role-actions button { font-size: .68rem; padding: .16rem .3rem; }
.series-variant-line { display: flex; align-items: center; justify-content: space-between; gap: .3rem; border-top: 1px solid var(--line); padding-top: .2rem; }
.series-variant-line button { font-size: .68rem; padding: .16rem .3rem; }
.series-hspark svg { max-width: none; height: 3.2rem; }

.series-card { width: fit-content; max-width: 100%; display: grid; grid-template-columns: auto 1fr; gap: .25rem .55rem; align-items: start; padding: .4rem .5rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.series-card.unmatched { opacity: .62; }
.series-card.problem { border-color: #b85c4e; }
.series-card.highlight { border-color: #e0a458; background: rgba(224, 164, 88, .12); opacity: 1; }
.series-check { align-self: start; padding-top: .25rem; }
.series-main { min-width: 0; }
.series-name { display: flex; align-items: flex-start; gap: .35rem; font-size: .88rem; line-height: 1.25; min-width: 0; }
.series-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.series-title-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .15rem; flex: 0 0 auto; }
.series-under-badges { display: flex; flex-wrap: wrap; gap: .15rem; margin-top: .2rem; }
.series-meta { color: var(--muted); font-size: .7rem; margin-top: .12rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.series-badge { display: inline-block; padding: 0 .35rem; border: 1px solid var(--line); border-radius: 1rem; color: var(--muted); font-size: .66rem; vertical-align: middle; }
.series-badge.bad { color: #ff8c7a; border-color: #b85c4e; background: rgba(184,92,78,.15); }
.series-badge.warn { color: #ffb4a2; border-color: #b85c4e; }
.series-badge.ok { color: #7fe0d3; border-color: #2f6b64; }
.series-actions { display: flex; align-items: center; gap: .2rem; flex-wrap: wrap; justify-content: flex-start; grid-column: 2; grid-row: 2; }
.series-actions button, .series-role { font-size: .68rem; padding: .16rem .3rem; }
.series-role { max-width: 7.5rem; }
.data-drop { border: 1px dashed var(--line); border-radius: var(--radius); padding: .6rem; display: flex; align-items: center; gap: .6rem; color: var(--muted); font-size: .8rem; }
.data-drop.drag { border-color: var(--accent); background: var(--panel2); }
.data-drop input { max-width: 20rem; }
.data-files { display: grid; gap: .35rem; max-height: 15rem; overflow: auto; }
.upload-row { display: grid; grid-template-columns: minmax(8rem, 1.2fr) repeat(4, minmax(5.5rem, 1fr)) auto; gap: .35rem; align-items: end; padding: .35rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel2); }
.upload-row.bad { border-color: #b85c4e; }
.upload-file { min-width: 0; font-size: .72rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; align-self: center; }
.upload-file b { display: block; overflow: hidden; text-overflow: ellipsis; }
.upload-row label { display: grid; gap: .1rem; font-size: .68rem; color: var(--muted); }
.upload-row input { min-width: 0; font-size: .76rem; padding: .2rem .3rem; }
.upload-error { display: block; color: #ffb4a2; font-size: .68rem; white-space: normal; margin-top: .15rem; }
.upload-row button { font-size: .68rem; padding: .2rem .3rem; }
.series-variants { display: flex; flex-wrap: wrap; gap: .15rem; margin-top: .2rem; }
.series-variants .series-badge { margin-left: 0; font-size: .62rem; }
.series-spark { margin-top: .2rem; line-height: 0; }
.series-spark svg { width: 100%; max-width: 11rem; height: 2.4rem; display: block; opacity: .9; }
.data-table { width: 100%; }
.data-table td, .data-table th { font-size: .76rem; }
.data-table td:last-child { white-space: nowrap; }
.data-table .muted { font-size: .7rem; }
dialog#series-edit-dialog { width: min(92vw, 32rem); background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: var(--radius); padding: 0; }
dialog#series-edit-dialog form { padding: .9rem; display: grid; gap: .6rem; }
dialog#series-edit-dialog::backdrop { background: rgba(0,0,0,.6); }
dialog#opt-warning-dialog { width: min(92vw, 34rem); background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: var(--radius); padding: 0; }
dialog#opt-warning-dialog form { padding: .9rem; display: grid; gap: .6rem; }
dialog#opt-warning-dialog::backdrop { background: rgba(0,0,0,.6); }
.opt-warning-list { margin: 0; padding-left: 1.2rem; max-height: 12rem; overflow: auto; color: #ffb4a2; font-size: .8rem; }
dialog#series-dialog { width: min(94vw, 56rem); background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: var(--radius); padding: 0; }
dialog#series-dialog form { padding: .9rem; display: grid; gap: .6rem; max-height: 88dvh; overflow: auto; }
dialog#series-dialog::backdrop { background: rgba(0,0,0,.6); }
dialog#series-dialog form > .toolbar { position: sticky; bottom: -.9rem; background: var(--panel); padding: .45rem 0 .2rem; border-top: 1px solid var(--line); }
.series-legend-toggle { width: 100%; min-height: 1.35rem; height: 1.45rem; display: flex; align-items: center; justify-content: center; gap: .35rem; margin: .18rem 0 .25rem; padding: .1rem .4rem; border: 1px solid var(--line); border-radius: .25rem; background: var(--panel2); color: var(--muted); font-size: .7rem; letter-spacing: .04em; }
.series-legend-toggle:hover, .series-legend-toggle.active { color: var(--text); border-color: var(--accent); }
.series-legend-toggle svg { width: .9rem; height: .9rem; }
.series-chart { cursor: crosshair; touch-action: none; min-height: 0; background: var(--panel2); border: 1px solid var(--line); border-radius: var(--radius); padding: .3rem; }
.series-chart svg { display: block; width: 100%; height: var(--series-chart-h, 14rem); }
.chart-point-hit { cursor: help; }
.series-split { height: .5rem; margin: .15rem 0 .05rem; border-radius: 1rem; cursor: row-resize; touch-action: none; background: linear-gradient(to bottom, transparent 40%, var(--line) 40%, var(--line) 60%, transparent 60%); }
.series-split:hover, .series-split.dragging { background: var(--accent); opacity: .75; }
.chart-tooltip { position: fixed; z-index: 1000; max-width: 22rem; padding: .35rem .55rem; border: 1px solid var(--line); border-radius: .3rem; background: var(--panel); color: var(--text); font-size: .75rem; line-height: 1.3; box-shadow: 0 .3rem 1rem rgba(0,0,0,.35); pointer-events: none; }
#series-table { max-height: none; overflow: visible; }
.series-values-toggle { width: 100%; min-height: 1.35rem; height: 1.45rem; display: flex; align-items: center; justify-content: space-between; gap: .35rem; margin: .2rem 0 0; padding: .1rem .45rem; border: 1px solid var(--line); border-radius: .25rem; background: var(--panel2); color: var(--muted); font-size: .7rem; letter-spacing: .03em; }
.series-values-toggle:hover { color: var(--text); border-color: var(--accent); }
.series-values-body { height: var(--series-table-h, 18rem); min-height: 6rem; max-height: none; overflow: auto; margin-top: .15rem; }

.check { color: var(--muted); font-size: .85rem; white-space: nowrap; }

.chart { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: .5rem; margin-bottom: .6rem; }
.chart svg { display: block; width: 100%; height: clamp(220px, 18rem, 460px); }
.chart.small svg { height: clamp(140px, 11rem, 280px); }

.legend { display: flex; flex-wrap: wrap; gap: .2rem .9rem; padding: .2rem .1rem .5rem; }
.legend label { display: inline-flex; align-items: center; gap: .4rem; font-size: .8rem; color: var(--muted); cursor: pointer; }
.legend .swatch { width: .8rem; height: .2rem; border-radius: 2px; display: inline-block; }
.legend input { margin: 0; }

.table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: var(--radius); }
table { border-collapse: collapse; width: 100%; font-size: .78rem; }
th, td { text-align: left; padding: .3rem .5rem; border-bottom: 1px solid var(--line); white-space: nowrap; }
th { color: var(--muted); font-weight: 500; position: sticky; top: 0; background: var(--panel); }
tr.sel td { background: #234047; }
tbody tr { cursor: pointer; }
tbody tr:hover td { background: #1e2833; }

.progress { height: .4rem; background: var(--panel2); border-radius: .2rem; overflow: hidden; margin-bottom: .6rem; }
.progress div { height: 100%; width: 0; background: var(--accent); transition: width .25s; }

#log-list { font-family: "JetBrains Mono", Consolas, monospace; font-size: .8rem; }
#log-list div { padding: .1rem 0; border-bottom: 1px solid #1b232d; }
#log-list .t { color: var(--muted); margin-right: .5rem; }
#log-list .err { color: var(--danger); }
#log-list .ok { color: var(--accent); }

#toast {
	position: fixed;
	right: .8rem;
	bottom: 4rem;
	background: var(--panel2);
	border: 1px solid var(--line);
	border-left: 3px solid var(--accent);
	border-radius: .4rem;
	padding: .6rem .9rem;
	max-width: 24rem;
	box-shadow: 0 8px 24px rgba(0,0,0,.45);
	z-index: 20;
}
#toast.error { border-left-color: var(--danger); }

.hint { color: var(--muted); font-size: .8rem; margin: .5rem 0 0; }

.kv { display: grid; grid-template-columns: auto 1fr; gap: .25rem .8rem; font-size: .85rem; }
.kv .k { color: var(--muted); }
.mono { font-family: "JetBrains Mono", Consolas, monospace; }

/* Кнопка «Зафиксировать задачу» и форма задачи */
#btn-feedback {
	position: fixed;
	right: .8rem;
	bottom: .8rem;
	font-size: .8rem;
	padding: .3rem .6rem;
	z-index: 15;
	background: #2a3a4c;
	border-color: #3b5168;
	box-shadow: 0 6px 18px rgba(0,0,0,.4);
}
#btn-feedback:hover { background: #33465c; }

dialog#feedback-dialog {
	width: min(92vw, 34rem);
	background: var(--panel);
	color: var(--text);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	padding: 0;
}
dialog#feedback-dialog::backdrop { background: rgba(0,0,0,.6); }
dialog#feedback-dialog form { padding: .9rem; display: grid; gap: .6rem; }
dialog#feedback-dialog h3 { margin: 0; font-size: 1rem; }
dialog#feedback-dialog textarea { resize: vertical; min-height: 6rem; width: 100%; }
dialog#feedback-dialog .fields { margin: 0; }

.task-history-title { margin: 1rem 0 .3rem; font-size: .8rem; color: var(--muted); text-transform: uppercase; letter-spacing: .3px; }
.task-history-title:first-child { margin-top: 0; }
.task-report { margin: .4rem 0; padding: .4rem .5rem; border-left: .2rem solid #4fb3a8; background: rgba(79,179,168,.08); border-radius: .2rem; white-space: pre-wrap; font-size: .8rem; line-height: 1.35; }
.task-report b { display: block; color: #7fe0d3; font-size: .7rem; text-transform: uppercase; letter-spacing: .3px; margin-bottom: .2rem; }
.task {
	border: 1px solid var(--line);
	border-radius: var(--radius);
	padding: .6rem;
	margin-bottom: .6rem;
	background: var(--panel);
}
.task .head { display: flex; gap: .6rem; flex-wrap: wrap; color: var(--muted); font-size: .8rem; margin-bottom: .3rem; }
.task .text { white-space: pre-wrap; }

/* Экраны: вход, кабинет, рабочее место */
.view { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
.view.hidden { display: none !important; }

#auth-view { align-items: center; justify-content: center; padding: 1rem; }
.auth-card {
	width: min(92vw, 26rem);
	background: var(--panel);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	padding: 1.2rem;
	display: grid;
	gap: .7rem;
}
.auth-form { display: grid; gap: .5rem; }
.auth-form h3 { margin: 0; font-size: 1rem; }
.auth-form input { width: 100%; }
button.link {
	background: none;
	border: none;
	color: var(--accent);
	text-decoration: underline;
	padding: 0;
	justify-self: start;
}

#dashboard header { min-height: 3rem; }
.dash-main { flex: 1 1 auto; overflow: auto; padding: 1rem; display: block; }
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: .8rem; }
.card {
	background: var(--panel);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	padding: .8rem;
	cursor: pointer;
	display: grid;
	gap: .25rem;
}
.card:hover { border-color: var(--accent); }
.card .name { font-weight: 600; font-size: 1rem; }
.card .meta { color: var(--muted); font-size: .8rem; }

h2 { margin: 0; font-size: 1.15rem; }
h4 { margin: .9rem 0 .4rem; color: var(--muted); font-size: .8rem; text-transform: uppercase; letter-spacing: .5px; }

.balance {
	font-size: .85rem;
	padding: .15rem .5rem;
	border-radius: 1rem;
	border: 1px solid #2f6b64;
	color: #9fe3d8;
	background: #16322f;
}
.balance.neg { border-color: #7a3b34; color: #f2b3ac; background: #3a1d1a; }

.run-group { margin-bottom: .8rem; border: 1px solid var(--line); border-radius: var(--radius); }
.run-group > .head {
	display: flex; align-items: center; gap: .6rem;
	padding: .5rem .7rem; border-bottom: 1px solid var(--line);
	background: var(--panel); font-weight: 600;
}
.run-group > .head .count { color: var(--muted); font-weight: 400; font-size: .8rem; }
.run-row {
	display: grid; grid-template-columns: 2.2fr 1fr 1.4fr auto;
	gap: .6rem; align-items: center;
	padding: .45rem .7rem; border-bottom: 1px solid #1b232d; cursor: pointer;
}
.run-row:last-child { border-bottom: none; }
.run-row:hover { background: #1e2833; }
.run-row .name { font-weight: 500; }
.run-row .muted { font-size: .8rem; }
.run-row .tag {
	display: inline-block; padding: 0 .4rem; margin-right: .25rem;
	border: 1px solid var(--line); border-radius: 1rem; font-size: .75rem; color: var(--muted);
}
dialog#run-dialog, dialog#model-meta-dialog {
	width: min(92vw, 32rem); background: var(--panel); color: var(--text);
	border: 1px solid var(--line); border-radius: var(--radius); padding: 0;
}
dialog#run-dialog form, dialog#model-meta-dialog form { padding: .9rem; display: grid; gap: .6rem; }
dialog#reactor-dialog {
	width: min(94vw, 46rem); background: var(--panel); color: var(--text);
	border: 1px solid var(--line); border-radius: var(--radius); padding: 0;
}
dialog#reactor-dialog::backdrop { background: rgba(0,0,0,.6); }
dialog#reactor-dialog form { padding: .9rem; display: grid; gap: .6rem; }
dialog#reactor-dialog .table-wrap { max-height: 46vh; overflow: auto; }
dialog#reactor-dialog h4 { margin: .4rem 0 .2rem; font-size: .85rem; color: var(--muted); }
dialog::backdrop { background: rgba(0,0,0,.6); }

.model-pane { overflow: hidden; }
.model-layout {
	display: flex; gap: 0; align-items: stretch;
	height: calc(100vh - 11.5rem); min-height: 30rem;
}
.model-side {
	flex: 0 0 min(20rem, 22vw); display: flex; flex-direction: column;
	min-height: 0; overflow: hidden;
	background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
}
.model-side.model-right { flex: 0 0 min(23rem, 26vw); }
.model-side-head {
	display: flex; align-items: center; gap: .45rem;
	padding: .45rem .55rem; border-bottom: 1px solid var(--line); flex: 0 0 auto;
}
.model-side-head h3 { margin: 0; font-size: .95rem; }
#model-left { overflow: auto; }
.model-nav { display: flex; flex-direction: column; gap: .2rem; padding: .45rem; }
.model-schema-tools { display: flex; flex-direction: column; gap: .28rem; padding: .4rem; border-top: 1px solid var(--line); }
.model-schema-tools-head { font-size: .78rem; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); }
.model-schema-tools label { display: flex; flex-direction: column; gap: .06rem; color: var(--muted); font-size: .75rem; }
.model-schema-tools label > select, .model-schema-tools label > input[type="range"] { width: 100%; min-width: 0; }
.model-schema-tools select, .model-schema-tools input[type="number"] { width: 100%; }
.model-schema-tools input[type="range"] { width: 100%; }
.model-schema-fit { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: .3rem; }
.model-schema-fit label { min-width: 0; }
.model-schema-fit button { padding: .35rem .45rem; white-space: normal; }
.schema-left-tabs { display: flex; gap: .15rem; position: sticky; top: -.4rem; z-index: 2; background: var(--panel); padding: .1rem 0 .35rem; border-bottom: 1px solid var(--line); margin-bottom: .35rem; }
.schema-left-tabs button { flex: 1 1 0; padding: .2rem .05rem; font-size: .66rem; background: transparent; border: 1px solid transparent; border-radius: .3rem; color: var(--muted); white-space: nowrap; }
.schema-left-tabs button.active { color: var(--text); border-color: var(--accent); background: var(--panel2); }
.schema-tab-body { display: flex; flex-direction: column; gap: .28rem; }
.schema-layout-row { display: flex; flex-direction: column; gap: .22rem; }
.schema-layout-row > span { color: var(--muted); font-size: .75rem; }
.schema-layout-buttons { display: flex; gap: .2rem; }
.schema-layout-buttons button { flex: 1 1 0; padding: .3rem .2rem; font-size: .72rem; background: transparent; border: 1px solid var(--line); border-radius: .3rem; color: var(--muted); }
.schema-layout-buttons button.active { color: var(--text); border-color: var(--accent); background: var(--panel2); }
.schema-pins { display: flex; align-items: center; flex-wrap: wrap; gap: .2rem; font-size: .7rem; color: var(--muted); }
.schema-pins button { padding: .18rem .3rem; font-size: .7rem; }
.schema-pins span { margin-left: auto; }
.schema-auto-layout { display: flex; flex-direction: column; gap: .28rem; border-top: 1px solid var(--line); padding-top: .35rem; }
.schema-auto-head { color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .3px; }
.schema-auto-layout .model-schema-canvas input { flex: 0 0 3.6rem; }
.schema-auto-layout .model-schema-canvas button { flex: 0 0 auto; padding: .18rem .3rem; font-size: .68rem; }
.schema-layout-stop { align-self: flex-start; padding: .2rem .4rem; font-size: .7rem; border-color: #b85c4e; color: #ffb4a2; }
.schema-topology-toggle { flex-direction: row !important; align-items: center; gap: .35rem; }
.schema-analysis { display: flex; flex-direction: column; gap: .3rem; }
.analysis-block { border: 1px solid var(--line); border-radius: var(--radius); background: rgba(255,255,255,.015); }
.analysis-block > summary { display: flex; align-items: center; justify-content: space-between; gap: .3rem; cursor: pointer; padding: .35rem .45rem; color: var(--text); font-size: .76rem; }
.analysis-block > summary > span:last-child { color: var(--muted); font-size: .68rem; font-weight: normal; }
.analysis-block-body { display: flex; flex-direction: column; gap: .3rem; padding: .4rem .45rem .45rem; }
.analysis-run { align-self: flex-start; padding: .18rem .4rem; font-size: .7rem; }
.schema-analysis-empty { display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; }
.analysis-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .25rem; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .3px; }
.analysis-head button { padding: .1rem .35rem; font-size: .7rem; text-transform: none; margin-left: auto; }
.analysis-alert { border: 1px solid #b85c4e; background: rgba(184, 92, 78, .16); color: #ffb4a2; border-radius: .3rem; padding: .3rem .4rem; font-size: .73rem; line-height: 1.3; }
.analysis-ok { color: #7fe0d3; font-size: .72rem; padding: .2rem 0; }
.analysis-warn-title { color: #ffb4a2; }
.schema-study { display: flex; flex-direction: column; gap: .25rem; border-top: 1px solid var(--line); padding-top: .45rem; margin-top: .15rem; }
.study-head { display: flex; align-items: center; justify-content: space-between; gap: .3rem; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .3px; }
.study-head button { padding: .1rem .35rem; font-size: .7rem; text-transform: none; }
.study-sub { display: flex; align-items: center; justify-content: space-between; color: var(--muted); font-size: .72rem; margin-top: .2rem; }
.study-sub > span { font-variant-numeric: tabular-nums; }
.study-groups, .study-loose-list { display: flex; flex-direction: column; gap: .15rem; }
.study-group, .study-loose { display: flex; justify-content: space-between; align-items: center; gap: .35rem; width: 100%; padding: .22rem .35rem; text-align: left; font-size: .72rem; background: transparent; border: 1px solid var(--line); border-radius: .3rem; color: var(--muted); }
.study-group { border-left: .2rem solid var(--group-color, transparent); }
.study-group span, .study-loose span { color: var(--text); font-variant-numeric: tabular-nums; }
.study-group-text { display: flex; flex-direction: column; gap: .08rem; min-width: 0; }
.study-group-text b { font-weight: 500; }
.study-group-text small { color: var(--muted); font-size: .66rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 14rem; }
.study-group:hover, .study-loose:hover { color: var(--text); border-color: var(--accent); }
.study-group.active, .study-loose.active { color: var(--text); border-color: var(--accent); background: var(--panel2); }
.study-group.warning { border-color: #b85c4e; background: rgba(184, 92, 78, .08); }
.study-group.warning.active { border-color: #ffb4a2; background: rgba(184, 92, 78, .2); }
.study-loose.warning { border-color: #b85c4e; color: #ffb4a2; }
.study-loose.warning span { color: #ffb4a2; }
.schema-wrap.analysis-groups .graph-node.analysis-group rect { stroke: var(--group-stroke, #ff7b72); stroke-width: 3; }
.schema-wrap .graph-node.analysis-loose rect { filter: drop-shadow(0 0 3px rgba(255, 123, 114, .95)); }
.study-hint { color: var(--muted); font-size: .68rem; line-height: 1.3; margin-top: .3rem; }
.effector-analysis { display: flex; flex-direction: column; gap: .22rem; border-top: 1px solid var(--line); padding-top: .35rem; margin-top: .25rem; }
.effector-filters { display: flex; flex-wrap: wrap; gap: .15rem; }
.effector-filter { padding: .16rem .28rem; font-size: .66rem; background: transparent; border: 1px solid var(--line); border-radius: .28rem; color: var(--muted); }
.effector-filter span { margin-left: .18rem; color: var(--text); font-variant-numeric: tabular-nums; }
.effector-filter.active { border-color: var(--accent); color: var(--text); background: var(--panel2); }
.effector-list { display: flex; flex-direction: column; gap: .12rem; max-height: 14rem; overflow: auto; }
.effector-row { display: flex; justify-content: space-between; gap: .4rem; width: 100%; text-align: left; padding: .2rem .35rem; font-size: .7rem; background: transparent; border: 1px solid var(--line); border-radius: .28rem; color: var(--text); }
.effector-row:hover, .effector-row.active { border-color: var(--accent); background: var(--panel2); }
.effector-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.effector-meta { color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
.future-analysis { display: flex; flex-direction: column; gap: .25rem; border-top: 1px solid var(--line); padding-top: .35rem; margin-top: .25rem; }
.future-buttons { display: flex; gap: .2rem; flex-wrap: wrap; }
.future-button { padding: .2rem .35rem; font-size: .68rem; background: transparent; border: 1px solid var(--line); border-radius: .28rem; color: var(--muted); }
.future-button span { margin-left: .25rem; color: var(--text); font-variant-numeric: tabular-nums; }
.future-button.active { border-color: var(--accent); color: var(--text); background: var(--panel2); }
.future-list { display: flex; flex-direction: column; gap: .1rem; max-height: 8rem; overflow: auto; }
.future-row { display: flex; justify-content: space-between; gap: .3rem; font-size: .68rem; color: var(--muted); padding: .12rem .2rem; border-bottom: 1px solid rgba(255,255,255,.04); }
.future-row span:last-child { color: var(--text); font-variant-numeric: tabular-nums; }
.schema-wrap.future-mode .g-edge:not(.future-hit) { opacity: .06; }
.schema-wrap.future-mode .g-edge.future-hit { opacity: 1; stroke-width: 3.2; }
.schema-wrap.future-mode .g-edge.future-hit.sensor { stroke: #7fe0d3; }
.schema-wrap.future-mode .g-edge.future-hit.effector { stroke: #ffd166; }
.schema-wrap.effector-hit-mode .g-edge:not(.effector-hit) { opacity: .14; }
.schema-wrap.effector-hit-mode .g-edge.effector-hit { opacity: 1; stroke-width: 3.4; stroke: #e0a458; }
.schema-wrap.effector-hit-mode .g-edge.effector-hit.sensor { stroke: #7fe0d3; }
.study-loose:disabled { opacity: .45; cursor: default; }
.study-loose:disabled:hover { border-color: var(--line); color: var(--muted); }
.model-schema-tools .hint { margin: 0; font-size: .78rem; }
.model-schema-zoom { display: flex; flex-direction: column; gap: .2rem; color: var(--muted); font-size: .78rem; }
.model-schema-zoom-row { display: flex; align-items: center; gap: .2rem; }
.model-schema-zoom button { padding: .2rem .45rem; }
.model-schema-zoom [data-schema-zoom-value] { min-width: 3rem; text-align: center; color: var(--text); font-variant-numeric: tabular-nums; }
.model-schema-canvas { display: flex; align-items: center; gap: .3rem; }
.model-schema-canvas input { width: 0; flex: 1 1 0; min-width: 0; padding: .2rem .3rem; font-size: .8rem; }
.model-schema-canvas input[type="number"]::-webkit-inner-spin-button, .model-schema-canvas input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.model-schema-canvas input[type="number"] { appearance: textfield; -moz-appearance: textfield; }
.model-nav button {
	white-space: nowrap; text-align: left; padding: .4rem .5rem; font-size: .86rem; background: transparent;
	border: 1px solid transparent; border-radius: .35rem; color: var(--muted);
}
.model-nav button.active { background: var(--panel2); border-color: var(--accent); color: var(--text); }
.model-center {
	flex: 1 1 auto; min-width: 0; min-height: 0;
	display: flex; flex-direction: column; overflow: auto;
}
.model-center-head {
	display: flex; align-items: center; gap: .2rem;
	padding: .25rem .3rem; flex: 0 0 auto;
}
.model-center-head h3 { margin: 0; font-size: 1rem; min-width: 0; }
.model-view-tabs { display: flex; align-items: center; gap: .12rem; flex: 1 1 auto; min-width: 0; overflow-x: auto; }
.model-view-tabs button {
	flex: 0 0 auto; padding: .3rem .45rem; background: transparent; color: var(--muted);
	border: 1px solid transparent; border-radius: .35rem; white-space: nowrap;
}
.model-view-tabs button svg { width: 1.4rem; height: 1.4rem; display: block; }
.model-view-tabs button.active { background: var(--panel2); border-color: var(--accent); color: var(--text); }
.model-content { flex: 1 1 auto; overflow: auto; min-height: 0; padding: .55rem; }
.model-details { flex: 1 1 auto; overflow: auto; min-height: 0; padding: .8rem; container-type: inline-size; }
.reactor-top { padding: .55rem; border: 1px solid var(--line); border-radius: var(--radius); margin-bottom: .5rem; }
.reactor-top-head { display: flex; align-items: center; gap: .4rem; margin-bottom: .35rem; flex-wrap: wrap; }
.reactor-top-head button { padding: .25rem .45rem; font-size: .78rem; }
.reactor-label { color: var(--muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .5px; }
.reactor-top .fields { margin: 0; }
.reactor-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .2rem; margin-bottom: .5rem; }
.reactor-tabs button { min-width: 0; padding: .38rem .25rem; background: var(--panel2); border: 1px solid var(--line); border-radius: .35rem; color: var(--muted); display: inline-flex; align-items: center; justify-content: center; }
.reactor-tabs button svg { width: 1.25rem; height: 1.25rem; }
.reactor-tabs button.active { background: var(--panel2); border-color: var(--accent); color: var(--text); }
.reactor-section { padding: .1rem 0 .3rem; }
.reactor-item { border: 1px solid var(--line); border-radius: var(--radius); padding: .5rem; margin-bottom: .45rem; }
.reactor-item-head { display: flex; align-items: baseline; gap: .45rem; flex-wrap: wrap; margin-bottom: .35rem; }
.reactor-item-head .muted { font-size: .78rem; }
.reactor-chips { display: flex; flex-wrap: wrap; gap: .25rem; margin-bottom: .2rem; }
.reactor-chip { padding: .2rem .4rem; font-size: .78rem; }
.reactor-chip span { color: var(--muted); }
.reactor-crumb { display: flex; align-items: center; gap: .5rem; margin-bottom: .5rem; color: var(--muted); font-size: .8rem; }
.reactor-crumb button { padding: .2rem .45rem; }
.detail-show { display: flex; justify-content: space-between; align-items: center; gap: .4rem; margin-bottom: .5rem; }
.model-table { font-size: .7rem; }
.model-table td, .model-table th { white-space: nowrap; padding: .25rem .35rem; }
.detail-show button { padding: .3rem .55rem; font-size: .82rem; }
.model-splitter { flex: 0 0 8px; cursor: col-resize; border-radius: 3px; background: transparent; }
.model-splitter { background: rgba(255,255,255,.06); }
.model-splitter:hover, .model-splitter.drag { background: var(--accent); }
.model-layout.left-collapsed #model-left,
.model-layout.left-collapsed .model-splitter[data-split="left"],
.model-layout.right-collapsed #model-right,
.model-layout.right-collapsed .model-splitter[data-split="right"] { display: none; }

@media (max-width: 900px) {
	#tab-model { overflow: auto; }
	.model-layout { flex-direction: column; height: auto; min-height: 0; }
	.model-side, .model-side.model-right { flex: 0 0 auto; max-height: 40vh; }
	.model-center { flex: 0 0 auto; height: auto; min-height: auto; overflow: visible; }
	.model-content { flex: 0 0 auto; overflow: visible; min-height: 0; }
	#model-content .schema-panel { display: block; height: auto; margin-bottom: 0; }
	.model-splitter { display: none; }
}
/* Раскладка проекта: закладки Модель / Прогон / Оптимизация */
.pane { flex: 1 1 auto; overflow: auto; padding: .8rem; min-height: 0; }
.pane.hidden { display: none !important; }
.model-pane { padding: 0; display: flex; flex-direction: column; }

/* Общий шаблон двух панелей: слева выбор, справа работа с выбранным. */
.two-pane { flex: 1 1 auto; display: grid; grid-template-columns: auto 8px minmax(0, 1fr); min-height: 0; }
.two-pane.aside-closed { grid-template-columns: minmax(0, 1fr); }
.two-pane-left { width: clamp(260px, 22rem, 430px); min-width: 0; overflow: auto; display: flex; flex-direction: column; border-right: 1px solid var(--line); }
.two-pane-right { overflow: auto; min-width: 0; }
.two-pane-splitter { cursor: col-resize; background: rgba(255,255,255,.06); border-radius: 3px; }
.two-pane-splitter:hover, .two-pane-splitter.drag { background: var(--accent); }

@media (max-width: 780px) {
	.two-pane { display: flex; flex-direction: column; }
	.two-pane-left { width: 100%; border-right: 0; }
	.two-pane-splitter { display: none; }
	.two-pane.aside-closed .two-pane-left { display: none; }
	.two-pane:not(.aside-closed) .two-pane-right { display: none; }
	.two-pane:not(.aside-closed) .two-pane-left { flex: 1 1 auto; }
	.two-pane-left > #tree, .two-pane-left > #help-tree { flex: 1 1 auto; min-height: 0; }
}

.props-pane { flex: 1 1 auto; overflow: auto; padding: .8rem; min-width: 0; container-type: inline-size; }
.main-tabs { padding: .5rem .8rem 0; border-bottom: 1px solid var(--line); }
.subtabs { display: flex; gap: .2rem; margin: 0 0 .6rem; }
.subtabs button {
	background: transparent; border: 1px solid transparent; border-bottom: none;
	border-radius: .4rem .4rem 0 0; color: var(--muted); padding: .35rem .8rem;
}
.subtabs button.active { background: var(--panel); border-color: var(--line); color: var(--text); }
#dash-log, #dash-tasks { padding: .8rem 0; }

dialog#data-dialog {
	width: min(94vw, 56rem); background: var(--panel); color: var(--text);
	border: 1px solid var(--line); border-radius: var(--radius); padding: 0;
}
dialog#data-dialog form { padding: .9rem; display: grid; gap: .6rem; }

/* ---------- левая панель модели: параметры и реакторы ---------- */

.aside-tabs {
	display: flex;
	gap: .2rem;
	padding: .4rem .4rem 0;
	border-bottom: 1px solid var(--line);
	flex: 0 0 auto;
}
.aside-tabs button {
	flex: 1 1 auto;
	background: transparent;
	border: 1px solid transparent;
	border-bottom: none;
	border-radius: .4rem .4rem 0 0;
	color: var(--muted);
	padding: .35rem .5rem;
	font-size: .85rem;
}
.aside-tabs button.active {
	background: var(--panel2);
	border-color: var(--line);
	color: var(--text);
}
.aside-add { padding: .2rem 0 .5rem; }
.aside-add button { width: 100%; font-size: .85rem; }

.node .caret {
	display: inline-block;
	width: 1.05rem;
	color: var(--muted);
	user-select: none;
}
.node.reactor { font-weight: 600; }
.node.child2 { padding-left: 2.6rem; }

/* ---------- задачи: отметка «в работе» ---------- */

.task .badge {
	padding: 0 .45rem;
	border-radius: 1rem;
	border: 1px solid var(--line);
	font-size: .75rem;
}
.task .badge.new { color: #9fb6cf; border-color: #33465c; background: #1b2733; }
.task .badge.approved { color: #f0c88a; border-color: #6b5632; background: #2a2418; }
.task .badge.done { color: #9fe3d8; border-color: #2f6b64; background: #16322f; }
.task .badge.rejected { color: #f2b3ac; border-color: #7a3b34; background: #3a1d1a; }
.task.approved { border-left: .3rem solid var(--accent2); background: #1b2523; }
.task.done { opacity: .7; }
.task .toolbar button[disabled] { opacity: .8; border-color: #6b5632; color: #f0c88a; }

/* ---------- адаптация под планшет и телефон ---------- */

html { -webkit-text-size-adjust: 100%; }
body { min-height: 100dvh; }

@media (max-width: 900px) {
	.grid2 { grid-template-columns: 1fr; }
	.props-pane { padding: .6rem; }
	.fields.two { grid-template-columns: minmax(8rem, 10rem) minmax(0, 1fr); }
}

/* Узкая правая панель (дерево слева ещё видно): подписи над полями,
   иначе длинные подписи не оставляют места самим полям. */
@media (max-width: 1000px) {
	.props-pane .fields, .props-pane .fields.two, .model-details .fields, .model-details .fields.two { grid-template-columns: 1fr; gap: .2rem; }
	.props-pane .fields .wide { grid-column: 1; flex-wrap: wrap; }
	.props-pane .fields .wide input[type="number"] { flex: 1 1 0; width: auto; min-width: 0; }
	.props-pane .fields label { margin-top: .35rem; }
}

/* То же по фактической ширине панели: сплиттер может отдать свойствам
   совсем мало места и на широком экране. */
@container (max-width: 640px) {
	.fields, .fields.two { grid-template-columns: 1fr; gap: .2rem; }
	.fields .wide { grid-column: 1; flex-wrap: wrap; }
	.fields .wide input[type="number"] { flex: 1 1 0; width: auto; min-width: 0; }
	.fields label { margin-top: .35rem; }
}

@media (max-width: 600px) {
	header { padding: .35rem .5rem; gap: .3rem; }
	header .brand { font-size: 1rem; }
	#user-email { display: none; }

	/* Телефон: проект и модель — первой строкой, закладки и кнопки — ниже. */
	#app-header {
		display: grid;
		grid-template-columns: auto minmax(0, 1fr) auto;
		grid-template-areas: "brand project model" "tabs tabs tabs" "actions actions actions";
		align-items: center;
		gap: .3rem .4rem;
	}
	#app-header .spacer, #app-header #dirty { display: none; }
	#app-header .brand { grid-area: brand; margin-right: 0; }
	#app-header #project-menu { grid-area: project; min-width: 0; }
	#app-header #model-menu { grid-area: model; min-width: 0; }
	#app-header .main-tabs {
		grid-area: tabs;
		margin: 0;
		padding: 0;
		flex-wrap: nowrap;
		overflow-x: auto;
	}
	#app-header .header-actions {
		grid-area: actions;
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
	}
	#app-header .header-actions::-webkit-scrollbar { display: none; }
	#app-header .project-name { max-width: 8.5rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	#app-header .model-menu-btn .name { max-width: 8rem; overflow: hidden; text-overflow: ellipsis; display: inline-block; vertical-align: bottom; }

	.main-tabs {
		flex-wrap: nowrap;
		overflow-x: auto;
		padding: .4rem .4rem 0;
		scrollbar-width: none;
	}
	.main-tabs::-webkit-scrollbar { display: none; }
	.main-tabs button { flex: 0 0 auto; padding: .45rem .7rem; }

	.dash-main { padding: .5rem; }
	.cards { grid-template-columns: 1fr; }
	.pane { padding: .5rem; }
	.panel { padding: .6rem; }

	.fields, .fields.two { grid-template-columns: 1fr; gap: .2rem; }
	.fields .wide { grid-column: 1; flex-wrap: wrap; }
	.fields .wide input[type="number"] { flex: 1 1 0; width: auto; min-width: 0; }
	.fields label { margin-top: .35rem; }
	.fields input, .fields select { min-width: 0; }

	.series-list { flex-direction: column; align-items: stretch; }
	.series-card { width: auto; grid-template-columns: auto 1fr; }
	.series-hcard, .series-hsummary { width: 100%; }
	.series-actions { grid-column: 1 / -1; justify-content: flex-start; }
	.run-row { grid-template-columns: 1fr; gap: .15rem; }

	.model-toolbar { padding: .4rem; }

	dialog, dialog#data-dialog, dialog#run-dialog,
	dialog#feedback-dialog { width: 96vw; max-height: 92dvh; }

	.chart svg { height: 200px; }
	.chart.small svg { height: 150px; }
	.task .head { gap: .35rem; }
	#toast {
		left: .5rem;
		right: .5rem;
		bottom: calc(.5rem + env(safe-area-inset-bottom));
		max-width: none;
	}
	button, select, input, textarea { min-height: 2.2rem; }
}

/* ---------- телефон: левая панель за кнопкой ---------- */

.only-mobile { display: none; }
#btn-aside.on { border-color: var(--accent); color: var(--accent); }

@media (max-width: 780px) {
	.only-mobile { display: inline-block; }
}

/* ---------- ползунок времени ---------- */

.run-slider {
	display: flex;
	align-items: center;
	gap: .6rem;
	width: 100%;
	margin-bottom: .7rem;
}
.run-slider input[type="range"] { flex: 1 1 auto; width: 100%; min-width: 0; }
.run-slider #run-step-label { min-width: 2.5rem; text-align: right; font-variant-numeric: tabular-nums; }

#run-rule .table-wrap { margin-top: .35rem; }
#run-rule table { font-size: .76rem; }
#run-rule .num { font-family: "JetBrains Mono", Consolas, monospace; }
#run-rule h4 { margin-top: .6rem; }

dialog#task-done-dialog { width: min(92vw, 36rem); background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: var(--radius); padding: 0; }
dialog#task-done-dialog form { padding: .9rem; display: grid; gap: .6rem; }
dialog#task-done-dialog::backdrop { background: rgba(0,0,0,.6); }
dialog#task-done-dialog textarea { min-height: 7rem; resize: vertical; }
dialog#feedback-edit-dialog {
	width: min(92vw, 40rem);
	background: var(--panel);
	color: var(--text);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	padding: 0;
}
dialog#feedback-edit-dialog::backdrop { background: rgba(0,0,0,.6); }
dialog#feedback-edit-dialog form { padding: .9rem; display: grid; gap: .6rem; }
dialog#feedback-edit-dialog h3 { margin: 0; font-size: 1rem; }
dialog#feedback-edit-dialog textarea { resize: vertical; min-height: 10rem; width: 100%; }

@media (max-width: 600px) {
	.run-slider { gap: .4rem; }
}

/* ---------- выбор реакторов для графиков Power ---------- */

.run-power-bar {
	display: flex;
	align-items: center;
	gap: .5rem;
	flex-wrap: wrap;
	margin-bottom: .5rem;
}
.run-power-bar label { color: var(--muted); font-size: .85rem; }
.run-power-bar select { min-width: 12rem; max-width: 100%; }
.run-power-bar .hint { margin: 0; }

@media (max-width: 600px) {
	.run-power-bar select { min-width: 0; flex: 1 1 12rem; }
}

/* Значение сенсора и переключатель точки/диапазона — одной строкой. */
.fields .wide input[data-path="insideValue"],
.fields .wide input[data-path="inside.0"],
.fields .wide input[data-path="inside.1"] { flex: 1 1 5rem; width: auto; min-width: 4rem; }
.fields .wide button { flex: 0 0 auto; }

/* Описание реактора и ИИ-интерпретация. */
.fields textarea {
	width: 100%;
	min-height: 4.5rem;
	resize: vertical;
}
#ai-form input[type="password"] { font-family: ui-monospace, monospace; }

/* Контекст доработки: что было открыто. */
#fb-context { margin: .3rem 0 0; white-space: pre-wrap; }
.task-context { margin: .3rem 0 0; }
.task-context summary { cursor: pointer; color: var(--muted); font-size: .85rem; }
.task-context pre {
	max-height: 20rem;
	overflow: auto;
	white-space: pre-wrap;
	font-size: .78rem;
	line-height: 1.35;
	background: #0f1419;
	border: 1px solid var(--line);
	border-radius: 6px;
	padding: .5rem;
	margin: .3rem 0 0;
}

/* Описание модели в панели «Модель». */
.model-description {
	white-space: pre-wrap;
	line-height: 1.45;
	color: var(--text);
}

/* ---------- прогон: три панели ---------- */

#tab-run { overflow: hidden; display: flex; flex-direction: column; }
.run-layout {
	display: flex;
	gap: .6rem;
	flex: 1 1 auto;
	height: auto;
	min-height: 0;
	align-items: stretch;
}
.run-side {
	flex: 0 0 16rem;
	display: flex;
	flex-direction: column;
	min-height: 0;
	overflow: hidden;
	background: var(--panel);
	border: 1px solid var(--line);
	border-radius: var(--radius);
}
.run-side.run-right { flex: 0 0 23rem; }
.run-layout.left-collapsed #run-left { display: none; }
.run-layout.right-collapsed #run-right { display: none; }
.run-side-head {
	display: flex;
	align-items: center;
	gap: .45rem;
	padding: .45rem .55rem;
	border-bottom: 1px solid var(--line);
	flex: 0 0 auto;
}
.run-side-head h3 { margin: 0; font-size: .95rem; }
.run-side-head .icon { margin-left: auto; }
.run-side-tools { margin: 0; padding: .4rem .5rem; flex: 0 0 auto; }
#history-list { flex: 1 1 auto; overflow: auto; padding: .35rem; min-height: 0; }
.run-center {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 0;
	display: flex;
	flex-direction: column;
	overflow: auto;
}
.run-center-head {
	display: flex;
	align-items: center;
	gap: .5rem;
	padding: .1rem .1rem .35rem;
	flex: 0 0 auto;
}
.run-center-title { display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; min-width: 0; }
.run-center-title h3 { margin: 0; font-size: 1rem; }
.run-center .chart { flex: 0 0 auto; }
.run-pane { flex: 1 1 auto; overflow: auto; padding: .55rem; min-height: 0; }
#run-info .panel { margin-top: 0; }
#run-right-tabs { margin: 0; flex-wrap: wrap; }
#run-right-tabs button { padding: .25rem .5rem; font-size: .8rem; }
.run-row.sel { border-color: var(--accent); background: #1b2a2a; }
.icon {
	min-width: 2rem;
	padding: .2rem .4rem;
	line-height: 1;
}

@media (max-width: 1100px) {
	.run-side { flex: 0 0 13rem; }
	.run-side.run-right { flex: 0 0 19rem; }
}

@media (max-width: 900px) {
	#tab-run { overflow: auto; }
	.run-layout { flex-direction: column; height: auto; min-height: 0; }
	.run-side, .run-side.run-right { flex: 0 0 auto; max-height: 40vh; }
	.run-center { overflow: visible; }
}

/* ---------- админка: закладки ---------- */

#admin-tabs { margin-bottom: .8rem; }
.admin-pane { min-height: 0; }
.admin-tasks-head { align-items: baseline; }
.admin-tasks-head h4 { margin: 0; }
.task.done {
	opacity: 1;
	border-left: .3rem solid #5aa0ff;
	background: rgba(90, 160, 255, .12);
}
.task.done .head { color: #a9c8f5; }
.task.done .badge {
	color: #a9c8f5;
	border-color: #2f5d8a;
	background: rgba(90, 160, 255, .18);
}

/* Строка прогона в левой панели — только название. */
.run-row {
	display: flex;
	align-items: center;
	padding: .45rem .7rem;
}
.run-row .name {
	flex: 1 1 auto;
	min-width: 0;
	font-weight: 500;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Верхняя строка: логотип, контекстные закладки, справа — пользователь. */
header { flex-wrap: wrap; row-gap: .3rem; }
header .main-tabs {
	padding: 0;
	margin: 0 0 0 .3rem;
	border-bottom: none;
	flex-wrap: wrap;
}
header .main-tabs button {
	padding: .3rem .55rem;
	font-size: .9rem;
}

/* Выбор модели в верхней строке: вместо закладки «Модель». */
.model-menu { position: relative; display: flex; }
.model-menu-btn {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	max-width: min(18rem, 46vw);
	border: 1px solid #2f6b64;
	background: #1f4a46;
	border-radius: .4rem;
	padding: .3rem .5rem;
	font-size: .9rem;
	color: #fff;
}
.model-menu-toggle {
	display: inline-flex;
	align-items: center;
	border: 1px solid transparent;
	border-bottom: none;
	background: transparent;
	border-radius: 0 .4rem 0 0;
	padding: .3rem .45rem;
	font-size: .8rem;
	color: var(--muted);
}
.model-menu-btn:hover { background: #265a55; color: #fff; }
.model-menu-toggle:hover { color: var(--text); }
.model-menu-btn.active {
	background: #265a55;
	border-color: #2f6b64;
	color: #fff;
}
/* Треугольник выбора модели не заливается: как у выбора проекта. */
.model-menu-toggle.active {
	background: transparent;
	border-color: transparent;
	color: var(--text);
}
.model-menu-btn .name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.model-menu-list {
	position: absolute;
	top: calc(100% + .2rem);
	left: 0;
	z-index: 60;
	min-width: 12rem;
	max-width: min(24rem, calc(100vw - 1rem));
	max-height: 60vh;
	overflow: auto;
	background: var(--panel2);
	border: 1px solid var(--line);
	border-radius: .4rem;
	padding: .25rem;
	box-shadow: 0 12px 32px rgba(0, 0, 0, .5);
}
.model-menu-item, .model-menu-new {
	display: block;
	width: 100%;
	text-align: left;
	border: 0;
	border-radius: .3rem;
	background: transparent;
	padding: .35rem .5rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}
.model-menu-item:hover, .model-menu-new:hover { background: #202a36; }
.model-menu-item.sel { color: var(--accent); }
.model-menu-new {
	margin-top: .25rem;
	padding-top: .45rem;
	border-top: 1px solid var(--line);
	border-radius: 0 0 .3rem .3rem;
	color: var(--accent);
}
#btn-back {
	min-width: 2rem;
	padding: .2rem .45rem;
}

/* nxReact: бренд-ссылка и подпись проекта. */
.brand-link {
	background: none;
	border: 0;
	padding: 0;
	font: inherit;
	color: inherit;
	cursor: pointer;
}
.brand-link:hover { color: var(--accent); }
#btn-back { min-width: 0; padding: 0; border: 0; background: none; }
.project-name {
	font-style: normal;
	color: #fff;
	font-weight: 500;
	white-space: nowrap;
	background: #1f4a46;
	border-radius: .4rem;
	padding: .3rem .6rem;
}
button.project-name { background: #1f4a46; border: 0; padding: .3rem .6rem; cursor: pointer; }
button.project-name:hover { background: #265a55; color: #fff; }
#dash-settings h4 { margin: .9rem 0 .4rem; font-size: .85rem; color: var(--muted); }
.project-description { margin: 0 0 .8rem; font-size: 1rem; color: var(--text); white-space: pre-wrap; }

/* Сплиттеры между панелями прогона. */
.run-splitter {
	flex: 0 0 8px;
	align-self: stretch;
	cursor: col-resize;
	border-radius: 3px;
	background: transparent;
}
.run-splitter { background: rgba(255,255,255,.06); }
.run-splitter:hover, .run-splitter.drag { background: var(--accent); }
body.resizing { cursor: col-resize; user-select: none; }

/* Параметры прогона в правой панели. */
.run-params {
	display: flex;
	flex-direction: column;
	gap: .15rem;
	padding: .2rem .1rem .5rem;
	border-bottom: 1px solid var(--line);
	margin-bottom: .5rem;
	max-height: 14rem;
	overflow: auto;
}
.run-param {
	display: flex;
	align-items: center;
	gap: .45rem;
	font-size: .82rem;
	color: var(--muted);
	cursor: pointer;
}
.run-param input { margin: 0; }
.run-param .swatch {
	width: .9rem;
	height: .2rem;
	border-radius: 2px;
	display: inline-block;
	flex: 0 0 auto;
}

/* График заполняет ширину: высота по соотношению, без пустых полей. */
#run-chart svg { height: auto; }

/* Описание прогона: подписи над полями, а не в один ряд. */
#run-info .fields { display: block; }
#run-info .fields > label {
	display: block;
	margin: .45rem 0 .2rem;
}
#run-info .fields > div { margin-bottom: .3rem; }
#run-info .fields input,
#run-info .fields textarea { width: 100%; }

/* Параметры прогона: чекбокс, цвет, имя и значение в одной строке. */
.run-params { max-height: 24rem; }
.run-param .param-name {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.run-param input[type="number"] {
	width: 7.5rem;
	flex: 0 0 auto;
	margin-left: auto;
}

#about-text { width: 100%; min-height: 9rem; resize: vertical; }

#admin-pane-about .fields { align-items: start; }

#admin-pane-announcements .fields { align-items: start; }
#announcement-text { width: 100%; min-height: 5rem; resize: vertical; }
#dash-announcements, #admin-announcements { display: grid; gap: .5rem; }
.announcement { border-top: 1px solid var(--line); padding: .6rem 0; }
.announcement:first-child { border-top: 0; padding-top: 0; }
.announcement h4 { margin: .1rem 0 .25rem; }
.announcement p { margin: 0; white-space: pre-wrap; }
.announcement .date { color: var(--muted); font-size: .78rem; }
.announcement .toolbar { margin-top: .4rem; }

dialog#prompt-dialog { width: min(1100px, 94vw); }
dialog#prompt-dialog form { padding: .9rem; display: grid; gap: .6rem; }
.prompt-body { margin: 0; padding: .6rem; max-height: 65vh; overflow: auto;
	white-space: pre-wrap; background: rgba(0,0,0,.25); border: 1px solid var(--line);
	border-radius: .4rem; color: var(--text); font: .8rem/1.45 ui-monospace, monospace; }
.fix-badge { display: inline-block; padding: 0 .35rem; margin-left: .4rem;
	border-radius: 3px; background: #d9a02b; color: #1c1508; font-size: .7rem;
	font-weight: 700; letter-spacing: .05em; vertical-align: middle; }
.node.reactor.fixed { border-left: 3px solid #d9a02b; background: rgba(217,160,43,.08); }
.fix-box { display: flex; align-items: flex-start; gap: .55rem; padding: .55rem .65rem;
	border: 1px solid var(--line); border-radius: .45rem; cursor: pointer; }
.fix-box input[type="checkbox"] { width: 1.1rem; height: 1.1rem; margin-top: .15rem; flex: none; }
.fix-box .fix-title { font-weight: 700; font-size: .88rem; color: var(--text); }
.fix-box .fix-hint { display: block; margin-top: .15rem; color: var(--muted); font-size: .78rem; }
.fix-box.on { border-color: #d9a02b; background: rgba(217,160,43,.1); }
.fix-box.on .fix-title { color: #e9b44c; }

/* Сплиттер левой панели модели. */

/* Скриншот в окне «Доработка» и в карточке задачи. */
.fb-shot-create { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin: .4rem 0; }
.fb-shot img { max-width: 100%; max-height: 30vh; display: block; border: 1px solid var(--line); border-radius: .4rem; margin-bottom: .3rem; }
.task-shot img { max-width: 100%; max-height: 240px; display: block; border: 1px solid var(--line); border-radius: .4rem; margin-top: .4rem; }

/* Возврат к дереву из панели свойств на телефоне. */
.back-to-list { font: inherit; font-size: .8rem; border: 1px solid var(--line); background: transparent; color: var(--accent); border-radius: .3rem; padding: .1rem .4rem; margin-right: .5rem; cursor: pointer; vertical-align: middle; }
.back-to-list:hover { border-color: var(--accent); }

/* Главная: «О системе» и «Обратная связь». */
.home-tabs { padding: 0 0 .6rem; gap: .3rem; }
.home-tabs button { background: transparent; border: 1px solid var(--line); color: var(--muted); border-radius: .4rem; padding: .35rem .8rem; cursor: pointer; }
.home-tabs button.active { background: var(--panel2); border-color: var(--accent); color: var(--text); }
#dash-threads { display: flex; flex-direction: column; gap: .3rem; }
.thread-item { display: flex; justify-content: space-between; gap: .5rem; text-align: left; background: transparent; border: 1px solid var(--line); border-radius: .4rem; padding: .5rem .6rem; color: var(--text); cursor: pointer; }
.thread-item:hover { border-color: var(--accent); }
.thread-item.sel { border-color: var(--accent); background: #1b2a2a; }
.thread-date { color: var(--muted); font-size: .85rem; white-space: nowrap; }
.thread-head { display: flex; align-items: center; gap: .5rem; }
#dash-thread-messages { margin: .6rem 0; display: flex; flex-direction: column; gap: .4rem; max-height: 50vh; overflow: auto; }
.msg { border: 1px solid var(--line); border-radius: .4rem; padding: .4rem .6rem; background: var(--panel2); }
.msg.admin { border-left: .3rem solid var(--accent2); background: #1b2523; }
.msg-head { display: flex; gap: .4rem; align-items: center; font-size: .85rem; }
.admin-badge { background: var(--accent2); color: #1a1a1a; border-radius: .3rem; padding: 0 .3rem; font-size: .7rem; }
.msg-time { color: var(--muted); margin-left: auto; }
.thread-compose { display: flex; gap: .4rem; align-items: flex-end; }
.thread-compose textarea { flex: 1 1 auto; }
@media (max-width: 600px) { .thread-compose { flex-direction: column; align-items: stretch; } }

/* Скриншот задачи во всплывающем окне. */
button.task-shot { display: block; background: none; border: 0; padding: 0; cursor: zoom-in; }
#image-dialog { max-width: 95vw; max-height: 92vh; }
#image-dialog .dialog-body { display: flex; flex-direction: column; gap: .5rem; }
#image-dialog-img { max-width: 90vw; max-height: 80vh; object-fit: contain; border-radius: .4rem; }

/* Стрелка возврата к дереву над панелью свойств. */
.props-back { display: block; width: 2rem; height: 2rem; margin: 0 0 .5rem; border: 1px solid var(--line); border-radius: .4rem; background: transparent; color: var(--accent); font-size: 1.2rem; line-height: 1; cursor: pointer; }
.props-back:hover { border-color: var(--accent); }
/* На широком экране обе панели видны — стрелка не нужна. */
@media (min-width: 781px) { .props-back { display: none; } }

/* Переключатель «Общее описание / Схема» в правой панели закладки «Модель». */

/* Схема связей модели: параметры → реакторы → параметры. */
.schema-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-bottom: .5rem; color: var(--muted); font-size: .82rem; }
.schema-toolbar label { display: inline-flex; align-items: center; gap: .35rem; }
.schema-toolbar input[type=range] { width: 7rem; }
.schema-toolbar [data-schema-value] { min-width: 2.2rem; text-align: right; color: var(--text); font-variant-numeric: tabular-nums; }
.schema-toolbar .muted { margin-left: auto; }
.schema-wrap { overflow: auto; background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: .4rem; cursor: default; touch-action: none; }
.schema-wrap.ctrl-pan { cursor: grab; }
.schema-wrap.panning { cursor: grabbing; }
.schema-canvas {
	position: relative;
	background-color: var(--panel);
	background-image:
		linear-gradient(to right, rgba(126, 176, 168, .10) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(126, 176, 168, .10) 1px, transparent 1px);
	background-size: 50px 50px;
}
.schema-wrap svg { display: block; width: 100%; min-width: 640px; max-width: 840px; margin: 0 auto; height: auto; }
.schema-canvas svg { min-width: 0; max-width: none; margin: 0; overflow: visible; }
.schema-zoom { display: inline-flex; align-items: center; gap: .2rem; }
.schema-zoom button { padding: .2rem .45rem; }
.schema-zoom span { min-width: 3rem; text-align: center; color: var(--text); font-variant-numeric: tabular-nums; }
.graph-node { cursor: grab; touch-action: none; user-select: none; }
.graph-node.dragging { cursor: grabbing; }
.graph-node.pinned rect { stroke-dasharray: 5 3; stroke-width: 2.2; }
.graph-node.dragging rect { stroke: #e9f5f2; stroke-width: 2.2; }
.graph-node:hover rect, .graph-node:focus rect { filter: brightness(1.25); }
.g-param rect { fill: var(--node-fill, #1b3a36); stroke: #2f6b64; }
.g-param text { fill: var(--node-text, #cfe9e4); font-size: 13px; }
.g-param .g-spark { fill: none; stroke: var(--node-spark, #7fe0d3); stroke-width: 1.35; opacity: .85; vector-effect: non-scaling-stroke; }
.g-reactor rect { fill: var(--node-fill, #242019); stroke: #6b5632; }
.g-reactor.fixed rect { stroke: #d9a02b; }
.g-reactor text { fill: var(--node-text, #f0c88a); font-size: 13px; font-weight: 700; }
.g-reactor .g-meta { fill: var(--node-meta, #9a8a6a); font-size: 10px; font-weight: 400; }
.g-reactor .g-patterns { fill: #d9a02b; font-size: 9px; font-weight: 400; opacity: .9; }
.g-edge.sensor { fill: none; stroke: #4fb3a6; stroke-width: 1.6; opacity: .75; }
.g-edge.effector { fill: none; stroke: #d9a02b; stroke-width: 1.6; stroke-dasharray: 5 4; opacity: .8; }
.schema-idle { margin-top: .5rem; display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; }
.g-chip { font-size: .78rem; padding: .15rem .5rem; border-radius: 1rem; }

/* Руководство пользователя: кликабельные подписи и админская закладка. */
.field-help { cursor: help; border-bottom: 1px dotted var(--line); }
.field-help:hover { color: var(--text); border-bottom-color: var(--accent); }
.help-dot {
	width: 1.25rem; height: 1.25rem; padding: 0; margin-left: .25rem;
	border-radius: 50%; border: 1px solid var(--line); background: transparent;
	color: var(--muted); font-size: .75rem; line-height: 1; cursor: help;
	vertical-align: middle;
}
.help-dot:hover { color: var(--text); border-color: var(--accent); }
#help-dialog {
	width: min(92vw, 38rem); background: var(--panel); color: var(--text);
	border: 1px solid var(--line); border-radius: var(--radius); padding: 0;
}
#help-dialog form { padding: .9rem; display: grid; gap: .6rem; }
#help-dialog h3 { margin: 0; }
.help-text { white-space: pre-wrap; max-height: 55vh; overflow: auto; line-height: 1.5; }
.help-key { font-size: .8rem; color: var(--muted); }
.help-key code { color: var(--accent); }
.help-item {
	border: 1px solid var(--line); border-radius: var(--radius);
	padding: .6rem; margin-bottom: .7rem; display: grid; gap: .4rem;
	background: var(--panel2);
}
.help-item-head { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.help-item-head code { color: var(--accent); font-size: .85rem; }
.help-item-head button { font-size: .75rem; padding: .1rem .45rem; }
.help-item input, .help-item textarea { width: 100%; }

/* Руководство: разделы по первому сегменту ключа. */
.help-group {
	border: 1px solid var(--line); border-radius: var(--radius);
	margin-bottom: .7rem; background: var(--panel);
}
.help-group > summary {
	cursor: pointer; padding: .45rem .6rem; font-weight: 700;
	list-style: none; display: flex; align-items: baseline; gap: .5rem;
	background: #22302f; color: var(--text);
	border-bottom: 1px solid var(--line);
	border-radius: calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;
}
.help-group > summary::-webkit-details-marker { display: none; }
.help-group > summary::before { content: '▸'; color: var(--accent); }
.help-group[open] > summary::before { content: '▾'; }
.help-group:not([open]) > summary { border-bottom: 0; border-radius: calc(var(--radius) - 1px); }
.help-group > summary .muted { color: var(--accent); font-weight: 600; }
.help-tree-items { background: var(--panel); }
.help-group-items { padding: .6rem; display: grid; gap: .6rem; }
.help-item.editing { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }

/* Руководство в админке: две панели — дерево слева, текст справа. */
.help-layout {
	height: min(72vh, 52rem); min-height: 24rem;
	border: 1px solid var(--line); border-radius: var(--radius);
	overflow: hidden; background: var(--panel);
}
.help-list-head {
	display: flex; align-items: baseline; gap: .5rem;
	padding: .5rem .6rem; border-bottom: 1px solid var(--line);
}
.help-list-head h4 { margin: 0; }
#help-tree { overflow: auto; padding: .4rem; }
.help-tree-items { padding: .15rem 0 .3rem .6rem; }
.help-tree-item {
	width: 100%; text-align: left; background: transparent;
	border: 1px solid transparent; border-radius: .35rem;
	padding: .3rem .45rem; display: flex; flex-direction: column;
	align-items: flex-start; gap: .1rem;
}
.help-tree-item:hover { background: var(--panel2); }
.help-tree-item.sel { background: var(--panel2); border-color: var(--accent); }
.help-tree-item code { font-size: .72rem; color: var(--muted); }
.help-tree-title { font-size: .9rem; }
.help-content-pane { padding: .8rem; }
.help-editor { display: grid; gap: .5rem; }
.help-editor input, .help-editor textarea { width: 100%; }
.help-editor-head { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.help-editor-head code { color: var(--accent); }
.help-editor.editing { outline: 1px solid var(--accent); outline-offset: .3rem; border-radius: .4rem; }

@media (max-width: 780px) {
	.help-layout { height: auto; min-height: 0; border: 0; background: transparent; }
	.help-content-pane { padding: .2rem 0; }
}

/* Схема модели: выбранный узел, подсветка связей и карточка узла. */
@media (min-width: 901px) {
	#model-content .schema-panel { display: flex; flex-direction: column; height: 100%; min-height: 0; margin-bottom: 0; padding: .4rem; }
	#model-content .schema-wrap { flex: 1 1 auto; min-height: 0; }
}

.schema-wrap { position: relative; }
.schema-wrap.has-sel .graph-node:not(.sel):not(.near):not(.far) { opacity: .18; }
.schema-wrap.has-sel .graph-node.near { opacity: 1; }
.schema-wrap.has-sel .graph-node.far { opacity: .62; }
.schema-wrap.has-sel .g-edge:not(.sel):not(.near):not(.far) { opacity: .03; }
.schema-wrap.study-mode .graph-node:not(.study-hit) { opacity: .12; }
.schema-wrap.study-mode .g-edge:not(.study-hit) { opacity: .04; }
.schema-wrap.study-mode .graph-node.study-hit rect { stroke: #e9f5f2; stroke-width: 2.2; }
.schema-wrap.study-mode .g-edge.study-hit { opacity: .9; stroke-width: 2.1; }
.graph-node.sel rect { stroke: #e9f5f2; stroke-width: 2.2; }
.g-edge.sel { opacity: 1; }
.g-edge.near { opacity: .35; }
.g-edge.far { opacity: .12; }
.g-edge.sensor.sel { stroke: #7fe0d3; }
.g-edge.effector.sel { stroke: #f0c06a; }
.graph-popup {
	position: absolute; z-index: 5;
	width: min(21rem, calc(100% - 1rem)); max-height: min(70vh, calc(100% - 1rem)); overflow: auto;
	background: var(--panel2); border: 1px solid var(--accent);
	border-radius: var(--radius); padding: .6rem .7rem;
	box-shadow: 0 .6rem 1.8rem rgba(0, 0, 0, .45);
	font-size: .85rem;
}
.graph-popup.hidden { display: none; }
.graph-popup-head { display: flex; align-items: center; gap: .5rem; justify-content: space-between; }
.graph-popup-head b { font-size: .95rem; }
.graph-popup-head button {
	background: transparent; border: 0; color: var(--muted);
	font-size: 1.2rem; line-height: 1; padding: 0 .2rem;
}
.graph-popup-head button:hover { color: var(--text); background: transparent; }
.graph-popup-text { color: var(--muted); margin: .35rem 0 .5rem; white-space: pre-wrap; }
.graph-popup-line {
	display: flex; align-items: baseline; flex-wrap: wrap; gap: .35rem;
	margin-top: .45rem;
}
.graph-popup-label { color: var(--muted); font-size: .82rem; }
.graph-links { display: inline-flex; flex-wrap: wrap; gap: .25rem; }
.graph-link { padding: .12rem .5rem; border-radius: 1rem; font-size: .8rem; }
.graph-popup-actions { margin-top: .6rem; display: flex; justify-content: flex-end; }

/* Библиотека шаблонов сенсоров. */
.template-list-row { display: flex; align-items: center; gap: .5rem; padding: .35rem .45rem; border: 1px solid var(--line); border-radius: var(--radius); margin-bottom: .3rem; background: var(--panel2); }
.template-list-row > div:first-child { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }
.template-list-row .muted { font-size: .72rem; }
.template-list-actions { margin-left: auto; display: flex; gap: .25rem; flex-wrap: wrap; }
.template-list-actions button { font-size: .7rem; padding: .2rem .35rem; }
.template-graph { background: var(--panel2); border: 1px solid var(--line); border-radius: var(--radius); padding: .3rem; min-height: 12rem; }
.template-graph svg { display: block; width: 100%; height: 12rem; }
.template-point { cursor: grab; }
.template-point:active { cursor: grabbing; }
.template-points { display: flex; flex-direction: column; gap: .2rem; margin: .35rem 0; max-height: 12rem; overflow: auto; }
.template-point-row { display: flex; align-items: center; gap: .35rem; font-size: .72rem; color: var(--muted); }
.template-point-row > span { width: 1.2rem; text-align: right; }
.template-point-row label { display: flex; align-items: center; gap: .2rem; }
.template-point-row input { width: 6rem; font-size: .72rem; padding: .15rem .25rem; }
.template-point-row button { padding: .1rem .35rem; font-size: .8rem; }

/* Онтологический слой схемы. */
.ontology-tools { border: 1px solid var(--line); border-radius: var(--radius); padding: .35rem .45rem; margin: .35rem 0; background: var(--panel2); display: flex; flex-direction: column; gap: .25rem; }
.ontology-head { display: flex; justify-content: space-between; color: var(--muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; }
.ontology-head span { color: var(--accent); }
.ontology-tools button { font-size: .72rem; }
.ontology-tools label { font-size: .72rem; color: var(--muted); display: flex; align-items: center; gap: .3rem; }
.ontology-edge { cursor: pointer; }
.ontology-edge:hover path { filter: brightness(1.35); }
.ontology-edge.selected path { filter: brightness(1.5); }
.ontology-weight-row { display: flex; align-items: center; gap: .35rem; }
.ontology-weight-row input[type="range"] { flex: 1 1 auto; }
.ontology-weight-row input[type="number"] { width: 4.5rem; }
.ontology-weight-row span { min-width: 2.2rem; text-align: right; font-variant-numeric: tabular-nums; }

.ontology-quality { display: flex; flex-direction: column; gap: .25rem; }
.ontology-quality-stats { display: flex; flex-wrap: wrap; gap: .25rem .7rem; font-size: .7rem; color: var(--muted); }
.ontology-quality-row { display: flex; justify-content: space-between; gap: .4rem; font-size: .72rem; padding: .12rem .25rem; border-radius: .2rem; }
.ontology-quality-row.missing { color: #ffb4a2; background: rgba(184,92,78,.12); }
.ontology-quality-row.reversed { color: #f2cc60; background: rgba(242,204,96,.1); }
.ontology-quality-row.extra { color: var(--muted); }

.schema-layers { display: flex; align-items: center; flex-wrap: wrap; gap: .35rem .7rem; border: 1px solid var(--line); border-radius: var(--radius); padding: .3rem .45rem; margin-bottom: .35rem; background: var(--panel2); }
.schema-layers-head { color: var(--muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; margin-right: .2rem; }
.schema-layers label { display: inline-flex; align-items: center; gap: .25rem; font-size: .72rem; color: var(--muted); }
.schema-layers label:has(input:disabled) { opacity: .7; }

.ontology-pick-row { display: flex; align-items: center; justify-content: space-between; gap: .35rem; font-size: .72rem; color: var(--muted); }
.ontology-pick-row b { color: var(--text); font-weight: 500; }
.ontology-pick-row button { font-size: .68rem; padding: .15rem .3rem; }
.ontology-pick-actions { display: flex; gap: .25rem; flex-wrap: wrap; }
.ontology-pick-actions button { font-size: .7rem; }
.ontology-tools select { width: 100%; font-size: .72rem; }

/* Смысловые карточки левой панели схемы. */
.schema-card { border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel2); margin-bottom: .3rem; }
.schema-card > summary { padding: .35rem .45rem; cursor: pointer; list-style: none; color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; display: flex; align-items: center; justify-content: space-between; gap: .3rem; }
.schema-card > summary::-webkit-details-marker { display: none; }
.schema-card > summary::before { content: '▸'; color: var(--accent); margin-right: .3rem; }
.schema-card[open] > summary::before { content: '▾'; }
.schema-card > summary > span:last-child { margin-left: auto; color: var(--accent); }
.schema-card-body { padding: .4rem .45rem .45rem; display: flex; flex-direction: column; gap: .3rem; }
.schema-subcard { border: 1px solid var(--line); border-radius: .3rem; background: var(--panel); }
.schema-subcard > summary { padding: .25rem .35rem; cursor: pointer; list-style: none; color: var(--muted); font-size: .7rem; }
.schema-subcard > summary::-webkit-details-marker { display: none; }
.schema-subcard > summary::before { content: '▸'; color: var(--accent); margin-right: .25rem; }
.schema-subcard[open] > summary::before { content: '▾'; }
.schema-subcard-body { padding: 0 .35rem .35rem; display: flex; flex-direction: column; gap: .25rem; }
.schema-card .schema-layers { margin-bottom: 0; }

/* Акцентированные заголовки карточек: видно границу каждой карточки. */
.analysis-block > summary::-webkit-details-marker { display: none; }
.schema-card,
.analysis-block {
	border-color: rgba(79, 179, 168, .38);
	margin-bottom: .45rem;
}
.schema-card[open],
.analysis-block[open] {
	border-color: rgba(79, 179, 168, .7);
}
.schema-card > summary,
.analysis-block > summary {
	list-style: none;
	padding: .45rem .5rem;
	background: linear-gradient(90deg, rgba(79, 179, 168, .24), rgba(79, 179, 168, .07));
	border-left: 3px solid var(--accent);
	border-radius: .35rem .35rem 0 0;
	color: #929da6;
	font-weight: 700;
	letter-spacing: .035em;
	justify-content: flex-start;
}
.schema-card > summary > span:last-child,
.analysis-block > summary > span:last-child { margin-left: auto; }
.schema-card[open] > summary,
.analysis-block[open] > summary {
	background: linear-gradient(90deg, rgba(79, 179, 168, .34), rgba(79, 179, 168, .11));
	border-bottom: 1px solid rgba(79, 179, 168, .28);
}
.schema-card > summary::before,
.analysis-block > summary::before {
	content: '▸';
	color: #8ff0df;
	font-weight: 700;
	margin-right: .35rem;
}
.schema-card[open] > summary::before,
.analysis-block[open] > summary::before { content: '▾'; }
.schema-card > summary:hover,
.analysis-block > summary:hover { background: rgba(79, 179, 168, .3); }

.schema-subcard,
.series-subcard {
	border-color: rgba(224, 164, 88, .42);
	margin-top: .3rem;
}
.schema-subcard > summary,
.series-subcard > summary {
	list-style: none;
	padding: .3rem .4rem;
	background: rgba(224, 164, 88, .12);
	border-left: 2px solid var(--accent2);
	border-radius: .25rem .25rem 0 0;
	color: #f0c88a;
	font-weight: 600;
}
.schema-subcard[open] > summary,
.series-subcard[open] > summary {
	background: rgba(224, 164, 88, .2);
	border-bottom: 1px solid rgba(224, 164, 88, .25);
}
.schema-subcard > summary::before,
.series-subcard > summary::before { color: #f0c88a; }

/* Карточки свойств в правой панели и липкие заголовки. */
.prop-card { border: 1px solid rgba(79, 179, 168, .32); border-radius: var(--radius); background: var(--panel2); margin-bottom: .45rem; }
.prop-card > summary { position: sticky; top: 0; z-index: 8; list-style: none; padding: .45rem .5rem; cursor: pointer; background: linear-gradient(90deg, rgba(79, 179, 168, .18), rgba(79, 179, 168, .06)); border-left: 3px solid var(--accent); border-radius: .35rem .35rem 0 0; color: #929da6; font-weight: 700; font-size: .76rem; letter-spacing: .035em; }
.prop-card > summary::-webkit-details-marker { display: none; }
.prop-card > summary::before { content: '▸'; color: #8ff0df; margin-right: .35rem; }
.prop-card[open] > summary { background: linear-gradient(90deg, rgba(79, 179, 168, .28), rgba(79, 179, 168, .09)); border-bottom: 1px solid rgba(79, 179, 168, .25); }
.prop-card[open] > summary::before { content: '▾'; }
.prop-card-body { padding: .45rem .5rem .5rem; }
.prop-card-body > .fields:last-child { margin-bottom: 0; }

/* Заголовки карточек остаются видимыми при прокрутке панели. */
.schema-card > summary,
.analysis-block > summary { position: sticky; top: 0; z-index: 8; }

/* «Анализ» — отдельный, более холодный цвет. */
.analysis-block { border-color: rgba(121, 192, 255, .42); }
.analysis-block[open] { border-color: rgba(121, 192, 255, .75); }
.analysis-block > summary { background: linear-gradient(90deg, rgba(121, 192, 255, .20), rgba(121, 192, 255, .05)); border-left-color: #79c0ff; color: #d6eaff; }
.analysis-block[open] > summary { background: linear-gradient(90deg, rgba(121, 192, 255, .28), rgba(121, 192, 255, .08)); border-bottom-color: rgba(121, 192, 255, .28); }
.analysis-block > summary::before { color: #9ed2ff; }

/* Акценты чуть бледнее, чем в первом варианте. */
.schema-card > summary { background: linear-gradient(90deg, rgba(79, 179, 168, .16), rgba(79, 179, 168, .045)); }
.schema-card[open] > summary { background: linear-gradient(90deg, rgba(79, 179, 168, .23), rgba(79, 179, 168, .07)); }
.schema-subcard > summary, .series-subcard > summary { background: rgba(224, 164, 88, .09); }
.schema-subcard[open] > summary, .series-subcard[open] > summary { background: rgba(224, 164, 88, .15); }

/* Прозрачная кнопка справки в заголовке каждой карточки. */
.card-help {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.25rem;
	height: 1.25rem;
	margin-left: .35rem;
	padding: 0;
	border: 1px solid rgba(255,255,255,.22);
	border-radius: 50%;
	background: transparent;
	color: var(--muted);
	font-size: .78rem;
	font-weight: 700;
	line-height: 1;
	opacity: .7;
	cursor: pointer;
}
.card-help:hover, .card-help:focus-visible {
	color: var(--text);
	border-color: var(--accent);
	background: rgba(79,179,168,.16);
	opacity: 1;
}
.schema-card > summary .card-help,
.analysis-block > summary .card-help { margin-left: auto; }
.prop-card > summary { display: flex; align-items: center; }
.prop-card > summary .card-help { margin-left: auto; }
.series-hsummary .card-help { margin-left: .2rem; }
.series-subcard > summary { display: flex; align-items: center; gap: .2rem; }
.series-subcard > summary .card-help { margin-left: auto; }

.run-group > .head .card-help,
.series-group-head .card-help,
.task-context > summary .card-help,
.help-group > summary .card-help { margin-left: auto; }
.help-group > summary, .task-context > summary { display: flex; align-items: center; gap: .3rem; }

.help-link { display: inline-block; margin: .4rem 0 .2rem; color: #8ff0df; font-size: .85rem; text-decoration: underline; }
.help-link:hover { color: #fff; }
#help-edit-dialog label { display: flex; flex-direction: column; gap: .2rem; margin: .45rem 0; color: var(--muted); font-size: .8rem; }
#help-edit-dialog input, #help-edit-dialog textarea { width: 100%; }

/* Выбор параметров для онтологической связи — только состояние инструмента. */
.g-param.ontology-pick-a rect { stroke: #8ff0df; stroke-width: 3; }
.g-param.ontology-pick-b rect { stroke: #f0c88a; stroke-width: 3; }

.schema-visibility { flex-direction: row !important; align-items: center; gap: .35rem; font-size: .74rem; }
.schema-left-tabs { display: flex; justify-content: flex-start; flex-wrap: nowrap; overflow: visible; gap: .2rem; border-bottom: 0; }
.schema-left-tabs button { flex: 0 0 1.8rem; width: 1.8rem; height: 2rem; display: inline-flex; align-items: center; justify-content: center; padding: .1rem; }
.schema-left-tabs button svg { width: 1.1rem; height: 1.1rem; }

/* Серьёзные действия в раскладке — тот же акцент, но поверх локальных стилей. */
.schema-layout-buttons button.action-accent,
.schema-layout-buttons button.action-accent.active {
	background: rgba(148, 180, 205, .14);
	border-color: rgba(148, 180, 205, .46);
	color: #d7e8f5;
	font-weight: 600;
}
.schema-layout-buttons button.action-accent:hover,
.schema-layout-buttons button.action-accent.active:hover {
	background: rgba(148, 180, 205, .23);
	border-color: rgba(180, 211, 233, .75);
	color: #eef8ff;
}

/* Заголовки карточек анализа: заголовок слева, статус справа, «?» ещё правее. */
.analysis-block > summary > span:first-child { flex: 1 1 auto; min-width: 0; white-space: normal; }
.analysis-block > summary > span:nth-child(2) { flex: 0 0 auto; margin-left: auto; white-space: nowrap; }
.analysis-block > summary .card-help { margin-left: .25rem; }

.ontology-choose {
	min-height: 2rem;
	padding: .35rem .6rem;
	font-size: .78rem;
	font-weight: 600;
	background: rgba(148, 180, 205, .14);
	border: 1px solid rgba(148, 180, 205, .46);
	color: #d7e8f5;
}
.ontology-choose:hover { background: rgba(148, 180, 205, .23); border-color: rgba(180, 211, 233, .8); color: #eef8ff; }
.ontology-choose:disabled { opacity: .4; }

.run-model-tabs { display: flex; align-items: center; gap: .2rem; overflow-x: auto; flex: 0 0 auto; min-width: 0; padding: .3rem .8rem; background: var(--panel); border-bottom: 1px solid var(--line); }
.run-model-tabs button { flex: 0 0 auto; white-space: nowrap; padding: .22rem .4rem; font-size: .72rem; background: transparent; border: 1px solid transparent; border-radius: .3rem; color: var(--muted); }
.run-model-tabs button.active { color: var(--text); border-color: var(--accent); background: var(--panel2); }
.run-center-head #run-status { flex: 0 0 auto; margin-left: auto; }

/* Ввод числовых значений — полем, без горизонтальных слайдеров. */
.model-schema-tools input[type="number"].schema-number { width: 100%; min-width: 0; }
.run-slider input[type="number"] { flex: 0 0 7rem; width: 7rem; }
.ontology-weight-row input[type="number"] { flex: 0 0 7rem; width: 7rem; }

/* Слайдер с числом над бегунком. */
.range-bubble-wrap { position: relative; display: flex; flex-direction: column; gap: .25rem; width: 100%; padding-top: 1.55rem; }
.range-bubble-wrap input[type="range"] { width: 100%; accent-color: var(--accent2); }
.range-bubble {
	position: absolute;
	top: 0;
	left: clamp(1.45rem, var(--p, 50%), calc(100% - 1.45rem));
	transform: translateX(-50%);
	min-width: 2.8rem;
	padding: .12rem .3rem;
	border: 1px solid rgba(224,164,88,.55);
	border-radius: .25rem;
	background: var(--panel2);
	color: #f0c88a;
	font-size: .74rem;
	font-variant-numeric: tabular-nums;
	text-align: center;
	pointer-events: none;
	white-space: nowrap;
}

/* Скроллбары следуют теме браузера: тёмная/светлая. */
:root { color-scheme: light dark; --scroll-track: #141b23; --scroll-thumb: #516273; --scroll-thumb-hover: #6d8194; }
* { scrollbar-width: thin; scrollbar-color: var(--scroll-thumb) var(--scroll-track); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--scroll-track); }
::-webkit-scrollbar-thumb { background: var(--scroll-thumb); border-radius: 6px; border: 2px solid var(--scroll-track); }
::-webkit-scrollbar-thumb:hover { background: var(--scroll-thumb-hover); }
::-webkit-scrollbar-corner { background: var(--scroll-track); }
@media (prefers-color-scheme: light) {
	:root { --scroll-track: #e5eaef; --scroll-thumb: #9aa6b2; --scroll-thumb-hover: #7f8c9b; }
}

/* Прогон внутри трёхпанельного экрана модели. */
#model-left.run-host .model-side-head { display: none; }
#model-left-content.run-host { padding: 0; display: flex; flex-direction: column; overflow: hidden; }
#model-left-content.run-host #run-left { flex: 1 1 auto; width: 100%; max-height: none; border: 0; border-radius: 0; }
#model-content.run-host { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
#model-content.run-host #run-center { flex: 1 1 auto; width: 100%; min-width: 0; }
#tab-props.run-host { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
#tab-props.run-host #run-right { flex: 1 1 auto; width: 100%; max-height: none; border: 0; border-radius: 0; }

/* При встроенном прогоне число шага уже видно в поле. */
#run-center #run-step-label { display: none; }
#run-status { display: none !important; }

/* Онтологические связи: по умолчанию как узлы, толстые и сплошные. */
.ontology-edge path { stroke-linecap: round; }
.ontology-edge.sel path,
.ontology-edge.selected path { stroke: #ffffff !important; stroke-dasharray: 7 4 !important; }
.ontology-edge.sel text,
.ontology-edge.selected text { fill: #ffffff !important; }
.ontology-edge.sel circle,
.ontology-edge.selected circle { stroke: #ffffff !important; stroke-dasharray: 7 4 !important; }
.schema-wrap.has-sel .ontology-edge:not(.connect):not(.near):not(.far) { opacity: .03; }
.ontology-edge.connect { opacity: 1; }
.ontology-edge.near { opacity: .35; }
.ontology-edge.far { opacity: .12; }

/* «Синтез» в шапке — кнопка, а не просто закладка. */
button.header-synth {
	margin-left: .3rem;
	padding: .3rem .75rem;
	border: 1px solid rgba(148, 180, 205, .45);
	border-radius: .4rem;
	background: rgba(148, 180, 205, .11);
	color: #d7e8f5;
	font-weight: 600;
}
button.header-synth:hover {
	background: rgba(148, 180, 205, .2);
	border-color: rgba(180, 211, 233, .7);
}
button.header-synth.active {
	background: rgba(148, 180, 205, .24);
	border-color: var(--accent);
	color: #fff;
}

/* Синтез: слева ряды, в центре ход, справа оптимизатор. */
#tab-opt { overflow: hidden; display: flex; flex-direction: column; padding: .5rem; }
.opt-layout { display: flex; gap: .6rem; flex: 1 1 auto; min-height: 0; align-items: stretch; }
.opt-side { flex: 0 0 28%; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: .5rem; }
.opt-side.opt-right { flex-basis: 27%; }
.opt-center { flex: 1 1 auto; min-width: 0; overflow: auto; display: flex; flex-direction: column; gap: .5rem; }
.opt-layout .panel { margin: 0; }
@media (max-width: 900px) {
	#tab-opt { overflow: auto; }
	.opt-layout { flex-direction: column; height: auto; }
	.opt-side, .opt-side.opt-right, .opt-center { flex: 0 0 auto; width: 100%; max-height: none; }
}

/* Узкая правая панель синтеза: подписи над полями. */
.opt-right .fields { display: block; }
.opt-right .fields > label { display: block; margin: .45rem 0 .2rem; }
.opt-right .fields > div { margin-bottom: .3rem; }

.opt-layout .opt-card { margin: 0; }
.opt-layout .opt-card > summary { font-size: .8rem; }
.opt-layout .opt-card .schema-card-body { padding-top: .45rem; }

/* Синтез внутри трёхпанельного экрана модели. */
#model-left.opt-host .model-side-head { display: none; }
#model-left-content.opt-host, #model-content.opt-host, #tab-props.opt-host { padding: 0; overflow: auto; display: flex; flex-direction: column; }
#model-left-content.opt-host > .opt-side,
#tab-props.opt-host > .opt-side.opt-right { flex: 1 1 auto; width: 100%; max-height: none; border: 0; border-radius: 0; }
#model-content.opt-host > .opt-center { flex: 1 1 auto; width: 100%; min-height: 0; overflow: auto; }

.ontology-picked-names { display: flex; align-items: center; gap: .35rem; font-size: .76rem; color: var(--text); min-width: 0; }
.ontology-picked-names span:first-child, .ontology-picked-names span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ontology-picked-arrow { color: var(--muted); flex: 0 0 auto; }
.ontology-choose { min-width: 2.2rem; display: inline-flex; align-items: center; justify-content: center; }
.ontology-choose svg { width: 1.1rem; height: 1.1rem; }

.factor-list { display: flex; flex-direction: column; gap: .15rem; max-height: 20rem; overflow: auto; }
.factor-list-row { display: flex; align-items: center; justify-content: space-between; gap: .4rem; width: 100%; padding: .28rem .35rem; border: 1px solid transparent; border-radius: .3rem; background: transparent; color: var(--text); text-align: left; font-size: .74rem; }
.factor-list-row span:last-child { color: var(--muted); font-size: .7rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.factor-list-row:hover { background: var(--panel2); border-color: var(--line); }
.factor-list-row.sel { border-color: var(--accent); background: var(--panel2); }

/* Обводки карточек — еле заметные; акцент остаётся в заголовках. */
.schema-card,
.schema-subcard,
.analysis-block,
.prop-card,
.opt-card,
.series-subcard { border-color: rgba(255, 255, 255, .065); }
.schema-card[open],
.analysis-block[open],
.prop-card[open],
.opt-card[open] { border-color: rgba(255, 255, 255, .12); }
.series-hcard:not(.problem):not(.highlight) { border-color: rgba(255, 255, 255, .065); }

/* Верх модели: компактный зазор до полотна. */
@media (min-width: 901px) {
	.model-center-head { padding-bottom: .05rem; }
	.model-content { padding-top: .12rem; }
	#model-content .schema-panel { padding-top: .1rem; }
	#model-content .schema-wrap { padding-top: .18rem; }
}

/* Единый цвет заголовков всех карточек. */
.analysis-block { border-color: rgba(79, 179, 168, .38); }
.analysis-block[open] { border-color: rgba(79, 179, 168, .7); }
.analysis-block > summary {
	background: linear-gradient(90deg, rgba(79, 179, 168, .16), rgba(79, 179, 168, .045));
	border-left-color: var(--accent);
	color: #929da6;
}
.analysis-block[open] > summary {
	background: linear-gradient(90deg, rgba(79, 179, 168, .23), rgba(79, 179, 168, .07));
	border-bottom-color: rgba(79, 179, 168, .28);
}
.analysis-block > summary::before { color: #8ff0df; }
.schema-subcard > summary,
.series-subcard > summary {
	background: linear-gradient(90deg, rgba(79, 179, 168, .12), rgba(79, 179, 168, .04));
	border-left-color: var(--accent);
	color: #929da6;
}
.schema-subcard[open] > summary,
.series-subcard[open] > summary {
	background: linear-gradient(90deg, rgba(79, 179, 168, .19), rgba(79, 179, 168, .06));
	border-bottom-color: rgba(79, 179, 168, .22);
}
.series-hsummary {
	background: linear-gradient(90deg, rgba(79, 179, 168, .16), rgba(79, 179, 168, .045));
	border-left: 3px solid var(--accent);
}

.schema-visibility-top { padding: .2rem .1rem .25rem; margin-bottom: .1rem; }

.reactor-single-select select { width: 100%; }
.reactor-top-head .danger.small { padding: .25rem .45rem; font-size: .78rem; }

.ontology-gesture { stroke: #ffd60a; stroke-width: 2; stroke-dasharray: 6 4; pointer-events: none; }
.ontology-gesture.cut { stroke: #ff073a; }
.ontology-edge.cut-preview path { stroke: #ff073a !important; opacity: 1 !important; }
.ontology-edge.cut-preview circle { stroke: #ff073a !important; opacity: 1 !important; }
.ontology-edge.cut-preview text { fill: #ff073a !important; opacity: 1 !important; }

.confirm-list { display: flex; flex-direction: column; gap: .2rem; margin: .35rem 0; max-height: 14rem; overflow: auto; }
.confirm-list div { padding: .2rem .35rem; border-radius: .25rem; background: var(--panel2); color: var(--text); font-size: .8rem; }

.schema-cut-tip {
	position: fixed;
	z-index: 30;
	max-width: min(24rem, 70vw);
	padding: .4rem .5rem;
	background: var(--panel2);
	border: 1px solid #ff073a;
	border-radius: .35rem;
	box-shadow: 0 6px 20px rgba(0, 0, 0, .35);
	color: var(--text);
	font-size: .75rem;
	line-height: 1.25;
	pointer-events: none;
}
.schema-cut-tip strong { display: block; margin-bottom: .2rem; color: #ff6b7d; }

.ontology-handle-line { stroke: #e9f5f2; stroke-width: 1; stroke-dasharray: 3 3; opacity: .65; pointer-events: none; }
.ontology-handle { fill: #0f1419; stroke: #ffffff; stroke-width: 2; cursor: grab; }
.ontology-handle:hover { fill: #ffffff; }

.schema-hot-menu {
	position: fixed;
	z-index: 40;
	min-width: 11rem;
	padding: .35rem;
	background: var(--panel);
	border: 1px solid var(--accent);
	border-radius: .5rem;
	box-shadow: 0 10px 28px rgba(0, 0, 0, .4);
}
.schema-hot-title { padding: .15rem .4rem .3rem; color: var(--muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .06em; }
.schema-hot-subtitle { padding: .1rem .4rem .2rem; color: var(--muted); font-size: .64rem; opacity: .75; }
.schema-hot-menu button:disabled { opacity: .35; cursor: not-allowed; }
.schema-hot-menu button { display: block; width: 100%; text-align: left; margin: .1rem 0; }

.schema-hot-menu { max-height: min(70vh, 28rem); overflow: auto; }
.g-param.group-selected rect, .g-reactor.group-selected rect { stroke: #ffffff; stroke-width: 2.4; stroke-dasharray: none; }
.schema-wrap.group-move-mode .graph-node { cursor: move; }
.group-lasso { position: fixed; inset: 0; z-index: 35; width: 100vw; height: 100vh; pointer-events: none; }
.group-lasso path { fill: none; stroke: #8ff0df; stroke-width: 1.5; stroke-dasharray: 5 4; }

.schema-hot-trigger {
	position: fixed; z-index: 60;
	width: 2.1rem; height: 2.1rem; border-radius: 50%;
	border: 1px solid rgba(143, 240, 223, .55);
	background: rgba(15, 20, 25, .18); color: var(--text);
	font-size: 1rem; line-height: 1; cursor: crosshair;
	backdrop-filter: blur(2px);
}
.schema-hot-trigger::before,
.schema-hot-trigger::after {
	content: ''; position: absolute; pointer-events: none;
	background: rgba(143, 240, 223, .55);
}
.schema-hot-trigger::before { left: 50%; top: 12%; width: 1px; height: 76%; transform: translateX(-50%); }
.schema-hot-trigger::after { top: 50%; left: 12%; height: 1px; width: 76%; transform: translateY(-50%); }

.model-center-head { position: relative; }
.model-mode-badge {
	position: absolute; left: 50%; top: 0; bottom: 0;
	transform: translateX(-50%);
	display: flex; align-items: center;
	padding: 0 .6rem;
	background: #1746ff; color: #ffd60a;
	font-size: .68rem; font-weight: 800; letter-spacing: .08em;
	text-transform: uppercase; white-space: nowrap;
	border-radius: .25rem; z-index: 1;
}

.detail-actions .detail-delete,
.reactor-delete {
	margin-left: auto;
	background: #d51b32;
	border-color: #ff334f;
	color: #fff;
	font-weight: 700;
}
.detail-actions .detail-delete:hover,
.reactor-delete:hover { background: #f02542; }

@keyframes ontology-edge-flash {
	0%, 100% { opacity: 1; filter: drop-shadow(0 0 2px #ffd60a); }
	50% { opacity: .2; filter: drop-shadow(0 0 9px #ffd60a); }
}
.ontology-edge.edge-flash { animation: ontology-edge-flash .45s ease-in-out 3; }

.orphan-badge {
	display: inline-block; margin-left: .3rem; padding: .05rem .3rem;
	border: 1px solid #d98a2b; border-radius: .25rem;
	color: #ffcb7a; background: rgba(217, 138, 43, .12);
	font-size: .58rem; font-weight: 700; letter-spacing: .04em;
	vertical-align: middle;
}

.reactor-chip.is-orphan, .reactor-item.is-orphan { border-color: #d98a2b; }
.orphan-mini { color: #ffcb7a; font-size: .55rem; margin-left: .15rem; }

.model-table tr.orphan-selected td { background: rgba(217, 138, 43, .14); }
.orphan-selected-mark { color: #ffcb7a; font-size: .58rem; }
.schema-card-body > .toolbar { flex-wrap: wrap; }

.param-name-row { margin: 0 0 .55rem; }
.param-name-row input { width: 100%; font-size: 1rem; font-weight: 700; }

.classifier-tree { max-height: min(52vh, 26rem); overflow: auto; margin: .4rem 0; padding: .3rem; border: 1px solid var(--line); border-radius: .35rem; }
.classifier-tree details { margin-left: .8rem; }
.classifier-tree summary { cursor: pointer; padding: .15rem 0; color: var(--text); }
.classifier-leaf { display: flex; align-items: center; gap: .35rem; padding: .12rem .3rem; font-size: .8rem; }
.classifier-node > summary { font-weight: 600; }
.classifier-admin-row { display: grid; grid-template-columns: auto minmax(6rem, 1fr) minmax(6rem, 1fr) minmax(6rem, 1fr) minmax(6rem, 1fr) auto auto auto auto; gap: .2rem; align-items: center; padding: .15rem .2rem; }
.classifier-admin-row button { padding: .15rem .3rem; font-size: .7rem; }
.classifier-admin-row input, .classifier-admin-row select { min-width: 0; font-size: .72rem; }
.classifier-drag { cursor: grab; color: var(--muted); }
.classifier-selected { display: flex; flex-direction: column; gap: .25rem; }
.classifier-row { display: grid; grid-template-columns: minmax(5rem, 1fr) minmax(5rem, 1.2fr) auto auto; gap: .3rem; align-items: center; font-size: .75rem; }
.classifier-row output { min-width: 2.2rem; text-align: right; color: #d9a05b; }
.classifier-row input[type="range"] { accent-color: #c98a4b; }
.classifier-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#classifier-pick-dialog, #classifier-admin-dialog { width: min(54rem, calc(100vw - 2rem)); }

.ontology-visual-fields { display: grid; grid-template-columns: 1fr 1fr; gap: .25rem .4rem; margin-top: .3rem; }
.ontology-visual-fields label { font-size: .72rem; color: var(--muted); }
.ontology-visual-fields input[type="color"] { width: 100%; height: 1.7rem; padding: .1rem; }

.ontology-color-stack { display: flex; flex-direction: column; gap: .25rem; margin-top: .35rem; }
.ontology-color-stack label { display: flex; align-items: center; justify-content: space-between; gap: .4rem; font-size: .72rem; color: var(--muted); }

/* Все ползунки — тёплый рыже-коричневый, не голубой. */
input[type="range"],
.range-bubble-wrap input[type="range"] { accent-color: #c98a4b; }

/* Единые ползунки: бегунок доходит до краёв, значение над ним. */
input[type="range"] {
	--thumb: 1rem;
	-webkit-appearance: none;
	appearance: none;
	width: 100%;
	height: 1.55rem;
	margin: 0;
	background: transparent;
	accent-color: #c98a4b;
}
input[type="range"]::-webkit-slider-runnable-track {
	width: calc(100% - var(--thumb));
	height: 4px;
	margin-left: calc(var(--thumb) / 2);
	border-radius: 2px;
	background: rgba(201, 138, 75, .35);
}
input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none;
	width: var(--thumb);
	height: var(--thumb);
	margin-top: calc((4px - var(--thumb)) / 2);
	border-radius: 50%;
	border: 1px solid #f0c88a;
	background: #c98a4b;
	box-shadow: 0 0 0 2px rgba(201, 138, 75, .18);
}
input[type="range"]::-moz-range-track {
	width: calc(100% - var(--thumb));
	height: 4px;
	margin-left: calc(var(--thumb) / 2);
	border-radius: 2px;
	background: rgba(201, 138, 75, .35);
}
input[type="range"]::-moz-range-thumb {
	width: var(--thumb);
	height: var(--thumb);
	border-radius: 50%;
	border: 1px solid #f0c88a;
	background: #c98a4b;
	box-shadow: 0 0 0 2px rgba(201, 138, 75, .18);
}
.range-live-wrap { position: relative; display: block; width: 100%; padding-top: 1.15rem; }
.range-live-value {
	position: absolute; top: 0; left: 0;
	transform: translateX(-50%);
	min-width: 2.4rem; padding: .08rem .28rem;
	border: 1px solid rgba(224, 164, 88, .5);
	border-radius: .25rem;
	background: var(--panel2); color: #f0c88a;
	font-size: .7rem; font-variant-numeric: tabular-nums; text-align: center;
	pointer-events: none; white-space: nowrap;
}
.range-bubble-wrap input[type="range"] { width: 100%; }
.classifier-row > output { display: none; }

.run-slider .range-live-wrap, .series-controls .range-live-wrap { flex: 1 1 auto; min-width: 0; }

/* Firefox: та же сплошная дорожка без отдельной заливки прогресса. */
input[type="range"]::-moz-range-progress { background: transparent; }
input[type="range"]::-moz-focus-outer { border: 0; }

/* Полностью кастомный ползунок: одинаковый в Chrome и Firefox. */
.range-live-wrap, .range-bubble-wrap { position: relative; min-height: 2.7rem; }
.range-live-wrap { display: block; padding-top: 1.15rem; }
.range-visual { position: absolute; left: 0; right: 0; bottom: 0; height: 1.55rem; pointer-events: none; }
.range-track { position: absolute; left: 8px; right: 8px; top: 50%; height: 4px; transform: translateY(-50%); border-radius: 2px; background: rgba(201, 138, 75, .35); }
.range-fill { position: absolute; left: 8px; top: 50%; height: 4px; transform: translateY(-50%); border-radius: 2px; background: #c98a4b; }
.range-thumb { position: absolute; top: 50%; width: 16px; height: 16px; transform: translate(-50%, -50%); border-radius: 50%; border: 1px solid #f0c88a; background: #c98a4b; box-shadow: 0 0 0 2px rgba(201, 138, 75, .18); }
input[type="range"].range-native-hidden {
	position: absolute; left: 0; right: 0; bottom: 0;
	width: 100%; height: 1.55rem; margin: 0; padding: 0;
	opacity: 0; z-index: 3; cursor: pointer;
}

.assistant-actions { display: flex; justify-content: flex-end; margin-bottom: .3rem; }
.assistant-change { border: 1px solid var(--line); border-radius: .4rem; padding: 0; margin: .35rem 0; background: rgba(126,176,168,.04); }
.assistant-change > summary, .assistant-proposal > summary { display: flex; align-items: center; gap: .3rem; padding: .42rem .5rem; cursor: pointer; list-style: none; font-size: .72rem; }
.assistant-change > summary::-webkit-details-marker, .assistant-proposal > summary::-webkit-details-marker { display: none; }
.assistant-change > summary b, .assistant-proposal > summary b { flex: 1 1 auto; }
.assistant-change > .schema-card-body, .assistant-proposal > .schema-card-body { padding: .2rem .5rem .5rem; }
.assistant-change-head { display: flex; justify-content: space-between; gap: .4rem; font-size: .75rem; }
.assistant-change-head span { color: var(--muted); font-size: .65rem; }
.assistant-report { font-size: .72rem; color: var(--muted); line-height: 1.35; }
.assistant-ops { display: flex; flex-wrap: wrap; gap: .2rem; }
.assistant-op { font-size: .65rem; padding: .12rem .3rem; }

.mcp-token-value { display: block; margin-top: .3rem; padding: .35rem; border: 1px solid var(--line); border-radius: .3rem; color: #ffd60a; font-size: .65rem; word-break: break-all; }

.schema-wrap.group-has-selection .graph-node:not(.group-selected) { opacity: .16; }
.schema-wrap.group-has-selection .g-edge,
.schema-wrap.group-has-selection .ontology-edge { opacity: .08; }
.schema-wrap.group-has-selection .graph-node.group-selected { opacity: 1 !important; }

.mcp-token-list { display: flex; flex-direction: column; gap: .2rem; margin-top: .35rem; }
.mcp-token-row { display: grid; grid-template-columns: 1fr auto auto; gap: .3rem; align-items: center; font-size: .68rem; }
.mcp-token-row code { font-size: .58rem; word-break: break-all; color: #ffd60a; }

.assistant-diff { display: flex; flex-direction: column; gap: .1rem; padding: .25rem .35rem; border-left: 2px solid rgba(255, 214, 10, .5); background: rgba(255, 214, 10, .04); }
.assistant-diff-row { font-size: .68rem; color: #ffd60a; }

#mcp-preview-dialog { width: min(60rem, calc(100vw - 2rem)); }
#mcp-preview-ops { width: 100%; font-family: ui-monospace, monospace; font-size: .72rem; }
.mcp-preview-result { max-height: 35vh; overflow: auto; padding: .4rem; border: 1px solid var(--line); border-radius: .3rem; font-size: .68rem; white-space: pre-wrap; }

.classifier-add-row { justify-content: flex-end; }
.classifier-add-row button { margin-left: auto; }

.schema-hot-menu.radial { width: 0; height: 0; padding: 0; border: 0; background: transparent; overflow: visible; }
.schema-hot-menu.radial .schema-hot-title, .schema-hot-menu.radial .schema-hot-subtitle { display: none; }
.schema-hot-menu.radial > button[data-hot-action] { position: absolute; width: auto; min-width: 2.9rem; max-width: 6rem; min-height: 1.7rem; padding: .15rem .28rem; font-size: .72rem; line-height: 1.12; white-space: nowrap; z-index: 2; }
.schema-hot-menu.radial > button[data-hot-action]::before { content: attr(data-hot-number); display: inline-block; min-width: 1rem; color: #ffd60a; font-size: .65rem; margin-right: .2rem; }
.schema-hot-menu.radial > button.hot-outer { display: none; }
.schema-hot-menu.radial > button.hot-outer::before { content: ''; }
.schema-hot-menu.radial .hot-last { position: absolute; z-index: 3; width: 2.5rem; height: 2.5rem; border-radius: 50%; left: calc(50% - 2.2rem) !important; top: 50% !important; transform: translate(-50%, -50%) !important; }
.schema-hot-menu.radial .hot-submenu { left: 50% !important; top: 50% !important; transform: translate(calc(-50% + 100px), -50%) !important; width: auto !important; max-width: 5rem; white-space: nowrap; }

.mcp-rotation-row { align-items: center; justify-content: flex-start; }
.mcp-rotation-row label { display: flex; gap: .3rem; align-items: center; font-size: .7rem; }
.mcp-rotation-row input { width: 4.5rem; }

#pattern-edit-dialog { width: min(48rem, calc(100vw - 2rem)); }
.pattern-edit-sensors-head { display: flex; justify-content: space-between; align-items: center; margin: .4rem 0 .2rem; font-size: .75rem; }
.pattern-edit-sensors { display: flex; flex-direction: column; gap: .2rem; max-height: 30vh; overflow: auto; }
.pattern-sensor-row { display: grid; grid-template-columns: minmax(7rem, 1fr) 3.5rem 3.5rem 3.5rem 3.5rem 3.5rem 3.5rem 5rem auto; gap: .2rem; align-items: center; }
.pattern-sensor-row select, .pattern-sensor-row input { min-width: 0; }

.schema-hot-menu.radial::before {
	content: '';
	position: absolute;
	left: 50%;
	top: 50%;
	width: 420px;
	height: 420px;
	transform: translate(-50%, -50%);
	border-radius: 50%;
	border: 1px solid rgba(255, 255, 255, .42);
	background: rgba(255, 255, 255, .10);
	box-shadow: 0 0 0 1px rgba(0, 0, 0, .35), 0 12px 40px rgba(0, 0, 0, .45);
	pointer-events: none;
	z-index: 0;
}

.schema-hot-menu.radial > button.hot-submenu { position: absolute; z-index: 4; font-size: .62rem; padding: .15rem .4rem; }
.schema-hot-menu.radial .hot-icon { display: inline-flex; align-items: center; justify-content: center; width: 1rem; height: 1rem; margin-right: .22rem; }
.schema-hot-menu.radial .hot-icon svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.schema-hot-menu.radial.mode-icons > button[data-hot-action] { width: 3.8025rem; min-width: 3.8025rem; height: 3.8025rem; min-height: 3.8025rem; padding: 0; border-radius: 50%; }
.schema-hot-menu.radial.mode-icons .hot-label { display: none; }
.schema-hot-menu.radial.mode-icons .hot-icon { margin: 0; }
.schema-hot-menu.radial.mode-labels .hot-icon { display: none; }
.schema-hot-menu.radial.links-open > button[data-hot-action]:not(.hot-outer) { display: none; }
.schema-hot-menu.radial.links-open > button.hot-outer { display: block; }
.schema-hot-menu.radial.links-open > button.hot-outer[data-hot-action="link"] { left: 50% !important; top: 50% !important; transform: translate(calc(-50% - 150px), -50%) !important; }
.schema-hot-menu.radial.links-open > button.hot-outer[data-hot-action="unlink"] { left: 50% !important; top: 50% !important; transform: translate(calc(-50% + 150px), -50%) !important; }

.schema-hot-menu.radial::after {
	content: '';
	position: absolute;
	left: 50%;
	top: 50%;
	width: 420px;
	height: 420px;
	transform: translate(-50%, -50%);
	border-radius: 50%;
	background: conic-gradient(from 0deg,
		transparent 0deg 20deg,
		rgba(255, 255, 255, .09) 20deg 70deg,
		transparent 70deg 110deg,
		rgba(255, 255, 255, .09) 110deg 160deg,
		transparent 160deg 360deg);
	pointer-events: none;
	z-index: 0;
}

/* Пульт по референсу: кольцо с прозрачной серединой и кружки команд. */
.schema-hot-menu.radial::before {
	width: 280px;
	height: 280px;
	border: 0;
	background: var(--pult-ring-bg, rgba(0, 0, 0, .25));
	box-shadow: 0 12px 40px rgba(0, 0, 0, .35);
	-webkit-backdrop-filter: blur(var(--pult-ring-blur, 6px));
	backdrop-filter: blur(var(--pult-ring-blur, 6px));
	-webkit-mask: radial-gradient(circle at center, transparent 0 62px, #000 63px);
	mask: radial-gradient(circle at center, transparent 0 40px, #000 41px);
}
.schema-hot-menu.radial::after { display: none; }
.schema-hot-menu.radial > button[data-hot-action] {
	width: 27.378rem;
	min-width: 27.378rem;
	height: 27.378rem;
	min-height: 27.378rem;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(43, 50, 58, .88);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	color: #ffd60a;
	font-size: .5rem;
	line-height: 1;
	overflow: visible;
}
.schema-hot-menu.radial > button[data-hot-action]::before {
	content: attr(data-hot-number);
	position: absolute;
	left: 50%;
	top: 100%;
	bottom: auto;
	transform: translateX(-50%);
	min-width: 0;
	margin: 0;
	color: #fff;
	font-size: .55rem;
	line-height: 1;
	font-weight: 600;
}
.schema-hot-menu.radial > button.hot-outer {
	width: 2.5rem;
	min-width: 2.5rem;
	height: 2.5rem;
	min-height: 2.5rem;
	background: rgba(43, 50, 58, .92);
}
.schema-hot-menu.radial > button.hot-outer::before { content: ''; }
.schema-hot-menu.radial .hot-icon { width: 2.457rem; height: 2.457rem; margin: 0; }
.schema-hot-menu.radial .hot-icon svg { width: 2.457rem; height: 2.457rem; stroke-width: 1.1; }
.schema-hot-menu.radial .hot-label {
	margin-top: .1rem;
	max-width: 3.3rem;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: #f3f4f6;
	font-size: .52rem;
	font-weight: 500;
}
.schema-hot-menu.radial.mode-icons .hot-label { display: none; }
.schema-hot-menu.radial.mode-icons .hot-icon { margin: 0; }
.schema-hot-menu.radial.mode-labels .hot-icon { display: none; }
.schema-hot-menu.radial.mode-labels .hot-label { margin: 0; font-size: .62rem; max-width: 3.05rem; white-space: normal; text-align: center; }

.assistant-proposal { border: 1px solid var(--line); border-radius: .4rem; padding: 0; margin: .3rem 0; background: rgba(255,255,255,.03); font-size: .7rem; }
.assistant-proposal > div:first-child { display: flex; flex-direction: column; gap: .15rem; }
.assistant-proposal b { color: #ffd60a; font-weight: 600; }
.assistant-proposal span { color: var(--muted); }

.assistant-proposal.is-rejected { opacity: .55; }
.assistant-proposal label { display: flex; flex-direction: column; gap: .15rem; cursor: pointer; }
.assistant-proposal input[type="checkbox"] { accent-color: #c98a4b; }

.assistant-change-check { display: flex; gap: .3rem; align-items: center; font-weight: 600; font-size: .72rem; cursor: pointer; }
.assistant-change-check input { accent-color: #c98a4b; }
.assistant-proposal.is-accepted { border-color: rgba(255, 214, 10, .7); background: rgba(255, 214, 10, .06); }
.assistant-proposal.is-accepted b { color: #ffd60a; }

.assistant-icon-group { display: inline-flex; align-items: center; }
.assistant-icon-group button { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 1.8rem; padding: .15rem; border-radius: 0; }
.assistant-icon-group button:first-child { border-radius: .3rem 0 0 .3rem; }
.assistant-icon-group button:last-child { border-radius: 0 .3rem .3rem 0; }
.assistant-icon-group svg { width: 1rem; height: 1rem; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }

.assistant-mode { display: inline-flex; align-items: center; gap: .25rem; font-size: .65rem; color: var(--muted); }
.assistant-mode select { font-size: .65rem; padding: .1rem .2rem; }

.assistant-count { margin-right: auto; font-size: .66rem; color: #ffd60a; }

.version-card { margin: .25rem 0; }
.version-card > summary { display: flex; align-items: center; gap: .35rem; cursor: pointer; list-style: none; padding: .35rem .4rem; font-size: .7rem; }
.version-card > summary::-webkit-details-marker { display: none; }
.version-card .version-title { color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.assistant-ops-list { list-style: none; margin: .2rem 0; padding: 0; display: flex; flex-direction: column; gap: .15rem; }
.assistant-ops-list .assistant-op { display: block; width: 100%; text-align: left; background: transparent; border: 0; padding: .12rem .2rem; color: var(--text); }
.assistant-ops-list .assistant-op:hover { background: rgba(255,255,255,.06); }

.assistant-op-cards { display: flex; flex-direction: column; gap: .25rem; margin-top: .25rem; }
.assistant-op-card { display: flex; align-items: center; gap: .4rem; padding: .35rem; border: 1px solid var(--line); border-radius: .35rem; background: rgba(255,255,255,.03); }
.assistant-op-card > div { flex: 1 1 auto; min-width: 0; }
.assistant-op-card b { display: block; font-size: .7rem; color: var(--text); }
.assistant-op-card p { margin: .15rem 0 0; font-size: .65rem; color: var(--muted); }
.assistant-op-card button { white-space: nowrap; font-size: .62rem; }

.mcp-guide { max-height: 70vh; overflow: auto; white-space: pre-wrap; word-break: break-word; padding: .7rem; margin: 0; border: 1px solid var(--line); border-radius: .4rem; background: rgba(0,0,0,.18); color: var(--text); font: .72rem/1.45 ui-monospace, SFMono-Regular, Consolas, monospace; }

.mcp-token-status { font-size: .7rem; color: var(--muted); margin-bottom: .3rem; }
.mcp-token-status.on { color: #7ee787; }
.mcp-token-created { border-color: #7ee787 !important; color: #b7f7c1 !important; box-shadow: 0 0 0 1px rgba(126, 231, 135, .25); }

.assistant-op-card .assistant-show { width: 1.7rem; min-width: 1.7rem; height: 1.7rem; padding: 0; font-size: .9rem; line-height: 1; }

.ontology-audit-buttons { display: flex; flex-wrap: wrap; gap: .25rem; }
.ontology-audit-buttons button { font-size: .7rem; padding: .28rem .35rem; }
.ontology-audit-buttons button span { color: #ffd60a; }
.ontology-audit-buttons button.active { border-color: #fff; background: rgba(255,255,255,.1); }

/* Подсказки карточек живут в контекстной справке по кнопке «?». */
.schema-card .study-hint,
.schema-subcard .study-hint,
.analysis-block .study-hint,
.model-schema-tools .study-hint,
.model-details .hint,
.model-details .study-hint { display: none !important; }

.help-context-hints { margin-top: .6rem; padding: .5rem .6rem; border-left: 2px solid var(--accent); background: rgba(79,179,166,.06); }
.help-context-hints h4 { margin: 0 0 .3rem; font-size: .78rem; color: var(--muted); }
.help-context-hints p { margin: .25rem 0; font-size: .8rem; }

.calculation-list { display: flex; flex-direction: column; gap: .15rem; margin: .3rem 0; }
.calculation-row { display: flex; justify-content: space-between; gap: .5rem; font-size: .76rem; border-bottom: 1px dashed var(--line); padding: .12rem 0; }
.calculation-row b { color: var(--accent); font-weight: 600; }

.color-mode-radios { display: flex; flex-direction: column; gap: .2rem; margin: .3rem 0; }
.color-mode-radios label { font-size: .78rem; color: var(--text); }
.color-stop-list { display: flex; flex-direction: column; gap: .25rem; margin-top: .25rem; }
.color-stop-row { display: grid; grid-template-columns: 1fr 1fr; gap: .3rem; align-items: end; }
.color-stop-row label { display: flex; flex-direction: column; gap: .1rem; font-size: .68rem; color: var(--muted); }
.color-stop-row input[type="color"] { width: 100%; height: 1.7rem; padding: 0; }
.color-stop-row input[type="number"] { width: 100%; }

.color-mode-card { margin-top: .3rem; }
.color-mode-card > summary label { display: inline-flex; align-items: center; gap: .3rem; cursor: pointer; }
.color-stop-row.with-edge { grid-template-columns: 1fr 1fr; }

.color-mode-card > summary { display: flex; align-items: center; gap: .3rem; white-space: nowrap; list-style: none; overflow: hidden; }
.color-mode-card > summary::-webkit-details-marker { display: none; }
.color-mode-card > summary span { overflow: hidden; text-overflow: ellipsis; }
.color-mode-card > summary label { display: inline-flex; align-items: center; gap: .25rem; margin: 0; }
.color-stop-scroll { width: 100%; overflow-x: auto; }
.color-stop-table { width: 100%; min-width: 17rem; border-collapse: collapse; table-layout: fixed; margin-top: .25rem; }
.color-stop-table th, .color-stop-table td { padding: .12rem .15rem; font-size: .66rem; vertical-align: middle; }
.color-stop-table thead th { color: var(--muted); font-weight: 500; text-align: left; }
.color-stop-table tbody th { color: var(--muted); font-weight: 500; width: 4.6rem; white-space: nowrap; }
.color-stop-table input[type="number"] { width: 100%; min-width: 0; padding: .18rem .2rem; font-size: .68rem; text-align: right; }
.color-stop-table input[type="color"] { width: 1.6rem; height: 1.6rem; padding: 0; }
.color-stop-table td:nth-child(2) { width: 4.2rem; }
.color-stop-table td:nth-child(3) { width: 2rem; }
.color-stop-table.with-edge td:nth-child(4) { width: 4rem; }

.ontology-audit-result { border: 1px solid var(--line); border-radius: .35rem; padding: .35rem .4rem; margin: .3rem 0; font-size: .72rem; }
.ontology-audit-result > div { display: flex; justify-content: space-between; gap: .4rem; }
.ontology-audit-result ul { margin: .25rem 0 0; padding-left: 1rem; max-height: 9rem; overflow: auto; }
.ontology-audit-result li { margin: .08rem 0; }

.impact-tabs { display: flex; gap: .2rem; border-bottom: 1px solid var(--line); margin-bottom: .35rem; }
.impact-tabs button { background: transparent; border: 0; color: var(--muted); padding: .25rem .4rem; font-size: .78rem; }
.impact-tabs button.active { color: var(--text); border-bottom: 2px solid var(--accent); }
.impact-factor-list { max-height: 10rem; overflow: auto; display: flex; flex-direction: column; gap: .12rem; border: 1px solid var(--line); border-radius: .35rem; padding: .3rem; margin: .25rem 0; }
.impact-factor-list label { font-size: .74rem; }
.impact-controls { display: grid; grid-template-columns: 1fr 1fr; gap: .3rem; align-items: end; }
.impact-controls label { display: flex; flex-direction: column; gap: .12rem; font-size: .7rem; color: var(--muted); }
.impact-controls .schema-visibility { flex-direction: row; align-items: center; }
.impact-result { border: 1px solid var(--line); border-radius: .35rem; margin-top: .35rem; overflow-x: auto; }
.impact-result-head, .impact-result-row { display: grid; grid-template-columns: minmax(7rem, 1fr); gap: .2rem; min-width: max-content; }
.impact-result-head span, .impact-result-row span, .impact-result-row b { padding: .15rem .25rem; font-size: .7rem; border-bottom: 1px solid var(--line); }
.impact-result-head span { color: var(--muted); }

.impact-color-row { display: grid; grid-template-columns: 1fr 1fr; gap: .3rem; margin: .3rem 0; }
.impact-color-row label { display: flex; flex-direction: column; gap: .12rem; font-size: .7rem; color: var(--muted); }
.impact-color-row input[type="color"] { width: 100%; height: 1.8rem; padding: 0; }

/* Кнопка действия: красный треугольник справа только у текстовых кнопок. */
button:not(.card-help):not(.header-icon):not(.model-menu-toggle):not(.schema-hot-trigger):not(.ontology-choose):not(.assistant-show):not(:where(.tabs, .subtabs, .home-tabs, .main-tabs, .model-view-tabs, .reactor-tabs, .run-model-tabs, .schema-left-tabs, .aside-tabs, #run-right-tabs, #admin-tabs) button):not(:has(svg)):not(:has(img)) {
	position: relative;
}
button:not(.card-help):not(.header-icon):not(.model-menu-toggle):not(.schema-hot-trigger):not(.ontology-choose):not(.assistant-show):not(:where(.tabs, .subtabs, .home-tabs, .main-tabs, .model-view-tabs, .reactor-tabs, .run-model-tabs, .schema-left-tabs, .aside-tabs, #run-right-tabs, #admin-tabs) button):not(:has(svg)):not(:has(img))::after {
	content: '';
	position: absolute;
	right: -.38rem;
	top: 3px;
	bottom: 3px;
	width: .38rem;
	background: #d9534f;
	clip-path: polygon(0 0, 100% 50%, 0 100%);
	pointer-events: none;
	/* Временно скрыто. Чтобы вернуть треугольники — удалить строку ниже. */
	display: none;
}
button:disabled::after { opacity: .35; }

/* Палитра со скриншота: шапка карточки светлее формы, тело — темнее формы. */
.schema-card,
.analysis-block,
.prop-card {
	background: var(--card-body);
	border-color: var(--card-border, var(--line));
}
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary,
.schema-card[open] > summary,
.analysis-block[open] > summary,
.prop-card[open] > summary {
	background: var(--card-head);
	border-bottom: 1px solid var(--line);
}
.schema-subcard,
.series-subcard {
	background: var(--card-body);
}
.schema-subcard > summary,
.series-subcard > summary,
.schema-subcard[open] > summary,
.series-subcard[open] > summary {
	background: #24313b;
}

/* Общий стиль закладок: неактивные — серые, активная — светлая плашка. */
.tabs,
.subtabs,
.home-tabs,
.main-tabs,
.model-view-tabs,
.reactor-tabs,
.run-model-tabs,
.schema-left-tabs,
.aside-tabs,
#run-right-tabs,
#admin-tabs {
	gap: .12rem;
	border-bottom: 1px solid var(--line);
	background: transparent;
}
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button {
	background: transparent;
	border: 0;
	border-radius: .5rem .5rem 0 0;
	color: #8f99a4;
	box-shadow: none;
}
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active {
	background: #2b353e;
	color: #fff;
	border: 0;
	box-shadow: inset 0 1px rgba(255, 255, 255, .08);
}
.tabs button:hover,
.subtabs button:hover,
.home-tabs button:hover,
.main-tabs button:hover,
.model-view-tabs button:hover,
.reactor-tabs button:hover,
.run-model-tabs button:hover,
.schema-left-tabs button:hover,
.aside-tabs button:hover,
#run-right-tabs button:hover,
#admin-tabs button:hover {
	color: #e8edf2;
}

/* Базовые цвета со скриншота; белый текст — только у активной закладки. */
:root {
	--bg: #0b1014;
	--panel: #151b20;
	--panel2: #1b2329;
	--line: #29323a;
	--text: #b6bfc6;
	--muted: #737e87;
}
body { color: var(--text); }
h1, h2, h3, h4, h5, h6, summary, label, th, .muted, .study-sub { color: #8b959e; }
button, input, select, textarea { color: #8b959e !important; }
button:hover { color: #aab3ba !important; }
button:active, button.action-accent, button.primary { color: #c2cbd2 !important; }
button.danger { color: #c08a82 !important; }
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary,
.schema-subcard > summary,
.series-subcard > summary { color: #8b959e !important; }
.help-text, .help-entry, .help-tree-item, .help-group > summary { color: #7f8a93 !important; }
.help-link { color: #9aa6ae !important; }
.help-link:hover { color: #b5c0c8 !important; }
.ontology-edge.selected text { fill: #d8e0e5 !important; }
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active { color: #fff !important; }

/* Тёплая палитра со скриншота: фон, панели и карточки без холодного синего оттенка. */
:root {
	--bg: #1b1c1c;
	--panel: #252422;
	--panel2: #2d2b28;
	--line: #45403a;
	--text: #b6b1aa;
	--muted: #8a857d;
	--card-head: #443e38;
	--card-body: #1d1e1e;
	--scroll-track: #1f1f1e;
	--scroll-thumb: #5b554e;
	--scroll-thumb-hover: #746c63;
}
html, body { background: var(--bg); }
h1, h2, h3, h4, h5, h6, summary, label, th, .muted, .study-sub { color: #938d86 !important; }
button, input, select, textarea { color: #8a857d !important; }
button:hover { color: #b3ada5 !important; }
button:active, button.action-accent, button.primary { color: #c6c0b8 !important; }
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary,
.schema-subcard > summary,
.series-subcard > summary { color: #9a948c !important; }
.help-text, .help-entry, .help-tree-item, .help-group > summary { color: #807b74 !important; }
.help-link { color: #a29b92 !important; }
.help-link:hover { color: #c0b9b0 !important; }
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button { color: #8a857f; }
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active { background: #2b2b2b; color: #fff !important; }
.schema-subcard > summary,
.series-subcard > summary,
.schema-subcard[open] > summary,
.series-subcard[open] > summary { background: #34302c; }

/* Поля темнее фона, кнопки — светлее фона; активная кнопка темнее шапки карточки. */
input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
select,
textarea {
	background: #141414 !important;
	border-color: #3f3a34 !important;
	color: #9a948c !important;
}
input::placeholder, textarea::placeholder { color: #6f6a64 !important; }
option { background: #1b1c1c; color: #b6b1aa; }
button {
	background: #282624;
	border-color: #45403a;
	color: #8a857d !important;
}
button:hover { background: #312f2b; color: #b3ada5 !important; }
button.active,
button:active,
button.primary,
button.action-accent { background: #34312d; border-color: #5a524a; color: #c6c0b8 !important; }
button.danger { background: #3a2724; border-color: #6a4540; color: #c08a82 !important; }
button.danger:hover { background: #4a302b; }
.card-help { background: transparent !important; }
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button { background: transparent; border-color: transparent; }
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active { background: #2b2b2b; border-color: transparent; color: #fff !important; }

/* Плавающая чёлка с переключением режимов модели. */
.model-float-nav {
	position: fixed;
	top: 0;
	left: 50%;
	transform: translateX(-50%);
	z-index: 90;
	display: flex;
	flex-direction: column;
	align-items: center;
}
.model-float-handle {
	width: 3.2rem;
	height: 1.25rem;
	padding: 0;
	border-radius: 0 0 .6rem .6rem;
	background: rgba(37, 36, 34, .55) !important;
	border: 1px solid rgba(255,255,255,.08);
	color: #9a948c !important;
	backdrop-filter: blur(8px);
}
.model-float-panel {
	display: flex;
	gap: .1rem;
	padding: .25rem .35rem;
	background: rgba(29, 30, 30, .58);
	border: 1px solid rgba(255,255,255,.08);
	border-top: 0;
	border-radius: 0 0 .6rem .6rem;
	backdrop-filter: blur(10px);
	transform: translateY(-120%);
	opacity: 0;
	transition: transform .18s ease, opacity .18s ease;
	pointer-events: none;
	zoom: .5;
}
.model-float-nav.open .model-float-panel {
	transform: translateY(0);
	opacity: 1;
	pointer-events: auto;
}
.model-float-panel button {
	border: 1px solid transparent;
	background: transparent;
	color: #8a857d !important;
	padding: .25rem .6rem;
	font-size: .72rem;
}
.model-float-panel button:hover { background: rgba(255,255,255,.06); color: #b3ada5 !important; }
.model-float-panel button.active { background: #34312d; color: #d6d0c8 !important; border-color: #5a524a; }
.model-float-panel button::after,
.model-float-handle::after { display: none !important; }

/* Индикатор состояния — внизу по центру, плавающий и полупрозрачный. */
.model-mode-badge {
	position: fixed !important;
	left: 50% !important;
	bottom: 1rem !important;
	top: auto !important;
	transform: translateX(-50%) !important;
	z-index: 35;
	background: rgba(29, 30, 30, .58) !important;
	border: 1px solid rgba(255,255,255,.08);
	color: #b6b1aa !important;
	border-radius: 999px;
	padding: .3rem .9rem;
	font-size: .72rem;
	backdrop-filter: blur(8px);
	pointer-events: none;
}

/* Еле заметные рамки и линии интерфейса. */
:root { --line: rgba(255, 255, 255, .07); }
.panel,
.schema-card,
.schema-subcard,
.analysis-block,
.prop-card,
.series-hcard,
.series-subcard,
.reactor-item,
.reactor-section,
.task,
.model-side,
.model-center,
dialog,
.help-editor,
.help-context-hints { border-color: rgba(255, 255, 255, .065) !important; }
input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
select,
textarea,
button { border-color: rgba(255, 255, 255, .07) !important; }
input:focus, select:focus, textarea:focus { border-color: rgba(79, 179, 168, .35) !important; }
th, td { border-bottom-color: rgba(255, 255, 255, .055) !important; }
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary,
.schema-subcard > summary,
.series-subcard > summary { border-bottom-color: rgba(255, 255, 255, .06) !important; }
.model-splitter,
.two-pane-splitter,
.run-splitter { background: rgba(255, 255, 255, .045) !important; }
.model-splitter:hover,
.two-pane-splitter:hover,
.run-splitter:hover,
.model-splitter.drag,
.two-pane-splitter.drag,
.run-splitter.drag { background: rgba(79, 179, 168, .35) !important; }
.card-help { border-color: rgba(255, 255, 255, .08) !important; }

/* 245: полотно без внешней рамки и без зазора до сплиттера. */
.schema-panel,
#model-content .schema-panel { border: 0 !important; border-radius: 0 !important; padding: 0 !important; margin: 0 !important; background: transparent !important; }
.model-content { padding: 0; }
.schema-wrap { border: 0 !important; border-radius: 0 !important; padding: 0 !important; background: var(--card-body); }
.model-side { border: 0 !important; border-radius: 0 !important; }
.model-splitter { background: transparent !important; }
.model-splitter:hover, .model-splitter.drag { background: rgba(255,255,255,.08) !important; }
.schema-canvas { border: 0 !important; }

/* 246: более нейтральная тёмно-серая палитра без зелёного уклона. */
:root {
	--bg: #1e1e1e;
	--panel: #252525;
	--panel2: #2d2d2d;
	--line: #3a3a3a;
	--text: #b7b5b2;
	--muted: #8b8985;
	--card-head: #3a3734;
	--card-body: #1e1e1e;
	--accent: #a39a8f;
	--accent2: #b08a5a;
	--danger: #b87970;
}
html, body { background: var(--bg); }
h1, h2, h3, h4, h5, h6, summary, label, th, .muted, .study-sub { color: #96928d !important; }
button { color: #8b8985 !important; }
button:hover { color: #b5b1ac !important; }
button.active, button:active, button.primary, button.action-accent { color: #cbc6c0 !important; }
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary,
.schema-subcard > summary,
.series-subcard > summary { color: #9b9690 !important; }

/* Фон полотна схемы как на скриншоте. */
.schema-canvas { background-color: #1d1e1e !important; }

/* Палитра и правила nxSynerges, применённые к nxReact. */
:root {
	--bg: #1d1e1e;
	--panel: #2b2b2b;
	--panel2: #343434;
	--line: rgba(255,255,255,.07);
	--line2: rgba(255,255,255,.13);
	--text: rgba(255,255,255,.78);
	--muted: rgba(255,255,255,.45);
	--accent: #d18f4c;
	--accent2: #d3a24a;
	--good: #8fae7a;
	--warn: #d3a24a;
	--bad: #bc6a5e;
	--danger: #bc6a5e;
	--in-port: #b9cf72;
	--out-port: #7fa8e8;
	--radius: 8px;
	--card-head: #343434;
	--card-body: rgba(0,0,0,.22);
}
html, body { background: var(--bg); color: var(--text); }
h1, h2, h3, h4, h5, h6, summary, label, th { color: var(--muted) !important; }
button, input, select, textarea { color: var(--text) !important; }
button:hover { color: #fff !important; }
button:active, button.active, button.primary, button.action-accent { color: var(--text) !important; }
.panel, .model-side, .model-center { background: var(--panel); border-color: var(--line) !important; border-radius: var(--radius); }
.schema-card, .analysis-block, .prop-card, .schema-subcard, .series-subcard, .series-hcard, .reactor-item {
	background: var(--card-body) !important;
	border: 1px solid var(--line) !important;
	border-radius: var(--radius) !important;
}
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary,
.schema-subcard > summary,
.series-subcard > summary {
	background: rgba(255,255,255,.06) !important;
	color: rgba(255,255,255,.94) !important;
	border-bottom: 1px solid var(--line) !important;
	border-left: 0 !important;
	border-radius: var(--radius) var(--radius) 0 0 !important;
}
.schema-card-body,
.analysis-block-body,
.prop-card-body { padding-top: 12px !important; }
input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
select, textarea {
	background: #242424 !important;
	border: 1px solid var(--line2) !important;
	border-radius: 6px !important;
	color: var(--text) !important;
	box-sizing: border-box;
}
textarea { resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--accent) !important; }
button {
	background: var(--panel) !important;
	border: 1px solid var(--line2) !important;
	border-radius: 6px !important;
	color: var(--muted) !important;
}
button:hover { background: var(--panel2) !important; color: var(--text) !important; }
button.active, button:active, button.primary, button.action-accent {
	background: var(--panel2) !important;
	border-color: var(--accent) !important;
	color: var(--text) !important;
	box-shadow: 0 0 0 1px rgba(209,143,76,.35);
}
button.danger { border-color: var(--bad) !important; color: var(--bad) !important; }
.toolbar { justify-content: flex-end; }
.toolbar:has([data-add]) { border-top: 0; padding-top: .4rem; margin-top: .35rem; }
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active {
	background: var(--panel2) !important;
	border-bottom: 2px solid var(--accent) !important;
	color: #fff !important;
}
.model-splitter, .two-pane-splitter, .run-splitter { flex-basis: 4px !important; background: var(--line) !important; }
.model-splitter:hover, .two-pane-splitter:hover, .run-splitter:hover,
.model-splitter.drag, .two-pane-splitter.drag, .run-splitter.drag { background: rgba(209,143,76,.40) !important; }
.schema-wrap { background: var(--bg) !important; }
.schema-canvas { background-color: var(--bg) !important; }

/* Тонкие тёмные полосы прокрутки по спецификации. */
* { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.12) #1d1e1e; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: #1d1e1e; }
::-webkit-scrollbar-thumb { background: rgba(255,255,255,.12); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.2); }

/* Сетка и граница полотна в режиме схемы. */
.schema-wrap {
	border: 1px solid rgba(255, 255, 255, .12) !important;
	border-radius: var(--radius) !important;
	background: var(--bg) !important;
}
.schema-canvas { background-color: var(--bg) !important; }

/* Кэпшн карточек как на референсе: светлая плашка, обычный регистр, тело темнее. */
.schema-card,
.analysis-block,
.prop-card {
	border-radius: 10px !important;
	background: rgba(0, 0, 0, .28) !important;
}
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary {
	background: #303131 !important;
	color: rgba(255, 255, 255, .82) !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	font-size: .82rem !important;
	font-weight: 600 !important;
	line-height: 1.25;
	padding: .55rem .7rem !important;
	border-radius: 10px 10px 0 0 !important;
	border-bottom: 1px solid rgba(255, 255, 255, .07) !important;
}
.schema-card > summary::before,
.analysis-block > summary::before,
.prop-card > summary::before {
	color: rgba(255, 255, 255, .5) !important;
	margin-right: .45rem;
}
.schema-card-body,
.analysis-block-body,
.prop-card-body {
	padding: .7rem !important;
	background: transparent !important;
}

/* Чуть светлее шапки всех карточек, без изменения границ и тела. */
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary {
	background: #3a3a3a !important;
}
.schema-subcard > summary,
.series-subcard > summary,
.schema-subcard[open] > summary,
.series-subcard[open] > summary {
	background: #3e3d3c !important;
}

/* Поля ввода темнее фона и без обводки. */
body input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body select,
body textarea {
	background: #161616 !important;
	border: 0 !important;
	outline: none !important;
	box-shadow: none !important;
	color: var(--text) !important;
}
body input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):focus,
body select:focus,
body textarea:focus {
	background: #181818 !important;
	border: 0 !important;
	outline: none !important;
	box-shadow: none !important;
}
select option { background: #161616; color: var(--text); }

/* Иерархия: кнопки светлее фона, поля темнее, пояснения темнее всего. */
:root {
	--muted: rgba(255,255,255,.42);
}
body input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body select,
body textarea { color: rgba(255,255,255,.76) !important; }
body input::placeholder,
body textarea::placeholder { color: rgba(255,255,255,.38) !important; }
button {
	background: #343434 !important;
	border: 0 !important;
	outline: none !important;
	box-shadow: none !important;
	color: rgba(255,255,255,.62) !important;
}
button:hover { background: #3b3b3b !important; color: rgba(255,255,255,.78) !important; }
button.active, button:active, button.primary, button.action-accent {
	background: #414141 !important;
	border: 0 !important;
	color: rgba(255,255,255,.82) !important;
	box-shadow: none !important;
}
button.danger { background: #3a2724 !important; color: rgba(255,255,255,.62) !important; border: 0 !important; }
button:disabled { opacity: .38; }
.schema-card > summary,
.analysis-block > summary,
.prop-card > summary { color: rgba(255,255,255,.94) !important; }
.study-hint,
.hint,
.help-text,
.help-context-hints p,
.help-tree-item,
.help-entry { color: rgba(255,255,255,.32) !important; }
.toolbar,
.model-schema-canvas,
.detail-show,
.classifier-add-row,
.schema-pin-actions { justify-content: flex-end; }
.schema-card-body > button,
.analysis-block-body > button,
.prop-card-body > button { align-self: flex-end; }
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button { background: transparent !important; border: 0 !important; }
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active { background: #343434 !important; color: #fff !important; }
.model-float-panel button { background: transparent !important; }
.model-float-panel button.active { background: #414141 !important; }
.card-help { background: transparent !important; border: 0 !important; }

/* Все кнопки, кроме закладок, с голубоватым оттенком; белого текста нет. */
button {
	background: #343d47 !important;
	border: 0 !important;
	color: rgba(255,255,255,.66) !important;
}
button:hover { background: #3d4854 !important; color: rgba(255,255,255,.8) !important; }
button.active, button:active, button.primary, button.action-accent {
	background: #46525f !important;
	color: rgba(255,255,255,.84) !important;
}
button.danger { background: #3d4550 !important; color: #c08a82 !important; }
button:disabled { color: rgba(255,255,255,.45) !important; }
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button,
.model-float-panel button { background: transparent !important; color: rgba(255,255,255,.56) !important; }
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active,
.model-float-panel button.active { background: #343434 !important; color: #dbe2e8 !important; }

/* Подписи полей и чекбоксов — прозрачнее; у кнопок единый размер и текст 70%. */
label,
.fields label,
.model-left-label,
.check,
.schema-visibility,
.schema-pins,
.study-sub,
.study-hint,
.hint,
.model-schema-tools label,
.classifier-leaf { color: rgba(255,255,255,.3) !important; }
button,
button:hover,
button:active,
button.active,
button.primary,
button.action-accent,
button.danger,
button:disabled,
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button,
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active,
.model-float-panel button,
.model-float-panel button.active {
	color: rgba(255,255,255,.7) !important;
	font-size: .75rem !important;
}

/* Единая высота, обычный шрифт и полное отсутствие обводки у кнопок. */
button {
	min-height: 2.1rem;
	padding: .3rem .6rem;
	font-size: .82rem !important;
	font-weight: 400 !important;
	line-height: 1.15;
	border: 0 !important;
	outline: none !important;
	box-shadow: none !important;
	color: rgba(255,255,255,.6) !important;
}
button:hover,
button:focus,
button:active,
button.active,
button.primary,
button.action-accent,
button.danger,
button:disabled,
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button,
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active,
.model-float-panel button,
.model-float-panel button.active {
	color: rgba(255,255,255,.6) !important;
	font-size: .82rem !important;
	font-weight: 400 !important;
	border: 0 !important;
	outline: none !important;
	box-shadow: none !important;
}
button:hover { color: rgba(255,255,255,.68) !important; }
button.active, button:active, button.primary, button.action-accent { color: rgba(255,255,255,.68) !important; }

/* Одинаковая высота заголовков карточек и помощь справа. */
details[data-card-id] > summary {
	box-sizing: border-box;
	height: 2.2rem !important;
	min-height: 2.2rem !important;
	padding: .35rem .7rem !important;
	display: flex !important;
	align-items: center !important;
	white-space: nowrap;
	overflow: hidden;
}
details[data-card-id] > summary > * { flex-shrink: 0; }
details[data-card-id] > summary > span,
details[data-card-id] > summary > b { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
details[data-card-id] > summary .card-help { margin-left: auto; flex-shrink: 0; }
/* Пояснения не показываем в карточках — они уходят в контекстную помощь. */
.schema-card .hint,
.schema-subcard .hint,
.analysis-block .hint,
.prop-card .hint { display: none !important; }

/* Радиокнопки раскраски: кружок и подпись в одной строке. */
.color-mode-radios { gap: .3rem; }
.color-mode-radios label {
	display: flex !important;
	flex-direction: row !important;
	align-items: center;
	gap: .5rem;
	color: rgba(255,255,255,.52) !important;
}
.color-mode-radios input[type="radio"] {
	width: 1rem;
	height: 1rem;
	margin: 0;
	flex: 0 0 auto;
	accent-color: var(--accent);
}
/* Таблица без серых плашек; только тонкие линии строк. */
.color-stop-table thead th,
.color-stop-table tbody th {
	background: transparent !important;
	position: static !important;
	font-weight: 400 !important;
	color: rgba(255,255,255,.52) !important;
	border-bottom: 1px solid rgba(255,255,255,.06) !important;
}
.color-stop-table tbody tr,
.color-stop-table tbody td,
.color-stop-table tbody th { border-bottom: 1px solid rgba(255,255,255,.06) !important; }
.color-stop-table tbody tr:last-child th,
.color-stop-table tbody tr:last-child td { border-bottom: 0 !important; }

/* Числа — оранжевые, утолщённые, по правому краю; тексты — прозрачно-жёлтые. */
body input[type="number"]:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body input[inputmode="numeric"]:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body input[inputmode="decimal"]:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]) {
	text-align: right !important;
	font-weight: 700 !important;
	color: #d18f4c !important;
	accent-color: #d18f4c;
}
body output,
body .range-bubble,
body [data-schema-zoom-value],
body [data-ontology-weight-value],
body [data-param-initial-value],
body [data-change-count],
body [data-undo-count] {
	color: #d18f4c !important;
	font-weight: 700 !important;
	font-variant-numeric: tabular-nums;
}
body input[type="range"] { accent-color: #d18f4c; }
body input[type="text"]:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body input[type="search"]:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body input[type="email"]:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body input[type="password"]:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body input:not([type]):not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),
body textarea:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]) {
	color: rgba(255, 232, 160, .68) !important;
}
body input[type="text"]::placeholder,
body input[type="search"]::placeholder,
body textarea::placeholder { color: rgba(255, 232, 160, .34) !important; }

/* Заблокированные кнопки почти невидимы. */
button:disabled,
button[disabled] {
	opacity: .2 !important;
	background: rgba(52,61,71,.35) !important;
	color: rgba(255,255,255,.3) !important;
	border: 0 !important;
	box-shadow: none !important;
	cursor: default;
}
button:disabled:hover,
button[disabled]:hover {
	background: rgba(52,61,71,.35) !important;
	color: rgba(255,255,255,.3) !important;
}

/* Плавающие кнопки панелей в углах полотна. */
.schema-panel { position: relative; }
.schema-panel-toggle {
	position: absolute;
	top: .55rem;
	z-index: 30;
	width: 2rem;
	min-width: 2rem;
	height: 2rem;
	min-height: 2rem;
	padding: 0;
	border: 0 !important;
	border-radius: 50% !important;
	background: rgba(52,61,71,.78) !important;
	color: rgba(255,255,255,.7) !important;
	backdrop-filter: blur(8px);
	font-size: .9rem !important;
	line-height: 1;
}
.schema-panel-toggle-left { left: .55rem !important; right: auto !important; }
.schema-panel-toggle-right { right: .55rem !important; left: auto !important; }
.schema-panel-toggle:hover { background: rgba(70,82,95,.9) !important; color: rgba(255,255,255,.85) !important; }

/* Кнопки панелей — почти прозрачные, плавают над полотном. */
.schema-panel-toggle {
	position: absolute !important;
	top: .55rem !important;
	z-index: 30 !important;
	background: rgba(52,61,71,.14) !important;
	color: rgba(255,255,255,.32) !important;
	backdrop-filter: blur(4px);
}
.schema-panel-toggle:hover {
	background: rgba(52,61,71,.34) !important;
	color: rgba(255,255,255,.62) !important;
}

/* Кнопки только с иконкой — прозрачные, без фона. */
button.icon-only:not(.active) {
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	color: rgba(255,255,255,.58) !important;
}
button.icon-only:not(.active):hover {
	background: rgba(255,255,255,.07) !important;
	color: rgba(255,255,255,.78) !important;
}

/* Текстовые закладки: тёмная неактивная, светлая активная, прямые нижние углы. */
.tabs button,
.subtabs button,
.home-tabs button,
.main-tabs button,
.run-model-tabs button,
.schema-left-tabs button,
.model-view-tabs button,
.reactor-tabs button,
.aside-tabs button,
#run-right-tabs button,
#admin-tabs button {
	background: #252525 !important;
	border: 1px solid rgba(255,255,255,.13) !important;
	border-bottom: 0 !important;
	border-radius: 6px 6px 0 0 !important;
	color: rgba(255,255,255,.6) !important;
}
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active {
	background: #3a3a3a !important;
	border: 1px solid rgba(255,255,255,.16) !important;
	border-bottom: 0 !important;
	border-radius: 6px 6px 0 0 !important;
	color: rgba(255,255,255,.78) !important;
}
button.icon-only:not(.active) {
	background: transparent !important;
	border: 0 !important;
}

/* Внутренние закладки карточки «Степень зависимости». */
.impact-tabs {
	gap: .15rem;
	align-items: flex-end;
	border-bottom: 1px solid rgba(255,255,255,.07);
	padding-bottom: 0;
}
.impact-tabs button {
	height: auto !important;
	min-height: 2rem !important;
	padding: .35rem .7rem !important;
	background: #181818 !important;
	border: 1px solid rgba(255,255,255,.08) !important;
	border-bottom: 0 !important;
	border-radius: 6px 6px 0 0 !important;
	color: rgba(255,255,255,.18) !important;
	font-size: .82rem !important;
	font-weight: 400 !important;
	box-shadow: none !important;
}
.impact-tabs button.active {
	background: #303030 !important;
	border: 1px solid rgba(255,255,255,.16) !important;
	border-bottom: 0 !important;
	border-radius: 6px 6px 0 0 !important;
	color: rgba(255,255,255,.58) !important;
}
.impact-tabs button:hover { color: rgba(255,255,255,.42) !important; }
.impact-tabs button.active:hover { color: rgba(255,255,255,.7) !important; }

/* Единый тон активных закладок: темнее кэпшна, светлее тела карточки. */
.tabs button.active,
.subtabs button.active,
.home-tabs button.active,
.main-tabs button.active,
.run-model-tabs button.active,
.schema-left-tabs button.active,
.model-view-tabs button.active,
.reactor-tabs button.active,
.aside-tabs button.active,
#run-right-tabs button.active,
#admin-tabs button.active {
	background: #303030 !important;
	color: rgba(255,255,255,.72) !important;
	border: 1px solid rgba(255,255,255,.16) !important;
	border-bottom: 0 !important;
	border-radius: 6px 6px 0 0 !important;
}
.impact-tabs button.active {
	background: #303030 !important;
	color: rgba(255,255,255,.58) !important;
}

/* Кнопки выбора цвета: квадрат с лёгким скруглением, полностью залит цветом. */
input[type="color"] {
	width: 2rem !important;
	min-width: 2rem !important;
	max-width: 2rem !important;
	height: 2rem !important;
	min-height: 2rem !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 6px !important;
	background: transparent !important;
	box-shadow: none !important;
	outline: none !important;
	appearance: none;
	-webkit-appearance: none;
	overflow: hidden;
	cursor: pointer;
}
input[type="color"]::-webkit-color-swatch-wrapper { padding: 0 !important; border: 0 !important; background: transparent !important; }
input[type="color"]::-webkit-color-swatch { border: 0 !important; border-radius: 6px !important; }
input[type="color"]::-moz-color-swatch { border: 0 !important; border-radius: 6px !important; }
input[type="color"]::-moz-focus-inner { border: 0 !important; padding: 0 !important; }

/* Единая высота всех однострочных полей. */
body input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]):not([type="file"]):not([type="hidden"]),
body select {
	height: 2rem !important;
	min-height: 2rem !important;
	line-height: 1.2 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	box-sizing: border-box;
}

/* Скругление карточек: свёрнутая — нижний радиус вдвое меньше верхнего. */
details[data-card-id] {
	border-radius: 10px 10px 5px 5px !important;
}
details[data-card-id][open] {
	border-radius: 10px !important;
}
details[data-card-id]:not([open]) > summary {
	border-radius: 10px 10px 5px 5px !important;
}
details[data-card-id][open] > summary {
	border-radius: 10px 10px 0 0 !important;
}

/* Небольшая тень только у развёрнутых карточек. */
details[data-card-id][open] {
	box-shadow: 0 4px 12px rgba(0,0,0,.28) !important;
}

/* У развёрнутой карточки шапка чуть светлее. */
details[data-card-id][open] > summary {
	background: #4c4c4c !important;
}

/* Сетка настроек интерфейса. */
.ui-settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .35rem .7rem; margin-bottom: .6rem; }
.ui-settings-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ui-settings-grid label { display: flex; flex-direction: column; gap: .15rem; font-size: .72rem; }
.ui-settings-grid input[type="color"] { align-self: flex-start; }

/* Дерево настроек интерфейса: слева узлы, справа свойства. */
.ui-settings-layout { display: grid; grid-template-columns: 14rem minmax(0, 1fr); gap: .7rem; align-items: start; }
.ui-settings-tree { display: flex; flex-direction: column; gap: .1rem; padding-right: .5rem; border-right: 1px solid rgba(255,255,255,.07); }
.ui-tree-item {
	display: flex !important;
	justify-content: flex-start !important;
	text-align: left;
	min-height: 1.8rem !important;
	padding: .2rem .45rem .2rem calc(.45rem + var(--level) * .8rem) !important;
	background: transparent !important;
	color: rgba(255,255,255,.55) !important;
	font-size: .75rem !important;
	border-radius: 4px !important;
}
.ui-tree-item:hover { background: rgba(255,255,255,.06) !important; color: rgba(255,255,255,.8) !important; }
.ui-tree-item.active { background: rgba(209,143,76,.12) !important; color: #d18f4c !important; box-shadow: inset 2px 0 0 #d18f4c !important; }
.ui-settings-props { background: rgba(0,0,0,.18); border: 1px solid rgba(255,255,255,.06); border-radius: 6px; padding: .7rem; min-height: 8rem; }
.ui-settings-props h4 { margin-top: 0; }
.ui-props-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem .7rem; }
.ui-props-grid label { display: flex; flex-direction: column; gap: .15rem; font-size: .72rem; }
.ui-props-grid input[type="color"] { align-self: flex-start; }
@media (max-width: 900px) {
	.ui-settings-layout { grid-template-columns: 1fr; }
	.ui-settings-tree { border-right: 0; border-bottom: 1px solid rgba(255,255,255,.07); padding-bottom: .4rem; }
	.ui-props-grid { grid-template-columns: 1fr; }
}

/* Кнопка помощи у карточек — прозрачная. */
button.card-help[data-card-help],
button.card-help,
.card-help {
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	color: rgba(255,255,255,.5) !important;
}
button.card-help[data-card-help]:hover,
button.card-help:hover,
.card-help:hover {
	background: transparent !important;
	color: rgba(255,255,255,.75) !important;
}

/* Редактор темы: закладки сверху, вложенные карточки, компактные строки. */
#settings-interface .panel { max-width: 62rem; }
.ui-theme-tabs { display: flex; flex-wrap: wrap; gap: .2rem; margin: .2rem 0 .6rem; }
.ui-theme-tabs button {
	min-height: 1.9rem !important;
	padding: .25rem .6rem !important;
	background: transparent !important;
	border: 1px solid transparent !important;
	border-radius: 5px 5px 0 0 !important;
	color: rgba(255,255,255,.55) !important;
}
.ui-theme-tabs button.active { background: #303030 !important; border-color: rgba(255,255,255,.14) !important; color: rgba(255,255,255,.8) !important; }
.ui-theme-content { display: grid; gap: .45rem; max-width: 46rem; }
.ui-theme-card { border: 1px solid rgba(255,255,255,.07); border-radius: 8px; overflow: hidden; }
.ui-theme-card > summary { padding: .45rem .65rem; cursor: pointer; background: #3a3a3a; color: rgba(255,255,255,.85); font-size: .78rem; }
.ui-theme-card[open] > summary { background: #4c4c4c; }
.ui-theme-props { padding: .55rem .65rem; display: flex; flex-direction: column; gap: .3rem; }
.ui-prop-row { display: flex !important; flex-direction: row !important; align-items: center !important; gap: .6rem; }
.ui-prop-control { flex: 0 0 8.5rem; display: flex; align-items: center; }
.ui-prop-control input:not([type="color"]), .ui-prop-control select { width: 8.5rem; max-width: 8.5rem; }
.ui-prop-label { flex: 1 1 auto; min-width: 0; color: rgba(255,255,255,.3) !important; font-size: .72rem; }
.ui-theme-content .ui-theme-card .ui-theme-card { border-radius: 6px; }
@media (max-width: 600px) {
	.ui-prop-control { flex-basis: 6.5rem; }
	.ui-prop-control input:not([type="color"]), .ui-prop-control select { width: 6.5rem; max-width: 6.5rem; }
}

/* Цветовой квадратик слева, короткая подпись справа, два в строку. */
.impact-color-row {
	display: flex !important;
	gap: .9rem;
	align-items: center;
}
.impact-color-row label,
label:has(> input[type="color"]) {
	display: flex !important;
	flex-direction: row !important;
	justify-content: flex-start !important;
	align-items: center !important;
	gap: .4rem;
	flex: 0 0 auto;
}
.impact-color-row label { color: rgba(255,255,255,.45) !important; font-size: .72rem; }
.action-divider { border-top: 1px solid rgba(255,255,255,.1); margin: .55rem 0; height: 0; }

/* Шапка разделена на две выезжающие группы с чёлками на четверти ширины. */
#app-header.split-header {
	height: 0 !important;
	min-height: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	overflow: visible !important;
	position: relative;
	/* Выше плавающих окон (чат — 60): иначе перетащенное окно чата
	   перекрывает чёлки в верхней части экрана. */
	z-index: 100;
}
#app-header.split-header .spacer { display: none; }
#app-header .header-group {
	position: fixed;
	top: .45rem;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: .45rem;
	max-width: 44vw;
	padding: .45rem .65rem;
	background: var(--panel);
	border: 1px solid var(--line);
	border-radius: 8px;
	box-shadow: 0 8px 24px rgba(0,0,0,.32);
	opacity: 0;
	pointer-events: none;
	z-index: 70;
	transition: transform .22s ease, opacity .22s ease;
}
#app-header .header-left-group { left: 25vw; transform: translate(-50%, -140%); }
#app-header .header-right-group { right: 25vw; transform: translate(50%, -140%); }
#app-header .header-left-group.open { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); }
#app-header .header-right-group.open { opacity: 1; pointer-events: auto; transform: translate(50%, 0); }
#app-header .header-right-group .header-actions { flex-wrap: nowrap; }
#app-header .header-chevron {
	position: fixed;
	top: 0;
	width: 2.2rem;
	height: 1.15rem;
	min-width: 2.2rem;
	min-height: 1.15rem;
	padding: 0;
	border: 1px solid rgba(255,255,255,.1) !important;
	border-radius: 0 0 7px 7px !important;
	background: rgba(52,61,71,.45) !important;
	color: rgba(255,255,255,.55) !important;
	font-size: .8rem !important;
	line-height: 1;
	z-index: 80;
	backdrop-filter: blur(8px);
}
#app-header .header-chevron:hover { background: rgba(52,61,71,.78) !important; color: rgba(255,255,255,.85) !important; }
#app-header .header-chevron-left { left: 25vw; transform: translateX(-50%); }
#app-header .header-chevron-right { right: 25vw; transform: translateX(50%); }
@media (max-width: 700px) {
	#app-header .header-group { max-width: 90vw; }
	#app-header .header-chevron-left { left: 25vw; }
	#app-header .header-chevron-right { right: 25vw; }
}

/* Живые примеры в редакторе темы. */
.ui-theme-card-body { display: grid; grid-template-columns: minmax(0, 1fr) 11rem; gap: .8rem; align-items: start; }
.ui-theme-preview { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .35rem; min-height: 2.5rem; padding: .4rem; border-left: 1px solid rgba(255,255,255,.06); }
.ui-preview-card { background: rgba(0,0,0,.28); border: 1px solid rgba(255,255,255,.1); border-radius: 8px; overflow: hidden; width: 10rem; }
.ui-preview-card > summary { padding: .35rem .5rem; background: #3a3a3a; color: rgba(255,255,255,.9); font-size: .72rem; cursor: default; }
.ui-preview-card.preview-open > summary { background: #4c4c4c; }
.ui-preview-card-body { padding: .4rem .5rem; font-size: .7rem; color: rgba(255,255,255,.55); }
.ui-preview-tabs { display: flex; gap: .15rem; }
.ui-preview-tabs button { pointer-events: none; }
.ui-preview-fields { display: flex; flex-direction: column; gap: .25rem; width: 9rem; }
.ui-preview-label { color: rgba(255,255,255,.3); font-size: .72rem; }
.ui-preview-chevron { width: 2rem !important; height: 1rem !important; min-width: 2rem !important; min-height: 1rem !important; border-radius: 0 0 7px 7px !important; }
.ui-preview-panel-toggle { width: 2rem !important; height: 2rem !important; padding: 0 !important; }
.ui-preview-appbg { background: #1d1e1e; border: 1px solid rgba(255,255,255,.1); border-radius: 6px; padding: .6rem; width: 9rem; text-align: center; font-size: .72rem; }
.ui-preview-divider { width: 9rem; }
.ui-preview-divider .action-divider { margin: .3rem 0; }
@media (max-width: 900px) {
	.ui-theme-card-body { grid-template-columns: 1fr; }
	.ui-theme-preview { border-left: 0; border-top: 1px solid rgba(255,255,255,.06); padding-top: .55rem; }
}

/* Строка состояния сохранения — под кнопками темы, над закладками. */
.ui-theme-status { min-height: 1.1rem; margin: .1rem 0 .35rem; font-size: .72rem; color: rgba(255,255,255,.3) !important; }

/* В настройках интерфейса цветовая кнопка прижата к правому краю поля. */
#settings-interface .ui-prop-control { justify-content: flex-end !important; }
#settings-interface .ui-prop-control input[type="color"] { margin-left: auto !important; align-self: center !important; }
#settings-interface .ui-settings-grid input[type="color"] { margin-left: auto !important; align-self: flex-end !important; }

/* Чёлки: без размытия, только прозрачный фон. */
#app-header .header-chevron,
#model-float-handle {
	backdrop-filter: none !important;
	-webkit-backdrop-filter: none !important;
}

/* Чёлка исчезает, пока открыта её панель. */
#app-header .header-chevron.chevron-hidden,
#model-float-handle.chevron-hidden {
	opacity: 0 !important;
	pointer-events: none !important;
	transition: opacity .18s ease;
}

/* Одна линия над иконочными закладками и фон до нижней линии. */
.model-schema-tools { border-top: 0 !important; }
.schema-left-tabs {
	padding: .1rem 0 0 !important;
	border-bottom: 1px solid rgba(255,255,255,.07) !important;
	align-items: stretch !important;
}
.schema-left-tabs button {
	height: 2.15rem !important;
	min-height: 2.15rem !important;
	border-radius: 6px 6px 0 0 !important;
	border-bottom: 0 !important;
}

/* Иконочные закладки схемы крупнее на ~30%. */
.schema-left-tabs button {
	flex: 0 0 2.34rem !important;
	width: 2.34rem !important;
	height: 2.8rem !important;
	min-height: 2.8rem !important;
}
.schema-left-tabs button svg {
	width: 1.43rem !important;
	height: 1.43rem !important;
}

/* Панели чёлок — естественный размер (прежнее увеличение вдвое убрано),
   середина — уменьшена вдвое через zoom на самой панели. */
#app-header .header-group,
.model-float-panel {
	transform-origin: top center;
}
#model-float-handle.chevron-hidden { display: none !important; }
.model-float-nav.open .model-float-panel {
	scale: 2;
}
#app-header .header-left-group { max-width: 22vw; }
#app-header .header-right-group { max-width: 30vw; }
#app-header .header-right-group .header-actions { flex-wrap: wrap; }
.model-float-panel { margin-top: .5rem; }

/* Основной текст и линия под кнопкой базового фактора. */
.main-text { color: var(--text); }
.classifier-add-row { border-bottom: 1px solid rgba(255,255,255,.1); padding-bottom: .45rem; }

/* Чат с дежурным агентом DSH: Лобби v0.4.0, docs/bridge/README.md (Ч-08, Ч-09). */
.chat-panel { position: fixed; right: 1rem; bottom: 0; z-index: 60; width: min(26rem, 92vw); display: flex; flex-direction: column; align-items: flex-end; }
.chat-head { display: flex; align-items: flex-end; gap: .25rem; cursor: grab; touch-action: none; }
.chat-head:active { cursor: grabbing; }
.chat-reset { padding: .35rem .5rem; border: 1px solid var(--line); border-bottom: 0; border-radius: .5rem .5rem 0 0; background: var(--panel2); color: var(--text); cursor: pointer; font-size: .85rem; }
.chat-reset:hover { border-color: var(--accent); }
.chat-resize { position: absolute; right: 0; bottom: 0; width: 16px; height: 16px; cursor: nwse-resize; touch-action: none; background: linear-gradient(135deg, transparent 50%, rgba(255,255,255,.18) 50%); border-bottom-right-radius: .5rem; }
.chat-toggle { display: inline-flex; align-items: center; gap: .4rem; padding: .45rem .8rem; border: 1px solid var(--line); border-bottom: 0; border-radius: .5rem .5rem 0 0; background: var(--panel2); color: var(--text); cursor: pointer; font-size: .85rem; }
.chat-toggle:hover { border-color: var(--accent); }
.chat-badge { min-width: 1.1rem; padding: 0 .3rem; border-radius: .55rem; background: var(--accent); color: #10201e; font-size: .7rem; font-weight: 700; text-align: center; }
.chat-body { position: relative; width: 100%; max-height: 80vh; overflow: hidden; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: .5rem .5rem 0 0; background: var(--panel); box-shadow: 0 -6px 20px rgba(0,0,0,.35); }
.chat-log { flex: 1 1 auto; height: 15rem; min-height: 5rem; overflow-y: auto; padding: .6rem; display: flex; flex-direction: column; gap: .45rem; }
.chat-empty { color: var(--muted); font-size: .82rem; }
.chat-msg { max-width: 90%; padding: .4rem .6rem; border-radius: .5rem; background: var(--panel2); border: 1px solid var(--line); }
.chat-msg.user { align-self: flex-end; border-color: rgba(79,179,168,.45); }
.chat-msg.agent { align-self: flex-start; }
.chat-who { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); margin-bottom: .15rem; }
.chat-text { font-size: .85rem; white-space: pre-wrap; word-break: break-word; }
.chat-pics { display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .3rem; }
.chat-pic { position: relative; display: inline-block; }
.chat-pic img { max-width: 10rem; max-height: 8rem; border-radius: .35rem; border: 1px solid var(--line); cursor: zoom-in; display: block; }
.chat-pic .pic-x { position: absolute; top: -6px; right: -6px; width: 1.1rem; height: 1.1rem; padding: 0; border-radius: 50%; border: 1px solid var(--line); background: var(--panel); color: var(--text); cursor: pointer; font-size: .75rem; line-height: 1; }
.chat-split { height: 6px; cursor: row-resize; background: transparent; border-top: 1px solid var(--line); }
.chat-split:hover { background: rgba(79,179,168,.25); }
.chat-thumbs { display: flex; flex-wrap: wrap; gap: .35rem; padding: .3rem .1rem .1rem; }
.chat-thumb { position: relative; }
.chat-thumb img { width: 3.5rem; height: 3.5rem; object-fit: cover; border-radius: .35rem; border: 1px solid var(--line); }
.chat-thumb .thumb-x { position: absolute; top: -6px; right: -6px; width: 1.1rem; height: 1.1rem; padding: 0; border-radius: 50%; border: 1px solid var(--line); background: var(--panel); color: var(--text); cursor: pointer; font-size: .75rem; line-height: 1; }
.chat-input-row { display: flex; gap: .35rem; width: 100%; }
.chat-input-row textarea { flex: 1; }
.chat-thinking { padding: .25rem .6rem; font-size: .78rem; color: var(--accent); font-style: italic; }
.chat-form { display: flex; flex-direction: column; gap: .3rem; padding: .45rem; border-top: 1px solid var(--line); }
.chat-img-overlay { position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,.85); display: flex; align-items: center; justify-content: center; cursor: zoom-out; }
.chat-img-overlay img { max-width: 92vw; max-height: 92vh; border-radius: .4rem; }
.chat-form textarea { flex: 1; resize: none; min-height: 2.2rem; max-height: 6rem; padding: .35rem .45rem; border-radius: .35rem; border: 1px solid var(--line); background: var(--field, var(--panel2)); color: var(--text); font: inherit; font-size: .85rem; }
.chat-form button { align-self: stretch; padding: 0 .8rem; border-radius: .35rem; border: 1px solid var(--line); background: var(--panel2); color: var(--text); cursor: pointer; }
.chat-form button:hover { border-color: var(--accent); }
@media (max-width: 600px) { .chat-panel { right: 0; width: 100vw; } .chat-body { height: 45vh; } }
