/* Панель редактора схемы (пакет Ignis.SchemaEditor.Blazor): кнопки тулбара, модальный диалог, разделители,
   компоновка «тулбар примитивов | сцена | свойства», 3D-сцена, панель свойств, диалог направлений.
   Рассчитана на Bootstrap 5 (lib/bootstrap/bootstrap.min.css этого же пакета): поля, кнопки, пункты меню. */

.mr-tool {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border: 1px solid transparent;
	border-radius: .375rem;
	background: none;
	padding: 0;
}

.mr-tool:hover:not(:disabled):not(.disabled) {
	background: #e9ecef;
	border-color: #ced4da;
}

/* нажатая кнопка-переключатель (панель свойств, «Схема во весь экран»), как ToggleButton десктопа */
.mr-tool.active {
	background: #dbe7ff;
	border-color: #86b7fe;
}

.mr-tool:disabled img, .mr-tool.disabled img {
	opacity: .25;
}

.mr-tool.disabled {
	pointer-events: none;
}

.mr-tool img {
	width: 24px;
	height: 24px;
}

/* модальные диалоги */
.mr-modal-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(33, 37, 41, .35);
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding-top: 8vh;
	z-index: 1050;
}

.mr-modal {
	max-width: calc(100vw - 2rem);
	background: #fff;
	border-radius: .5rem;
	box-shadow: 0 1rem 3rem rgba(0, 0, 0, .3);
	overflow: hidden;
	outline: none;
}

.mr-modal-title {
	padding: .5rem .875rem;
	font-weight: 600;
	background: #f8f9fa;
	border-bottom: 1px solid #dee2e6;
}

.mr-modal-caption {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	padding: .875rem;
	background: linear-gradient(135deg, #fff 30%, #e3e7ee 100%);
}

.mr-modal-caption-text {
	font-weight: 700;
	font-size: 1rem;
}

.mr-modal-caption-desc {
	color: #646464;
}

.mr-modal-caption img {
	width: 48px;
	height: 48px;
}

.mr-modal-body {
	padding: .875rem;
}

.mr-modal-body .form-label {
	margin-bottom: .125rem;
	font-size: .8125rem;
}

.mr-modal-buttons {
	display: flex;
	justify-content: flex-end;
	gap: .5rem;
	margin-top: 1rem;
}

.mr-modal-buttons .btn {
	min-width: 5rem;
}

/* разделители дерева, панели свойств и списка подсказок (mr.js): размеры - CSS-переменные на <html> */
.gr-splitter {
	flex: 0 0 auto;
	background: #f1f3f5;
	touch-action: none;
}

.gr-splitter-x {
	width: 5px;
	border-left: 1px solid #dee2e6;
	border-right: 1px solid #dee2e6;
	cursor: col-resize;
}

.gr-splitter-y {
	height: 5px;
	border-top: 1px solid #dee2e6;
	border-bottom: 1px solid #dee2e6;
	cursor: row-resize;
}

.gr-splitter:hover, .gr-splitter.gr-dragging {
	background: #cfe2ff;
}

body.gr-resizing-x, body.gr-resizing-x * {
	cursor: col-resize !important;
	user-select: none;
}

body.gr-resizing-y, body.gr-resizing-y * {
	cursor: row-resize !important;
	user-select: none;
}

/* панель редактора: тулбар примитивов | сцена | свойства */
.gr-editor {
	flex: 1 1 auto;
	display: flex;
	/* высота - остаток окна расчета: сцена и панель свойств не растягивают страницу, свойства прокручиваются */
	min-height: 0;
}

.gr-editor-tools {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	padding: .25rem;
	border-right: 1px solid #dee2e6;
	background: #f8f9fa;
	overflow: auto;
}

.gr-tools-sep {
	width: 24px;
	height: 1px;
	margin: .25rem 0;
	background: #ced4da;
}

.gr-properties {
	flex: 0 0 auto;
	width: var(--gr-properties-width, 280px);
	max-width: 70%;
	background: #f8f9fa;
	overflow: auto;
}

.gr-properties-header {
	padding: .25rem .5rem;
	border-bottom: 1px solid #dee2e6;
	font-weight: 500;
}

.gr-properties-body {
	padding: .5rem;
	font-size: .8125rem;
}

/* сцена: чертеж схемы в аксонометрии */
.gr-scene {
	position: relative;
	flex: 1 1 auto;
	min-width: 0;
	min-height: 0;
	background: #fff;
}

.gr-scene-tools {
	position: absolute;
	top: .375rem;
	right: .375rem;
	z-index: 2;
	display: flex;
	gap: 2px;
	padding: 2px;
	border: 1px solid #dee2e6;
	border-radius: .25rem;
	background: rgba(255, 255, 255, .9);
}

.gr-zoom-out {
	position: relative;
}

.gr-zoom-out::after {
	content: "−";
	position: absolute;
	right: 2px;
	bottom: 0;
	font-size: .75rem;
	font-weight: 700;
	line-height: 1;
	color: #333;
}

.gr-scene-view {
	position: absolute;
	inset: 0;
	overflow: auto;
}

/* 3D-сцена: черный фон, как в десктопе; подписи - HTML поверх холста */
.gr-scene-view.gr3d {
	overflow: hidden;
	background: #000;
}

.gr3d-canvas {
	display: block;
	width: 100%;
	height: 100%;
}

.gr3d-overlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
	overflow: hidden;
}

.gr3d-overlay > div {
	position: absolute;
	left: 0;
	top: 0;
	white-space: nowrap;
	color: #fff;
	font: 12px "Courier New", monospace;
	text-shadow: 0 0 2px #000;
}

.gr3d-overlay > .gr3d-axis {
	font-size: 13px;
	font-weight: 600;
}

.gr3d-overlay > .gr3d-dim {
	color: #e8e8e8;
}

.gr3d-overlay > .gr3d-pull {
	color: #9ec5ff;
	font-weight: 600;
}

.gr-scene-empty {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
	text-align: center;
	color: #6c757d;
}

/* редактор схемы: сцена, выделение, маркер протяжки, контекстное меню, панель свойств */
.gr-scene-view.gr-editable {
	cursor: default;
	outline: none;
	user-select: none;
}

.gr-scene-view.gr-editable .gr3d-canvas {
	cursor: crosshair;
}

.gr-scene-view.gr-editable:focus {
	box-shadow: inset 0 0 0 2px rgba(26, 115, 232, .35);
}

.gr-scene-view.gr-panning {
	cursor: grabbing;
}

.gr-scene-view.gr-pulling {
	cursor: crosshair;
}

.gr-context {
	position: absolute;
	z-index: 20;
	min-width: 240px;
	padding: .25rem 0;
	border: 1px solid #ced4da;
	border-radius: .375rem;
	background: #fff;
	box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .15);
	font-size: .875rem;
}

.gr-context .dropdown-item {
	display: block;
	width: 100%;
	padding: .3rem 1rem;
	border: 0;
	background: transparent;
	color: #212529;
	text-align: left;
	white-space: nowrap;
	cursor: pointer;
}

/* подсветка пункта под курсором (замечание Alejandro 2026-10-08) */
.gr-context .dropdown-item:hover,
.gr-context .dropdown-item:focus-visible {
	background: #e9ecef;
	color: #1e2125;
	outline: none;
}

.gr-context .dropdown-divider {
	margin: .25rem 0;
	border-top: 1px solid #dee2e6;
	opacity: 1;
}

/* недоступные пункты серые, как в меню десктопа (переменные bootstrap заданы только внутри .dropdown-menu) */
.gr-context .dropdown-item:disabled,
.gr-context .dropdown-item.disabled {
	color: #adb5bd;
	pointer-events: none;
	background: transparent;
}

.gr-scene-view.gr-knob-hover .gr3d-canvas {
	cursor: move;
}

.gr-prop {
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin-bottom: .5rem;
}

/* палитра раскраски элемента (решение Alejandro 2026-10-08) */
.gr-palette {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}

.gr-swatch {
	width: 22px;
	height: 22px;
	padding: 0;
	border: 1px solid #adb5bd;
	border-radius: 3px;
	background: #fff;
	color: #6c757d;
	font-size: .9rem;
	line-height: 1;
	cursor: pointer;
}

.gr-swatch:hover {
	border-color: #212529;
}

.gr-swatch.active {
	outline: 2px solid #212529;
	outline-offset: 1px;
}

.gr-prop label {
	color: #6c757d;
	font-size: .75rem;
}

.gr-prop span {
	padding: .125rem 0;
}

.gr-prop-group {
	margin: .5rem 0 .25rem;
	padding-top: .25rem;
	border-top: 1px solid #dee2e6;
	font-weight: 500;
}

/* сворачиваемая категория, как у PropertyGrid десктопа */
.gr-prop-toggle {
	display: flex;
	align-items: center;
	gap: .375rem;
	width: 100%;
	padding: .25rem 0 0;
	border: 0;
	border-top: 1px solid #dee2e6;
	background: none;
	color: inherit;
	text-align: left;
}

.gr-prop-toggle::before {
	content: "";
	border-top: 4px solid transparent;
	border-bottom: 4px solid transparent;
	border-left: 5px solid #495057;
	transition: transform .15s;
}

.gr-prop-toggle[aria-expanded="true"]::before {
	transform: rotate(90deg);
}

.gr-prop-toggle:hover {
	color: #0d6efd;
}

/* диалог направлений пожаротушения: два списка с кнопками переноса */
.gr-pick {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	gap: .5rem;
	align-items: stretch;
}

.gr-pick-title {
	margin-bottom: .25rem;
	font-size: .8125rem;
	color: #6c757d;
}

.gr-pick-list {
	height: 220px;
}

.gr-pick-buttons {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: .375rem;
}

/* управление видом десктопа (gr3d.js, navigation 'desktop'): курсоры прежнего редактора на OpenCascade -
   стрелка, «рука» при переносе, вращение, лупа; рамки фокуса у сцены нет */
.gr-scene-view.gr-nav-desktop .gr3d-canvas {
	cursor: default;
}

.gr-scene-view.gr-nav-desktop:focus {
	box-shadow: none;
}

.gr-scene-view.gr-nav-desktop.gr-mode-pan .gr3d-canvas {
	cursor: url(cursors/grab.cur), grab;
}

.gr-scene-view.gr-nav-desktop.gr-mode-rotate .gr3d-canvas {
	cursor: url(cursors/rotate.cur), move;
}

.gr-scene-view.gr-nav-desktop.gr-mode-zoom .gr3d-canvas {
	cursor: url(cursors/zoom.cur), zoom-in;
}

/* перенос идет (левой кнопкой в режиме переноса или средней в любом режиме) */
.gr-scene-view.gr-nav-desktop.gr-panning .gr3d-canvas {
	cursor: url(cursors/grabbing.cur), grabbing;
}

/* кнопки вставки арматуры в трубу в панели свойств */
.gr-insert-tools {
	display: inline-flex;
	gap: 2px;
}
