/*
 * =========================================================
 * ВКЛАДКА «РЗА» — ФУНКЦИИ (слева) И ОБОРУДОВАНИЕ (справа)
 * =========================================================
 */

.rza-bay-root { padding: 10px; font-family: Arial, sans-serif; font-size: 13px; }

.rza-bay-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.rza-bay-title { font-size: 15px; font-weight: bold; color: #222; }
.rza-bay-title.rza-none { font-weight: normal; font-size: 13px; color: #777; padding: 30px 0; }
.rza-status { margin-left: auto; color: #666; font-size: 12px; }
.rza-status.rza-err { color: #a33; }

.rza-bay { position: relative; display: flex; gap: 14px; align-items: flex-start; }

.rza-col { background: #fff; border: 1px solid #ccc; border-radius: 4px; padding: 10px; min-height: 300px; }
.rza-funcs-col { width: 34%; min-width: 240px; }
.rza-equip-col { flex: 1; min-width: 0; }

.rza-col-title { font-weight: bold; margin-bottom: 8px; color: #333; }

.rza-add-controls { display: flex; gap: 6px; margin-bottom: 10px; }
.rza-add-controls select { flex: 1; min-width: 0; padding: 4px; }
.rza-add-btn { padding: 4px 10px; cursor: pointer; white-space: nowrap; }

.rza-list { display: flex; flex-direction: column; gap: 8px; }
.rza-empty { color: #999; padding: 20px 6px; text-align: center; }
.rza-muted { color: #888; }
.rza-warn { color: #a33; margin: 6px 0; }

.rza-del { border: none; background: none; color: #a33; font-size: 16px; line-height: 1; cursor: pointer; padding: 0 4px; }
.rza-del:hover { background: #fde8e8; border-radius: 3px; }

/* ---------- функции РЗА ---------- */

.rza-fn-item { border: 1px solid #bbb; border-left: 5px solid #5b6b8c; border-radius: 4px; background: #f6f7fa; padding: 6px 8px; }
.rza-fn-head { display: flex; align-items: center; gap: 6px; }
.rza-fn-name { flex: 1; font-weight: bold; }
.rza-fn-port { display: flex; align-items: center; gap: 8px; margin-top: 5px; }
.rza-fn-label { flex: 1; min-width: 0; }
.rza-fn-val { width: 90px; padding: 3px 5px; border: 1px solid #bbb; border-radius: 3px; text-align: right; background: #fff; }
.rza-fn-val:focus { border-color: #3b82f6; outline: none; }
.rza-fn-unit { width: 28px; color: #666; font-size: 12px; }

/* цветной кружок = точка связи (у функций и у оборудования) */
.rza-pt { display: inline-block; flex: none; min-width: 22px; padding: 2px 4px; border-radius: 10px; color: #fff; font-weight: bold; text-align: center; cursor: crosshair; box-sizing: border-box; touch-action: none; user-select: none; }
.rza-pt:hover { box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.45); }

/* ---------- оборудование: div 1 (рисунок) + div 2 (состав) ---------- */

.rza-eq-item { border: 1px solid #bbb; border-radius: 5px; background: #fafafa; overflow: hidden; }

.rza-eq-item .eq-pic { position: relative; display: flex; align-items: center; gap: 12px; padding: 8px 30px 8px 10px; cursor: pointer; background: #fff; }
.rza-eq-item .eq-pic:hover { background: #f3f8ff; }

.eq-pic-frame { flex: none; width: 150px; height: 90px; display: flex; align-items: center; justify-content: center; border: 1px solid #ddd; border-radius: 3px; background: #fff; }
.eq-pic-frame img { max-width: 100%; max-height: 100%; object-fit: contain; }
.eq-pic-empty { color: #aaa; font-size: 12px; }

.eq-pic-name { font-weight: bold; font-size: 14px; }
.eq-pic .rza-del { position: absolute; top: 4px; right: 4px; }

/* второй div (eq-main) скрыт, пока не раскрыт кликом по рисунку */
.rza-eq-item .eq-main { display: none; border: none; border-top: 1px solid #ddd; border-radius: 0; padding: 8px 10px; background: #fafafa; }
.rza-eq-item.open .eq-main { display: block; }


.eq-group { margin-bottom: 8px; }
.eq-group-name { font-weight: bold; margin-bottom: 2px; }
.eq-param { display: flex; align-items: center; gap: 6px; padding: 1px 0 1px 8px; color: #333; }
.eq-dot { flex: none; width: 9px; height: 9px; border-radius: 50%; }

@media (max-width: 800px) {
    .rza-bay { flex-direction: column; }
    .rza-funcs-col, .rza-equip-col { width: 100%; }
}


/* ---------- связи между точками ---------- */

.rza-hint { color: #666; font-size: 12px; margin-bottom: 6px; }
.rza-msg { min-height: 16px; margin-bottom: 6px; color: #8a4b00; font-size: 12px; }
.rza-broken { margin-bottom: 6px; color: #7a2a2a; font-size: 12px; }
.rza-broken:empty { display: none; }
.rza-broken button { margin-left: 6px; padding: 1px 8px; }

.rza-links { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; z-index: 5; }

.rza-link { stroke-width: 2.5; stroke-linecap: round; pointer-events: none; opacity: 0.9; }
.rza-link.sel { stroke-width: 4.5; opacity: 1; filter: drop-shadow(0 0 3px rgba(0, 0, 0, 0.45)); }
.rza-link.dashed { stroke-dasharray: 7 5; }
.rza-link.drag { stroke-dasharray: 3 4; opacity: 0.8; }

/* широкая невидимая «ручка» для клика по тонкой линии */
.rza-link-hit { stroke: transparent; stroke-width: 12; pointer-events: stroke; cursor: pointer; }

.rza-link-del { pointer-events: all; cursor: pointer; }
.rza-link-del circle { fill: #fff; stroke: #c62828; stroke-width: 2; }
.rza-link-del text { fill: #c62828; font-size: 16px; font-weight: bold; pointer-events: none; }
.rza-link-del:hover circle { fill: #fde8e8; }

/* подсветка при протягивании */
.rza-linking .rza-pt-no { opacity: 0.25; }
.rza-linking .rza-pt-ok { box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.55); }
.rza-linking .rza-pt-hot { box-shadow: 0 0 0 4px #16a34a; transform: scale(1.15); }
.rza-linking, .rza-linking * { cursor: crosshair !important; }


/* ---------- шаблоны документов (центральная колонка) ---------- */

.rza-bay .rza-funcs-col { width: 30%; }
.rza-tpl-col { width: 26%; min-width: 220px; }

.rza-tpl-item { border: 1px solid #bbb; border-left: 5px solid #2e7d32; border-radius: 4px; background: #f6faf6; padding: 6px 8px; }
.rza-tpl-head { display: flex; align-items: center; gap: 6px; margin-bottom: 2px; }
.rza-tpl-name { flex: 1; min-width: 0; font-weight: bold; overflow-wrap: anywhere; }

.rza-tpl-const { display: flex; align-items: center; gap: 8px; margin-top: 5px; }
.rza-tpl-cname { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.rza-tpl-cval { flex: none; max-width: 40%; color: #777; font-size: 12px; overflow-wrap: anywhere; text-align: right; }

/* константа без точки: пустое кольцо в колонке точек */
.rza-tpl-nopt { flex: none; position: relative; width: 22px; height: 18px; }
.rza-tpl-nopt::after { content: ""; position: absolute; left: 6px; top: 4px; width: 6px; height: 6px; border: 2px solid #bbb; border-radius: 50%; }


/* ---------- преобразователи вход → выход (в составе оборудования) ---------- */

.rza-cv { display: flex; align-items: center; gap: 8px; margin: 4px 0 4px 8px; padding: 3px 6px; border: 1px dashed #bbb; border-radius: 4px; background: #fff; }
.rza-cv-mid { flex: 1; min-width: 0; text-align: center; color: #444; font-size: 12px; overflow-wrap: anywhere; }


/* ---------- значения точек оборудования ---------- */

.eq-param-text { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.rza-eq-val { flex: none; width: 90px; padding: 2px 5px; border: 1px solid #bbb; border-radius: 3px; text-align: right; background: #fff; box-sizing: border-box; }
.rza-eq-val:focus { border-color: #3b82f6; outline: none; }
select.rza-eq-val { width: 90px; text-align: left; padding: 2px 3px; }
.rza-eq-val.rza-eq-bad { border-color: #d32f2f; background: #ffebee; color: #b71c1c; }
.rza-eq-unit { flex: none; width: 28px; color: #666; font-size: 12px; }

.rza-cv-side { display: flex; align-items: center; gap: 4px; flex: none; }
.rza-cv-note { font-size: 12px; }
.rza-cv-err { color: #a33; font-size: 11px; }
.rza-cv-err:empty { display: none; }

/* ---------- список шаблонов для документа и окно печати ---------- */

.rza-print-wrap { display: flex; flex-direction: column; gap: 14px; margin-top: 14px; }
.rza-print-list-box { min-height: 0; }
.rza-print-bar { display: flex; gap: 6px; margin-bottom: 8px; }

.rza-print-list { display: flex; flex-direction: column; gap: 4px; max-height: 280px; overflow-y: auto; }
.rza-print-item { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border: 1px solid #ccc; border-radius: 4px; background: #fafafa; cursor: grab; }
.rza-print-item:hover { background: #f1f5f9; }
.rza-print-item.rza-print-linked { background: #e6f4ea; border-color: #81c784; }
.rza-print-item.rza-print-linked:hover { background: #d8eedd; }
.rza-print-item.rza-dragging { opacity: 0.45; }
.rza-print-item.rza-over-top { box-shadow: 0 -3px 0 #3b82f6; }
.rza-print-item.rza-over-bottom { box-shadow: 0 3px 0 #3b82f6; }
.rza-print-item input[type=checkbox] { flex: none; margin: 0; cursor: pointer; }
.rza-print-grip { flex: none; color: #999; letter-spacing: -2px; user-select: none; }
.rza-print-name { flex: 1; min-width: 0; overflow-wrap: anywhere; user-select: none; }

.rza-print-view-box { min-height: 200px; }
.rza-print-view-head { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.rza-print-view-head .rza-col-title { margin-bottom: 0; }
.rza-print-view-body { display: flex; flex-direction: column; gap: 14px; background: #e9e9e9; padding: 10px; border-radius: 4px; }
.rza-print-doc-title { font-size: 12px; color: #555; margin-bottom: 4px; }
.rza-print-frame { width: 100%; height: 300px; border: 0; background: #e9e9e9; display: block; }

@media print {
    .rza-print-doc { page-break-after: always; }
}

.rza-tpl-cval.rza-written { color: #0a6a2a; font-weight: bold; }

/* документ слева, константы шаблона справа */
.rza-print-doc-row { display: flex; gap: 8px; align-items: flex-start; }
.rza-print-doc-body { flex: 1 1 auto; min-width: 0; }
.rza-const-panel { flex: 0 0 250px; max-height: 70vh; overflow-y: auto; border: 1px solid #bbb; border-radius: 4px; background: #fafafa; padding: 6px 8px; font-size: 12px; }
.rza-const-title { font-weight: bold; margin-bottom: 4px; color: #444; }
.rza-const-row { border-top: 1px solid #e3e3e3; padding: 3px 0; }
.rza-const-name { color: #555; }
.rza-const-val { font-size: 13px; color: #777; overflow-wrap: anywhere; }
.rza-const-src { font-size: 11px; color: #999; overflow-wrap: anywhere; }
.rza-const-bound .rza-const-val { color: #0a6a2a; font-weight: bold; }
.rza-const-bound .rza-const-src { color: #3a7a50; }
@media print { .rza-const-panel { display: none; } }
.rza-const-title-user { color: #1f5fa8; }
.rza-const-title-tpl { margin-top: 8px; padding-top: 6px; border-top: 2px solid #ccc; }

/* Поля значений функций и оборудования — выше линий связи (у .rza-links z-index: 5),
   чтобы линия не перекрывала поле и на него можно было навести курсор и кликнуть. */
.rza-fn-val,
.rza-eq-val {
    position: relative;
    z-index: 6;
}

/* Оборудование с значением вне допустимых пределов: первый блок (рисунок) подсвечен красноватым */
.rza-eq-item.rza-eq-has-bad .eq-pic { background: #ffebee; }
.rza-eq-item.rza-eq-has-bad .eq-pic:hover { background: #ffdde0; }
.rza-eq-item.rza-eq-has-bad .eq-pic-frame { border-color: #e57373; }
