:root {
  --ink: #17202a;
  --muted: #718096;
  --line: #e4e9ef;
  --paper: #ffffff;
  --canvas: #f4f6f8;
  --navy: #17283d;
  --accent: #147d70;
  --accent-soft: #e5f4f1;
  --danger: #b33a3a;
  --sidebar-width: 264px;
  font-family: Inter, "Segoe UI", Arial, sans-serif;
}
* { box-sizing: border-box; }
body { margin: 0; color: var(--ink); background: var(--canvas); min-height: 100vh; }
body.theme-night {
  --ink: #d8e2ea;
  --muted: #93a4b3;
  --line: #253545;
  --paper: #152130;
  --canvas: #0c1420;
  --navy: #08111d;
  --accent: #37b9a7;
  --accent-soft: #133931;
  --danger: #ef7d7d;
  color-scheme: dark;
}
body.protocol-page { background: #f6f8fa; }
body.bpmn-page { background: #f6f8fa; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
.sidebar { position: fixed; inset: 0 auto 0 0; width: var(--sidebar-width); background: var(--navy); color: white; padding: 26px 18px; overflow: auto; transition: width .18s ease, transform .18s ease; }
.sidebar-toggle { position: fixed; z-index: 20; top: 18px; left: calc(var(--sidebar-width) - 46px); display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.18); border-radius: 8px; background: rgba(23,40,61,.92); color: white; font-size: 18px; font-weight: 800; transition: left .18s ease, background .18s ease; }
.sidebar-toggle:hover { background: var(--accent); }
.sidebar-resizer { position: fixed; top: 0; bottom: 0; left: calc(var(--sidebar-width) - 4px); z-index: 19; width: 8px; cursor: col-resize; background: transparent; transition: left .18s ease; }
.sidebar-resizer:hover,
body.sidebar-resizing .sidebar-resizer { background: rgba(20,125,112,.34); }
body.sidebar-collapsed .sidebar { transform: translateX(calc(-1 * var(--sidebar-width))); }
body.sidebar-collapsed .sidebar-toggle { left: 12px; }
body.sidebar-collapsed .sidebar-resizer { display: none; }
body.sidebar-resizing,
body.column-resizing { cursor: col-resize; user-select: none; }
.brand { display: flex; align-items: center; gap: 12px; padding: 0 10px 28px; }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; background: var(--accent); font-weight: 800; }
.brand strong, .brand span { display: block; }
.brand span { margin-top: 2px; color: #9fb0c3; font-size: 12px; }
.nav-caption { margin: 30px 10px 9px; color: #8498ae; font-size: 11px; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
nav { display: grid; gap: 4px; }
.nav-item { width: 100%; padding: 11px 12px; color: #b9c6d3; background: transparent; border: 0; border-radius: 8px; text-align: left; }
.nav-item:hover, .nav-item.active { color: white; background: rgba(255,255,255,.09); }
.nav-item.active { box-shadow: inset 3px 0 var(--accent); }
main { margin-left: var(--sidebar-width); min-height: 100vh; transition: margin-left .18s ease; }
body.sidebar-collapsed main { margin-left: 0; }
.topbar { height: 72px; padding: 12px 38px; background: var(--paper); border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; }
h1, h2, h3, p { margin: 0; }
h1 { font-size: 23px; letter-spacing: 0; line-height: 1.1; }
h2 { font-size: 22px; }
.eyebrow { margin-bottom: 3px; color: var(--accent); font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.header-actions, .drawer-footer { display: flex; gap: 10px; }
.header-actions { align-items: center; }
.theme-toggle { min-width: 64px; padding: 9px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--paper); color: var(--ink); font-size: 13px; font-weight: 750; }
.theme-toggle:hover { border-color: var(--accent); color: var(--accent); }
.user-panel { display: flex; align-items: center; gap: 10px; padding-right: 8px; color: var(--muted); font-size: 13px; }
.user-panel span { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.button { border: 1px solid transparent; border-radius: 8px; padding: 10px 15px; font-weight: 650; }
.button.primary { color: white; background: var(--accent); }
.button.primary:hover { background: #0d6c61; }
.button.secondary { background: white; border-color: var(--line); color: #344154; }
.button.danger { color: var(--danger); border-color: #f0cccc; background: #fff8f8; }
.button.small { padding: 7px 10px; font-size: 13px; }
.protocol-shell { width: min(1180px, calc(100vw - 48px)); min-height: 100vh; margin: 0 auto; padding: 26px 0; display: flex; flex-direction: column; gap: 16px; }
.protocol-header, .protocol-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.protocol-header h1 { font-size: 25px; }
.protocol-editor-card { flex: 1 1 auto; min-height: 0; border: 1px solid var(--line); border-radius: 12px; background: white; box-shadow: 0 18px 45px rgba(23,32,42,.07); overflow: hidden; }
#protocol-editor { position: relative; display: block; width: 100%; min-height: calc(100vh - 180px); padding: 22px 24px; border: 0; outline: 0; color: var(--ink); background: white; font-size: 17px; line-height: 1.55; }
#protocol-editor.is-empty::before { content: "Введите текст протокола"; position: absolute; color: #9aa7b4; pointer-events: none; }
.protocol-line { min-height: 1.55em; white-space: pre-wrap; }
.protocol-line-h1 { margin: 0 0 10px; color: #17283d; font-size: 28px; line-height: 1.2; font-weight: 850; }
.protocol-line-h2 { margin: 12px 0 6px; color: #23384c; font-size: 22px; line-height: 1.26; font-weight: 800; }
.protocol-line-h3 { margin: 9px 0 4px; color: #2f455b; font-size: 18px; line-height: 1.34; font-weight: 760; }
.protocol-line-body { color: var(--ink); font-size: 17px; line-height: 1.55; font-weight: 450; }
#protocol-save:disabled { opacity: .68; cursor: wait; }
.bpmn-shell { width: min(1440px, calc(100vw - 48px)); min-height: 100vh; margin: 0 auto; padding: 26px 0; display: flex; flex-direction: column; gap: 16px; }
.bpmn-header, .bpmn-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.bpmn-header h1 { font-size: 25px; }
.bpmn-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; }
.bpmn-actions .button.active { color: var(--accent); border-color: #b9ded7; background: #f0faf8; }
.bpmn-workspace { flex: 1 1 auto; min-height: calc(100vh - 140px); display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.bpmn-workspace.source-visible { grid-template-columns: minmax(0, 1fr) minmax(360px, 440px); }
.bpmn-viewer-card, .bpmn-source-card { min-height: 0; border: 1px solid var(--line); border-radius: 12px; background: white; box-shadow: 0 18px 45px rgba(23,32,42,.07); overflow: hidden; }
.bpmn-viewer-card { position: relative; background: #fbfcfd; }
.bpmn-viewer-toolbar { display: inline-flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 20px; background: #050607; box-shadow: 0 12px 28px rgba(10,18,27,.18); }
.bpmn-viewer-toolbar button { display: inline-grid; place-items: center; width: 38px; height: 38px; padding: 0; border: 0; border-radius: 999px; background: transparent; color: white; font-size: 24px; font-weight: 850; line-height: 1; }
.bpmn-viewer-toolbar button:hover { background: rgba(255,255,255,.14); }
.bpmn-viewer-toolbar button:active { transform: translateY(1px); }
#bpmn-zoom-reset { font-size: 13px; letter-spacing: 0; }
#bpmn-source-toggle { font-size: 13px; letter-spacing: 0; }
#bpmn-toolbar-upload { font-size: 22px; }
#bpmn-toolbar-delete { color: #ffdad4; font-size: 28px; }
#bpmn-close { font-size: 28px; }
#bpmn-frame { display: block; width: 100%; height: 100%; min-height: 560px; border: 0; background: white; }
.bpmn-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 28px; background: white; text-align: center; }
.bpmn-empty p { max-width: 440px; color: var(--muted); line-height: 1.45; }
.bpmn-source-card { display: flex; flex-direction: column; }
.bpmn-source-card span { padding: 12px 14px; border-bottom: 1px solid var(--line); color: #536273; font-size: 13px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
#bpmn-source { flex: 1 1 auto; min-height: 520px; padding: 14px; border: 0; outline: 0; resize: none; color: #17202a; background: white; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; line-height: 1.45; }
.bpmn-source-actions { display: flex; justify-content: flex-end; gap: 10px; padding: 12px; border-top: 1px solid var(--line); background: #f8fafb; }
#bpmn-save:disabled, #bpmn-render:disabled { opacity: .68; cursor: wait; }
.bpmn-editor-overlay { position: fixed; inset: 0; z-index: 100; display: flex; flex-direction: column; background: #f6f8fa; }
.bpmn-editor-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 24px; border-bottom: 1px solid var(--line); background: white; }
.bpmn-editor-header h2 { font-size: 24px; }
.bpmn-editor-actions { display: flex; align-items: center; gap: 12px; }
#bpmn-editor-frame { flex: 1 1 auto; width: 100%; border: 0; background: white; }
@media (max-width: 980px) {
  .bpmn-workspace.source-visible { grid-template-columns: 1fr; }
  #bpmn-frame, #bpmn-source { min-height: 420px; }
  .bpmn-viewer-toolbar { justify-content: center; gap: 6px; padding: 8px 10px; border-radius: 16px; }
  .bpmn-viewer-toolbar button { width: 32px; height: 32px; font-size: 20px; }
}
.workspace { min-width: 0; padding: 8px 38px 20px; }
.toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 14px; margin-bottom: 8px; }
.search { position: relative; order: 1; width: min(140px, 22%); display: flex; align-items: center; gap: 9px; padding: 8px 34px 8px 13px; border: 1px solid var(--line); border-radius: 9px; background: white; color: var(--muted); }
.search input { width: 100%; min-width: 0; border: 0; outline: 0; }
.search-clear { position: absolute; top: 50%; right: 7px; display: none; place-items: center; width: 22px; height: 22px; padding: 0; transform: translateY(-50%); border: 0; border-radius: 50%; background: #eef2f5; color: #536273; font-size: 16px; line-height: 1; }
.search.has-value .search-clear { display: grid; }
.search-clear:hover { background: #dfe7ed; color: var(--ink); }
.count, .muted { color: var(--muted); font-size: 13px; }
.count { order: 4; margin-left: auto; }
.view-switch { order: 3; display: inline-flex; gap: 3px; padding: 4px; border: 1px solid var(--line); border-radius: 9px; background: #eef2f5; }
.view-switch button { min-width: 82px; padding: 7px 12px; border: 0; border-radius: 6px; background: transparent; color: #59697a; font-size: 13px; font-weight: 700; }
.view-switch button.active { color: var(--accent); background: white; box-shadow: 0 1px 4px rgba(23,32,42,.08); }
#vacancy-view-switch button { min-width: 62px; }
.print-requirements-button { order: 3; min-width: 54px; min-height: 36px; padding: 7px 10px; }
.table-card { overflow: auto; max-width: 100%; min-height: 300px; background: white; border: 1px solid var(--line); border-radius: 12px; }
.journal-view-controls { order: 3; margin-left: 0; }
.journal-view-controls button { min-width: 42px; height: 36px; font-size: 18px; }
.journal-view-controls button[data-journal-zoom="reset"] { min-width: 66px; font-size: 16px; }
.journal-view-controls span { min-width: 54px; font-size: 14px; }
body.journal-fullscreen-open .journal-view-controls { position: fixed; top: 14px; right: 16px; z-index: 61; box-shadow: 0 8px 24px rgba(23,32,42,.14); }
.table-card.fullscreen { position: fixed; inset: 0; z-index: 60; min-height: 0; max-width: none; border: 0; border-radius: 0; background: white; }
.table-card.fullscreen table { min-width: 100%; }
.table-card.journal-pannable { cursor: grab; }
.table-card.journal-pannable button,
.table-card.journal-pannable input,
.table-card.journal-pannable select,
.table-card.journal-pannable textarea,
.table-card.journal-pannable th { cursor: auto; }
.table-card.journal-pannable.panning { cursor: grabbing; user-select: none; }
.table-card.journal-pannable.panning * { cursor: grabbing; }
th.draggable-table-header { cursor: grab; user-select: none; }
th.draggable-table-header:active { cursor: grabbing; }
th.draggable-table-header.dragging { opacity: .45; }
.machine-map { display: flex; flex-direction: column; height: calc(100vh - 139px); min-height: 520px; margin-bottom: 0; overflow: hidden; border: 1px solid #dbe6e3; border-radius: 12px; background: #fbfcfd; }
.machine-map-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 17px 19px 12px; border-bottom: 1px solid #e5ecea; background: white; }
.machine-map-header h2 { font-size: 19px; }
.user-function-map-header { position: relative; }
.user-function-map-header h2 { line-height: 1.15; }
.user-function-map-title-block { flex: 1 1 0; min-width: 0; }
.user-function-map-layer-title { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); color: var(--ink); font-size: 19px; font-weight: 850; line-height: 1.15; white-space: nowrap; }
.machine-map-actions { display: flex; align-items: center; justify-content: flex-end; gap: 18px; }
.machine-map-legend { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px 13px; color: var(--muted); font-size: 12px; }
.machine-map-legend span { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.machine-map-legend i { width: 10px; height: 10px; border-radius: 50%; }
.machine-map-legend .load-low { background: #3f8f72; }
.machine-map-legend .load-mid { background: #d2a23a; }
.machine-map-legend .load-high { background: #c86a3d; }
.machine-map-legend .load-critical { background: #b33a3a; }
.qualification-gradient-legend { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: 12px; font-weight: 750; }
.qualification-gradient-legend span { white-space: nowrap; }
.qualification-gradient-legend div { display: grid; gap: 3px; width: 138px; }
.qualification-gradient-legend i { display: block; height: 10px; border-radius: 999px; background: linear-gradient(90deg, #eef5f3 0%, #d8ebe6 25%, #b8ddd4 50%, #82c5b5 75%, #3f9f8d 100%); box-shadow: inset 0 0 0 1px rgba(39,58,70,.08); }
.qualification-gradient-legend b { display: flex; justify-content: space-between; font-weight: 750; }
.qualification-gradient-legend em { color: #6c7b8a; font-style: normal; font-size: 10px; line-height: 1; }
.function-kind-legend { color: var(--muted); font-size: 8px; font-weight: 800; }
.function-kind-legend-rows { display: grid; gap: 1px; }
.function-kind-legend-row { display: grid; grid-template-columns: 38px 64px; align-items: center; gap: 4px; line-height: 1; }
.function-kind-legend-row em { font-style: normal; text-align: right; white-space: nowrap; }
.function-kind-legend-row i { display: block; height: 8px; border-radius: 999px; box-shadow: inset 0 0 0 1px rgba(39,58,70,.1); }
.function-kind-legend b { display: grid; grid-template-columns: 38px 64px; gap: 4px; margin-top: 1px; font-weight: 800; }
.function-kind-legend b em { display: block; }
.function-kind-legend b span { display: flex; justify-content: space-between; color: #6c7b8a; font-size: 8px; line-height: 1; }
.function-kind-svg-legend { pointer-events: none; }
.function-kind-svg-legend text { fill: #6c7b8a; font-size: 16px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.82); stroke-width: 4px; text-transform: lowercase; }
.function-kind-svg-legend rect { stroke: rgba(39,58,70,.16); stroke-width: 1.2; }
.function-kind-svg-legend-scale text { font-size: 14px; font-weight: 850; }
.machine-map-zoom { display: flex; align-items: center; gap: 6px; padding: 4px; border: 1px solid var(--line); border-radius: 9px; background: #f8fafb; }
.machine-map-zoom button { min-width: 31px; height: 29px; padding: 0 8px; border: 1px solid #d7e1e8; border-radius: 7px; background: white; color: #344154; font-weight: 750; }
.machine-map-zoom span { min-width: 42px; color: #536273; font-size: 12px; font-weight: 750; text-align: center; }
.machine-equipment-filters { order: 2; flex-wrap: wrap; max-width: 520px; }
.machine-equipment-filters button { min-width: auto; padding: 7px 10px; white-space: nowrap; }
.load-map-layer-switch button { min-width: 58px; }
.functional-group-controls { order: 2; flex: 1 1 360px; flex-wrap: wrap; width: auto; max-width: 760px; min-height: 41px; justify-content: flex-start; border-style: dashed; background: rgba(248,251,251,.96); }
.functional-group-drop-hint { align-self: center; flex: 0 0 auto; padding: 0 7px; color: #6d7b8a; font-size: 13px; font-weight: 750; white-space: nowrap; }
.functional-group-controls button { display: inline-flex; align-items: center; gap: 6px; min-width: auto; max-width: min(320px, 100%); padding: 7px 12px; border: 1px solid #cbdbe3; background: #ffffff; color: #243649; white-space: nowrap; cursor: grab; box-shadow: 0 2px 7px rgba(23,32,42,.08); }
.functional-group-controls button > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.functional-group-controls button.active { border-color: #b8d7d2; background: #ffffff; color: var(--accent); box-shadow: 0 2px 8px rgba(23,32,42,.11); }
.functional-group-controls .functional-columns-button { margin-left: auto; min-width: 54px; min-height: 36px; padding: 5px 11px; font-size: 24px; line-height: 1; cursor: pointer; }
.functional-group-controls button:active { cursor: grabbing; }
.functional-group-controls button:not(.active) { opacity: .58; text-decoration: line-through; }
.functional-group-controls .functional-columns-button:not(.active) { opacity: 1; text-decoration: none; }
.functional-group-controls button.filtered { box-shadow: inset 0 -3px 0 var(--accent); }
.functional-group-controls button.dragging { opacity: .42; transform: scale(.98); }
.functional-group-controls.drag-over { outline: 2px dashed var(--accent); outline-offset: 3px; background: #f2faf8; }
.functional-group-button-icons { display: inline-flex; align-items: center; gap: 4px; letter-spacing: 0; }
.functional-group-filter-popover { position: fixed; z-index: 80; min-width: 230px; max-width: 310px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: white; box-shadow: 0 16px 40px rgba(23,32,42,.18); }
.functional-columns-popover { position: fixed; z-index: 80; min-width: 220px; max-width: 280px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: white; box-shadow: 0 16px 40px rgba(23,32,42,.18); }
.functional-columns-options { display: grid; gap: 3px; }
.functional-columns-options label { display: flex; align-items: center; gap: 8px; padding: 6px 7px; border-radius: 7px; color: #1b2a37; font-size: 13px; }
.functional-columns-options label:hover { background: #f2f7f8; }
.functional-columns-options input:disabled + span { color: #8a98a6; }
.functional-group-filter-title { margin: 2px 4px 8px; color: #1b2a37; font-weight: 850; }
.functional-group-filter-actions { display: flex; gap: 6px; margin-bottom: 8px; }
.functional-group-filter-actions button { flex: 1; padding: 6px 8px; border: 1px solid #d7e1e8; border-radius: 7px; background: #f8fafb; color: #344154; font-weight: 750; }
.functional-group-filter-actions .functional-sort-action { white-space: nowrap; }
.functional-group-filter-options { display: grid; gap: 4px; max-height: 260px; overflow: auto; }
.functional-group-filter-options label { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px; padding: 6px 7px; border-radius: 7px; color: #1b2a37; font-size: 13px; }
.functional-group-filter-options label:hover { background: #f2f7f8; }
.functional-group-filter-options small { color: #718096; font-weight: 750; }
.machine-map-canvas { position: relative; flex: 1; min-height: 0; overflow: auto; cursor: grab; background: linear-gradient(#eef3f5 1px, transparent 1px), linear-gradient(90deg, #eef3f5 1px, transparent 1px), #fbfcfd; background-size: 28px 28px; }
.machine-map-canvas.panning { cursor: grabbing; user-select: none; }
.machine-map svg { display: block; min-width: 100%; min-height: 100%; }
.machine-map-link { fill: none; stroke: #cbd9d6; stroke-width: 2; }
.machine-map-node rect { fill: white; stroke: #cbd7dd; stroke-width: 1.2; filter: url(#machine-shadow); }
.machine-map-node text { fill: #294153; font-size: 14px; font-weight: 800; }
.machine-map-org rect { fill: #e5f4f1; stroke: #a8cdc5; }
.machine-map-site rect { fill: #eef7fc; stroke: #b6d7e7; }
.machine-map-rack rect { fill: #f7f3ea; stroke: #ddd0b6; }
.machine-map-subtext { fill: #718096; font-size: 14px; font-weight: 650; }
.machine-map-server { cursor: pointer; outline: none; }
.machine-map-server text { fill: #314355; font-size: 14px; font-weight: 750; }
.machine-map-server-body { fill: white; stroke: #bdcad4; stroke-width: 1.2; filter: url(#machine-shadow); }
.machine-map-server:hover .machine-map-server-body,
.machine-map-server:focus .machine-map-server-body { stroke: var(--accent); stroke-width: 2; }
.machine-map-equipment rect:first-child { fill: #edf2f6; }
.payment-timeline { height: calc(100vh - 139px); min-height: 520px; overflow: hidden; border: 1px solid #dbe6e3; border-radius: 12px; background: #fbfcfd; }
.payment-timeline-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 17px 19px 12px; border-bottom: 1px solid #e5ecea; background: white; }
.payment-timeline-header h2 { font-size: 19px; }
.payment-timeline-actions { display: flex; align-items: center; justify-content: flex-end; gap: 14px; }
.payment-timeline-scale { display: flex; justify-content: space-between; min-width: 360px; color: var(--muted); font-size: 12px; font-weight: 750; }
.payment-timeline-body { height: calc(100% - 72px); overflow: auto; padding: 16px 18px 24px; }
.payment-timeline-group { margin-bottom: 18px; overflow: hidden; border: 1px solid var(--line); border-radius: 12px; background: white; }
.payment-timeline-group-title { padding: 11px 14px; border-bottom: 1px solid var(--line); background: #e4f0ed; color: #294d46; font-size: 13px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.payment-timeline-group-title small { display: inline-grid; place-items: center; min-width: 21px; height: 21px; margin-left: 8px; padding: 0 6px; border-radius: 12px; background: white; color: var(--accent); font-size: 11px; }
.payment-timeline-row { display: grid; grid-template-columns: minmax(290px, 36%) 1fr 88px; align-items: center; gap: 16px; min-height: 64px; padding: 10px 14px; border-top: 1px solid #edf1f5; cursor: pointer; }
.payment-timeline-row:first-of-type { border-top: 0; }
.payment-timeline-row:hover { background: #f8fbfb; }
.payment-timeline-row.payment-alert-warning { background: #fff7d8; }
.payment-timeline-row.payment-alert-danger { background: #ffe5e1; }
.payment-timeline-row.payment-alert-warning:hover { background: #fff1bd; }
.payment-timeline-row.payment-alert-danger:hover { background: #ffd5ce; }
.payment-timeline-info { display: grid; gap: 4px; min-width: 0; }
.payment-timeline-info strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.payment-timeline-info span { overflow: hidden; color: var(--muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.payment-timeline-track { position: relative; height: 36px; }
.payment-timeline-axis { position: absolute; top: 17px; left: 4%; right: 4%; height: 2px; border-radius: 999px; background: #d7e4e1; }
.payment-timeline-point { position: absolute; top: 8px; width: 20px; height: 20px; margin-left: -10px; border: 3px solid white; border-radius: 50%; background: var(--accent); box-shadow: 0 2px 8px rgba(20,125,112,.24); }
.payment-timeline-point.payment-alert-warning { background: #d2a23a; }
.payment-timeline-point.payment-alert-danger { background: #b33a3a; }
.payment-timeline-date { color: #405064; font-size: 12px; font-weight: 750; text-align: right; }
.system-map-org rect { fill: rgba(229,244,241,.82); stroke: #a8cdc5; stroke-width: 1.2; filter: url(#system-shadow); }
.system-map-org text { fill: #153c35; font-size: 18px; font-weight: 850; }
.system-map-machine .machine-map-server-body { fill: #ffffff; }
.system-map-system { cursor: pointer; outline: none; }
.system-map-system rect { stroke-width: 1.2; filter: url(#system-shadow); }
.system-map-system text { font-size: 15px; font-weight: 850; }
.system-map-system.system-map-type-infrastructure rect { fill: #f3f7f9; stroke: #9db6c3; }
.system-map-system.system-map-type-infrastructure text { fill: #5f7f90; }
.system-map-system.system-map-type-onec_regulatory rect { fill: #fff6d7; stroke: #d6a532; }
.system-map-system.system-map-type-onec_regulatory text { fill: #c59117; }
.system-map-system.system-map-type-onec_management rect { fill: #fff0e4; stroke: #d87832; }
.system-map-system.system-map-type-onec_management text { fill: #d87832; }
.system-map-system.system-map-type-pdm rect { fill: #f3effc; stroke: #7c5cc4; }
.system-map-system.system-map-type-pdm text { fill: #6f51b5; }
.system-map-system rect.system-map-hatch { fill: url(#system-inactive-hatch); stroke: none; filter: none; pointer-events: none; }
.system-map-system:hover rect,
.system-map-system:focus rect { stroke: var(--accent); stroke-width: 2; }
.system-map-system:hover rect.system-map-hatch,
.system-map-system:focus rect.system-map-hatch { stroke: none; }
.system-map-location-shape { stroke-width: 1.4; filter: url(#system-shadow); }
.system-map-location-marker.location-cloud .system-map-location-shape { fill: #eef7fc; stroke: #80c3e3; }
.system-map-location-marker.location-landlord .system-map-location-shape { fill: #fbf5e9; stroke: #d6b36c; }
.system-map-location-cloud-shape { stroke-linejoin: round; }
.system-map-location-symbol { font-size: 28px; font-weight: 900; }
.system-map-location-marker.location-cloud .system-map-location-symbol { fill: #3688b8; }
.system-map-location-marker.location-landlord .system-map-location-symbol { fill: #a16d2d; }
.system-map-location-label { fill: #263848; font-size: 12px; font-weight: 850; }
.system-map-link { stroke-width: 1.7; stroke-opacity: .78; }
.system-map-link.location-local { stroke: #b8d2c9; }
.system-map-link.location-cloud { stroke: #a9d4e9; }
.system-map-link.location-landlord { stroke: #e1cda7; }
.system-map-location-link { stroke-width: 1.4; stroke-dasharray: 5 5; stroke-opacity: .95; }
.system-map-location-link.location-cloud { stroke: #6fb5d8; }
.system-map-location-link.location-landlord { stroke: #d2a858; }
.machine-map-legend .system-map-local { background: #43846f; }
.machine-map-legend .system-map-cloud { background: #3688b8; }
.machine-map-legend .system-map-landlord { background: #a16d2d; }
.machine-map-legend .system-map-onec-legend { background: #d4a632; }
.machine-map-legend .system-map-type-management { background: #d87832; }
.machine-map-legend .system-map-type-regulatory { background: #d6a532; }
.machine-map-legend .system-map-type-infrastructure { background: #6b8796; }
.machine-map-legend .system-map-type-pdm { background: #7c5cc4; }
.block-map-guide { stroke: #d9e4e1; stroke-width: 1.2; stroke-dasharray: 7 8; }
.block-map-flow { stroke: #6c8f86; stroke-width: 2; }
#block-map-arrow path { fill: #6c8f86; }
.block-map-node { cursor: pointer; outline: none; }
.block-map-node rect { filter: url(#block-map-shadow); stroke-width: 1.3; }
.block-map-node text { font-size: 14px; font-weight: 850; fill: #243747; }
.block-map-node .block-map-bpmn-badge { font-size: 9px; font-weight: 900; letter-spacing: .08em; fill: #c28a16; }
.block-map-node:hover rect,
.block-map-node:focus rect { stroke: var(--accent); stroke-width: 2.2; }
.block-map-base rect { fill: #e7f3f0; stroke: #86b9ae; }
.block-map-composite rect { fill: #eef5fb; stroke: #86acc5; }
.block-map-composite .block-map-composite-span {
  fill: none;
  stroke: #86acc5;
  stroke-width: 2;
  stroke-dasharray: 5 7;
  opacity: .72;
  filter: none;
}
.block-map-general rect { fill: #fbf5e9; stroke: #d4b36f; }
.block-map-order { fill: var(--accent); font-size: 12px; font-weight: 900; }
.block-map-system-label { cursor: pointer; pointer-events: auto; outline: none; }
.block-map-system-label rect { fill: rgba(255,255,255,.92); stroke: var(--system-color); stroke-width: 1.8; filter: url(#block-map-shadow); }
.block-map-system-label text { fill: var(--system-color); font-size: 14px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.92); stroke-width: 3px; stroke-linejoin: round; }
.block-map-system-label .block-map-system-count { font-size: 12px; fill: #718093; stroke-width: 3px; }
.block-map-system-label:hover rect,
.block-map-system-label:focus rect { stroke-width: 2.6; }
.block-map-system-link { fill: none; stroke-width: 1.8; stroke-linecap: round; opacity: .42; }
.machine-map-legend .block-map-base-legend { background: #86b9ae; }
.machine-map-legend .block-map-composite-legend { background: #86acc5; }
.machine-map-legend .block-map-general-legend { background: #d4b36f; }
.machine-map-legend .block-map-system-legend { background: transparent; border: 2px dashed #8ea8a1; }
.user-function-map { display: flex; flex-direction: column; height: calc(100vh - 139px); min-height: 520px; overflow: hidden; border: 1px solid #dbe6e3; border-radius: 12px; background: #fbfcfd; }
.machine-map.fullscreen,
.payment-timeline.fullscreen,
.user-function-map.fullscreen { position: fixed; inset: 0; z-index: 60; height: 100vh; min-height: 0; border: 0; border-radius: 0; background: #fbfcfd; }
body.map-fullscreen-open { overflow: hidden; }
.payment-timeline.fullscreen { display: flex; flex-direction: column; }
.machine-map.fullscreen .machine-map-canvas,
.user-function-map .machine-map-canvas { flex: 1; min-height: 0; }
.payment-timeline.fullscreen .payment-timeline-body { flex: 1; height: auto; max-height: none; }
.user-function-map svg { display: block; min-width: 100%; min-height: 100%; }
.user-function-map-split { display: grid; grid-template-columns: max-content max-content; align-items: start; gap: 44px; width: max-content; min-width: 100%; padding: 18px; }
.user-function-map-pane { position: relative; min-height: 100%; overflow: visible; border: 0; border-radius: 0; background: transparent; }
.user-function-map-pane-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 15px 24px; background: transparent; }
.user-function-map-pane-header h3 { font-size: 17px; }
.user-function-map-pane-header .eyebrow { margin-bottom: 3px; }
.user-function-map-pane-body { position: relative; min-height: 470px; overflow: visible; }
.user-function-map-link { stroke: #bfd4cf; stroke-width: 2; }
.user-function-summary-title { fill: #607080; font-size: 12px; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.user-function-summary-bar { cursor: pointer; outline: none; }
.user-function-summary-hitbox { fill: transparent; stroke: none; pointer-events: all; }
.user-function-summary-bar rect { stroke: rgba(39,58,70,.18); stroke-width: 1; filter: url(#user-function-shadow); }
.user-function-summary-bar:hover rect,
.user-function-summary-bar:focus rect { stroke: var(--accent); stroke-width: 2.4; }
.user-function-summary-operational { fill: #d98c35; stroke: rgba(118,69,22,.35); }
.user-function-summary-requirement-increase { stroke: rgba(39,58,70,.28); stroke-width: 1.4; }
.user-function-summary-requirement-increase.function-kind-development { fill: #cfe3f8; }
.user-function-summary-requirement-increase.function-kind-support { fill: #dfe5eb; }
.user-function-summary-requirement-increase.function-kind-one_c { fill: #f4d6aa; }
.user-function-summary-requirement-increase.function-kind-infrastructure { fill: #ded5f2; }
.user-function-summary-requirement-increase.function-kind-sks { fill: #e6a9b8; }
.user-function-summary-requirement-increase.function-kind-other { fill: #cfe7d3; }
.user-function-summary-value { fill: #1f2c38; font-size: 24px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; pointer-events: none; }
.user-function-summary-label { fill: #111827; font-size: 24px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; pointer-events: none; }
.user-function-metric-title { fill: #607080; font-size: 22px; font-weight: 900; letter-spacing: 0; paint-order: stroke; stroke: rgba(255,255,255,.82); stroke-width: 4px; pointer-events: none; }
.user-function-summary-metric { fill: #111827; font-size: 24px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; pointer-events: none; }
.user-function-summary-metric.negative { fill: #c43d32; }
.user-function-summary-fact { pointer-events: none; }
.user-function-summary-fact rect { fill: url(#user-function-fact-hatch); stroke: #1f8b69; stroke-width: 3; }
.user-function-summary-fact.undercovered rect { stroke: #c86a3d; }
.user-function-summary-fact text { fill: #111827; font-size: 24px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; }
.user-function-summary-fact text.negative { fill: #c43d32; }
.user-function-fact-hatch-line { stroke: rgba(17,24,39,.34); stroke-width: 2.6; }
.user-function-projects-title { fill: #607080; font-size: 13px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.user-function-project-block { cursor: pointer; outline: none; }
.user-function-project-fill { fill: rgba(216,140,53,.82); stroke: #a45f1c; stroke-width: 2.2; filter: url(#user-function-shadow); }
.user-function-project-timeline-frame { fill: rgba(255,255,255,.24); stroke: #1f8b69; stroke-width: 2.2; filter: url(#user-function-shadow); }
.user-function-project-tempo { fill: url(#user-function-fact-hatch); stroke: #1f8b69; stroke-width: 4.2; }
.user-function-project-month-line { stroke: rgba(17,24,39,.28); stroke-width: 1; vector-effect: non-scaling-stroke; pointer-events: none; }
.user-function-project-month-label { fill: #111827; font-size: 15px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.72); stroke-width: 3px; pointer-events: none; }
.user-function-project-timeline-segment { stroke: rgba(17,24,39,.22); stroke-width: 1.4; vector-effect: non-scaling-stroke; }
.user-function-project-timeline-segment.priority-high { fill: rgba(207,95,74,.78); }
.user-function-project-timeline-segment.priority-medium { fill: rgba(215,165,58,.78); }
.user-function-project-timeline-segment.priority-low { fill: rgba(63,159,114,.72); }
.user-function-project-timeline-segment.priority-none { fill: rgba(108,123,138,.45); }
.user-function-project-requirement-label { fill: #13202b; font-size: 20px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.92); stroke-width: 6px; pointer-events: none; }
.user-function-project-requirement-priority { pointer-events: none; mix-blend-mode: multiply; }
.user-function-project-requirement-priority.priority-high { fill: rgba(207,95,74,.56); }
.user-function-project-requirement-priority.priority-medium { fill: rgba(215,165,58,.48); }
.user-function-project-requirement-priority.priority-low { fill: rgba(63,159,114,.42); }
.user-function-project-requirement-priority.priority-none { fill: rgba(108,123,138,.24); }
.user-function-project-requirement-zone { fill: rgba(255,255,255,0); stroke: rgba(17,24,39,0); stroke-width: 0; outline: none; cursor: pointer; }
.user-function-project-requirement-zone:hover,
.user-function-project-requirement-zone:focus { fill: rgba(255,255,255,.16); stroke: #111827; stroke-width: 3.2; vector-effect: non-scaling-stroke; }
.user-function-project-unplanned-requirement { fill: url(#user-function-unplanned-requirement-hatch); stroke: #7a8795; stroke-width: 2.2; vector-effect: non-scaling-stroke; }
.user-function-unplanned-requirement-hatch-line { stroke: rgba(95,110,126,.42); stroke-width: 3; }
.user-function-project-requirement-label.muted { fill: #374151; stroke: rgba(255,255,255,.92); }
.user-function-project-block.project-type-infrastructure .user-function-project-fill { fill: #f3f7f9; stroke: #668596; }
.user-function-project-block.project-type-infrastructure .user-function-project-tempo { stroke: #6b8796; }
.user-function-project-block.project-type-infrastructure .user-function-project-tempo-label { fill: #6b8796; }
.user-function-project-block.project-type-onec_regulatory .user-function-project-fill { fill: #fff6d7; stroke: #b98718; }
.user-function-project-block.project-type-onec_regulatory .user-function-project-tempo { stroke: #d6a532; }
.user-function-project-block.project-type-onec_regulatory .user-function-project-tempo-label { fill: #c59117; }
.user-function-project-block.project-type-onec_management .user-function-project-fill { fill: #fff0e4; stroke: #bc6424; }
.user-function-project-block.project-type-onec_management .user-function-project-tempo { stroke: #d87832; }
.user-function-project-block.project-type-onec_management .user-function-project-tempo-label { fill: #d87832; }
.user-function-project-block.project-type-pdm .user-function-project-fill { fill: #f3effc; stroke: #6848b6; }
.user-function-project-block.project-type-pdm .user-function-project-tempo { stroke: #7c5cc4; }
.user-function-project-block.project-type-pdm .user-function-project-tempo-label { fill: #6f51b5; }
.user-function-project-block.function-kind-development .user-function-project-timeline-frame { fill: rgba(215,233,251,.34); stroke: #5f9fe4; }
.user-function-project-block.function-kind-support .user-function-project-timeline-frame { fill: rgba(229,233,238,.42); stroke: #aeb8c4; }
.user-function-project-block.function-kind-one_c .user-function-project-timeline-frame { fill: rgba(246,221,185,.36); stroke: #df9a3d; }
.user-function-project-block.function-kind-infrastructure .user-function-project-timeline-frame { fill: rgba(222,213,242,.38); stroke: #8a72c7; }
.user-function-project-block.function-kind-sks .user-function-project-timeline-frame { fill: rgba(151,45,70,.22); stroke: #9b2f48; }
.user-function-project-block.function-kind-other .user-function-project-timeline-frame { fill: rgba(217,236,213,.38); stroke: #57a36b; }
.user-function-project-block.empty-project .user-function-project-timeline-frame { fill: url(#user-function-empty-project-hatch); stroke-dasharray: 9 7; opacity: .72; }
.user-function-empty-project-hatch-line { stroke: rgba(95,110,126,.28); stroke-width: 4; }
.user-function-project-block:hover .user-function-project-fill,
.user-function-project-block:focus .user-function-project-fill { stroke: var(--accent); stroke-width: 2.3; }
.user-function-project-value { fill: #1f2c38; font-size: 22px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; pointer-events: none; }
.user-function-project-tempo-label { fill: #1f8b69; font-size: 22px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; pointer-events: none; }
.user-function-project-metric { fill: #1f2c38; font-size: 22px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; pointer-events: none; }
.user-function-project-label { fill: #253947; font-size: 22px; font-weight: 900; paint-order: stroke; stroke: rgba(255,255,255,.78); stroke-width: 4px; pointer-events: none; }
.user-function-org rect { fill: #e5f4f1; stroke: #a8cdc5; filter: url(#user-function-shadow); }
.user-function-department rect { fill: #eef7fc; stroke: #b6d7e7; filter: url(#user-function-shadow); }
.user-function-department rect.qualification-1 { fill: #eef5f3; stroke: #b9d2cc; }
.user-function-department rect.qualification-2 { fill: #d8ebe6; stroke: #9fc8bf; }
.user-function-department rect.qualification-3 { fill: #b8ddd4; stroke: #79b9aa; }
.user-function-department rect.qualification-4 { fill: #82c5b5; stroke: #4fa893; }
.user-function-department rect.qualification-5 { fill: #3f9f8d; stroke: #247967; }
.user-function-department rect.qualification-empty { fill: #e9eef2; stroke: #bdcad4; }
.user-function-department rect.function-kind-development { fill: #d7e9fb; stroke: #5f9fe4; }
.user-function-department rect.function-kind-support { fill: #e5e9ee; stroke: #aeb8c4; }
.user-function-department rect.function-kind-one_c { fill: #f6ddb9; stroke: #df9a3d; }
.user-function-department rect.function-kind-infrastructure { fill: #ded5f2; stroke: #8a72c7; }
.user-function-department rect.function-kind-sks { fill: #efd5dc; stroke: #9b2f48; }
.user-function-department rect.function-kind-other { fill: #d9ecd5; stroke: #57a36b; }
.user-function-department rect.function-kind-development.qualification-1 { fill: #eef5fb; stroke: #b9d6f0; }
.user-function-department rect.function-kind-development.qualification-2 { fill: #d7e9fb; stroke: #8bbde9; }
.user-function-department rect.function-kind-development.qualification-3 { fill: #aed2f5; stroke: #5f9fe4; }
.user-function-department rect.function-kind-development.qualification-4 { fill: #7db5ee; stroke: #3f85ce; }
.user-function-department rect.function-kind-development.qualification-5 { fill: #4f98df; stroke: #2e6eaa; }
.user-function-department rect.function-kind-support.qualification-1 { fill: #f1f4f6; stroke: #d0d8e0; }
.user-function-department rect.function-kind-support.qualification-2 { fill: #e5e9ee; stroke: #c1cad4; }
.user-function-department rect.function-kind-support.qualification-3 { fill: #d2d9e2; stroke: #aeb8c4; }
.user-function-department rect.function-kind-support.qualification-4 { fill: #b9c3ce; stroke: #8795a5; }
.user-function-department rect.function-kind-support.qualification-5 { fill: #98a5b3; stroke: #6c7987; }
.user-function-department rect.function-kind-one_c.qualification-1 { fill: #fbf2e8; stroke: #efc58b; }
.user-function-department rect.function-kind-one_c.qualification-2 { fill: #f6ddb9; stroke: #e9b268; }
.user-function-department rect.function-kind-one_c.qualification-3 { fill: #efc58b; stroke: #df9a3d; }
.user-function-department rect.function-kind-one_c.qualification-4 { fill: #e7ac5b; stroke: #c77e27; }
.user-function-department rect.function-kind-one_c.qualification-5 { fill: #d98f32; stroke: #a4611b; }
.user-function-department rect.function-kind-infrastructure.qualification-1 { fill: #f2eef9; stroke: #d7cdee; }
.user-function-department rect.function-kind-infrastructure.qualification-2 { fill: #ded5f2; stroke: #c8b9eb; }
.user-function-department rect.function-kind-infrastructure.qualification-3 { fill: #c8b9eb; stroke: #a791da; }
.user-function-department rect.function-kind-infrastructure.qualification-4 { fill: #a991dc; stroke: #8a72c7; }
.user-function-department rect.function-kind-infrastructure.qualification-5 { fill: #8a72c7; stroke: #6850a7; }
.user-function-department rect.function-kind-sks.qualification-1 { fill: #fbecf0; stroke: #e1aab8; }
.user-function-department rect.function-kind-sks.qualification-2 { fill: #efd5dc; stroke: #d2869a; }
.user-function-department rect.function-kind-sks.qualification-3 { fill: #d98296; stroke: #b94e68; }
.user-function-department rect.function-kind-sks.qualification-4 { fill: #bd4f68; stroke: #9b2f48; }
.user-function-department rect.function-kind-sks.qualification-5 { fill: #9b2f48; stroke: #762136; }
.user-function-department rect.function-kind-other.qualification-1 { fill: #eef8f0; stroke: #cce8d2; }
.user-function-department rect.function-kind-other.qualification-2 { fill: #d9ecd5; stroke: #b9ddc2; }
.user-function-department rect.function-kind-other.qualification-3 { fill: #b9ddc2; stroke: #7eba8c; }
.user-function-department rect.function-kind-other.qualification-4 { fill: #86c895; stroke: #57a36b; }
.user-function-department rect.function-kind-other.qualification-5 { fill: #57a36b; stroke: #3e7e4f; }
.user-load-map-block { cursor: pointer; outline: none; }
.user-load-map-body { fill: white; stroke: #bdcad4; stroke-width: 1.2; filter: url(#user-function-shadow); }
.user-load-map-block.qualification-1 .user-load-map-body { fill: #eef5f3; stroke: #b9d2cc; }
.user-load-map-block.qualification-2 .user-load-map-body { fill: #d8ebe6; stroke: #9fc8bf; }
.user-load-map-block.qualification-3 .user-load-map-body { fill: #b8ddd4; stroke: #79b9aa; }
.user-load-map-block.qualification-4 .user-load-map-body { fill: #82c5b5; stroke: #4fa893; }
.user-load-map-block.qualification-5 .user-load-map-body { fill: #3f9f8d; stroke: #247967; }
.user-load-map-block.qualification-empty .user-load-map-body { fill: #e9eef2; stroke: #bdcad4; }
.user-load-map-block.function-kind-development .user-load-map-body { fill: #d7e9fb; stroke: #5f9fe4; }
.user-load-map-block.function-kind-support .user-load-map-body { fill: #e5e9ee; stroke: #aeb8c4; }
.user-load-map-block.function-kind-one_c .user-load-map-body { fill: #f6ddb9; stroke: #df9a3d; }
.user-load-map-block.function-kind-infrastructure .user-load-map-body { fill: #ded5f2; stroke: #8a72c7; }
.user-load-map-block.function-kind-sks .user-load-map-body { fill: #efd5dc; stroke: #9b2f48; }
.user-load-map-block.function-kind-other .user-load-map-body { fill: #d9ecd5; stroke: #57a36b; }
.user-load-map-block.function-kind-development.qualification-1 .user-load-map-body { fill: #eef5fb; stroke: #b9d6f0; }
.user-load-map-block.function-kind-development.qualification-2 .user-load-map-body { fill: #d7e9fb; stroke: #8bbde9; }
.user-load-map-block.function-kind-development.qualification-3 .user-load-map-body { fill: #aed2f5; stroke: #5f9fe4; }
.user-load-map-block.function-kind-development.qualification-4 .user-load-map-body { fill: #7db5ee; stroke: #3f85ce; }
.user-load-map-block.function-kind-development.qualification-5 .user-load-map-body { fill: #4f98df; stroke: #2e6eaa; }
.user-load-map-block.function-kind-support.qualification-1 .user-load-map-body { fill: #f1f4f6; stroke: #d0d8e0; }
.user-load-map-block.function-kind-support.qualification-2 .user-load-map-body { fill: #e5e9ee; stroke: #c1cad4; }
.user-load-map-block.function-kind-support.qualification-3 .user-load-map-body { fill: #d2d9e2; stroke: #aeb8c4; }
.user-load-map-block.function-kind-support.qualification-4 .user-load-map-body { fill: #b9c3ce; stroke: #8795a5; }
.user-load-map-block.function-kind-support.qualification-5 .user-load-map-body { fill: #98a5b3; stroke: #6c7987; }
.user-load-map-block.function-kind-one_c.qualification-1 .user-load-map-body { fill: #fbf2e8; stroke: #efc58b; }
.user-load-map-block.function-kind-one_c.qualification-2 .user-load-map-body { fill: #f6ddb9; stroke: #e9b268; }
.user-load-map-block.function-kind-one_c.qualification-3 .user-load-map-body { fill: #efc58b; stroke: #df9a3d; }
.user-load-map-block.function-kind-one_c.qualification-4 .user-load-map-body { fill: #e7ac5b; stroke: #c77e27; }
.user-load-map-block.function-kind-one_c.qualification-5 .user-load-map-body { fill: #d98f32; stroke: #a4611b; }
.user-load-map-block.function-kind-infrastructure.qualification-1 .user-load-map-body { fill: #f2eef9; stroke: #d7cdee; }
.user-load-map-block.function-kind-infrastructure.qualification-2 .user-load-map-body { fill: #ded5f2; stroke: #c8b9eb; }
.user-load-map-block.function-kind-infrastructure.qualification-3 .user-load-map-body { fill: #c8b9eb; stroke: #a791da; }
.user-load-map-block.function-kind-infrastructure.qualification-4 .user-load-map-body { fill: #a991dc; stroke: #8a72c7; }
.user-load-map-block.function-kind-infrastructure.qualification-5 .user-load-map-body { fill: #8a72c7; stroke: #6850a7; }
.user-load-map-block.function-kind-sks.qualification-1 .user-load-map-body { fill: #fbecf0; stroke: #e1aab8; }
.user-load-map-block.function-kind-sks.qualification-2 .user-load-map-body { fill: #efd5dc; stroke: #d2869a; }
.user-load-map-block.function-kind-sks.qualification-3 .user-load-map-body { fill: #d98296; stroke: #b94e68; }
.user-load-map-block.function-kind-sks.qualification-4 .user-load-map-body { fill: #bd4f68; stroke: #9b2f48; }
.user-load-map-block.function-kind-sks.qualification-5 .user-load-map-body { fill: #9b2f48; stroke: #762136; }
.user-load-map-block.function-kind-other.qualification-1 .user-load-map-body { fill: #eef8f0; stroke: #cce8d2; }
.user-load-map-block.function-kind-other.qualification-2 .user-load-map-body { fill: #d9ecd5; stroke: #b9ddc2; }
.user-load-map-block.function-kind-other.qualification-3 .user-load-map-body { fill: #b9ddc2; stroke: #7eba8c; }
.user-load-map-block.function-kind-other.qualification-4 .user-load-map-body { fill: #86c895; stroke: #57a36b; }
.user-load-map-block.function-kind-other.qualification-5 .user-load-map-body { fill: #57a36b; stroke: #3e7e4f; }
.user-load-map-block.overloaded .user-load-map-body { stroke: #c86a3d; stroke-width: 1.8; }
.user-load-map-block.manager-load-card .user-load-map-body { stroke-width: 3.2; }
.user-load-map-block.manager-load-card:hover .user-load-map-body,
.user-load-map-block.manager-load-card:focus .user-load-map-body { stroke-width: 3.8; }
.function-kind-development { fill: #5f9fe4; background: #5f9fe4; }
.function-kind-support { fill: #aeb8c4; background: #aeb8c4; }
.function-kind-one_c { fill: #df9a3d; background: #df9a3d; }
.function-kind-infrastructure { fill: #8a72c7; background: #8a72c7; }
.function-kind-sks { fill: #9b2f48; background: #9b2f48; }
.function-kind-other { fill: #57a36b; background: #57a36b; }
.function-kind-legend .function-kind-development { background: linear-gradient(90deg, #eef5fb 0%, #c7def5 45%, #5f9fe4 100%); }
.function-kind-legend .function-kind-support { background: linear-gradient(90deg, #f1f4f6 0%, #d7dee6 45%, #aeb8c4 100%); }
.function-kind-legend .function-kind-one_c { background: linear-gradient(90deg, #fbf2e8 0%, #efc58b 45%, #df9a3d 100%); }
.function-kind-legend .function-kind-infrastructure { background: linear-gradient(90deg, #f2eef9 0%, #c8b9eb 45%, #8a72c7 100%); }
.function-kind-legend .function-kind-sks { background: linear-gradient(90deg, #fbecf0 0%, #d98296 45%, #9b2f48 100%); }
.function-kind-legend .function-kind-other { background: linear-gradient(90deg, #eef8f0 0%, #b9ddc2 45%, #57a36b 100%); }
.user-load-map-block:hover .user-load-map-body,
.user-load-map-block:focus .user-load-map-body { stroke: var(--accent); stroke-width: 2.3; }
.user-load-map-block.draggable-map-vacancy { cursor: grab; }
.user-load-map-block.draggable-map-vacancy.dragging .user-load-map-body { stroke: var(--accent); stroke-width: 3; opacity: .72; }
.plan-drop-target.drag-over rect { stroke: var(--accent); stroke-width: 3; }
.user-load-map-name { fill: #263848; font-size: 15px; font-weight: 850; }
.user-load-map-role { fill: #607080; font-size: 12px; font-weight: 500; }
.user-load-map-total { fill: #607080; font-size: 13px; font-weight: 800; }
.user-load-map-track { fill: #eef3f5; stroke: #d8e2e7; stroke-width: 1; }
.user-efficiency-gauge text { fill: #3f5361; font-size: 10px; font-weight: 850; pointer-events: none; }
.user-efficiency-track { fill: rgba(255,255,255,.82); stroke: rgba(78,96,111,.32); stroke-width: 1; }
.user-efficiency-fill { stroke: rgba(255,255,255,.78); stroke-width: 1; }
.user-efficiency-mark { stroke: rgba(39,58,70,.5); stroke-width: 1.2; }
.user-efficiency-gauge.efficiency-low .user-efficiency-fill { fill: #cf5f4a; }
.user-efficiency-gauge.efficiency-medium .user-efficiency-fill { fill: #d7a53a; }
.user-efficiency-gauge.efficiency-high .user-efficiency-fill { fill: #3f9f72; }
.user-efficiency-gauge.efficiency-empty .user-efficiency-fill { fill: #c9d4dc; }
.user-map-overall-gauge { pointer-events: none; }
.user-map-overall-gauge-kpi { fill: #1b2a37; font-size: 16px; font-weight: 900; letter-spacing: .04em; }
.user-map-overall-gauge-panel { fill: rgba(255,255,255,.94); stroke: rgba(196,211,218,.95); stroke-width: 1.4; filter: url(#user-function-shadow); }
.user-map-overall-gauge-title { fill: var(--accent); font-size: 12px; font-weight: 900; letter-spacing: .08em; }
.user-map-overall-gauge-value { fill: #3f5361; font-size: 26px; font-weight: 900; }
.user-map-overall-gauge .user-map-thermometer-track { fill: #eef3f5; stroke: rgba(78,96,111,.35); stroke-width: 1.2; }
.user-map-overall-gauge .user-map-thermometer-fill { fill: #c9d4dc; stroke: rgba(255,255,255,.8); stroke-width: 1; }
.user-map-overall-gauge.efficiency-low .user-map-thermometer-fill { fill: #cf5f4a; }
.user-map-overall-gauge.efficiency-medium .user-map-thermometer-fill { fill: #d7a53a; }
.user-map-overall-gauge.efficiency-high .user-map-thermometer-fill { fill: #3f9f72; }
.user-function-segment { cursor: pointer; outline: none; }
.user-function-segment rect { stroke: rgba(255,255,255,.88); stroke-width: 2; }
.user-function-segment line { stroke: rgba(39,58,70,.28); stroke-width: 1; }
.user-function-segment text { fill: #17342e; font-size: 12px; font-weight: 850; pointer-events: none; }
.user-function-segment .user-function-load-label { fill: rgba(23,52,46,.72); font-size: 11px; }
.user-function-segment:hover rect,
.user-function-segment:focus rect { stroke: var(--accent); stroke-width: 2.5; }
.user-function-free-svg rect { fill: #f7fafb; stroke: #ccd9d6; stroke-dasharray: 5 5; }
.user-function-free-svg text { fill: #718096; font-size: 11px; font-weight: 750; }
.user-function-map { border-color: #d7e5e2; background: #f7faf9; }
.user-function-map.fullscreen { background: #f7faf9; }
.user-function-map .machine-map-header { border-bottom-color: #dce8e5; background: #f7faf9; }
.user-function-map .machine-map-canvas {
  background:
    linear-gradient(rgba(225,235,233,.82) 1px, transparent 1px),
    linear-gradient(90deg, rgba(225,235,233,.82) 1px, transparent 1px),
    #f7faf9;
  background-size: 56px 56px;
}
.user-function-map .machine-map-canvas::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(rgba(139,181,173,.22) 1px, transparent 1px),
    linear-gradient(90deg, rgba(139,181,173,.22) 1px, transparent 1px);
  background-size: 280px 280px;
}
.user-function-map text {
  fill: #243747;
  paint-order: normal;
  stroke: none;
  letter-spacing: 0;
}
.user-function-map-link { stroke: #9bbeb5; stroke-width: 2.1; stroke-opacity: .74; }
.user-function-map .function-kind-development { fill: url(#user-function-gradient-development); background: linear-gradient(90deg, #eef5fb 0%, #c7def5 48%, #5f9fe4 100%); }
.user-function-map .function-kind-support { fill: url(#user-function-gradient-support); background: linear-gradient(90deg, #f1f4f6 0%, #d7dee6 48%, #aeb8c4 100%); }
.user-function-map .function-kind-one_c { fill: url(#user-function-gradient-one_c); background: linear-gradient(90deg, #fbf2e8 0%, #efc58b 48%, #df9a3d 100%); }
.user-function-map .function-kind-infrastructure { fill: url(#user-function-gradient-infrastructure); background: linear-gradient(90deg, #f2eef9 0%, #c8b9eb 48%, #8a72c7 100%); }
.user-function-map .function-kind-sks { fill: url(#user-function-gradient-sks); background: linear-gradient(90deg, #fbecf0 0%, #d98296 48%, #9b2f48 100%); }
.user-function-map .function-kind-other { fill: url(#user-function-gradient-other); background: linear-gradient(90deg, #eef8f0 0%, #b9ddc2 48%, #57a36b 100%); }
.user-function-summary-bar rect,
.user-function-project-block rect,
.user-load-map-body,
.user-function-org rect,
.user-function-department rect {
  filter: url(#user-function-shadow);
}
.user-function-summary-title,
.user-function-projects-title,
.user-function-metric-title { fill: #5f7482; font-size: 14px; font-weight: 850; text-transform: none; letter-spacing: 0; }
.user-function-summary-metric,
.user-function-summary-value,
.user-function-summary-label,
.user-function-summary-fact text,
.user-function-project-value,
.user-function-project-tempo-label,
.user-function-project-metric,
.user-function-project-label,
.user-function-project-requirement-label { fill: #243747; stroke: none; paint-order: normal; }
.user-function-summary-metric,
.user-function-summary-value,
.user-function-summary-label,
.user-function-summary-fact text { font-size: 19px; font-weight: 850; }
.user-function-project-metric,
.user-function-project-label,
.user-function-project-value,
.user-function-project-tempo-label { font-size: 19px; font-weight: 850; }
.user-function-project-requirement-label { fill: #253947; font-size: 15px; font-weight: 850; }
.user-function-project-requirement-label.muted { fill: #607080; }
.user-function-summary-operational { fill: #f2c4a2; stroke: #d88245; stroke-width: 1.7; }
.user-function-summary-requirement-increase { stroke: rgba(39,58,70,.16); stroke-width: 1.2; }
.user-function-summary-requirement-increase.function-kind-development { fill: url(#user-function-gradient-development); opacity: .72; }
.user-function-summary-requirement-increase.function-kind-support { fill: url(#user-function-gradient-support); opacity: .72; }
.user-function-summary-requirement-increase.function-kind-one_c { fill: url(#user-function-gradient-one_c); opacity: .72; }
.user-function-summary-requirement-increase.function-kind-infrastructure { fill: url(#user-function-gradient-infrastructure); opacity: .72; }
.user-function-summary-requirement-increase.function-kind-sks { fill: url(#user-function-gradient-sks); opacity: .72; }
.user-function-summary-requirement-increase.function-kind-other { fill: url(#user-function-gradient-other); opacity: .72; }
.user-function-summary-fact rect { fill: url(#user-function-fact-hatch); stroke: #7db7aa; stroke-width: 2.1; }
.user-function-summary-fact.undercovered rect { stroke: #e0a16f; }
.user-function-fact-hatch-line { stroke: rgba(111,152,143,.38); stroke-width: 2.2; }
.user-function-project-fill { fill: #f4d2b4; stroke: #d88245; stroke-width: 1.8; }
.user-function-project-timeline-frame { fill: #e9f2fb; stroke: #86acc5; stroke-width: 1.6; }
.user-function-project-tempo { fill: url(#user-function-fact-hatch); stroke: #7db7aa; stroke-width: 2.3; }
.user-function-project-month-line { stroke: rgba(139,181,173,.36); stroke-width: 1; }
.user-function-project-month-label { fill: #6a7d89; font-size: 13px; font-weight: 850; stroke: none; paint-order: normal; }
.user-function-project-timeline-segment { stroke: rgba(39,58,70,.14); stroke-width: 1.1; }
.user-function-project-timeline-segment.priority-high { fill: #e9b8ac; }
.user-function-project-timeline-segment.priority-medium { fill: #efd9a1; }
.user-function-project-timeline-segment.priority-low { fill: #bddfc8; }
.user-function-project-timeline-segment.priority-none { fill: #d7e1e8; }
.user-function-project-requirement-priority.priority-high { fill: rgba(233,184,172,.42); }
.user-function-project-requirement-priority.priority-medium { fill: rgba(239,217,161,.38); }
.user-function-project-requirement-priority.priority-low { fill: rgba(189,223,200,.36); }
.user-function-project-requirement-priority.priority-none { fill: rgba(215,225,232,.34); }
.user-function-project-requirement-zone:hover,
.user-function-project-requirement-zone:focus { fill: rgba(126,179,168,.14); stroke: #7db7aa; stroke-width: 2.2; }
.user-function-project-unplanned-requirement { fill: url(#user-function-unplanned-requirement-hatch); stroke: #9fb0bd; stroke-width: 1.7; }
.user-function-unplanned-requirement-hatch-line { stroke: rgba(126,143,156,.35); stroke-width: 2.4; }
.user-function-project-block.project-type-infrastructure .user-function-project-fill { fill: #eef5f8; stroke: #86acc5; }
.user-function-project-block.project-type-onec_regulatory .user-function-project-fill { fill: #f8e9ba; stroke: #d6a532; }
.user-function-project-block.project-type-onec_management .user-function-project-fill { fill: #f8dec0; stroke: #d87832; }
.user-function-project-block.project-type-pdm .user-function-project-fill { fill: #eee7fb; stroke: #9f89d4; }
.user-function-project-block.function-kind-development .user-function-project-timeline-frame { fill: url(#user-function-gradient-development); stroke: #86b6dc; opacity: .78; }
.user-function-project-block.function-kind-support .user-function-project-timeline-frame { fill: url(#user-function-gradient-support); stroke: #b3c1cc; opacity: .78; }
.user-function-project-block.function-kind-one_c .user-function-project-timeline-frame { fill: url(#user-function-gradient-one_c); stroke: #df9a3d; opacity: .78; }
.user-function-project-block.function-kind-infrastructure .user-function-project-timeline-frame { fill: url(#user-function-gradient-infrastructure); stroke: #9f89d4; opacity: .78; }
.user-function-project-block.function-kind-sks .user-function-project-timeline-frame { fill: url(#user-function-gradient-sks); stroke: #c98597; opacity: .78; }
.user-function-project-block.function-kind-other .user-function-project-timeline-frame { fill: url(#user-function-gradient-other); stroke: #8dc49b; opacity: .78; }
.user-function-project-block.empty-project .user-function-project-timeline-frame { fill: url(#user-function-empty-project-hatch); stroke-dasharray: 9 7; opacity: .82; }
.user-function-empty-project-hatch-line { stroke: rgba(126,143,156,.24); stroke-width: 3; }
.user-function-org rect { fill: #e3f1ee; stroke: #86b9ae; stroke-width: 1.4; }
.user-function-department rect { fill: #e9f2fb; stroke: #86acc5; stroke-width: 1.4; }
.user-function-department rect.function-kind-development { fill: url(#user-function-gradient-development); stroke: #86b6dc; }
.user-function-department rect.function-kind-support { fill: url(#user-function-gradient-support); stroke: #b3c1cc; }
.user-function-department rect.function-kind-one_c { fill: url(#user-function-gradient-one_c); stroke: #df9a3d; }
.user-function-department rect.function-kind-infrastructure { fill: url(#user-function-gradient-infrastructure); stroke: #9f89d4; }
.user-function-department rect.function-kind-sks { fill: url(#user-function-gradient-sks); stroke: #c98597; }
.user-function-department rect.function-kind-other { fill: url(#user-function-gradient-other); stroke: #8dc49b; }
.user-function-department text,
.user-function-org text { fill: #243747; font-size: 14px; font-weight: 850; }
.user-load-map-body { fill: #edf5f3; stroke: #86b9ae; stroke-width: 1.4; }
.user-load-map-block.qualification-1 .user-load-map-body { fill: #edf5f3; stroke: #bed6d0; }
.user-load-map-block.qualification-2 .user-load-map-body { fill: #dceee9; stroke: #abcfc6; }
.user-load-map-block.qualification-3 .user-load-map-body { fill: #c9e5de; stroke: #91c3b8; }
.user-load-map-block.qualification-4 .user-load-map-body { fill: #b6dcd3; stroke: #79b8aa; }
.user-load-map-block.qualification-5 .user-load-map-body { fill: #a3d1c6; stroke: #62aa9b; }
.user-load-map-block.qualification-empty .user-load-map-body { fill: #edf2f5; stroke: #bdcad4; }
.user-load-map-block.function-kind-development .user-load-map-body { fill: url(#user-function-gradient-development); stroke: #86b6dc; }
.user-load-map-block.function-kind-support .user-load-map-body { fill: url(#user-function-gradient-support); stroke: #b3c1cc; }
.user-load-map-block.function-kind-one_c .user-load-map-body { fill: url(#user-function-gradient-one_c); stroke: #df9a3d; }
.user-load-map-block.function-kind-infrastructure .user-load-map-body { fill: url(#user-function-gradient-infrastructure); stroke: #9f89d4; }
.user-load-map-block.function-kind-sks .user-load-map-body { fill: url(#user-function-gradient-sks); stroke: #c98597; }
.user-load-map-block.function-kind-other .user-load-map-body { fill: url(#user-function-gradient-other); stroke: #8dc49b; }
.user-load-map-name { fill: #243747; font-size: 15px; font-weight: 850; }
.user-load-map-role,
.user-load-map-total { fill: #607080; font-weight: 750; }
.user-load-map-track { fill: rgba(245,249,248,.72); stroke: #d5e3e0; stroke-width: 1; }
.user-function-segment rect { stroke: rgba(39,58,70,.12); stroke-width: 1.2; }
.user-function-segment line { stroke: rgba(39,58,70,.12); }
.user-function-segment text { fill: #243747; font-size: 12px; font-weight: 780; }
.user-function-segment .user-function-load-label { fill: #607080; font-size: 11px; }
.user-function-free-svg rect { fill: #eef4f3; stroke: #bed1cc; stroke-dasharray: 5 5; }
.user-function-free-svg text { fill: #6f7f8b; font-weight: 750; }
.user-efficiency-track,
.user-map-overall-gauge .user-map-thermometer-track { fill: #eef4f3; stroke: #b9cbc6; }
.user-efficiency-fill,
.user-map-overall-gauge .user-map-thermometer-fill { stroke: rgba(39,58,70,.14); }
.user-efficiency-gauge.efficiency-low .user-efficiency-fill,
.user-map-overall-gauge.efficiency-low .user-map-thermometer-fill { fill: #e9b8ac; }
.user-efficiency-gauge.efficiency-medium .user-efficiency-fill,
.user-map-overall-gauge.efficiency-medium .user-map-thermometer-fill { fill: #efd9a1; }
.user-efficiency-gauge.efficiency-high .user-efficiency-fill,
.user-map-overall-gauge.efficiency-high .user-map-thermometer-fill { fill: #9fd1b0; }
.user-efficiency-gauge.efficiency-empty .user-efficiency-fill,
.user-map-overall-gauge .user-map-thermometer-fill { fill: #cdd9df; }
.user-map-overall-gauge-panel { fill: #eef5f3; stroke: #bed1cc; stroke-width: 1.4; }
.user-map-overall-gauge-kpi,
.user-map-overall-gauge-title { fill: #158071; stroke: none; }
.user-map-overall-gauge-value { fill: #243747; stroke: none; }
.qualification-1 { background: #eef5f3; fill: #eef5f3; }
.qualification-2 { background: #d8ebe6; fill: #d8ebe6; }
.qualification-3 { background: #b8ddd4; fill: #b8ddd4; }
.qualification-4 { background: #82c5b5; fill: #82c5b5; }
.qualification-5 { background: #3f9f8d; fill: #3f9f8d; }
.qualification-empty { background: #e9eef2; fill: #e9eef2; color: #576878; }
table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: auto; }
th { position: relative; padding: 13px 54px 13px 17px; color: var(--muted); background: #fafbfc; font-size: 11px; letter-spacing: .08em; text-align: left; text-transform: uppercase; }
th:first-child { white-space: nowrap; }
th.has-tree-header-controls { min-width: 170px; }
th .tree-header-label { display: inline-flex; align-items: center; gap: 7px; }
th .journal-header-title { line-height: 1.1; }
th .journal-header-icons { position: absolute; top: 50%; right: 18px; display: inline-flex; align-items: center; justify-content: flex-end; gap: 4px; min-width: 32px; transform: translateY(-50%); letter-spacing: 0; }
th[data-functional-filter-group] { cursor: pointer; }
th[data-functional-filter-group]:hover span { color: var(--accent); }
.journal-state-icon { position: relative; display: inline-grid; place-items: center; width: 12px; height: 10px; color: var(--accent); line-height: 1; }
.journal-sort-marker { font-size: 12px; font-weight: 900; }
.journal-group-marker::before,
.journal-group-marker::after { content: ""; position: absolute; width: 8px; height: 5px; border: 1.5px solid var(--accent); border-radius: 2px; background: #fafbfc; }
.journal-group-marker::before { transform: translate(-2px, -2px); }
.journal-group-marker::after { transform: translate(2px, 2px); }
.journal-filter-marker::before { content: ""; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 7px solid var(--accent); }
.journal-filter-marker::after { content: ""; width: 3px; height: 3px; margin-top: -2px; border-radius: 0 0 1px 1px; background: var(--accent); }
.column-resize-handle { position: absolute; top: 0; right: -4px; z-index: 3; width: 9px; height: 100%; cursor: col-resize; touch-action: none; }
.column-resize-handle::after { content: ""; position: absolute; top: 9px; bottom: 9px; left: 4px; width: 1px; border-radius: 999px; background: transparent; }
.column-resize-handle:hover::after,
body.column-resizing .column-resize-handle::after { background: #b8c7d4; }
.tree-header-controls { display: inline-flex; gap: 0; letter-spacing: 0; }
.tree-header-toggle { width: 19px; height: 19px; margin-right: 0; background: white; text-transform: none; }
td { max-width: 260px; padding: 14px 17px; border-top: 1px solid var(--line); font-size: 14px; overflow-wrap: break-word; vertical-align: top; }
tbody tr { cursor: pointer; }
tbody tr:hover { background: #f8fbfb; }
.functional-block-name-with-bpmn { display: inline-flex; align-items: center; gap: 8px; max-width: 100%; }
.bpmn-presence-badge { display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border: 1px solid #b8d9d2; border-radius: 999px; background: #edf8f5; color: var(--accent); font-size: 10px; font-weight: 850; letter-spacing: .08em; line-height: 1; white-space: nowrap; }
tr.draggable-organization { cursor: grab; }
tr.draggable-organization:active { cursor: grabbing; }
tr.draggable-organization.dragging td { opacity: .55; background: #edf6f3; }
tr.draggable-vacancy { cursor: grab; }
tr.draggable-vacancy.dragging td { opacity: .55; background: #edf6f3; }
tr.vacancy-drop-target.drag-over td { background: #dff2ed; color: var(--accent); box-shadow: inset 4px 0 0 var(--accent); }
.group-row { cursor: default; }
.group-row:hover { background: transparent; }
.group-row td { padding: 12px 17px; background: #e4f0ed; border-top: 1px solid #c9dfda; color: #294d46; font-size: 13px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.group-row small { display: inline-grid; place-items: center; min-width: 21px; height: 21px; margin-left: 8px; padding: 0 6px; border-radius: 12px; background: white; color: var(--accent); font-size: 11px; }
.group-summary-badges { display: inline-flex; align-items: center; gap: 6px; margin-left: 8px; vertical-align: middle; }
.group-summary-badges small { margin-left: 0 !important; }
.group-percent-badge { background: #edf6f4 !important; color: #60756f !important; border: 1px solid #d7e7e3; }
.group-function-badge { background: #fff !important; color: #60756f !important; border: 1px solid #d7e7e3; font-weight: 750 !important; text-transform: none !important; }
.tree-inline-action { appearance: none; display: inline-grid; place-items: center; width: 22px; height: 22px; margin-left: 8px; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--accent); font-weight: 900; line-height: 22px; text-align: center; cursor: pointer; }
.tree-inline-action span { display: block; line-height: 1; transform: translateY(-1px); }
.tree-card-action span { display: block; line-height: 1; transform: translate(-1px, 1px); }
.tree-inline-action:hover { color: #0d6c61; }
.requirement-name-with-action { display: inline-flex; align-items: center; gap: 7px; }
.requirement-sub-action { width: 22px; height: 22px; margin-left: 0; opacity: .72; }
.requirement-sub-action:hover { opacity: 1; }
.site-row { cursor: default; }
.site-row:hover { background: transparent; }
.site-row td { padding: 10px 17px 10px 28px; background: #edf6f3; border-top: 1px solid #d7e9e4; color: #45675f; font-size: 12px; font-weight: 720; }
.site-row small { margin-left: 7px; color: var(--accent); font-size: 11px; }
.rack-row { cursor: default; }
.rack-row:hover { background: transparent; }
.rack-row td { padding: 8px 17px 8px 42px; background: #f6fbfa; border-top: 1px solid #e3ece9; color: #60756f; font-size: 11px; font-weight: 650; }
.rack-row small { margin-left: 7px; color: var(--accent); font-size: 11px; }
.department-row { cursor: default; }
.department-row:hover { background: transparent; }
.department-row td { padding: 8px 17px 8px 32px; background: #f7faf9; border-top: 1px solid #e3ece9; color: #60756f; font-size: 12px; font-weight: 700; }
.department-row .cell-linked_user_functions { padding-left: 17px; font-weight: 650; }
.department-row small { margin-left: 7px; color: var(--accent); font-size: 11px; }
.planned-badge { display: inline-block; margin-left: 7px; padding: 2px 6px; border-radius: 999px; background: #fff3d6; color: #a66b15; font-size: 10px; font-weight: 850; text-transform: uppercase; }
.department-detail-row td { padding-top: 10px; padding-bottom: 10px; background: #fff; font-size: 13px; font-weight: 520; }
.department-detail-row td:first-child { padding-left: 54px; }
.department-detail-row:hover td { background: #f8fbfb; }
.user-detail-row td { padding-top: 9px; padding-bottom: 9px; background: #fff; font-size: 12px; font-weight: 440; }
.user-detail-row td:first-child { padding-left: 54px; }
.user-detail-row:hover td { background: #f8fbfb; }
.function-user-row { cursor: default; }
.function-user-row:hover { background: transparent; }
.function-user-row td { padding: 8px 17px 8px 42px; background: #f6fbfa; border-top: 1px solid #e3ece9; color: #60756f; font-size: 11px; font-weight: 650; }
.function-user-row small { margin-left: 7px; color: var(--accent); font-size: 11px; }
.tree-level-4 td:first-child { padding-left: 56px; }
.tree-level-5 td:first-child { padding-left: 70px; }
.tree-level-6 td:first-child { padding-left: 84px; }
.function-detail-row td { padding-top: 9px; padding-bottom: 9px; background: #fff; font-size: 12px; font-weight: 440; }
.function-detail-row td:first-child { padding-left: 76px; }
.function-detail-row:hover td { background: #f8fbfb; }
.machine-row td { font-size: 13px; font-weight: 620; background: #fff; }
.machine-row td:first-child { padding-left: 54px; }
.journal-equipment-row td { padding-top: 8px; padding-bottom: 8px; color: #657381; background: #fbfdfd; font-size: 11px; font-weight: 400; }
.journal-equipment-row td:first-child { padding-left: 76px; }
.journal-equipment-row:hover td { background: #f2f8f7; }
.equipment-type::before { content: "↳"; margin-right: 8px; color: var(--accent); font-weight: 700; }
.tree-toggle { appearance: none; display: inline-grid; place-items: center; width: 19px; height: 19px; margin-right: 8px; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--accent); font-size: 13px; font-weight: 800; line-height: 19px; text-align: center; cursor: pointer; }
.tree-header-controls .tree-header-toggle { margin-right: 0; }
.tree-toggle:hover { color: #0d6c61; }
.tree-spacer { display: inline-block; width: 27px; }
.system-row.location-local td { background: #f6faf8; }
.system-row.system-linked-detail-row td { padding-top: 10px; padding-bottom: 10px; background: #fff; font-size: 12px; font-weight: 440; }
.system-row.system-linked-detail-row.tree-detail-level-0 td:first-child { padding-left: 17px; }
.system-row.system-linked-detail-row.tree-detail-level-1 td:first-child { padding-left: 32px; }
.system-row.system-linked-detail-row.tree-detail-level-2 td:first-child { padding-left: 46px; }
.system-row.system-linked-detail-row.tree-detail-level-3 td:first-child { padding-left: 60px; }
.system-row.system-linked-detail-row.tree-detail-level-4 td:first-child { padding-left: 74px; }
.system-row.system-linked-detail-row.tree-detail-level-5 td:first-child,
.system-row.system-linked-detail-row.tree-detail-level-6 td:first-child { padding-left: 88px; }
.system-row.system-linked-detail-row .cell-requirement_type,
.system-row.system-linked-detail-row .cell-qualification_score,
.system-row.system-linked-detail-row .cell-estimate_days { min-width: 76px; white-space: nowrap; }
.relation-estimate-input { width: 82px; padding: 7px 8px; border: 1px solid var(--line); border-radius: 7px; background: white; color: var(--ink); }
.compact-link-table .relation-estimate-input { width: 76px; }
.system-row.system-linked-detail-row:hover td { background: #f8fbfb; }
.system-row.location-cloud td { background: #eef7fc; }
.system-row.location-landlord td { background: #fbf5e9; }
.system-row.system-inactive td {
  background-image: repeating-linear-gradient(135deg, rgba(87,104,120,.18) 0 6px, transparent 6px 12px);
}
.system-row.location-local:hover td { background: #edf6f1; }
.system-row.location-cloud:hover td { background: #e3f2fa; }
.system-row.location-landlord:hover td { background: #f7edd9; }
.location-icon { display: inline-block; width: 25px; margin-left: 8px; color: #668077; font-size: 15px; text-align: center; }
.location-cloud .location-icon { color: #3688b8; }
.location-landlord .location-icon { color: #a16d2d; }
.location-local .location-icon { color: #43846f; font-size: 10px; }
.system-type-icon { display: inline-block; width: 24px; margin-right: 7px; font-size: 15px; font-weight: 800; text-align: center; }
.system-name-text { font-weight: 620; }
.system-type-infrastructure { color: #6b8796; }
.system-type-regulatory { color: #d6a532; }
.system-type-management { color: #d87832; }
.system-type-pdm { color: #7c5cc4; }
tr.payment-alert-warning td,
tr.system-row.payment-alert-warning td,
tr.machine-row.payment-alert-warning td { background: #fff7d8; }
tr.payment-alert-danger td,
tr.system-row.payment-alert-danger td,
tr.machine-row.payment-alert-danger td { background: #ffe5e1; }
tr.payment-alert-warning:hover td,
tr.system-row.payment-alert-warning:hover td,
tr.machine-row.payment-alert-warning:hover td { background: #fff1bd; }
tr.payment-alert-danger:hover td,
tr.system-row.payment-alert-danger:hover td,
tr.machine-row.payment-alert-danger:hover td { background: #ffd5ce; }
tr.system-row.system-inactive td,
tr.system-row.system-inactive:hover td,
tr.group-row.system-inactive td {
  background-image: repeating-linear-gradient(135deg, rgba(87,104,120,.18) 0 6px, transparent 6px 12px);
}
.linked-machine { display: block; padding: 2px 0; color: #405b72; line-height: 1.35; }
.linked-machine + .linked-machine { border-top: 1px solid rgba(113,128,150,.2); }
.linked-load-percent { margin-left: 6px; color: var(--accent); font-weight: 800; white-space: nowrap; }
.cell-linked_user_functions { min-width: 220px; width: 30%; }
.cell-linked_user_functions .linked-machine { color: #405b72; }
.linked-machine.payment-alert-warning { margin: 1px 0; padding: 3px 6px; border-radius: 6px; background: #fff0b8; color: #6f5400; }
.linked-machine.payment-alert-danger { margin: 1px 0; padding: 3px 6px; border-radius: 6px; background: #ffd9d2; color: #8a2418; }
.linked-machine.system-inactive {
  background-image: repeating-linear-gradient(135deg, rgba(87,104,120,.2) 0 5px, transparent 5px 10px);
}
.code-pill { display: inline-block; padding: 3px 7px; color: #3b526b; background: #edf1f5; border-radius: 5px; font-size: 12px; font-weight: 700; }
.empty { padding: 70px 20px; text-align: center; }
.empty-icon { display: grid; place-items: center; width: 48px; height: 48px; margin: 0 auto 14px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); font-size: 25px; }
.empty p { margin-top: 7px; color: var(--muted); font-size: 14px; }
.hidden { display: none !important; }
.overlay { position: fixed; inset: 0; z-index: 20; display: flex; justify-content: flex-end; background: rgba(20,31,43,.42); backdrop-filter: blur(2px); }
.drawer { width: min(760px, 92vw); height: 100%; background: white; box-shadow: -16px 0 40px rgba(0,0,0,.12); display: flex; flex-direction: column; }
.dialog { display: flex; flex-direction: column; width: min(600px, 92vw); max-height: 82vh; margin: auto; overflow: hidden; border-radius: 14px; background: white; }
.drawer-header { display: flex; align-items: center; justify-content: space-between; padding: 22px 25px; border-bottom: 1px solid var(--line); }
.icon-button { width: 34px; height: 34px; border: 0; border-radius: 7px; background: #f1f4f6; color: #526070; font-size: 21px; }
.tabs { display: flex; gap: 2px; padding: 0 22px; overflow-x: auto; border-bottom: 1px solid var(--line); }
.tab { padding: 13px 12px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--muted); white-space: nowrap; font-size: 13px; font-weight: 650; }
.tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.drawer-body { flex: 1; overflow: auto; padding: 24px; }
.drawer-footer { padding: 17px 24px; border-top: 1px solid var(--line); }
.spacer { flex: 1; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field { display: grid; gap: 7px; }
.field.wide { grid-column: 1 / -1; }
.field label { color: #4b5969; font-size: 12px; font-weight: 700; }
.field input, .field select, .field textarea { width: 100%; padding: 10px 11px; border: 1px solid #d9e0e7; border-radius: 7px; outline-color: var(--accent); background: white; }
.field input:disabled, .field select:disabled, .field textarea:disabled { color: #5f6e7e; background: #f5f7f9; }
.field textarea { min-height: 110px; resize: vertical; }
.form-section { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 11px 18px; padding-top: 5px; }
.form-section h3 { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; color: var(--accent); font-size: 8px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.form-section h3::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.form-section-wide { margin-top: 18px; }
.form-section-wide > .equipment-editor,
.form-section-wide > .table-card { grid-column: 1 / -1; }
.form-row { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 11px 18px; }
.payment-alert-row { grid-template-columns: minmax(120px, .75fr) minmax(170px, 1fr) minmax(170px, 1fr); align-items: end; }
.payment-checkbox { align-content: center; }
.field-with-action { display: grid; grid-template-columns: minmax(0, 1fr); grid-auto-flow: column; grid-auto-columns: auto; gap: 8px; }
.access-account-action-row { grid-template-columns: minmax(0, 1fr) 240px; grid-auto-flow: initial; }
.access-account-action-row .field-action { width: 100%; }
.field-action { padding: 0 11px; border: 1px solid #cfe2dd; border-radius: 7px; background: white; color: var(--accent); font-size: 12px; font-weight: 650; white-space: nowrap; }
.reference-field-control { gap: 5px; }
.reference-field-control select,
.relation-candidate-control select { min-width: 0; }
.relation-candidate-control select:focus { outline: 2px solid #111827; outline-offset: 0; }
.icon-action { width: 34px; padding: 0; border: 0; background: transparent; font-size: 15px; line-height: 1; }
.relation-candidate-control { flex: 1; }
.field-action:hover { border-color: var(--accent); }
.card-actions { grid-column: 1 / -1; margin-top: 18px; }
input[type="checkbox"]:not(.switch) { width: 22px; height: 22px; min-width: 22px; margin: 0; accent-color: var(--accent); }
.checkbox-field { align-content: end; }
.checkbox-field label {
  display: flex;
  align-items: center;
  gap: 11px;
  min-height: 43px;
  padding: 10px 11px;
  border: 1px solid #d9e0e7;
  border-radius: 7px;
  background: white;
  color: var(--ink);
  font-size: 16px;
  font-weight: 400;
}
.checkbox-field input { flex: 0 0 22px; padding: 0; }
.readonly-checkbox { width: 22px; height: 22px; accent-color: var(--accent); cursor: default; }
.dialog-body { flex: 1; min-height: 0; padding: 22px 25px 26px; overflow: auto; }
.relation-options { display: grid; gap: 9px; margin-top: 18px; }
.relation-option { display: flex; align-items: center; justify-content: space-between; padding: 13px 14px; border: 1px solid var(--line); border-radius: 9px; }
.mail-settings-form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, .55fr); gap: 14px; }
.mail-settings-form .wide { grid-column: 1 / -1; }
.mail-login-field { grid-column: 1 / 2; }
.mail-password-field { grid-column: 2 / 3; }
.mail-result { padding: 12px 13px; border: 1px solid #d9e2ec; border-radius: 8px; color: #405064; background: #f7fafc; font-size: 13px; line-height: 1.45; }
.mail-result.success { border-color: #a8d8c7; background: #effaf6; color: #0f5c55; }
.mail-result.error { border-color: #f0b8b8; background: #fff1f1; color: #a12a2a; }
.switch { appearance: none; width: 40px; height: 22px; padding: 2px; border: 0; border-radius: 20px; background: #cbd4dd; transition: .2s; }
.switch::before { content: ""; display: block; width: 18px; height: 18px; border-radius: 50%; background: white; transition: .2s; box-shadow: 0 1px 3px rgba(0,0,0,.25); }
.switch:checked { background: var(--accent); }
.switch:checked::before { transform: translateX(18px); }
.relation-toolbar { display: flex; gap: 9px; margin-bottom: 16px; }
.relation-toolbar select { flex: 1; padding: 9px; border: 1px solid var(--line); border-radius: 7px; }
.row-actions { display: flex; justify-content: flex-end; align-items: center; gap: 6px; white-space: nowrap; }
.row-actions .field-action { height: 28px; }
.compact-link-table { min-height: 0; }
.compact-link-table th,
.compact-link-table td { padding-top: 10px; padding-bottom: 10px; }
.relation-load-balance {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  margin: 12px 14px 0;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 800;
}
.relation-load-balance.ok { display: none; }
.relation-load-balance.under {
  border: 1px solid #f0ce77;
  background: #fff6d7;
  color: #9b7100;
}
.relation-load-balance.over {
  border: 1px solid #f0b8b8;
  background: #fff1f1;
  color: #c23838;
}
.requirement-executors { grid-template-columns: 1fr; }
.executor-checklist { grid-column: 1 / -1; display: grid; gap: 8px; }
.executor-option {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 10px;
  min-height: 43px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fbfdfd;
}
.executor-option input { accent-color: var(--accent); }
.executor-option span { color: var(--ink); font-size: 16px; font-weight: 400; }
.relation-load-input { width: 95px; padding: 7px 9px; border: 1px solid var(--line); border-radius: 7px; }
.remove-link { width: 34px; height: 28px; padding: 0; border: 0; border-radius: 0; background: transparent; color: var(--danger); font-size: 18px; line-height: 1; font-weight: 650; }
.remove-link:hover { color: #8f1f1f; }
.metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 22px; }
.metrics.compact { margin-bottom: 16px; }
.metric { padding: 15px 16px; border: 1px solid #dce8e5; border-radius: 9px; background: #f5fbfa; }
.metric span, .metric strong { display: block; }
.metric span { color: var(--muted); font-size: 12px; }
.metric strong { margin-top: 5px; color: var(--accent); font-size: 20px; }
.audit-info { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-bottom: 18px; padding: 11px 13px; border: 1px solid var(--line); border-radius: 9px; background: #fafbfc; color: var(--muted); font-size: 12px; }
.audit-info strong { color: #405064; font-weight: 650; }
.equipment-editor { display: grid; grid-template-columns: 1.1fr .7fr 1.8fr 1fr auto; gap: 10px; margin-bottom: 14px; }
.equipment-editor input, .equipment-editor select, .equipment-editor textarea { min-width: 0; padding: 9px; border: 1px solid var(--line); border-radius: 7px; }
.equipment-editor select { cursor: pointer; background-color: white; }
.equipment-editor textarea { grid-column: 1 / -1; min-height: 72px; resize: vertical; }
.payment-entry-editor { grid-template-columns: 1fr 1fr 1fr 1fr auto; }
.load-control { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 4px 10px; padding: 5px 9px; border: 1px solid var(--line); border-radius: 7px; color: var(--muted); font-size: 12px; }
.load-control span { grid-column: 1 / -1; }
.load-control strong { color: var(--accent); }
.load-control input { width: 100%; padding: 0; border: 0; accent-color: var(--accent); }
.load-control button { padding: 2px 4px; border: 0; background: transparent; color: var(--muted); font-size: 11px; }
.toast { position: fixed; right: 22px; bottom: 22px; z-index: 40; padding: 11px 15px; color: white; background: #223347; border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.18); }
.auth-screen { position: fixed; inset: 0; z-index: 60; display: grid; place-items: center; padding: 22px; background: linear-gradient(135deg, #17283d, #0f5c55); }
.auth-card { width: min(430px, 100%); display: grid; gap: 15px; padding: 30px; border-radius: 16px; background: white; box-shadow: 0 20px 60px rgba(0,0,0,.28); }
.auth-brand { padding: 0 0 12px; color: var(--ink); }
.auth-brand span { color: var(--muted); }
.auth-card .field span { color: #4b5969; font-size: 12px; font-weight: 700; }
.auth-card .button { width: 100%; margin-top: 4px; }
.auth-password-field { position: relative; }
.auth-password-field input { padding-right: 48px; }
.auth-password-toggle { position: absolute; right: 8px; bottom: 8px; display: grid; place-items: center; width: 31px; height: 30px; padding: 0; border: 1px solid #d8e1e8; border-radius: 6px; background: #f8fafb; color: #425165; }
.auth-password-toggle::before { content: ""; width: 17px; height: 11px; border: 2px solid currentColor; border-radius: 50%; }
.auth-password-toggle::after { content: ""; position: absolute; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.auth-password-toggle.visible::after { width: 20px; height: 2px; border-radius: 999px; transform: rotate(-35deg); }
.auth-password-toggle:hover { background: #eef3f6; color: var(--ink); }
.auth-sso-list { display: grid; gap: 8px; }
.auth-sso-button { width: 100%; padding: 11px 12px; border: 1px solid #cfdbe5; border-radius: 7px; background: #f8fafb; color: #17202a; font-size: 14px; font-weight: 700; text-align: center; }
.auth-sso-button:hover { background: #eef5f7; border-color: #9eb6c8; }
.auth-link-button { justify-self: center; width: auto; margin: -3px 0 0; padding: 4px 6px; border: 0; background: transparent; color: var(--accent); font-size: 14px; font-weight: 700; }
.auth-link-button:hover { color: #0b4f49; }
.field-note { padding: 10px 12px; border: 1px solid #d9e2ec; border-radius: 8px; color: #4b5969; background: #f7fafc; font-size: 13px; line-height: 1.45; }
.access-role-list { display: grid; gap: 8px; }
.access-role-option { display: flex; align-items: center; gap: 9px; padding: 10px 11px; border: 1px solid #d9e0e7; border-radius: 7px; background: #fff; color: #1e2a36; font-size: 14px; font-weight: 700; }
.access-role-option input { width: auto; flex: 0 0 auto; }

body.theme-night.protocol-page,
body.theme-night.bpmn-page,
body.theme-night .bpmn-editor-overlay { background: var(--canvas); }
body.theme-night .sidebar { background: var(--navy); }
body.theme-night .brand span,
body.theme-night .nav-caption { color: #71879b; }
body.theme-night .nav-item { color: #9fb0c3; }
body.theme-night .nav-item:hover,
body.theme-night .nav-item.active { color: #f0f6fb; background: rgba(255,255,255,.08); }
body.theme-night .topbar,
body.theme-night .drawer,
body.theme-night .dialog,
body.theme-night .auth-card,
body.theme-night .protocol-editor-card,
body.theme-night .bpmn-viewer-card,
body.theme-night .bpmn-source-card,
body.theme-night .table-card,
body.theme-night .payment-timeline-group,
body.theme-night .machine-map-header,
body.theme-night .payment-timeline-header,
body.theme-night .bpmn-editor-header { background: var(--paper); color: var(--ink); border-color: var(--line); box-shadow: none; }
body.theme-night .workspace,
body.theme-night main { background: var(--canvas); }
body.theme-night .button.secondary,
body.theme-night .field-action,
body.theme-night .machine-map-zoom button,
body.theme-night .functional-group-filter-actions button,
body.theme-night .auth-sso-button,
body.theme-night .access-role-option { background: #101b28; border-color: var(--line); color: var(--ink); }
body.theme-night .button.secondary:hover,
body.theme-night .field-action:hover,
body.theme-night .machine-map-zoom button:hover,
body.theme-night .auth-sso-button:hover { border-color: var(--accent); color: var(--accent); background: #142536; }
body.theme-night .button.primary { background: #158a7d; color: white; }
body.theme-night .button.primary:hover { background: #1ba291; }
body.theme-night .button.danger { background: #2b151a; border-color: #5a2930; color: #ff9f9f; }
body.theme-night .search,
body.theme-night .view-switch,
body.theme-night .machine-map-zoom,
body.theme-night .functional-group-controls,
body.theme-night .functional-group-filter-popover,
body.theme-night .functional-columns-popover,
body.theme-night .field input,
body.theme-night .field select,
body.theme-night .field textarea,
body.theme-night .equipment-editor input,
body.theme-night .equipment-editor select,
body.theme-night .equipment-editor textarea,
body.theme-night #protocol-editor,
body.theme-night #bpmn-source,
body.theme-night .mail-result,
body.theme-night .field-note,
body.theme-night .audit-info,
body.theme-night .metric,
body.theme-night .load-control { background: #101b28; border-color: var(--line); color: var(--ink); }
body.theme-night input,
body.theme-night select,
body.theme-night textarea { color: var(--ink); background-color: #101b28; }
body.theme-night input::placeholder,
body.theme-night textarea::placeholder { color: #728395; }
body.theme-night .field input:disabled,
body.theme-night .field select:disabled,
body.theme-night .field textarea:disabled { color: #8192a3; background: #0d1723; }
body.theme-night .field label,
body.theme-night .auth-card .field span,
body.theme-night .functional-columns-options label,
body.theme-night .functional-group-filter-options label,
body.theme-night .functional-group-filter-title,
body.theme-night .audit-info strong { color: #b8c7d4; }
body.theme-night .view-switch button { color: #93a4b3; }
body.theme-night .view-switch button.active { background: #223244; color: var(--accent); box-shadow: none; }
body.theme-night .machine-map,
body.theme-night .payment-timeline,
body.theme-night .user-function-map,
body.theme-night .user-function-map.fullscreen,
body.theme-night .bpmn-viewer-card,
body.theme-night .bpmn-empty { background: #0f1824; border-color: var(--line); }
body.theme-night .bpmn-source-actions,
body.theme-night .functional-columns-options label:hover,
body.theme-night .functional-group-filter-options label:hover,
body.theme-night .payment-timeline-row:hover,
body.theme-night tbody tr:hover { background: #162638; }
body.theme-night th,
body.theme-night .journal-group-marker::after,
body.theme-night .tree-header-toggle { background: #111d2b; color: #9eb0bf; border-color: var(--line); }
body.theme-night td { border-color: var(--line); }
body.theme-night .machine-row td,
body.theme-night .department-detail-row td,
body.theme-night .user-detail-row td,
body.theme-night .function-detail-row td,
body.theme-night .system-row.system-linked-detail-row td { background: #101b28; color: var(--ink); }
body.theme-night .group-row td,
body.theme-night .payment-timeline-group-title { background: #17372f; border-color: #245144; color: #a8eadf; }
body.theme-night .machine-map,
body.theme-night .system-map,
body.theme-night .functional-block-map,
body.theme-night .payment-timeline,
body.theme-night .user-function-map,
body.theme-night .machine-map.fullscreen,
body.theme-night .payment-timeline.fullscreen,
body.theme-night .user-function-map.fullscreen { background: #0b1420; border-color: #263847; }
body.theme-night .machine-map-header,
body.theme-night .payment-timeline-header,
body.theme-night .user-function-map .machine-map-header { background: #101b28; border-color: #263847; }
body.theme-night .machine-map-canvas,
body.theme-night .user-function-map .machine-map-canvas {
  background:
    linear-gradient(rgba(48,70,86,.42) 1px, transparent 1px),
    linear-gradient(90deg, rgba(48,70,86,.42) 1px, transparent 1px),
    #0b1420;
  background-size: 56px 56px;
}
body.theme-night .user-function-map .machine-map-canvas::before {
  background:
    linear-gradient(rgba(92,128,148,.18) 1px, transparent 1px),
    linear-gradient(90deg, rgba(92,128,148,.18) 1px, transparent 1px);
  background-size: 280px 280px;
}
body.theme-night .machine-map-zoom,
body.theme-night .view-switch,
body.theme-night .functional-group-controls { background: #0c1723; border-color: #263847; }
body.theme-night .machine-map-zoom button,
body.theme-night .view-switch button.active { background: #182638; border-color: #31485a; color: #d7e2eb; }
body.theme-night .machine-map-zoom span,
body.theme-night .machine-map-legend,
body.theme-night .qualification-gradient-legend,
body.theme-night .function-kind-legend,
body.theme-night .user-function-map-layer-title { color: #9dafbf; }
body.theme-night .user-function-map text,
body.theme-night .user-function-summary-title,
body.theme-night .user-function-projects-title,
body.theme-night .user-function-metric-title,
body.theme-night .user-function-summary-metric,
body.theme-night .user-function-summary-value,
body.theme-night .user-function-summary-label,
body.theme-night .user-function-summary-fact text,
body.theme-night .user-function-project-value,
body.theme-night .user-function-project-tempo-label,
body.theme-night .user-function-project-metric,
body.theme-night .user-function-project-label,
body.theme-night .user-function-project-requirement-label,
body.theme-night .user-function-department text,
body.theme-night .user-function-org text,
body.theme-night .user-load-map-name,
body.theme-night .user-load-map-role { fill: #d4e0ea; stroke: none; }
body.theme-night .user-function-project-requirement-label.muted,
body.theme-night .user-function-project-month-label,
body.theme-night .user-function-free-svg text,
body.theme-night .user-map-overall-gauge-value { fill: #8fa2b2; }
body.theme-night .user-map-overall-gauge-panel,
body.theme-night .user-function-free-svg rect,
body.theme-night .user-load-map-body,
body.theme-night .user-function-org rect,
body.theme-night .user-function-department rect { fill: #101b28; stroke: #31485a; }
body.theme-night .user-map-overall-gauge-kpi { fill: #d4e0ea; }
body.theme-night .user-map-overall-gauge .user-map-thermometer-track { fill: #0b1420; stroke: #31485a; }
body.theme-night .user-function-project-fill { fill: #49311f; stroke: #a66b3b; }
body.theme-night .user-function-project-timeline-frame,
body.theme-night .user-function-project-unplanned-requirement,
body.theme-night .user-function-project-block.empty-project .user-function-project-timeline-frame { fill: #101b28; stroke: #3a5164; opacity: 1; }
body.theme-night .user-function-project-block.project-type-infrastructure .user-function-project-fill { fill: #122536; stroke: #4d7f9d; }
body.theme-night .user-function-project-block.project-type-onec_regulatory .user-function-project-fill { fill: #3d3214; stroke: #b78b27; }
body.theme-night .user-function-project-block.project-type-onec_management .user-function-project-fill { fill: #432819; stroke: #c36d33; }
body.theme-night .user-function-project-block.project-type-pdm .user-function-project-fill { fill: #241f3a; stroke: #8069bd; }
body.theme-night .user-function-project-block.function-kind-development .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-support .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-one_c .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-infrastructure .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-sks .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-other .user-function-project-timeline-frame { opacity: .42; }
body.theme-night .user-function-project-timeline-segment { stroke: rgba(213,226,237,.14); }
body.theme-night .user-function-project-timeline-segment.priority-high { fill: #6a302d; }
body.theme-night .user-function-project-timeline-segment.priority-medium { fill: #66501f; }
body.theme-night .user-function-project-timeline-segment.priority-low { fill: #244f37; }
body.theme-night .user-function-project-timeline-segment.priority-none { fill: #243443; }
body.theme-night .user-function-project-requirement-priority.priority-high { fill: rgba(150,65,58,.36); }
body.theme-night .user-function-project-requirement-priority.priority-medium { fill: rgba(155,118,42,.32); }
body.theme-night .user-function-project-requirement-priority.priority-low { fill: rgba(61,124,79,.3); }
body.theme-night .user-function-project-requirement-priority.priority-none { fill: rgba(73,96,116,.26); }
body.theme-night .user-function-fact-hatch-line,
body.theme-night .user-function-empty-project-hatch-line,
body.theme-night .user-function-unplanned-requirement-hatch-line { stroke: rgba(117,145,163,.42); }
body.theme-night .user-function-map-link,
body.theme-night .user-function-project-month-line { stroke: rgba(104,146,158,.42); }
body.theme-night .machine-map-node rect,
body.theme-night .machine-map-server-body,
body.theme-night .system-map-machine .machine-map-server-body,
body.theme-night .block-map-base rect,
body.theme-night .block-map-composite rect,
body.theme-night .block-map-general rect,
body.theme-night .block-map-system-label rect { fill: #101b28; stroke: #31485a; }
body.theme-night .machine-map-node text,
body.theme-night .machine-map-server text,
body.theme-night .block-map-node text,
body.theme-night .block-map-system-label text { fill: #d4e0ea; stroke: none; }
body.theme-night .group-row small,
body.theme-night .payment-timeline-group-title small { background: #0d1b25; color: var(--accent); }
body.theme-night .site-row td,
body.theme-night .rack-row td,
body.theme-night .department-row td,
body.theme-night .function-user-row td,
body.theme-night .journal-equipment-row td,
body.theme-night .system-row.location-local td { background: #0f202d; border-color: var(--line); color: #a9bac8; }
body.theme-night .system-row.location-landlord td { background: #2a2317; }
body.theme-night .planned-badge { background: #3a2a10; color: #f5bd5a; }
body.theme-night .code-pill { background: #203040; color: #c5d3df; }
body.theme-night .linked-machine,
body.theme-night .cell-linked_user_functions .linked-machine { color: #b9c9d6; }
body.theme-night .linked-machine.payment-alert-warning,
body.theme-night tr.machine-row.payment-alert-warning td,
body.theme-night .payment-timeline-row.payment-alert-warning { background: #342b12; color: #f5cf6b; }
body.theme-night .linked-machine.payment-alert-danger,
body.theme-night tr.machine-row.payment-alert-danger td,
body.theme-night .payment-timeline-row.payment-alert-danger { background: #3b1c1c; color: #ffa6a0; }
body.theme-night .icon-button,
body.theme-night .search-clear { background: #1b2a3a; color: #b8c7d4; }
body.theme-night .auth-screen { background: linear-gradient(135deg, #050b14, #102922); }
body.theme-night .toast { background: #1b2a3a; color: #f0f6fb; box-shadow: 0 8px 24px rgba(0,0,0,.34); }
body.theme-night .empty,
body.theme-night .muted,
body.theme-night .count { color: var(--muted); }
body.theme-night .machine-map,
body.theme-night .system-map,
body.theme-night .functional-block-map,
body.theme-night .payment-timeline,
body.theme-night .user-function-map,
body.theme-night .machine-map.fullscreen,
body.theme-night .payment-timeline.fullscreen,
body.theme-night .user-function-map.fullscreen { background: #03070d; border-color: #182431; }
body.theme-night .machine-map-canvas,
body.theme-night .user-function-map .machine-map-canvas {
  background:
    linear-gradient(rgba(33,48,62,.34) 1px, transparent 1px),
    linear-gradient(90deg, rgba(33,48,62,.34) 1px, transparent 1px),
    #03070d;
}
body.theme-night .user-function-map .machine-map-canvas::before {
  background:
    linear-gradient(rgba(54,78,96,.12) 1px, transparent 1px),
    linear-gradient(90deg, rgba(54,78,96,.12) 1px, transparent 1px);
}
body.theme-night .machine-map-header,
body.theme-night .payment-timeline-header,
body.theme-night .user-function-map .machine-map-header,
body.theme-night .machine-map-zoom,
body.theme-night .view-switch,
body.theme-night .functional-group-controls { background: #070d15; border-color: #182431; }
body.theme-night .table-card,
body.theme-night .table-card.fullscreen { background: #050a11; border-color: #182431; }
body.theme-night th,
body.theme-night .journal-group-marker::after,
body.theme-night .tree-header-toggle { background: #070d15; color: #8fa2b3; border-color: #182431; }
body.theme-night td { border-color: #182431; color: #c4d0dc; }
body.theme-night tbody tr:hover,
body.theme-night .payment-timeline-row:hover { background: #0c1723; }
body.theme-night .group-row td,
body.theme-night .payment-timeline-group-title {
  background: #0a131d;
  border-color: #1a2a37;
  color: #b3c7d6;
}
body.theme-night .group-row small,
body.theme-night .payment-timeline-group-title small { background: #050a11; color: #5ed0bf; }
body.theme-night .machine-row td,
body.theme-night .site-row td,
body.theme-night .rack-row td,
body.theme-night .department-row td,
body.theme-night .department-detail-row td,
body.theme-night .user-detail-row td,
body.theme-night .function-user-row td,
body.theme-night .function-detail-row td,
body.theme-night .journal-equipment-row td,
body.theme-night .system-row.location-local td,
body.theme-night .system-row.system-linked-detail-row td {
  background: #07101a;
  border-color: #182431;
  color: #c4d0dc;
}
body.theme-night .system-row.location-cloud td { background: #08131d; color: #b9c9d6; }
body.theme-night .system-row.location-landlord td { background: #120f0a; color: #c8b9a1; }
body.theme-night .system-row.location-local:hover td,
body.theme-night .system-row.location-cloud:hover td,
body.theme-night .system-row.location-landlord:hover td,
body.theme-night .machine-row:hover td,
body.theme-night .site-row:hover td,
body.theme-night .rack-row:hover td,
body.theme-night .department-row:hover td,
body.theme-night .department-detail-row:hover td,
body.theme-night .user-detail-row:hover td,
body.theme-night .function-detail-row:hover td { background: #0d1b28; }
body.theme-night .linked-machine,
body.theme-night .cell-linked_user_functions .linked-machine { color: #aebfce; }
body.theme-night .linked-machine + .linked-machine { border-color: rgba(96,121,143,.2); }
body.theme-night .location-cloud .location-icon,
body.theme-night .cloud-icon { color: #5aa6c9; }
body.theme-night .planned-badge { background: #1a160b; color: #d6a94d; }
body.theme-night .code-pill { background: #0e1925; color: #aebfce; }
body.theme-night .user-map-overall-gauge-panel,
body.theme-night .user-function-free-svg rect,
body.theme-night .user-load-map-body,
body.theme-night .user-function-org rect,
body.theme-night .user-function-department rect,
body.theme-night .user-function-project-timeline-frame,
body.theme-night .user-function-project-unplanned-requirement,
body.theme-night .user-function-project-block.empty-project .user-function-project-timeline-frame {
  fill: #050a11;
  stroke: #263646;
  opacity: 1;
}
body.theme-night .user-function-summary-requirement-increase,
body.theme-night .user-function-project-fill { fill: #16100b; stroke: #7f5631; }
body.theme-night .user-function-project-block.project-type-infrastructure .user-function-project-fill { fill: #071523; stroke: #345f7a; }
body.theme-night .user-function-project-block.project-type-onec_regulatory .user-function-project-fill { fill: #191508; stroke: #8b6a21; }
body.theme-night .user-function-project-block.project-type-onec_management .user-function-project-fill { fill: #1b100a; stroke: #95552a; }
body.theme-night .user-function-project-block.project-type-pdm .user-function-project-fill { fill: #120f20; stroke: #594a8a; }
body.theme-night .user-function-project-block.function-kind-development .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-support .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-one_c .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-infrastructure .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-sks .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-other .user-function-project-timeline-frame { fill: #050a11; opacity: 1; }
body.theme-night .user-function-fact-hatch-line,
body.theme-night .user-function-empty-project-hatch-line,
body.theme-night .user-function-unplanned-requirement-hatch-line { stroke: rgba(57,78,95,.55); }
body.theme-night .machine-map .machine-map-canvas,
body.theme-night .system-map .machine-map-canvas,
body.theme-night .functional-block-map .machine-map-canvas,
body.theme-night .machine-map.fullscreen .machine-map-canvas {
  background:
    linear-gradient(rgba(33,48,62,.34) 1px, transparent 1px),
    linear-gradient(90deg, rgba(33,48,62,.34) 1px, transparent 1px),
    #03070d;
}
body.theme-night .user-map-overall-gauge-panel,
body.theme-night .user-function-free-svg rect,
body.theme-night .user-load-map-body,
body.theme-night .user-function-org rect,
body.theme-night .user-function-department rect,
body.theme-night .user-function-project-timeline-frame,
body.theme-night .user-function-project-unplanned-requirement,
body.theme-night .user-function-project-block.empty-project .user-function-project-timeline-frame {
  fill: #101b28;
  stroke: #3a5164;
  opacity: 1;
}
body.theme-night .user-function-summary-requirement-increase,
body.theme-night .user-function-project-fill { fill: #49311f; stroke: #a66b3b; }
body.theme-night .user-function-project-block.project-type-infrastructure .user-function-project-fill { fill: #122536; stroke: #4d7f9d; }
body.theme-night .user-function-project-block.project-type-onec_regulatory .user-function-project-fill { fill: #3d3214; stroke: #b78b27; }
body.theme-night .user-function-project-block.project-type-onec_management .user-function-project-fill { fill: #432819; stroke: #c36d33; }
body.theme-night .user-function-project-block.project-type-pdm .user-function-project-fill { fill: #241f3a; stroke: #8069bd; }
body.theme-night .user-function-project-block.function-kind-development .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-support .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-one_c .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-infrastructure .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-sks .user-function-project-timeline-frame,
body.theme-night .user-function-project-block.function-kind-other .user-function-project-timeline-frame { opacity: .42; }
body.theme-night .machine-map-header,
body.theme-night .payment-timeline-header,
body.theme-night .user-function-map .machine-map-header,
body.theme-night .machine-map-zoom,
body.theme-night .view-switch,
body.theme-night .functional-group-controls,
body.theme-night .table-card,
body.theme-night .table-card.fullscreen { background: #101b28; border-color: #253545; }
body.theme-night th,
body.theme-night .journal-group-marker::after,
body.theme-night .tree-header-toggle { background: #111d2b; color: #9eb0bf; border-color: #253545; }
body.theme-night td { border-color: #253545; color: #d8e2ea; }
body.theme-night .group-row td,
body.theme-night .payment-timeline-group-title { background: #17372f; border-color: #245144; color: #a8eadf; }
body.theme-night .group-row small,
body.theme-night .payment-timeline-group-title small { background: #0d1b25; color: #37b9a7; }
body.theme-night .machine-row td,
body.theme-night .site-row td,
body.theme-night .rack-row td,
body.theme-night .department-row td,
body.theme-night .department-detail-row td,
body.theme-night .user-detail-row td,
body.theme-night .function-user-row td,
body.theme-night .function-detail-row td,
body.theme-night .journal-equipment-row td,
body.theme-night .system-row.location-local td,
body.theme-night .system-row.system-linked-detail-row td {
  background: #101b28;
  border-color: #253545;
  color: #d8e2ea;
}
body.theme-night .system-row.location-cloud td { background: #0f202d; color: #c4d4e1; }
body.theme-night .system-row.location-landlord td { background: #2a2317; color: #dcc9a9; }
body.theme-night .system-row.location-local:hover td,
body.theme-night .system-row.location-cloud:hover td,
body.theme-night .system-row.location-landlord:hover td,
body.theme-night .machine-row:hover td,
body.theme-night .site-row:hover td,
body.theme-night .rack-row:hover td,
body.theme-night .department-row:hover td,
body.theme-night .department-detail-row:hover td,
body.theme-night .user-detail-row:hover td,
body.theme-night .function-detail-row:hover td,
body.theme-night tbody tr:hover,
body.theme-night .payment-timeline-row:hover { background: #162638; }
body.theme-night .linked-machine,
body.theme-night .cell-linked_user_functions .linked-machine { color: #b9c9d6; }
body.theme-night .code-pill { background: #203040; color: #c5d3df; }
body.theme-night .system-map-org rect {
  fill: #03070d;
  stroke: #182431;
  filter: none;
}
body.theme-night .system-map-org text { fill: #d8e2ea; }
body.theme-night .system-map-org .machine-map-subtext { fill: #93a4b3; }
body.theme-night .system-map-link.location-local { stroke: rgba(91,139,124,.38); }
body.theme-night .system-map-link.location-cloud,
body.theme-night .system-map-location-link.location-cloud { stroke: rgba(84,156,194,.45); }
body.theme-night .system-map-link.location-landlord,
body.theme-night .system-map-location-link.location-landlord { stroke: rgba(184,138,62,.42); }
@media (max-width: 850px) {
  .sidebar { position: static; width: 100%; }
  main { margin-left: 0; }
  .topbar { height: auto; align-items: flex-start; gap: 20px; }
  .toolbar { align-items: stretch; flex-direction: column; }
  .mail-settings-form { grid-template-columns: 1fr; }
  .search { width: 100%; }
  .view-switch { width: 100%; }
  .view-switch button { flex: 1; }
  .print-requirements-button { width: 100%; }
  .machine-map-header { align-items: flex-start; flex-direction: column; }
  .machine-map-actions { align-items: flex-start; flex-direction: column; }
  .machine-map-legend { justify-content: flex-start; }
  .machine-map { height: auto; min-height: 0; }
  .machine-map-canvas { height: 420px; flex: none; }
  .payment-timeline { height: auto; min-height: 0; }
  .payment-timeline-body { height: auto; max-height: 520px; }
  .payment-timeline-header { align-items: flex-start; flex-direction: column; }
  .payment-timeline-scale { width: 100%; min-width: 0; }
  .payment-timeline-row { grid-template-columns: 1fr; gap: 8px; }
  .payment-timeline-date { text-align: left; }
  .machine-equipment-filters { max-width: none; }
  .form-grid { grid-template-columns: 1fr; }
  .form-section { grid-template-columns: 1fr; }
  .field.wide { grid-column: auto; }
  .equipment-editor, .metrics { grid-template-columns: 1fr; }
}

@media print {
  body.printing-functional-requirements {
    background: white;
  }

  body.printing-functional-requirements .sidebar,
  body.printing-functional-requirements .topbar,
  body.printing-functional-requirements .toolbar,
  body.printing-functional-requirements .machine-map,
  body.printing-functional-requirements .card-drawer,
  body.printing-functional-requirements .modal,
  body.printing-functional-requirements .toast,
  body.printing-functional-requirements .resize-handle,
  body.printing-functional-requirements #empty-state {
    display: none !important;
  }

  body.printing-functional-requirements main {
    margin: 0;
  }

  body.printing-functional-requirements .workspace {
    padding: 0;
  }

  body.printing-functional-requirements .table-card {
    display: block !important;
    overflow: visible;
    max-width: none;
    min-height: 0;
    border: 0;
    border-radius: 0;
  }

  body.printing-functional-requirements table {
    width: 100%;
    min-width: 0;
    zoom: 1 !important;
    font-size: 10px;
    border-collapse: collapse;
  }

  body.printing-functional-requirements th,
  body.printing-functional-requirements td {
    padding: 6px 7px;
    border-bottom: 1px solid #d7dee6;
    color: #111827;
  }

  body.printing-functional-requirements th {
    background: #f2f5f7 !important;
    color: #526174;
  }

  body.printing-functional-requirements tr {
    break-inside: avoid;
  }
}
