        /* Единая шкала типографики и отступов (обычный режим + монитор) */
        :root {
            --hm-font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
            --hm-text-xs: 0.75rem;
            --hm-text-sm: 0.8125rem;
            --hm-text-label: 0.875rem;
            --hm-text-base: 1rem;
            --hm-text-lg: 1.125rem;
            --hm-text-xl: 1.25rem;
            --hm-text-stat: 2rem;
            --hm-text-metric: 2.5rem;
            --hm-line-tight: 1.2;
            --hm-line-snug: 1.35;
            --hm-space-1: 0.25rem;
            --hm-space-2: 0.5rem;
            --hm-space-3: 0.75rem;
            --hm-space-4: 1rem;
            --hm-space-5: 1.25rem;
            --hm-space-6: 1.5rem;
            --hm-radius: 10px;
            --hm-radius-lg: 12px;
            --hm-radius-card: 15px;
            --hm-shadow-card: 0 3px 10px rgba(0, 0, 0, 0.05);
            --hm-shadow-card-soft: 0 2px 8px rgba(0, 0, 0, 0.06);
            --hm-app-padding: 1.25rem;
            --hm-card-header-py: 0.875rem;
            --hm-card-header-px: 1.25rem;
            --hm-card-body-pad: 1.25rem;
            --hm-stat-pad: 1.25rem;
            --hm-node-pad: 1rem;
            --hm-label-tracking: 0.04em;
            --hm-progress-h: 10px;
            --hm-progress-h-monitor: 8px;
            --homelab-font-scale: 1;
            --homelab-content-scale: 1;
        }

        /* KPI-блоки (Speedtest и др.): одна шкала подпись / значение */
        .hm-kpi-label {
            font-size: var(--hm-text-label);
            font-weight: 600;
            letter-spacing: var(--hm-label-tracking);
            margin-bottom: var(--hm-space-1);
        }
        .hm-kpi-value {
            font-size: var(--hm-text-base);
            font-weight: 600;
            line-height: var(--hm-line-snug);
        }

        .host-problem-trigger {
            cursor: pointer;
        }
        .hm-speedtest-last-run {
            max-height: 7.5rem;
            overflow: auto;
            word-break: break-word;
            overflow-wrap: anywhere;
            font-family: ui-monospace, 'Cascadia Code', 'Segoe UI Mono', monospace;
            font-size: var(--hm-text-sm);
            font-weight: 500;
        }
        .hm-cluster-metric-panel .hm-cluster-metric-cell .hm-speedtest-last-run {
            font-family: var(--hm-font-sans);
            font-weight: 200;
            font-size: clamp(0.8125rem, 1.25vw, 1rem);
            max-height: 5rem;
            line-height: 1.35;
        }
        body.monitor-mode .monitor-screen__meta-value.hm-speedtest-last-run {
            font-size: var(--hm-text-sm);
            font-weight: 500;
            line-height: 1.35;
        }

        body {
            font-family: var(--hm-font-sans);
            font-size: var(--hm-text-base);
            line-height: var(--hm-line-snug);
            background: #f5f5f5;
            padding: var(--hm-app-padding);
            transition: background-color 0.3s, color 0.3s;
        }
        /* Обычная тёмная тема — та же палитра «midnight», что и у тёмного режима монитора */
        body.dark-mode {
            --hm-monitor-bg: #121212;
            --hm-monitor-surface: #1e1e1e;
            --hm-monitor-raised: #1c1c1c;
            --hm-monitor-border: rgba(255, 255, 255, 0.09);
            --hm-monitor-muted: #9e9e9e;
            --hm-monitor-blue: #42a5f5;
            --hm-monitor-purple: #7e57c2;
            --hm-monitor-pink: #d81b60;
            --hm-monitor-amber: #ffa000;
            background: var(--hm-monitor-bg);
            color: #fff;
        }
        body.dark-mode .card {
            background: var(--hm-monitor-surface);
            color: #fff;
            border: 1px solid var(--hm-monitor-border);
        }
        body.dark-mode .card-header {
            background: linear-gradient(135deg, rgba(66, 165, 245, 0.22) 0%, rgba(126, 87, 194, 0.24) 52%, rgba(216, 27, 96, 0.16) 100%);
            color: #fff;
            border-bottom: 1px solid var(--hm-monitor-border);
        }
        body.dark-mode .stat-card {
            background: var(--hm-monitor-surface);
            border: 1px solid var(--hm-monitor-border);
        }
        body.dark-mode .stat-value {
            color: #fff;
        }
        body.dark-mode .stat-label {
            color: var(--hm-monitor-muted);
        }
        body.dark-mode .stat-card-meta {
            color: var(--hm-monitor-muted);
        }
        body.dark-mode .node-card {
            background: var(--hm-monitor-raised);
            border: 1px solid var(--hm-monitor-border);
        }
        body.dark-mode .table {
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
        }
        body.dark-mode .table thead th {
            background: linear-gradient(135deg, #2a3f5c 0%, #4a3478 100%);
            color: #fff;
            border-color: var(--hm-monitor-border);
        }
        body.dark-mode .table tbody td {
            background-color: var(--hm-monitor-surface);
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
        }
        body.dark-mode .table tbody tr:hover td {
            background-color: rgba(66, 165, 245, 0.08);
        }
        body.dark-mode .table .text-muted,
        body.dark-mode .table small {
            color: var(--hm-monitor-muted) !important;
        }
        body.dark-mode .table code {
            background: rgba(0, 0, 0, 0.35);
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
        }
        body.dark-mode .table .badge {
            color: #fff;
        }
        body.dark-mode .table-success { background-color: rgba(40, 167, 69, 0.18) !important; color: #e8e8e8; }
        body.dark-mode .table-danger { background-color: rgba(216, 27, 96, 0.2) !important; color: #e8e8e8; }
        body.dark-mode .table-warning { background-color: rgba(255, 160, 0, 0.16) !important; color: #e8e8e8; }
        body.dark-mode .navbar {
            background: var(--hm-monitor-raised) !important;
            color: #fff;
            border-bottom: 1px solid var(--hm-monitor-border);
        }
        body.dark-mode .form-control {
            background: var(--hm-monitor-surface);
            border-color: rgba(66, 165, 245, 0.35);
            color: #fff;
        }
        body.dark-mode .form-control:focus {
            background: var(--hm-monitor-bg);
            color: #fff;
            border-color: rgba(126, 87, 194, 0.5);
        }
        body.dark-mode .nav-tabs .nav-link {
            color: var(--hm-monitor-muted);
        }
        body.dark-mode .nav-tabs .nav-link.active {
            background: var(--hm-monitor-surface);
            color: #fff;
            border-color: rgba(126, 87, 194, 0.45) rgba(126, 87, 194, 0.45) transparent;
        }
        body.dark-mode .nav-tabs {
            border-color: rgba(126, 87, 194, 0.35);
        }
        body.dark-mode .btn-group .btn {
            border-color: rgba(126, 87, 194, 0.35);
        }
        body.dark-mode .progress {
            background: rgba(255, 255, 255, 0.08);
        }
        body.dark-mode .progress-bar.bg-primary {
            background: linear-gradient(90deg, var(--hm-monitor-blue), var(--hm-monitor-purple)) !important;
        }
        .container {
            max-width: 1600px;
            margin: 0 auto;
        }

        /* Верхняя панель приложения */
        .app-topbar {
            background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
            border: 1px solid #e2e8f0;
            border-radius: 12px;
            box-shadow:
                0 1px 2px rgba(15, 23, 42, 0.05),
                0 4px 14px rgba(15, 23, 42, 0.06);
            padding: 0.65rem 1rem;
            position: sticky;
            top: 0;
            z-index: 1040;
        }
        .app-topbar-inner {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 0.5rem 1rem;
        }
        .app-topbar-brand {
            display: inline-flex;
            align-items: center;
            gap: 0.55rem;
            font-weight: 600;
            letter-spacing: -0.02em;
            color: #1e293b;
            cursor: pointer;
            text-decoration: none;
        }
        .app-topbar-brand:hover {
            color: #334155;
        }
        .app-topbar-brand-icon {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 2.35rem;
            height: 2.35rem;
            border-radius: 10px;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: #fff;
            font-size: 1.15rem;
            box-shadow: 0 2px 8px rgba(102, 126, 234, 0.35);
        }
        .app-topbar-toolbar {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 0.65rem 1rem;
            width: 100%;
        }
        @media (min-width: 992px) {
            .app-topbar-toolbar {
                width: auto;
                flex: 1 1 auto;
                justify-content: flex-end;
            }
            .app-topbar-inner {
                flex-wrap: nowrap;
            }
        }
        .app-topbar-actions {
            display: inline-flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 0.35rem;
            padding: 0.2rem 0.35rem;
            background: #f1f5f9;
            border-radius: 10px;
            border: 1px solid #e2e8f0;
        }
        .app-topbar-btn {
            display: inline-flex !important;
            align-items: center;
            gap: 0.4rem;
            border-radius: 8px !important;
            border-color: transparent !important;
            background: #fff !important;
            box-shadow: none !important;
            font-weight: 400 !important;
            color: #334155 !important;
        }
        .app-topbar-btn.dropdown-toggle::after {
            margin-left: 0.15rem;
        }
        .app-topbar-btn:hover,
        .app-topbar-btn:focus,
        .app-topbar-btn:focus-visible,
        .app-topbar-btn:active,
        .app-topbar-actions .dropdown-toggle.show {
            background: #f8fafc !important;
            font-weight: 400 !important;
            color: #1e293b !important;
        }
        .app-topbar-status {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 0.4rem;
        }
        .app-topbar-pill {
            display: inline-flex;
            align-items: center;
            gap: 0.35rem;
            padding: 0.35rem 0.7rem;
            font-size: 0.8125rem;
            font-weight: 500;
            line-height: 1.2;
            border-radius: 999px;
            border: 1px solid #e2e8f0;
            background: #fff;
            color: #475569;
        }
        .app-topbar-pill--server.app-topbar-pill--ok {
            border-color: rgba(34, 197, 94, 0.35);
            background: rgba(240, 253, 244, 0.95);
            color: #166534;
        }
        .app-topbar-pill--server.app-topbar-pill--error {
            border-color: rgba(239, 68, 68, 0.35);
            background: rgba(254, 242, 242, 0.95);
            color: #991b1b;
        }
        .app-topbar-pill--conn {
            border-color: #e2e8f0;
            background: #fafafa;
        }
        .app-topbar-pill--host {
            border-color: rgba(59, 130, 246, 0.35);
            background: rgba(239, 246, 255, 0.95);
            color: #1e40af;
        }
        .app-topbar-refresh {
            display: inline-flex !important;
            align-items: center;
            gap: 0.45rem;
            border-radius: 8px !important;
            font-weight: 600;
            padding-left: 0.85rem !important;
            padding-right: 0.85rem !important;
        }
        .app-topbar-update-available {
            display: none;
            flex-shrink: 0;
            align-items: center;
            gap: 0.35rem;
            white-space: nowrap;
            font-weight: 600;
            border-radius: 8px !important;
            padding-left: 0.75rem !important;
            padding-right: 0.75rem !important;
        }
        body.dark-mode .app-topbar-update-available.btn-warning {
            color: #1a1000;
            border-color: rgba(255, 160, 0, 0.55);
            background: linear-gradient(180deg, #ffca28 0%, #ffa000 100%);
        }
        body.dark-mode .app-topbar-update-available.btn-warning:hover {
            filter: brightness(1.08);
            color: #1a1000;
        }
        body.dark-mode .app-topbar {
            background: rgba(28, 28, 28, 0.96);
            border-color: rgba(66, 165, 245, 0.22);
            box-shadow: 0 4px 24px rgba(0, 0, 0, 0.45);
        }
        body.dark-mode .app-topbar-brand {
            color: #f1f5f9 !important;
        }
        body.dark-mode .app-topbar-brand:hover {
            color: #fff !important;
        }
        body.dark-mode .app-topbar-brand-icon {
            background: linear-gradient(135deg, #42a5f5 0%, #7e57c2 100%);
            box-shadow: 0 2px 12px rgba(66, 165, 245, 0.35);
        }
        body.dark-mode .app-topbar-actions {
            background: rgba(255, 255, 255, 0.06);
            border-color: rgba(255, 255, 255, 0.12);
        }
        body.dark-mode .app-topbar-btn {
            background: rgba(30, 30, 30, 0.95) !important;
            color: #e8e8e8 !important;
            font-weight: 400 !important;
            border-color: rgba(66, 165, 245, 0.2) !important;
        }
        body.dark-mode .app-topbar-btn:hover,
        body.dark-mode .app-topbar-btn:focus,
        body.dark-mode .app-topbar-btn:focus-visible,
        body.dark-mode .app-topbar-btn:active,
        body.dark-mode .app-topbar-actions .dropdown-toggle.show {
            background: rgba(66, 165, 245, 0.18) !important;
            color: #fff !important;
            font-weight: 400 !important;
        }
        body.dark-mode .app-topbar-pill {
            background: rgba(30, 30, 30, 0.9);
            border-color: rgba(255, 255, 255, 0.12);
            color: #e8e8e8;
        }
        body.dark-mode .app-topbar-pill--server.app-topbar-pill--ok {
            background: rgba(34, 197, 94, 0.15);
            border-color: rgba(34, 197, 94, 0.35);
            color: #bbf7d0;
        }
        body.dark-mode .app-topbar-pill--server.app-topbar-pill--error {
            background: rgba(239, 68, 68, 0.15);
            border-color: rgba(239, 68, 68, 0.35);
            color: #fecaca;
        }
        body.dark-mode .app-topbar-pill--conn {
            background: rgba(30, 30, 30, 0.85);
            color: #9e9e9e;
        }
        body.dark-mode .app-topbar-pill--host {
            background: rgba(66, 165, 245, 0.14);
            border-color: rgba(66, 165, 245, 0.4);
            color: #90caf9;
        }
        .card {
            border-radius: var(--hm-radius-card);
            box-shadow: 0 5px 15px rgba(0,0,0,0.08);
            border: none;
            margin-bottom: var(--hm-space-5);
        }
        body.dark-mode .card-body {
            color: #fff;
        }
        body.dark-mode .navbar-brand {
            color: #fff !important;
        }
        .card-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border-radius: var(--hm-radius-card) var(--hm-radius-card) 0 0 !important;
            padding: var(--hm-card-header-py) var(--hm-card-header-px);
        }
        .card-header h5,
        .card-header h6 {
            font-size: var(--hm-text-lg);
            font-weight: 600;
            line-height: var(--hm-line-tight);
        }
        .card-body {
            padding: var(--hm-card-body-pad);
        }
        .stat-card {
            background: white;
            border-radius: var(--hm-radius);
            padding: var(--hm-stat-pad);
            text-align: center;
            box-shadow: var(--hm-shadow-card);
            display: flex;
            flex-direction: column;
            justify-content: center;
            min-height: 116px;
        }
        .stat-value {
            font-size: var(--hm-text-stat);
            font-weight: 700;
            line-height: var(--hm-line-tight);
            color: #333;
        }

        /* HomeLab: increase typography with free space (set by JS). */
        #dashboardContent .stat-value {
            font-size: calc(var(--hm-text-stat) * var(--homelab-font-scale));
        }
        #dashboardContent .card .display-6 {
            font-size: calc(var(--hm-text-metric) * var(--homelab-font-scale)) !important;
        }
        #dashboardContent .card-header h5,
        #dashboardContent .cluster-scroll-item .node-card h5 {
            font-size: calc(var(--hm-text-lg) * var(--homelab-font-scale));
        }
        #dashboardContent .nav-tabs .nav-link {
            font-size: calc(var(--hm-text-base) * var(--homelab-font-scale));
        }
        #dashboardContent .cluster-scroll-item .node-card .small {
            font-size: calc(var(--hm-text-sm) * var(--homelab-font-scale));
        }
        #dashboardContent {
            transform-origin: top center;
            transform: scale(var(--homelab-content-scale));
            width: calc(100% / var(--homelab-content-scale));
            margin-left: auto;
            margin-right: auto;
        }
        .stat-label {
            color: #666;
            font-size: var(--hm-text-label);
            text-transform: uppercase;
            letter-spacing: var(--hm-label-tracking);
            line-height: var(--hm-line-tight);
        }
        .stat-card-meta {
            margin-top: var(--hm-space-2);
            color: #666;
            font-size: var(--hm-text-sm);
            line-height: var(--hm-line-snug);
        }
        .stat-card-meta:empty {
            display: none;
        }
        /* Крупные числа в блоке «Ресурсы кластера» и плитках UPS/Speedtest — очень лёгкое начертание */
        #dashboardContent .card .display-6,
        .card .hm-cluster-metric-cell .display-6,
        .hm-cluster-metric-panel .hm-cluster-metric-cell .display-6 {
            font-size: var(--hm-text-metric) !important;
            font-weight: 200 !important;
            line-height: var(--hm-line-tight) !important;
        }
        #dashboardContent .card .text-center.p-3 h6,
        .card .hm-cluster-metric-cell h6,
        .hm-cluster-metric-panel .hm-cluster-metric-cell h6 {
            font-size: var(--hm-text-label);
            font-weight: 500;
            margin-bottom: var(--hm-space-2);
        }
        #dashboardContent .card .text-center.p-3,
        .card .hm-cluster-metric-cell,
        .hm-cluster-metric-panel .hm-cluster-metric-cell {
            padding: var(--hm-space-4) !important;
        }
        #dashboardContent .card .text-center.p-3 .progress {
            border-radius: 6px;
        }
        .hm-cluster-metric-panel .hm-cluster-metric-cell .progress {
            border-radius: 0;
            background-color: #e2e8f0;
        }
        body.dark-mode .hm-cluster-metric-panel .hm-cluster-metric-cell .progress {
            background-color: rgba(255, 255, 255, 0.12);
        }
        .hm-cluster-metric-panel .hm-cluster-metric-cell .progress .progress-bar.bg-success {
            background-color: #15803d !important;
        }

        .cluster-scroll-row {
            display: flex;
            flex-wrap: nowrap;
            gap: var(--hm-space-3);
            overflow-x: auto;
            overflow-y: hidden;
            padding-bottom: 0.35rem;
            scrollbar-width: thin;
            scroll-snap-type: x proximity;
            align-items: stretch;
        }
        .cluster-scroll-item {
            flex: 0 0 calc((100% - 2.25rem) / 4);
            min-width: 280px;
            scroll-snap-align: start;
            display: flex;
        }
        .cluster-scroll-item > .node-card {
            margin-bottom: 0;
            width: 100%;
            display: flex;
            flex-direction: column;
        }
        .cluster-scroll-item .node-card h5 {
            font-size: var(--hm-text-lg);
            font-weight: 600;
            line-height: var(--hm-line-tight);
        }
        .cluster-scroll-item .node-card {
            font-size: calc(var(--hm-text-sm) * 1.2);
        }
        .cluster-scroll-item .node-card .small {
            font-size: calc(var(--hm-text-sm) * 1.14);
        }
        .cluster-scroll-item .node-card .fw-bold {
            font-size: calc(var(--hm-text-base) * 1.18);
        }
        .cluster-scroll-item .node-card code {
            font-size: calc(var(--hm-text-sm) * 1.14);
        }
        /* Keep top KPI cards aligned to one baseline. */
        body.monitor-mode #dashboardContent > .row.g-4.mb-4 > [class*="col-"] {
            display: flex;
        }
        body.monitor-mode #dashboardContent > .row.g-4.mb-4 .stat-card {
            width: 100%;
            align-items: center;
        }
        @media (max-width: 1199.98px) {
            .cluster-scroll-item {
                flex-basis: calc((100% - 0.75rem) / 2);
                min-width: 300px;
            }
        }
        @media (max-width: 767.98px) {
            .cluster-scroll-item {
                flex-basis: 88%;
                min-width: 260px;
            }
        }
        .node-card {
            background: white;
            border-radius: var(--hm-radius);
            padding: var(--hm-node-pad);
            margin-bottom: var(--hm-space-4);
            box-shadow: var(--hm-shadow-card);
            transition: all 0.3s ease;
        }
        .node-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
        }

        /* Сетку VM/CT сделать визуально более “явной”, чем стандартные node-card */
        body:not(.monitor-mode) #vmsMonitorSection #vmsMonitorCards .node-card {
            border: 1px solid rgba(102, 126, 234, 0.25);
            box-shadow: 0 10px 24px rgba(0, 0, 0, 0.08);
            padding: var(--hm-space-5);
        }

        body:not(.monitor-mode) #vmsMonitorSection #vmsMonitorCards .node-card h6 {
            font-size: var(--hm-text-base);
            font-weight: 700;
            line-height: var(--hm-line-tight);
        }

        body:not(.monitor-mode) #vmsMonitorSection #vmsMonitorCards .node-card .badge {
            font-weight: 700;
            padding: 0.35em 0.6em;
        }

        body.dark-mode:not(.monitor-mode) #vmsMonitorSection #vmsMonitorCards .node-card {
            background: var(--hm-monitor-surface);
            border: 1px solid rgba(126, 87, 194, 0.45);
            box-shadow: 0 12px 28px rgba(0, 0, 0, 0.45);
            color: #e8e8e8;
        }

        .vm-icon {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            line-height: 1;
            flex: 0 0 auto;
        }

        .service-icon {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            line-height: 1;
            flex: 0 0 auto;
        }

        .vm-settings-icon {
            width: 1.1rem;
            height: 1.1rem;
            font-size: 1.1rem;
        }

        .vm-monitor-icon {
            width: 1.25rem;
            height: 1.25rem;
            font-size: 1.25rem;
        }

        .service-monitor-icon {
            width: 1.25rem;
            height: 1.25rem;
            font-size: 1.25rem;
        }

        .vm-card-icon {
            width: 2.4rem;
            height: 2.4rem;
            font-size: 2.4rem;
        }

        .service-settings-icon {
            width: 1.1rem;
            height: 1.1rem;
            font-size: 1.1rem;
        }

        .service-card-icon {
            width: 2.1rem;
            height: 2.1rem;
            font-size: 2.1rem;
        }

        .vm-card-layout {
            display: flex;
            align-items: center;
            gap: 0.9rem;
        }

        .vm-card-layout__icon {
            flex: 0 0 3rem;
            width: 3rem;
            min-width: 3rem;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .vm-card-layout__info {
            flex: 1 1 auto;
            min-width: 0;
        }

        .vm-card-layout__status {
            flex: 0 0 auto;
            display: flex;
            align-items: center;
            justify-content: flex-end;
            min-width: 90px;
        }

        .vm-card-layout__info .badge {
            vertical-align: middle;
        }

        .service-card-layout {
            display: flex;
            align-items: center;
            gap: 0.9rem;
        }

        .service-card-layout__icon {
            flex: 0 0 auto;
            display: flex;
            align-items: center;
            justify-content: center;
            min-width: 2.8rem;
        }

        .service-card-layout__info {
            flex: 1 1 auto;
            min-width: 0;
        }

        .service-card-layout__status {
            flex: 0 0 auto;
            display: flex;
            align-items: center;
            justify-content: flex-end;
            min-width: 96px;
        }

        .icon-setting-control {
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        .icon-color-input {
            width: 2.4rem;
            min-width: 2.4rem;
            padding: 0.15rem;
            border-radius: 0.4rem;
            cursor: pointer;
        }

        .icon-setting-control__meta {
            min-width: 0;
            flex: 1 1 auto;
        }

        .icon-picker-trigger {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 2rem;
            min-height: 2rem;
        }

        /* Превью в настройках: фон = выбранный тинт, глиф контрастный (Iconify + Bootstrap Icons). */
        .icon-picker-trigger--tinted {
            border: none !important;
            border-radius: 0.4rem;
            box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.12);
        }
        body.dark-mode .icon-picker-trigger--tinted {
            box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
        }

        .icon-picker-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(148px, 1fr));
            gap: 0.75rem;
            max-height: 430px;
            overflow-y: auto;
        }

        .icon-picker-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 0.35rem;
            padding: 0.85rem 0.6rem;
            text-align: center;
        }

        .icon-picker-item__icon {
            width: 2rem;
            height: 2rem;
            font-size: 2rem;
        }

        .icon-picker-item__label {
            font-size: 0.9rem;
            font-weight: 600;
            line-height: 1.2;
        }

        .icon-picker-item__name {
            font-size: 0.72rem;
            white-space: normal;
            word-break: break-word;
            color: inherit;
        }

        .settings-about-markdown h1,
        .settings-about-markdown h2,
        .settings-about-markdown h3,
        .settings-about-markdown h4,
        .settings-about-markdown h5,
        .settings-about-markdown h6 {
            margin-top: 1rem;
            margin-bottom: 0.5rem;
        }

        .settings-about-markdown h1:first-child,
        .settings-about-markdown h2:first-child,
        .settings-about-markdown h3:first-child,
        .settings-about-markdown h4:first-child,
        .settings-about-markdown h5:first-child,
        .settings-about-markdown h6:first-child {
            margin-top: 0;
        }

        .settings-about-markdown p,
        .settings-about-markdown ul,
        .settings-about-markdown ol,
        .settings-about-markdown pre {
            margin-bottom: 0.75rem;
        }

        .settings-about-markdown pre {
            padding: 0.75rem;
            border-radius: 0.5rem;
            background: rgba(127, 127, 127, 0.12);
            overflow-x: auto;
        }

        @media (max-width: 575.98px) {
            .vm-card-layout {
                align-items: flex-start;
            }

            .vm-card-layout__status {
                min-width: auto;
            }

            .service-card-layout {
                align-items: flex-start;
            }

            .service-card-layout__status {
                min-width: auto;
            }
        }

        /* Карточки мониторинга сервисов: более явные и без растяжки по высоте */
        body:not(.monitor-mode) #servicesMonitorSection #servicesCards .node-card {
            height: auto !important;
            min-height: auto !important;
            border: 1px solid rgba(102, 126, 234, 0.22);
            box-shadow: 0 10px 24px rgba(0, 0, 0, 0.08);
            background: #fff;
            padding: var(--hm-node-pad);
        }

        body.dark-mode:not(.monitor-mode) #servicesMonitorSection #servicesCards .node-card {
            background: var(--hm-monitor-surface);
            border: 1px solid rgba(126, 87, 194, 0.45);
            box-shadow: 0 12px 28px rgba(0, 0, 0, 0.45);
            color: #e8e8e8;
        }

        body:not(.monitor-mode) #servicesMonitorSection #servicesCards .node-card h6 {
            font-size: var(--hm-text-base);
            font-weight: 700;
        }

        body:not(.monitor-mode) #servicesMonitorSection #servicesCards .node-card .badge {
            font-weight: 700;
            padding: 0.35em 0.6em;
        }
        .progress {
            height: 8px;
            margin-top: 5px;
        }
        .progress.hm-progress--cluster {
            height: var(--hm-progress-h);
            border-radius: 6px;
        }
        .toast-container {
            position: fixed;
            top: 20px;
            right: 20px;
            z-index: 9999;
        }
        .toast {
            background: white;
            border-left: 4px solid;
            margin-bottom: 10px;
            min-width: 300px;
        }
        .spinner-border {
            width: 3rem;
            height: 3rem;
        }
        body.dark-mode .spinner-border {
            border-color: #42a5f5;
        }
        body.dark-mode .spinner-border.text-primary {
            border-color: #42a5f5 !important;
        }
        .nav-tabs {
            margin-bottom: var(--hm-space-6) !important;
        }
        .nav-tabs .nav-link {
            color: #495057;
            font-weight: 500;
            font-size: var(--hm-text-base);
            padding: var(--hm-space-2) var(--hm-space-4);
            border-radius: var(--hm-radius) var(--hm-radius) 0 0;
        }
        .nav-tabs .nav-link.active {
            color: #667eea;
            font-weight: 600;
        }

        /* UPS settings should match the rest of settings design (no special “monitor” pills) */
        #upsSettingsCardWrap > .card {
            border: 1px solid #dee2e6;
            border-radius: var(--hm-radius);
            box-shadow: none;
            background: #fff;
            margin-bottom: var(--hm-space-5);
        }

        #upsSettingsCardWrap > .card .card-header {
            background: transparent !important;
            color: inherit;
            border-radius: var(--hm-radius) var(--hm-radius) 0 0 !important;
            padding: var(--hm-space-4) var(--hm-card-header-px) 0 var(--hm-card-header-px);
        }

        #upsSettingsCardWrap > .card .card-body {
            padding: var(--hm-space-4) var(--hm-card-header-px) var(--hm-space-5) var(--hm-card-header-px);
        }

        #upsSettingsCardWrap > .card .card-header h5 {
            margin-bottom: var(--hm-space-3);
            font-size: var(--hm-text-lg);
            font-weight: 600;
        }

        body.dark-mode #upsSettingsCardWrap > .card {
            background: var(--hm-monitor-surface);
            border-color: var(--hm-monitor-border);
        }

        body.dark-mode #upsSettingsCardWrap > .card .card-header {
            color: #fff;
        }

        body.dark-mode #upsSettingsCardWrap > .card .card-body {
            color: #fff;
        }
        .table th {
            background-color: #f8f9fa;
        }
        .badge-success {
            background-color: #28a745;
            color: white;
        }
        .badge-warning {
            background-color: #ffc107;
            color: #333;
        }
        .badge-danger {
            background-color: #dc3545;
            color: white;
        }
        .badge-info {
            background-color: #17a2b8;
            color: white;
        }
        .badge-secondary {
            background-color: #6c757d;
            color: white;
        }
        .status-running {
            color: #28a745;
            font-weight: bold;
        }
        .status-success {
            color: #28a745;
        }
        .status-error {
            color: #dc3545;
        }
        .status-warning {
            color: #ffc107;
        }
        .language-switcher {
            cursor: pointer;
            padding: 5px 10px;
            border-radius: 5px;
            transition: background-color 0.3s;
        }
        .language-switcher:hover {
            background-color: #e9ecef;
        }
        .language-switcher.active {
            background-color: #667eea;
            color: white;
        }
        body.dark-mode .language-switcher:hover {
            background-color: rgba(255, 255, 255, 0.08);
        }
        body.dark-mode .language-switcher.active {
            background: linear-gradient(135deg, #42a5f5 0%, #7e57c2 100%);
            color: white;
        }
        #settingsNav .nav-link {
            text-align: left;
            border-radius: 8px;
            margin-bottom: 4px;
        }
        #settingsNav .nav-link i {
            opacity: 0.9;
        }
        #settingsNav .settings-nav-category {
            font-size: 0.6875rem;
            font-weight: 600;
            letter-spacing: 0.05em;
            text-transform: uppercase;
            color: var(--bs-secondary-color, #6c757d);
            padding: 0.65rem 0.5rem 0.2rem;
            margin-top: 0.3rem;
            line-height: 1.25;
        }
        #settingsNav .settings-nav-category:first-of-type {
            margin-top: 0;
            padding-top: 0;
        }
        body.dark-mode #settingsNav .settings-nav-category {
            color: rgba(255, 255, 255, 0.5);
        }
        .settings-section {
            border: 1px solid #dee2e6;
            border-radius: var(--hm-radius);
            padding: var(--hm-stat-pad);
            margin-bottom: var(--hm-space-5);
            background: #fff;
        }
        .settings-section h5,
        .settings-section h6 {
            font-size: var(--hm-text-lg);
            font-weight: 600;
            line-height: var(--hm-line-tight);
        }
        /* Единые отступы: последняя панель во вкладке не дублирует нижний зазор */
        #settingsTabContent .tab-pane > .settings-section:last-child,
        #settingsTabContent .tab-pane > *:last-child .settings-section {
            margin-bottom: 0;
        }
        #upsDisplayTabsContent,
        #netdevDisplayTabsContent {
            border: 1px solid rgba(0, 0, 0, 0.08);
            border-radius: 8px;
            background: rgba(0, 0, 0, 0.02);
        }
        body.dark-mode .settings-section {
            background: var(--hm-monitor-surface);
            border-color: var(--hm-monitor-border);
        }
        .settings-display-subtab .settings-display-tab-title {
            font-size: var(--hm-text-xl);
            font-weight: 600;
            line-height: var(--hm-line-tight);
        }
        body.dark-mode #upsDisplayTabsContent,
        body.dark-mode #netdevDisplayTabsContent {
            border-color: rgba(255, 255, 255, 0.12);
            background: rgba(0, 0, 0, 0.15);
        }
        body.dark-mode .toast {
            background: var(--hm-monitor-surface);
            color: #fff;
            border: 1px solid var(--hm-monitor-border);
        }
        body.dark-mode .btn-close {
            filter: invert(1) grayscale(100%) brightness(200%);
        }
        body.dark-mode .form-select {
            background: var(--hm-monitor-surface);
            border-color: rgba(66, 165, 245, 0.35);
            color: #fff;
        }
        body.dark-mode .form-select:focus {
            background: var(--hm-monitor-bg);
            color: #fff;
            border-color: rgba(126, 87, 194, 0.5);
        }
        body.dark-mode .form-check-input {
            background-color: var(--hm-monitor-surface);
            border-color: rgba(126, 87, 194, 0.45);
        }
        body.dark-mode .form-check-input:checked {
            background-color: #42a5f5;
            border-color: #7e57c2;
        }
        body.dark-mode .form-check-label {
            color: #fff;
        }
        body.dark-mode .form-label {
            color: #fff;
        }
        body.dark-mode .form-text {
            color: var(--hm-monitor-muted);
        }
        body.dark-mode .bg-white {
            background-color: var(--hm-monitor-surface) !important;
        }
        body.dark-mode .bg-light {
            background-color: var(--hm-monitor-raised) !important;
        }
        body.dark-mode .text-muted {
            color: var(--hm-monitor-muted) !important;
        }
        body.dark-mode .text-dark {
            color: #fff !important;
        }
        body.dark-mode .btn-outline-primary {
            border-color: #42a5f5;
            color: #42a5f5;
        }
        body.dark-mode .btn-outline-primary:hover {
            background-color: #42a5f5;
            color: white;
        }
        body.dark-mode .btn-outline-dark {
            border-color: #9e9e9e;
            color: #9e9e9e;
        }
        body.dark-mode .btn-outline-dark:hover {
            background-color: #9e9e9e;
            color: #121212;
        }
        body.dark-mode .btn-outline-secondary {
            border-color: #9e9e9e;
            color: #9e9e9e;
        }
        body.dark-mode .btn-outline-secondary:hover {
            background-color: #9e9e9e;
            color: #121212;
        }
        body.dark-mode .btn-outline-danger {
            border-color: #dc3545;
            color: #dc3545;
        }
        body.dark-mode .btn-outline-danger:hover {
            background-color: #dc3545;
            color: white;
        }
        body.dark-mode .btn-primary {
            background: linear-gradient(135deg, #42a5f5 0%, #7e57c2 100%);
            border-color: transparent;
        }
        body.dark-mode .btn-primary:hover {
            background: linear-gradient(135deg, #389ce9 0%, #6d48b0 100%);
            border-color: transparent;
            filter: brightness(1.05);
        }
        body.dark-mode .btn-outline-info {
            border-color: #17a2b8;
            color: #17a2b8;
        }
        body.dark-mode .btn-outline-info:hover {
            background-color: #17a2b8;
            color: white;
        }
        body.dark-mode .btn-outline-success {
            border-color: #28a745;
            color: #28a745;
        }
        body.dark-mode .btn-outline-success:hover {
            background-color: #28a745;
            color: white;
        }
        body.dark-mode .btn-success {
            background-color: #28a745;
            border-color: #28a745;
            color: white;
        }
        body.dark-mode .btn-info {
            background-color: #17a2b8;
            border-color: #17a2b8;
            color: white;
        }
        body.dark-mode .btn-success:hover,
        body.dark-mode .btn-info:hover {
            opacity: 0.9;
        }
        body.dark-mode .btn {
            color: #fff;
        }
        body.dark-mode .text-center {
            color: #fff;
        }
        body.dark-mode .form-range::-webkit-slider-thumb {
            background: #42a5f5;
        }
        body.dark-mode .form-range::-moz-range-thumb {
            background: #42a5f5;
        }
        body.dark-mode .navbar-toggler {
            border-color: rgba(255,255,255,0.5);
        }
        body.dark-mode .navbar-toggler-icon {
            background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
        }
        
        /* Mobile menu improvements */
        @media (max-width: 991px) {
            .navbar-collapse,
            .app-topbar-collapse {
                background: #fff;
                border-radius: 10px;
                margin-top: 10px;
                padding: 14px;
                box-shadow: 0 4px 15px rgba(0,0,0,0.1);
            }
            body.dark-mode .navbar-collapse,
            body.dark-mode .app-topbar-collapse {
                background: var(--hm-monitor-surface);
                border: 1px solid var(--hm-monitor-border);
            }
            .app-topbar-toolbar {
                flex-direction: column;
                align-items: stretch !important;
            }
            .app-topbar-actions {
                justify-content: stretch;
            }
            .app-topbar-actions .app-topbar-btn,
            .app-topbar-actions .dropdown {
                flex: 1 1 auto;
                min-width: 0;
            }
            .app-topbar-actions .dropdown .app-topbar-btn {
                width: 100%;
                justify-content: center;
            }
            .app-topbar-status {
                justify-content: flex-start;
            }
            .app-topbar-refresh {
                width: 100%;
                justify-content: center;
            }
            .navbar-nav {
                gap: 10px;
            }
            .nav-item {
                width: 100%;
            }
            .nav-item button {
                width: 100%;
                margin-bottom: 8px;
                text-align: left;
            }
            .nav-item .badge {
                display: inline-block;
                margin-bottom: 8px;
            }
        }
        
        body.dark-mode .input-group-text {
            background: var(--hm-monitor-surface);
            border-color: rgba(66, 165, 245, 0.3);
            color: #fff;
        }
        body.dark-mode .input-group > .form-control {
            background: var(--hm-monitor-surface);
            border-color: rgba(66, 165, 245, 0.3);
            color: #fff;
        }
        body.dark-mode .alert-info {
            background: rgba(66, 165, 245, 0.12);
            border-color: rgba(66, 165, 245, 0.35);
            color: #e8e8e8;
        }
        body.dark-mode .alert-warning {
            background: rgba(255, 160, 0, 0.12);
            border-color: rgba(255, 160, 0, 0.35);
            color: #e8e8e8;
        }
        body.dark-mode .alert-danger {
            background: rgba(216, 27, 96, 0.14);
            border-color: rgba(216, 27, 96, 0.4);
            color: #e8e8e8;
        }
        body.dark-mode .alert-success {
            background: #0f3d1f;
            border-color: #34835a;
            color: #eee;
        }
        body.dark-mode .bg-success {
            background-color: #28a745 !important;
            color: white;
        }
        body.dark-mode .bg-warning {
            background-color: #ffc107 !important;
            color: #333;
        }
        body.dark-mode .bg-danger {
            background-color: #dc3545 !important;
            color: white;
        }
        body.dark-mode .bg-primary {
            background: linear-gradient(135deg, #42a5f5 0%, #7e57c2 100%) !important;
            color: white;
        }
        body.dark-mode .bg-secondary {
            background-color: #6c757d !important;
            color: white;
        }
        body.dark-mode .bg-info {
            background-color: #17a2b8 !important;
            color: white;
        }
        body.dark-mode .text-primary {
            color: #42a5f5 !important;
        }
        body.dark-mode .text-success {
            color: #28a745 !important;
        }
        body.dark-mode .text-warning {
            color: #ffa000 !important;
        }
        body.dark-mode .text-danger {
            color: #dc3545 !important;
        }
        body.dark-mode .progress-bar.bg-primary {
            background: linear-gradient(90deg, #42a5f5, #7e57c2) !important;
        }
        body.dark-mode .progress-bar.bg-success {
            background-color: #28a745 !important;
        }
        body.dark-mode .progress-bar.bg-warning {
            background-color: #ffc107 !important;
        }
        body.dark-mode .progress-bar.bg-danger {
            background-color: #dc3545 !important;
        }
        body.dark-mode .badge {
            color: white;
        }
        body.dark-mode .badge.bg-light {
            background-color: var(--hm-monitor-raised) !important;
            color: #fff;
        }
        body.dark-mode .badge.bg-success {
            background-color: #28a745 !important;
            color: white;
        }
        body.dark-mode .badge.bg-warning {
            background-color: #ffc107 !important;
            color: #333;
        }
        body.dark-mode .badge.bg-danger {
            background-color: #dc3545 !important;
            color: white;
        }
        body.dark-mode .badge.bg-info {
            background-color: #17a2b8 !important;
            color: white;
        }
        body.dark-mode .table-responsive {
            border-color: var(--hm-monitor-border);
        }
        body.dark-mode .card .table {
            background-color: var(--hm-monitor-surface);
        }
        .threshold-input {
            width: 5.5rem;
            max-width: 100%;
            flex-shrink: 0;
        }
        .threshold-label {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 0.75rem;
            margin-bottom: 0;
        }
        .color-indicator {
            width: 20px;
            height: 20px;
            border-radius: 50%;
            display: inline-block;
            margin-right: 10px;
        }
        .color-green { background: #28a745; }
        .color-yellow { background: #ffc107; }
        .color-red { background: #dc3545; }

        /* Speedtest на главной (без body.monitor-mode): те же KPI-плитки, что в полноэкранном мониторе */
        body:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__panel-body.speedtest-monitor__body {
            display: flex;
            flex-direction: column;
            gap: var(--hm-space-4);
        }

        body:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: var(--hm-space-3);
        }

        body:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-card {
            background: #fff;
            border-radius: var(--hm-radius);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card);
            padding: var(--hm-space-3) var(--hm-space-4);
        }

        body:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-label {
            font-size: var(--hm-text-label);
            text-transform: uppercase;
            letter-spacing: var(--hm-label-tracking);
            font-weight: 600;
            opacity: 0.8;
            color: var(--bs-secondary);
            margin-bottom: var(--hm-space-1);
            line-height: var(--hm-line-tight);
        }

        body:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-value {
            font-size: var(--hm-text-lg);
            font-weight: 700;
            line-height: var(--hm-line-snug);
        }

        body:not(.monitor-mode) #speedtestMonitorSection .speedtest-monitor__speed-val {
            font-size: clamp(1.2rem, 2.4vw, 1.85rem);
            font-weight: 300;
            line-height: 1.15;
        }

        body:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-extra {
            background: rgba(248, 250, 252, 0.98);
            border-radius: var(--hm-radius);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card-soft);
            padding: var(--hm-space-3) var(--hm-space-4);
        }

        body:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-card .progress.hm-progress--cluster {
            height: var(--hm-progress-h);
        }

        body.dark-mode:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-card {
            background: var(--hm-monitor-raised);
            border-color: var(--hm-monitor-border);
            color: #e8e8e8;
        }

        body.dark-mode:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-label {
            color: var(--hm-monitor-muted);
            opacity: 1;
        }

        body.dark-mode:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-value {
            color: #fff;
        }

        body.dark-mode:not(.monitor-mode) #speedtestMonitorSection .speedtest-monitor__speed-val {
            color: #fff;
        }

        body.dark-mode:not(.monitor-mode) #speedtestMonitorSection .monitor-screen__meta-extra {
            background: var(--hm-monitor-raised);
            border-color: var(--hm-monitor-border);
            color: var(--hm-monitor-muted);
        }

        /* Режим монитора: полный дашборд с крупными блоками, переключение свайпами */
        /* Жесты «назад/вперёд» и rubber-band завязаны на <html> — без класса на корне overscroll часто не срабатывает */
        html.monitor-mode-root {
            height: 100%;
            overscroll-behavior: none;
            overscroll-behavior-x: none;
            touch-action: pan-y;
        }
        body.monitor-mode {
            padding: 0;
            overflow: hidden;
            min-height: 100%;
            overscroll-behavior: none;
            overscroll-behavior-x: none;
            touch-action: manipulation;
            -webkit-text-size-adjust: 100%;
            text-size-adjust: 100%;
            --monitor-toolbar-h: 52px;
            --monitor-toolbar-top: var(--monitor-toolbar-h);
            --monitor-dock-h: 52px;
        }
        body.monitor-mode #dashboardSection,
        body.monitor-mode .monitor-screen,
        body.monitor-mode .monitor-view {
            overscroll-behavior: none;
            overscroll-behavior-x: none;
        }
        body.monitor-mode.monitor-toolbar-hidden {
            --monitor-toolbar-top: 0px;
        }
        body.monitor-mode.monitor-dots-hidden {
            --monitor-dock-h: 0px;
        }

        body.monitor-mode .container {
            max-width: none;
            width: 100vw;
            margin: 0;
            padding: 0;
        }

        body.monitor-mode .navbar,
        body.monitor-mode #configSection,
        body.monitor-mode .settings-section,
        body.monitor-mode #toastContainer,
        body.monitor-mode footer {
            display: none !important;
        }

        /* Секция дашборда в режиме монитора: без скролла, видимость #dashboardContent/#monitorView задаётся в JS */
        body.monitor-mode #dashboardSection {
            max-width: 100%;
            height: 100vh;
            padding: 0;
            padding-top: var(--monitor-toolbar-top);
            padding-bottom: var(--monitor-dock-h);
            overflow: hidden;
            box-sizing: border-box;
        }

        body.monitor-mode #dashboardContent {
            padding: var(--hm-space-4) var(--hm-space-5) var(--hm-space-6);
            height: 100%;
            display: flex;
            flex-direction: column;
            min-height: 0;
            overflow: hidden;
        }

        body.monitor-mode #myTabContent {
            flex: 1 1 auto;
            min-height: 0;
            overflow: hidden;
        }

        body.monitor-mode #nodes {
            height: 100%;
            min-height: 0;
            overflow: hidden;
        }

        body.monitor-mode #nodesContainer {
            height: 100%;
            min-height: 0;
            overflow-x: auto;
            overflow-y: hidden;
            touch-action: pan-x pan-y;
        }

        /* Вкладки Nodes / Storage / Backups / Quorum — только вне режима монитора */
        body.monitor-mode #myTab {
            display: none !important;
        }

        /* Крупные блоки дашборда в режиме монитора */
        body.monitor-mode .stat-card {
            padding: var(--hm-stat-pad);
            border-radius: var(--hm-radius);
            min-height: 126px;
        }
        body.monitor-mode .stat-value {
            font-size: var(--hm-text-stat);
            font-weight: 700;
            line-height: var(--hm-line-tight);
        }
        body.monitor-mode .stat-label {
            font-size: var(--hm-text-label);
            text-transform: uppercase;
            letter-spacing: var(--hm-label-tracking);
            margin-top: 0;
            line-height: var(--hm-line-tight);
        }
        body.monitor-mode .card {
            border-radius: var(--hm-radius-card);
            margin-bottom: var(--hm-space-5);
        }
        body.monitor-mode .card-header {
            font-size: inherit;
            padding: var(--hm-card-header-py) var(--hm-card-header-px);
        }
        body.monitor-mode .card-body {
            padding: var(--hm-card-body-pad);
        }
        body.monitor-mode .node-card {
            padding: var(--hm-node-pad);
            border-radius: var(--hm-radius);
        }
        body.monitor-mode .table {
            font-size: inherit;
        }
        body.monitor-mode .table th {
            padding: inherit;
            font-size: inherit;
        }
        body.monitor-mode .table td {
            padding: inherit;
        }
        body.monitor-mode .progress {
            height: var(--hm-progress-h-monitor);
            border-radius: 6px;
        }
        body.monitor-mode #dashboardContent .card .text-center.p-3 .progress {
            height: var(--hm-progress-h-monitor);
        }
        body.monitor-mode .nav-tabs .nav-link {
            padding: var(--hm-space-2) var(--hm-space-4);
            font-size: var(--hm-text-base);
        }

        /* Тёмная тема режима монитора — палитра «midnight» (сине-фиолетово-малиновые акценты) */
        body.monitor-mode.monitor-theme-dark {
            --hm-monitor-bg: #121212;
            --hm-monitor-surface: #1e1e1e;
            --hm-monitor-raised: #1c1c1c;
            --hm-monitor-border: rgba(255, 255, 255, 0.09);
            --hm-monitor-muted: #9e9e9e;
            --hm-monitor-blue: #42a5f5;
            --hm-monitor-purple: #7e57c2;
            --hm-monitor-pink: #d81b60;
            --hm-monitor-amber: #ffa000;
            background: var(--hm-monitor-bg);
            color: #fff;
        }
        body.monitor-mode.monitor-theme-dark .stat-card {
            background: var(--hm-monitor-surface);
            color: #fff;
            border: 1px solid var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark .stat-label { color: var(--hm-monitor-muted); }
        body.monitor-mode.monitor-theme-dark .card {
            background: var(--hm-monitor-surface);
            color: #fff;
            border: 1px solid var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark .card-header {
            background: linear-gradient(135deg, rgba(66, 165, 245, 0.22) 0%, rgba(126, 87, 194, 0.24) 52%, rgba(216, 27, 96, 0.16) 100%);
            color: #fff;
            border-bottom: 1px solid var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark .node-card {
            background: var(--hm-monitor-raised);
            color: #fff;
            border: 1px solid var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark .table {
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
            background-color: var(--hm-monitor-surface);
        }
        body.monitor-mode.monitor-theme-dark .table thead th {
            background: linear-gradient(135deg, #2a3f5c 0%, #4a3478 100%);
            color: #fff;
            border-color: var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark .table tbody td {
            background-color: var(--hm-monitor-surface);
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark .table tbody tr:hover td {
            background-color: rgba(66, 165, 245, 0.08);
        }
        body.monitor-mode.monitor-theme-dark .table .text-muted,
        body.monitor-mode.monitor-theme-dark .table small {
            color: var(--hm-monitor-muted) !important;
        }
        body.monitor-mode.monitor-theme-dark .table code {
            background: rgba(0, 0, 0, 0.35);
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark .table .badge {
            color: #fff;
        }
        body.monitor-mode.monitor-theme-dark .progress {
            background: rgba(255, 255, 255, 0.08);
        }
        body.monitor-mode.monitor-theme-dark .progress-bar.bg-primary {
            background: linear-gradient(90deg, var(--hm-monitor-blue), var(--hm-monitor-purple)) !important;
        }
        body.monitor-mode.monitor-theme-dark .text-muted { color: var(--hm-monitor-muted) !important; }
        body.monitor-mode.monitor-theme-dark #servicesMonitorSection .card,
        body.monitor-mode.monitor-theme-dark #vmsMonitorSection .card {
            background: var(--hm-monitor-surface);
            color: #fff;
            border-color: var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark #servicesMonitorSection .card-header,
        body.monitor-mode.monitor-theme-dark #vmsMonitorSection .card-header {
            background: linear-gradient(135deg, #2a3f5c 0%, #4a3478 100%);
            color: #fff;
        }
        body.monitor-mode.monitor-theme-dark #servicesMonitorSection .node-card,
        body.monitor-mode.monitor-theme-dark #vmsMonitorSection .node-card,
        body.monitor-mode.monitor-theme-dark .monitor-view__card {
            background-color: var(--hm-monitor-raised);
            border-color: var(--hm-monitor-border);
            color: #e8e8e8;
            box-shadow: none;
        }
        body.monitor-mode.monitor-theme-dark .monitor-view__stat-value,
        body.monitor-mode.monitor-theme-dark .monitor-view__res-value,
        body.monitor-mode.monitor-theme-dark .monitor-view__panel-title { color: #fff; }
        body.monitor-mode.monitor-theme-dark .monitor-view__stat-label,
        body.monitor-mode.monitor-theme-dark .monitor-view__res-label { color: var(--hm-monitor-muted); }
        body.monitor-mode.monitor-theme-dark #servicesMonitorSection code {
            background: rgba(0, 0, 0, 0.35);
            color: #e8e8e8;
        }
        body.monitor-mode.monitor-theme-dark #servicesMonitorSection .badge,
        body.monitor-mode.monitor-theme-dark #vmsMonitorSection .badge,
        body.monitor-mode.monitor-theme-dark #backupsMonitorSection .badge {
            color: #fff;
        }
        body.monitor-mode.monitor-theme-dark #backupsMonitorSection .card,
        body.monitor-mode.monitor-theme-dark #backupsMonitorSection .card-header {
            background: var(--hm-monitor-surface);
            color: #fff;
            border-color: var(--hm-monitor-border);
        }
        body.monitor-mode.monitor-theme-dark #backupsMonitorSection .card-header {
            background: linear-gradient(135deg, #2a3f5c 0%, #4a3478 100%);
        }
        .min-h-0 {
            min-height: 0 !important;
        }

.noc-panel {
    border: 1px solid rgba(108, 117, 125, 0.25);
}

.noc-kpi {
    border: 1px solid rgba(108, 117, 125, 0.22);
    border-radius: 0.6rem;
    padding: 0.55rem 0.65rem;
    min-height: 84px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.noc-kpi__value {
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.1;
}

.noc-kpi__label {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    opacity: 0.75;
}

.noc-list-wrap {
    border: 1px solid rgba(108, 117, 125, 0.2);
    border-radius: 0.65rem;
    padding: 0.7rem;
    min-height: 100%;
}

.noc-list-title {
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    opacity: 0.8;
    margin-bottom: 0.55rem;
}

.noc-incident-list {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.noc-incident {
    border: 1px solid rgba(108, 117, 125, 0.2);
    border-radius: 0.55rem;
    padding: 0.45rem 0.55rem;
}

.noc-incident--critical {
    border-color: rgba(220, 53, 69, 0.45);
}

.noc-incident--warning {
    border-color: rgba(255, 193, 7, 0.5);
}

.noc-domain {
    border: 1px solid rgba(108, 117, 125, 0.2);
    border-radius: 0.55rem;
    padding: 0.45rem 0.55rem;
}

.noc-domain__label {
    font-size: 0.75rem;
    text-transform: uppercase;
    opacity: 0.75;
}

.noc-domain__value {
    font-size: 1.1rem;
    font-weight: 700;
}

        /* Экран бэкапов: весь viewport под тулбар, без скролла */
        body.monitor-mode #backupsMonitorSection.monitor-backups-screen {
            display: flex;
            flex-direction: column;
            background: transparent;
        }
        body.monitor-mode.monitor-theme-dark #backupsMonitorSection.monitor-backups-screen {
            background: transparent;
        }
        /* EJS layout: скрыть дублирующий заголовок с «Назад» — навигация в тулбаре монитора */
        body.monitor-mode #backupsMonitorSection .card.monitor-backups-main-card > .card-header {
            display: none;
        }
        body.monitor-mode .monitor-backups-main-card {
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }
        /* Иначе колонки узлов схлопываются в 0px — таблицы не видны */
        body.monitor-mode .monitor-backups-main-card > .monitor-backups-body {
            flex: 1 1 0 !important;
            min-height: 0 !important;
            display: flex !important;
            flex-direction: column !important;
            overflow: hidden;
        }
        body.monitor-mode .monitor-backups-body {
            flex: 1;
            min-height: 0;
            overflow: hidden;
        }
        .monitor-backups-stats-row .stat-card {
            padding: 6px 8px;
            margin-bottom: 0;
        }
        body.monitor-mode .monitor-backups-stats-row .stat-value {
            font-size: 1.35rem !important;
            line-height: 1.1;
        }
        body.monitor-mode .monitor-backups-stats-row .stat-label {
            font-size: 0.65rem !important;
            margin-top: 2px;
            letter-spacing: 0.01em;
            line-height: 1.2;
        }
        .monitor-backup-stat-cell {
            min-width: 56px;
            max-width: 22%;
        }
        .monitor-backup-count-badge {
            flex-shrink: 0 !important;
            font-family: ui-monospace, "Cascadia Mono", "Segoe UI Mono", monospace;
            font-size: 0.8rem;
            font-weight: 600;
            padding: 0.35em 0.5em !important;
            letter-spacing: 0.02em;
        }
        .monitor-backups-explain {
            font-size: 0.82rem;
            line-height: 1.35;
            opacity: 0.92;
        }
        .monitor-backups-nodes-row {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            gap: 8px;
            align-items: flex-start;
            flex: 1 1 0;
            min-height: 0;
            overflow-x: auto;
            overflow-y: hidden;
            -webkit-overflow-scrolling: touch;
            padding-bottom: 4px;
        }
        /* Колонки узлов растягиваются по высоте ряда — иначе h-100 у карточки не работает и таблицы «схлопываются» */
        body.monitor-mode .monitor-backups-nodes-row {
            align-items: stretch;
        }
        .monitor-backup-node-col {
            flex: 1 1 0;
            min-width: 140px;
            max-width: 100%;
            display: flex;
            flex-direction: column;
        }
        .monitor-backup-node-card {
            border-radius: 8px;
            overflow: hidden;
            box-shadow: 0 1px 4px rgba(0, 0, 0, 0.07);
            width: 100%;
            display: flex;
            flex-direction: column;
            max-height: min(calc(100vh - var(--monitor-toolbar-top) - var(--monitor-dock-h) - 66px), 920px);
        }
        body.monitor-mode.monitor-theme-dark .monitor-backup-node-card {
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
        }
        .monitor-backup-node-card > .card-header {
            font-size: 0.95rem;
            font-weight: 700;
            padding: 6px 10px !important;
            flex-shrink: 0;
        }
        .monitor-backup-node-card > .card-body.monitor-backup-card-body-table {
            flex: 1 1 auto;
            min-height: 0;
        }
        .monitor-backup-card-body-table {
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }
        .monitor-backup-table-scroll {
            flex: 1 1 auto;
            min-height: 80px;
            overflow: auto;
            -webkit-overflow-scrolling: touch;
        }
        .monitor-backup-node-table {
            table-layout: fixed;
            width: 100%;
            border-collapse: collapse;
            font-size: var(--hm-text-xs);
            line-height: 1.35;
        }
        .monitor-backup-node-table thead th {
            position: sticky;
            top: 0;
            z-index: 1;
            padding: 6px 8px 5px !important;
            font-weight: 700;
            font-size: var(--hm-text-xs);
            text-transform: uppercase;
            letter-spacing: 0.04em;
            line-height: 1.2;
            background: rgba(0, 0, 0, 0.06);
            border-bottom: 2px solid rgba(0, 0, 0, 0.12);
            vertical-align: bottom;
        }
        body.monitor-mode.monitor-theme-dark .monitor-backup-node-table thead th {
            background: linear-gradient(135deg, #2a3f5c 0%, #4a3478 100%);
            color: #fff;
            border-bottom-color: rgba(255, 255, 255, 0.12);
        }
        .monitor-backup-col-vm {
            width: 20%;
            text-align: right !important;
            font-variant-numeric: tabular-nums;
            font-weight: 600;
            padding: 6px 8px 6px 10px !important;
            vertical-align: middle;
        }
        .monitor-backup-col-time {
            width: 50%;
            text-align: left !important;
            font-family: ui-monospace, 'Cascadia Mono', 'Segoe UI Mono', monospace;
            font-variant-numeric: tabular-nums;
            font-weight: 500;
            font-size: inherit;
            padding: 6px 6px !important;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            vertical-align: middle;
        }
        .monitor-backup-col-st {
            width: 30%;
            text-align: right !important;
            padding: 6px 8px !important;
            vertical-align: middle;
        }
        .monitor-backup-tr td {
            border-bottom: 1px solid rgba(0, 0, 0, 0.08);
        }
        body.monitor-mode.monitor-theme-dark .monitor-backup-tr td {
            border-bottom-color: rgba(255, 255, 255, 0.09);
            color: #e8e8e8;
        }
        .monitor-backup-tr--ok { background: rgba(25, 135, 84, 0.06); }
        .monitor-backup-tr--err { background: rgba(220, 53, 69, 0.08); }
        .monitor-backup-tr--run { background: rgba(13, 110, 253, 0.07); }
        .monitor-backup-tr--warn { background: rgba(255, 193, 7, 0.1); }
        body.monitor-mode.monitor-theme-dark .monitor-backup-tr--ok { background: rgba(25, 135, 84, 0.14); }
        body.monitor-mode.monitor-theme-dark .monitor-backup-tr--err { background: rgba(216, 27, 96, 0.18); }
        body.monitor-mode.monitor-theme-dark .monitor-backup-tr--run { background: rgba(66, 165, 245, 0.14); }
        body.monitor-mode.monitor-theme-dark .monitor-backup-tr--warn { background: rgba(255, 160, 0, 0.12); }
        .monitor-backups-nodes-row .badge {
            font-size: var(--hm-text-xs);
            padding: 0.2em 0.45em;
            font-weight: 600;
        }
        .monitor-backup-node-empty {
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
            text-align: center;
            color: var(--bs-secondary);
            font-size: clamp(0.7rem, 1vw, 0.85rem);
            padding: 0.5rem;
        }

        /* Полноэкранные окна монитора: общий shell в стиле экрана Cluster */
        body.monitor-mode .monitor-screen {
            position: fixed;
            top: var(--monitor-toolbar-top);
            left: 0;
            right: 0;
            bottom: var(--monitor-dock-h);
            z-index: 1020;
            margin: 0 !important;
            padding: var(--hm-space-3) var(--hm-space-4) var(--hm-space-4);
            overflow: hidden;
        }

        body.monitor-mode .monitor-screen__backrow {
            display: none !important;
        }

        body.monitor-mode .monitor-screen__layout {
            height: 100%;
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: var(--hm-space-3);
        }

        body.monitor-mode .monitor-screen__panel {
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }

        body.monitor-mode .monitor-screen__panel-title {
            display: none;
        }

        /* Monitor screens (except Homelab): show only data cards, no title bars/hints */
        body.monitor-mode #servicesMonitorSection .card-header,
        body.monitor-mode #vmsMonitorSection .card-header,
        body.monitor-mode #upsMonitorSection .card-header,
        body.monitor-mode #netdevMonitorSection .card-header,
        body.monitor-mode #smartSensorsMonitorSection .card-header,
        body.monitor-mode #backupsMonitorSection .card-header,
        body.monitor-mode #speedtestMonitorSection .card-header {
            display: none !important;
        }
        body.monitor-mode #servicesMonitorSection #servicesMonitorHint,
        body.monitor-mode #vmsMonitorSection #vmsMonitorHint,
        body.monitor-mode #upsMonitorSection #upsUpdatedAt,
        body.monitor-mode #netdevMonitorSection #netdevUpdatedAt,
        body.monitor-mode #smartSensorsMonitorSection #smartSensorsUpdatedAt {
            display: none !important;
        }
        body.monitor-mode #upsMonitorSection .card-body > .d-flex.align-items-center.mb-3,
        body.monitor-mode #netdevMonitorSection .card-body > .d-flex.align-items-center.mb-3 {
            display: none !important;
        }

        /* Remove remaining outer "background plates": monitor screens should look like uniform tiles */
        body.monitor-mode #servicesMonitorSection > .card,
        body.monitor-mode #vmsMonitorSection > .card,
        body.monitor-mode #upsMonitorSection > .card,
        body.monitor-mode #netdevMonitorSection > .card,
        body.monitor-mode #smartSensorsMonitorSection > .card,
        body.monitor-mode #backupsMonitorSection > .card,
        body.monitor-mode #speedtestMonitorSection > .card.speedtest-monitor__shell {
            background: transparent !important;
            border: 0 !important;
            box-shadow: none !important;
            margin: 0 !important;
        }
        body.monitor-mode #servicesMonitorSection > .card > .card-body,
        body.monitor-mode #vmsMonitorSection > .card > .card-body,
        body.monitor-mode #upsMonitorSection > .card > .card-body,
        body.monitor-mode #netdevMonitorSection > .card > .card-body,
        body.monitor-mode #smartSensorsMonitorSection > .card > .card-body,
        body.monitor-mode #backupsMonitorSection > .card > .card-body,
        body.monitor-mode #speedtestMonitorSection > .card.speedtest-monitor__shell > .card-body {
            padding: 0 !important;
        }

        /* Рисование: холст на весь экран монитора */
        body.monitor-mode #drawMonitorSection.monitor-draw-screen {
            flex-direction: column;
        }
        body.monitor-mode #drawMonitorSection .monitor-draw {
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
        }
        body.monitor-mode #drawMonitorSection .monitor-draw__canvas-wrap {
            flex: 1 1 auto;
            min-height: 0;
            position: relative;
            border-radius: var(--hm-radius);
            overflow: hidden;
            border: 1px solid rgba(148, 163, 184, 0.35);
        }
        body.monitor-mode.monitor-theme-dark #drawMonitorSection .monitor-draw__canvas-wrap {
            border-color: rgba(255, 255, 255, 0.12);
        }
        body.monitor-mode #drawMonitorSection .monitor-draw__canvas-wrap canvas {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            display: block;
            touch-action: none;
            cursor: crosshair;
        }
        body.monitor-mode #drawMonitorSection .monitor-draw__range {
            width: min(220px, 28vw);
        }

        body.monitor-mode .monitor-screen__panel-body {
            flex: 1 1 auto;
            min-height: 0;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            gap: var(--hm-space-3);
        }

        body.monitor-mode .monitor-screen__stats {
            margin-bottom: 0;
        }

        body.monitor-mode .monitor-screen__meta-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
            gap: var(--hm-space-3);
        }

        body.monitor-mode .monitor-screen__meta-card {
            background: rgba(255, 255, 255, 0.95);
            border-radius: var(--hm-radius);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card);
            padding: var(--hm-space-3) var(--hm-space-4);
        }

        body.monitor-mode .monitor-screen__meta-label {
            font-size: var(--hm-text-label);
            text-transform: uppercase;
            letter-spacing: var(--hm-label-tracking);
            opacity: 0.8;
            margin-bottom: var(--hm-space-1);
            line-height: var(--hm-line-tight);
        }

        body.monitor-mode .monitor-screen__meta-value {
            font-size: var(--hm-text-lg);
            font-weight: 700;
            line-height: var(--hm-line-snug);
        }

        body.monitor-mode .monitor-screen__meta-extra {
            background: rgba(255, 255, 255, 0.95);
            border-radius: var(--hm-radius);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card);
            padding: var(--hm-space-3) var(--hm-space-4);
        }

        body.monitor-mode .monitor-screen__header-action {
            border-color: rgba(255, 255, 255, 0.55);
            color: #fff;
        }

        body.monitor-mode .monitor-screen__header-action:hover,
        body.monitor-mode .monitor-screen__header-action:focus {
            background: rgba(255, 255, 255, 0.16);
            color: #fff;
            border-color: rgba(255, 255, 255, 0.85);
        }

        body.monitor-mode #upsMonitorCards,
        body.monitor-mode #netdevMonitorCards,
        body.monitor-mode #servicesCards,
        body.monitor-mode #vmsMonitorCards {
            flex: 1 1 auto;
            min-height: 0;
            overflow: auto;
            height: 100%;
            align-content: flex-start;
        }

        #speedtestMonitorSection .speedtest-monitor__speed-row {
            display: flex;
            flex-wrap: wrap;
            align-items: baseline;
            gap: 0.25rem 0.6rem;
            min-width: 0;
        }

        #speedtestMonitorSection .speedtest-monitor__speed-row .speedtest-monitor__speed-val {
            flex: 0 1 auto;
            min-width: 0;
        }

        #speedtestMonitorSection .speedtest-monitor__last-dev {
            margin-top: 0;
            flex: 1 1 auto;
            min-width: 0;
            font-size: clamp(0.8rem, 2vw, 1rem);
            font-weight: 600;
            line-height: 1.2;
            letter-spacing: 0.02em;
            white-space: nowrap;
        }

        #speedtestMonitorSection .speedtest-monitor__last-dev-plan {
            opacity: 0.72;
            font-weight: 500;
        }

        #speedtestMonitorSection table.speedtest-monitor__table {
            width: 100%;
            border-collapse: separate;
            border-spacing: 0;
            vertical-align: middle;
        }

        #speedtestMonitorSection .speedtest-monitor__table thead th {
            position: sticky;
            top: 0;
            z-index: 1;
            font-size: var(--hm-text-label);
            text-transform: uppercase;
            letter-spacing: var(--hm-label-tracking);
            font-weight: 600;
            opacity: 0.85;
            padding: 0.5rem 0.65rem;
            text-align: left;
            border-bottom: 1px solid rgba(226, 232, 240, 1);
            background: rgba(255, 255, 255, 0.98);
            white-space: nowrap;
        }

        #speedtestMonitorSection .speedtest-monitor__table thead th.text-end {
            text-align: right;
        }

        #speedtestMonitorSection .speedtest-monitor__table tbody .speedtest-monitor__cell {
            padding: 0.45rem 0.65rem;
            font-size: var(--hm-text-base);
            font-weight: 500;
            border-bottom: 1px solid rgba(148, 163, 184, 0.2);
            vertical-align: middle;
        }

        #speedtestMonitorSection .speedtest-monitor__table tbody tr:last-child .speedtest-monitor__cell {
            border-bottom: none;
        }

        #speedtestMonitorSection .speedtest-monitor__table tbody .speedtest-monitor__cell--dev {
            font-weight: 600;
            font-variant-numeric: tabular-nums;
        }

        #speedtestMonitorSection .speedtest-monitor__table tbody .speedtest-monitor__cell--note {
            font-size: var(--hm-text-sm);
            opacity: 0.92;
        }

        #speedtestMonitorSection .speedtest-monitor__table tbody tr:nth-child(even) {
            background: rgba(148, 163, 184, 0.08);
        }

        #speedtestMonitorSection .speedtest-monitor__table tbody tr.speedtest-monitor__row:hover .speedtest-monitor__cell {
            background: rgba(66, 165, 245, 0.07);
        }

        #speedtestMonitorSection .speedtest-monitor__table-scroll {
            border-radius: var(--hm-radius);
            border: 1px solid rgba(226, 232, 240, 1);
            background: rgba(255, 255, 255, 0.97);
            box-shadow: var(--hm-shadow-card);
            overflow: auto;
        }

        body.dark-mode #speedtestMonitorSection .speedtest-monitor__table-scroll {
            border-color: var(--hm-monitor-border);
            background: rgba(15, 23, 42, 0.42);
        }

        body.dark-mode #speedtestMonitorSection .speedtest-monitor__table thead th {
            border-bottom-color: var(--hm-monitor-border);
            background: rgba(15, 23, 42, 0.88);
            color: inherit;
        }

        body.dark-mode #speedtestMonitorSection .speedtest-monitor__table tbody .speedtest-monitor__cell {
            border-bottom-color: rgba(255, 255, 255, 0.08);
        }

        body.dark-mode #speedtestMonitorSection .speedtest-monitor__table tbody tr:nth-child(even) {
            background: rgba(255, 255, 255, 0.04);
        }

        body.dark-mode #speedtestMonitorSection .speedtest-monitor__table tbody tr.speedtest-monitor__row:hover .speedtest-monitor__cell {
            background: rgba(66, 165, 245, 0.1);
        }

        body.monitor-mode #speedtestMonitorSection .speedtest-monitor__table-scroll {
            flex: 1 1 auto;
            min-height: 0;
        }

        body.monitor-mode #speedtestMonitorSection .monitor-screen__panel-body.speedtest-monitor__body,
        body.monitor-mode #speedtestMonitorSection .monitor-screen__panel-body > .speedtest-monitor__body {
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: var(--hm-space-3);
        }
        body.monitor-mode #speedtestMonitorSection .speedtest-monitor__speed-val {
            font-size: clamp(1.35rem, 3.2vw, 2.15rem);
            font-weight: 200;
            line-height: 1.15;
        }
        body.monitor-mode #speedtestMonitorSection .speedtest-monitor__meta-card .progress.hm-progress--cluster {
            height: var(--hm-progress-h);
        }
        body.monitor-mode.monitor-theme-dark #speedtestMonitorSection .speedtest-monitor__table-scroll {
            border-color: var(--hm-monitor-border);
            background: rgba(15, 23, 42, 0.55);
        }
        body.monitor-mode.monitor-theme-dark #speedtestMonitorSection .speedtest-monitor__table thead th {
            border-bottom-color: var(--hm-monitor-border);
            background: rgba(15, 23, 42, 0.92);
            color: inherit;
        }
        body.monitor-mode.monitor-theme-dark #speedtestMonitorSection .speedtest-monitor__table tbody .speedtest-monitor__cell {
            border-bottom-color: rgba(255, 255, 255, 0.08);
        }
        body.monitor-mode.monitor-theme-dark #speedtestMonitorSection .speedtest-monitor__table tbody tr:nth-child(even) {
            background: rgba(255, 255, 255, 0.04);
        }
        body.monitor-mode.monitor-theme-dark #speedtestMonitorSection .speedtest-monitor__table tbody tr.speedtest-monitor__row:hover .speedtest-monitor__cell {
            background: rgba(66, 165, 245, 0.1);
        }
        body.monitor-mode #speedtestMonitorSection .speedtest-monitor__table-block {
            flex: 1 1 auto;
            min-height: 0;
            overflow: hidden;
        }

        .ups-node-card {
            margin-bottom: 0;
        }

        .ups-node-card__metric-label {
            display: block;
            margin-bottom: 0.15rem;
        }

        .ups-node-card__metric-value {
            font-size: var(--hm-text-base);
            line-height: var(--hm-line-tight);
        }

        .ups-node-card .progress {
            margin-top: 0.35rem;
        }
        .ups-node-card .progress.hm-progress--cluster {
            height: var(--hm-progress-h);
        }

        .ups-node-card--single {
            width: 100%;
            height: 100%;
        }

        /* Режим монитора: один экран без скролла, под 1920×1200 */
        .monitor-view {
            margin: 0;
            padding: var(--hm-space-3) var(--hm-space-4) var(--hm-space-4);
            border-radius: 0;
            background: transparent;
            color: inherit;
            height: calc(100vh - var(--monitor-toolbar-top) - var(--monitor-dock-h));
            max-height: calc(100vh - var(--monitor-toolbar-top) - var(--monitor-dock-h));
            overflow: hidden;
            position: fixed;
            top: var(--monitor-toolbar-top);
            left: 0;
            right: 0;
            display: flex;
            flex-direction: column;
        }

        .monitor-view__stats {
            flex: 0 0 auto;
            display: flex;
            gap: var(--hm-space-4);
            margin-bottom: var(--hm-space-3);
            flex-wrap: wrap;
        }

        .monitor-view__stat {
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: var(--hm-space-3) var(--hm-space-4);
            border-radius: var(--hm-radius);
            background: rgba(255, 255, 255, 0.95);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card);
            min-width: 100px;
        }

        body.monitor-mode.monitor-theme-dark .monitor-view__stat {
            background: var(--hm-monitor-surface);
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
            box-shadow: none;
        }

        .monitor-view__stat-value {
            font-size: var(--hm-text-stat);
            font-weight: 700;
            line-height: var(--hm-line-tight);
        }
        .monitor-view__stat-label {
            font-size: var(--hm-text-label);
            opacity: 0.9;
            margin-top: var(--hm-space-1);
            text-transform: uppercase;
            letter-spacing: var(--hm-label-tracking);
            line-height: var(--hm-line-tight);
        }

        .monitor-view__resources {
            flex: 0 0 auto;
            display: flex;
            gap: var(--hm-space-4);
            margin-bottom: var(--hm-space-3);
            flex-wrap: wrap;
        }

        .monitor-view__res {
            display: flex;
            align-items: center;
            gap: var(--hm-space-2);
            padding: var(--hm-space-3) var(--hm-space-4);
            border-radius: var(--hm-radius);
            background: rgba(255, 255, 255, 0.95);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card);
            min-width: 120px;
        }

        body.monitor-mode.monitor-theme-dark .monitor-view__res {
            background: var(--hm-monitor-surface);
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
            box-shadow: none;
        }

        .monitor-view__res-label {
            font-size: var(--hm-text-label);
            flex-shrink: 0;
            text-transform: uppercase;
            letter-spacing: var(--hm-label-tracking);
            line-height: var(--hm-line-tight);
        }
        .monitor-view__res-value {
            font-weight: 700;
            font-size: var(--hm-text-stat);
            line-height: var(--hm-line-tight);
        }
        .monitor-view__res-bar {
            flex: 1;
            min-width: 40px;
            height: var(--hm-progress-h-monitor);
            background: rgba(0,0,0,0.15);
            border-radius: 4px;
            overflow: hidden;
        }
        body.monitor-mode.monitor-theme-dark .monitor-view__res-bar { background: rgba(255, 255, 255, 0.1); }
        .monitor-view__res-fill {
            height: 100%;
            border-radius: 4px;
            transition: width 0.2s, background-color 0.2s;
        }
        .monitor-view__res-fill--tier-success { background-color: var(--bs-success); }
        .monitor-view__res-fill--tier-warning { background-color: var(--bs-warning); }
        .monitor-view__res-fill--tier-danger { background-color: var(--bs-danger); }

        .monitor-view__res--guest {
            flex-direction: column;
            align-items: stretch;
            align-self: flex-start;
            gap: var(--hm-space-1);
            min-width: 118px;
            padding: var(--hm-space-3) var(--hm-space-4);
        }
        .monitor-view__res-guest-title {
            font-size: var(--hm-text-xs);
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.06em;
            opacity: 0.85;
            margin-bottom: var(--hm-space-1);
        }
        .monitor-view__res-guest-line {
            display: flex;
            justify-content: space-between;
            align-items: baseline;
            gap: var(--hm-space-3);
            font-size: var(--hm-text-base);
            line-height: var(--hm-line-snug);
        }
        .monitor-view__res-guest-lbl { opacity: 0.75; flex-shrink: 0; }
        .monitor-view__res-guest-val { font-weight: 700; font-variant-numeric: tabular-nums; }
        .monitor-view__res-guest-val--run { color: #198754; }
        body.monitor-mode.monitor-theme-dark .monitor-view__res-guest-val--run { color: #4ade80; }

        .monitor-view__empty {
            padding: var(--hm-space-4);
            text-align: center;
            color: inherit;
            opacity: 0.8;
            font-size: var(--hm-text-label);
            line-height: var(--hm-line-snug);
        }

        .monitor-view__body {
            display: grid;
            grid-template-columns: 1fr;
            gap: 0;
            flex: 1 1 auto;
            min-height: 0;
            overflow: hidden;
        }

        .monitor-view__body .monitor-view__panel {
            display: none;
            flex-direction: column;
            min-height: 0;
            overflow: hidden;
            height: 100%;
        }

        .tiles-monitor-grid {
            display: grid;
            grid-template-columns: repeat(var(--tiles-grid-cols, 12), minmax(0, 1fr));
            grid-template-rows: repeat(var(--tiles-grid-rows, 8), minmax(0, 1fr));
            gap: var(--hm-space-2);
            min-height: 0;
            width: 100%;
            align-content: stretch;
        }

        #tiles.tab-pane .tiles-monitor-grid {
            min-height: 420px;
        }

        body.monitor-mode #tilesMonitorSection {
            display: flex;
            flex-direction: column;
        }

        body.monitor-mode #tilesMonitorSection .tiles-monitor-grid {
            flex: 1 1 auto;
            min-height: 0;
            height: 100%;
        }

        body.monitor-mode #tilesMonitorSection .monitor-screen__panel-body--tiles-grid {
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
        }

        .tiles-monitor-cell {
            min-width: 0;
            min-height: 0;
            display: flex;
            flex-direction: column;
        }

        .tiles-monitor-cell .cluster-scroll-item {
            flex: 1 1 auto;
            min-width: 0;
            width: 100%;
        }

        .tiles-monitor-cell .node-card {
            flex: 1 1 auto;
            min-height: 0;
            height: 100%;
            margin-bottom: 0;
        }

        .monitor-view__panel-title {
            flex: 0 0 auto;
            font-size: var(--hm-text-lg);
            font-weight: 600;
            color: #fff;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            border-radius: var(--hm-radius);
            padding: var(--hm-space-2) var(--hm-space-3);
            margin-bottom: var(--hm-space-3);
            line-height: var(--hm-line-tight);
        }

        body.monitor-mode.monitor-theme-dark .monitor-view__panel-title {
            background: linear-gradient(135deg, #42a5f5 0%, #7e57c2 52%, #d81b60 100%);
            color: #fff;
            box-shadow: 0 0 28px rgba(66, 165, 245, 0.14);
        }

        .monitor-view__list {
            flex: 1 1 auto;
            min-height: 0;
            overflow: hidden;
            padding-right: var(--hm-space-1);
            display: grid;
            gap: var(--hm-space-2);
            align-content: start;
            grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
        }

        .monitor-view__services-list {
            max-height: 100%;
            overflow: hidden;
        }

        /* Экран кластера: только список узлов (одна колонка) */
        .monitor-view__nodes .monitor-view__list {
            grid-template-columns: 1fr;
            gap: var(--hm-space-2);
        }

        .monitor-view__node-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: var(--hm-space-2) var(--hm-space-3);
            border-radius: var(--hm-radius);
            background: rgba(255, 255, 255, 0.95);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card);
            font-size: var(--hm-text-base);
            line-height: var(--hm-line-snug);
        }

        body.monitor-mode.monitor-theme-dark .monitor-view__node-row {
            background: var(--hm-monitor-surface);
            border-color: var(--hm-monitor-border);
            box-shadow: none;
        }

        .monitor-view__node-name { font-weight: 600; font-size: var(--hm-text-base); }
        .monitor-view__node-status { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
        .monitor-view__node-status.online { background: #22c55e; }
        .monitor-view__node-status.offline { background: #ef4444; }

        .monitor-view__card {
            background: rgba(255, 255, 255, 0.95);
            border-radius: var(--hm-radius);
            padding: var(--hm-space-2) var(--hm-space-3);
            border: 1px solid rgba(226, 232, 240, 1);
            box-shadow: var(--hm-shadow-card);
            margin-bottom: 0;
            font-size: var(--hm-text-sm);
            line-height: var(--hm-line-snug);
        }

        /* Кнопки навигации режимов монитора теперь в тулбаре, а не в отдельной панели */
        .monitor-view__nav {
            display: none;
        }

        .monitor-toolbar-nav-btn {
            margin: 0;
            border-radius: 6px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 6px 10px;
            line-height: 1;
            border: 1px solid transparent;
            transition: opacity 0.2s, background 0.2s, border-color 0.2s;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-nav-btn {
            background: rgba(0, 0, 0, 0.06);
            color: #2d3748;
            border-color: rgba(0, 0, 0, 0.1);
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-nav-btn:hover {
            background: rgba(0, 0, 0, 0.1);
            color: #1a202c;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-nav-btn {
            background: rgba(30, 30, 30, 0.9);
            color: #fff;
            border-color: rgba(66, 165, 245, 0.28);
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-nav-btn:hover {
            background: rgba(66, 165, 245, 0.16);
            color: #fff;
            border-color: rgba(126, 87, 194, 0.35);
        }
        .monitor-toolbar-dots {
            display: flex;
            justify-content: flex-start;
            align-items: center;
            gap: 0.35rem;
            margin: 0;
            min-height: 12px;
            flex: 0 1 auto;
            min-width: 0;
            overflow-x: auto;
            scrollbar-width: none;
            -ms-overflow-style: none;
        }
        .monitor-toolbar-dots::-webkit-scrollbar {
            display: none;
        }
        .monitor-toolbar-dot {
            width: 8px;
            height: 8px;
            border-radius: 999px;
            border: 0;
            padding: 0;
            background: rgba(148, 163, 184, 0.55);
            transition: transform 0.2s ease, background-color 0.2s ease, opacity 0.2s ease;
            opacity: 0.9;
        }
        .monitor-toolbar-dot.is-active {
            background: #3b82f6;
            transform: scale(1.25);
            opacity: 1;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-dot {
            background: rgba(158, 158, 158, 0.4);
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-dot.is-active {
            background: linear-gradient(135deg, #42a5f5, #7e57c2);
            box-shadow: 0 0 10px rgba(66, 165, 245, 0.45);
        }

        .monitor-view__nav-btn:hover {
            background: rgba(59, 130, 246, 0.9);
            color: #fff;
        }

        body.monitor-mode {
            overflow: hidden;
            /* Единый размер кнопок панели монитора */
            --monitor-toolbar-btn-h: 38px;
            --monitor-toolbar-icon-w: 38px;
            --monitor-toolbar-text-btn-w: 10rem;
        }
        body.monitor-mode .cluster-scroll-row {
            scrollbar-width: none;
            -ms-overflow-style: none;
        }
        body.monitor-mode .cluster-scroll-row::-webkit-scrollbar {
            display: none;
        }
        body.monitor-mode.monitor-theme-dark .table-success { background-color: rgba(40, 167, 69, 0.18) !important; color: #e8e8e8; }
        body.monitor-mode.monitor-theme-dark .table-danger { background-color: rgba(216, 27, 96, 0.2) !important; color: #e8e8e8; }
        body.monitor-mode.monitor-theme-dark .table-warning { background-color: rgba(255, 160, 0, 0.16) !important; color: #e8e8e8; }

        /* Светлая тема режима монитора */
        body.monitor-mode:not(.monitor-theme-dark) {
            background: #f0f4f8;
        }
        body.monitor-mode:not(.monitor-theme-dark) .stat-card {
            background: #fff;
            color: #1a202c;
            border: 1px solid #e2e8f0;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
        }
        body.monitor-mode:not(.monitor-theme-dark) .stat-label { color: #4a5568; }
        body.monitor-mode:not(.monitor-theme-dark) .card {
            background: #fff;
            color: #2d3748;
            border: 1px solid #e2e8f0;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
        }
        body.monitor-mode:not(.monitor-theme-dark) .card-header {
            background: linear-gradient(135deg, #edf2f7 0%, #e2e8f0 100%);
            color: #2d3748;
        }

        body.monitor-mode.monitor-theme-dark .monitor-screen__meta-card,
        body.monitor-mode.monitor-theme-dark .monitor-screen__meta-extra {
            background: var(--hm-monitor-surface);
            color: #e8e8e8;
            border-color: var(--hm-monitor-border);
            box-shadow: none;
        }
        body.monitor-mode:not(.monitor-theme-dark) .node-card {
            background: #fff;
            color: #2d3748;
            border: 1px solid #e2e8f0;
        }
        body.monitor-mode:not(.monitor-theme-dark) .table th { background: #edf2f7; color: #2d3748; }
        body.monitor-mode:not(.monitor-theme-dark) .progress { background: #e2e8f0; }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-view__card {
            background: rgba(255, 255, 255, 0.95);
            color: #1a202c;
            border: 1px solid #e2e8f0;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-view__stat-value,
        body.monitor-mode:not(.monitor-theme-dark) .monitor-view__res-value { color: #2d3748; }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-view__stat-label,
        body.monitor-mode:not(.monitor-theme-dark) .monitor-view__res-label { color: #4a5568; }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-view__panel-title { color: #fff; }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-view__node-row { color: #2d3748; }

        /* Панель инструментов монитора */
        .monitor-toolbar {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            z-index: 9999;
            min-height: 52px;
            padding: 0 clamp(1rem, 3vw, 1.75rem);
            gap: 0.75rem;
            align-items: center;
            justify-content: space-between;
            flex-wrap: nowrap;
            backdrop-filter: blur(8px);
        }

        body.monitor-mode .monitor-toolbar {
            display: flex !important;
        }
        body.monitor-mode.monitor-toolbar-hidden #monitorToolbar {
            display: none !important;
        }

        body.monitor-mode.monitor-theme-dark .monitor-toolbar {
            background: rgba(28, 28, 28, 0.96);
            border-bottom: 1px solid rgba(66, 165, 245, 0.22);
            box-shadow: 0 4px 24px rgba(0, 0, 0, 0.45);
        }

        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar {
            background: rgba(255,255,255,0.95);
            border-bottom: 1px solid #e2e8f0;
            box-shadow: 0 2px 10px rgba(0,0,0,0.08);
        }

        .monitor-toolbar-left {
            flex: 1 1 auto;
            min-width: 0;
            display: flex;
            align-items: center;
            gap: 0.75rem;
        }
        .monitor-toolbar-server-wrap {
            flex-shrink: 0;
        }
        .monitor-toolbar-title {
            margin: 0;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: min(40vw, 280px);
        }
        .monitor-toolbar-title--home {
            cursor: pointer;
        }
        .monitor-toolbar-title--home:hover {
            opacity: 0.88;
        }
        .monitor-toolbar-title--home:focus-visible {
            outline: 2px solid rgba(102, 126, 234, 0.7);
            outline-offset: 2px;
            border-radius: 4px;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-title--home:focus-visible {
            outline-color: rgba(66, 165, 245, 0.75);
        }
        .monitor-toolbar-update {
            white-space: nowrap;
            flex-shrink: 0;
            margin-right: 0.25rem;
            font-size: 0.8125rem;
        }
        .monitor-toolbar-update-release-btn {
            display: none;
            color: inherit;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-update-release-btn {
            background: rgba(255, 160, 0, 0.28);
            color: #fff;
            border: 1px solid rgba(255, 160, 0, 0.55);
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-update-release-btn:hover {
            background: rgba(255, 160, 0, 0.4);
            color: #fff;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-update-release-btn {
            background: rgba(255, 193, 7, 0.4);
            color: #5c4200;
            border: 1px solid rgba(217, 119, 6, 0.45);
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-update-release-btn:hover {
            background: rgba(255, 193, 7, 0.55);
            color: #3d2d00;
        }
        .monitor-toolbar-theme {
            display: flex;
            align-items: center;
            gap: 6px;
            flex: 0 0 auto;
            margin-left: auto;
        }
        .monitor-toolbar-nav-group {
            display: inline-flex;
            align-items: center;
            gap: 2px;
        }
        .monitor-toolbar-theme-btn {
            padding: 6px 10px;
            border-radius: 6px;
            border: 1px solid transparent;
            opacity: 0.75;
            transition: opacity 0.2s, background 0.2s, border-color 0.2s;
        }
        .monitor-toolbar-theme-btn.active {
            opacity: 1;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-theme-btn {
            background: rgba(30, 30, 30, 0.95);
            color: #fff;
            border-color: rgba(126, 87, 194, 0.25);
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-theme-btn.active {
            background: rgba(66, 165, 245, 0.22);
            border-color: rgba(126, 87, 194, 0.45);
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-theme-btn {
            background: rgba(0,0,0,0.06);
            color: #2d3748;
            border-color: rgba(0,0,0,0.1);
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-theme-btn.active {
            background: rgba(0,0,0,0.12);
        }
        .monitor-toolbar-right {
            flex: 0 0 auto;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        /* Одинаковая высота; иконки — квадрат, «Настройки»/«Выход» — общая ширина */
        body.monitor-mode .monitor-toolbar .monitor-toolbar-nav-btn,
        body.monitor-mode .monitor-toolbar .monitor-toolbar-theme-btn,
        body.monitor-mode .monitor-toolbar .monitor-toolbar-hide-btn,
        body.monitor-mode .monitor-toolbar .monitor-toolbar-update-release-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: var(--monitor-toolbar-icon-w);
            min-width: var(--monitor-toolbar-icon-w);
            height: var(--monitor-toolbar-btn-h);
            min-height: var(--monitor-toolbar-btn-h);
            padding: 0;
            box-sizing: border-box;
            flex-shrink: 0;
        }
        body.monitor-mode .monitor-toolbar .monitor-toolbar-settings,
        body.monitor-mode .monitor-toolbar .monitor-toolbar-exit {
            width: var(--monitor-toolbar-text-btn-w);
            min-width: var(--monitor-toolbar-text-btn-w);
            height: var(--monitor-toolbar-btn-h);
            min-height: var(--monitor-toolbar-btn-h);
            padding: 0 0.5rem;
            box-sizing: border-box;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 0.25rem;
            flex-shrink: 0;
        }
        body.monitor-mode .monitor-toolbar .monitor-toolbar-settings span,
        body.monitor-mode .monitor-toolbar .monitor-toolbar-exit span {
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 100%;
        }

        body.monitor-mode.monitor-theme-dark .monitor-toolbar-title,
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-update {
            color: #fff;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-update { opacity: 0.8; }

        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-title { color: #2d3748; font-weight: 600; }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-update { color: #718096; }

        .monitor-toolbar-title { font-size: 1rem; }

        body.monitor-mode.monitor-theme-dark .monitor-toolbar-select {
            background: rgba(30, 30, 30, 0.95) !important;
            border: 1px solid rgba(66, 165, 245, 0.35);
            color: #fff !important;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-select option { background: #1e1e1e; color: #fff; }

        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-select {
            background: #fff !important;
            border: 1px solid #e2e8f0;
            color: #2d3748 !important;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-select option { background: #fff; color: #2d3748; }

        .monitor-toolbar-select {
            font-size: 0.9rem;
            min-width: 7.5rem;
            max-width: 12rem;
            border-radius: 6px;
            padding-top: 0.35rem;
            padding-bottom: 0.35rem;
        }

        .monitor-toolbar-hide-btn {
            padding: 6px 10px;
            border-radius: 8px;
            font-weight: 500;
            transition: background 0.2s, transform 0.2s, border-color 0.2s, color 0.2s;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-hide-btn {
            background: rgba(30, 30, 30, 0.95);
            color: #fff;
            border: 1px solid rgba(66, 165, 245, 0.25);
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-hide-btn:hover {
            background: rgba(66, 165, 245, 0.14);
            color: #fff;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-hide-btn {
            background: #edf2f7;
            color: #2d3748;
            border: 1px solid #cbd5e0;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-hide-btn:hover {
            background: #e2e8f0;
            color: #1a202c;
        }

        .monitor-dots-dock {
            display: none;
            position: fixed;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: 10040;
            align-items: center;
            justify-content: center;
            padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
            pointer-events: none;
            box-sizing: border-box;
        }
        .monitor-dots-dock .monitor-toolbar-dots {
            pointer-events: auto;
            justify-content: center;
            max-width: 100%;
        }

        .monitor-toolbar-reveal {
            position: fixed;
            top: 0;
            left: 50%;
            transform: translateX(-50%);
            z-index: 9998;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 44px;
            min-height: 36px;
            padding: 6px 14px;
            border: none;
            border-radius: 0 0 12px 12px;
            cursor: pointer;
            box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
            transition: background 0.2s, color 0.2s, transform 0.15s;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-reveal {
            background: rgba(28, 28, 28, 0.98);
            color: #e8e8e8;
            border: 1px solid rgba(66, 165, 245, 0.35);
            border-top: none;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-reveal:hover {
            background: rgba(40, 40, 40, 0.99);
            color: #fff;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-reveal {
            background: rgba(255, 255, 255, 0.96);
            color: #2d3748;
            border: 1px solid #e2e8f0;
            border-top: none;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-reveal:hover {
            background: #fff;
            color: #1a202c;
        }

        .monitor-toolbar-settings,
        .monitor-toolbar-exit {
            padding: 7px 14px;
            border-radius: 8px;
            font-weight: 500;
            transition: background 0.2s, transform 0.2s, border-color 0.2s, color 0.2s;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-settings {
            background: rgba(66, 165, 245, 0.2);
            color: #fff;
            border: 1px solid rgba(126, 87, 194, 0.4);
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-settings:hover {
            background: rgba(66, 165, 245, 0.32);
            color: #fff;
            transform: scale(1.02);
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-exit {
            background: rgba(220, 53, 69, 0.9);
            color: #fff;
        }
        body.monitor-mode.monitor-theme-dark .monitor-toolbar-exit:hover {
            background: rgba(220, 53, 69, 1);
            color: #fff;
            transform: scale(1.02);
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-settings {
            background: #edf2f7;
            color: #2d3748;
            border: 1px solid #cbd5e0;
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-settings:hover {
            background: #e2e8f0;
            color: #1a202c;
            transform: scale(1.02);
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-exit {
            background: #fff;
            color: #c53030;
            border: 1px solid rgba(229, 62, 62, 0.45);
        }
        body.monitor-mode:not(.monitor-theme-dark) .monitor-toolbar-exit:hover {
            background: #fff5f5;
            color: #9b2c2c;
            border-color: rgba(197, 48, 48, 0.55);
            transform: scale(1.02);
        }

        /* Smooth loading overlay (prevents layout shifts) */
        #loadingIndicator {
            position: fixed;
            inset: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            background: rgba(245, 245, 245, 0.85);
            backdrop-filter: blur(2px);
            opacity: 0;
            pointer-events: none;
            transition: opacity 180ms ease;
            z-index: 2000;
        }

        body.dark-mode #loadingIndicator {
            background: rgba(18, 18, 18, 0.88);
        }

        body.monitor-mode.monitor-theme-dark #loadingIndicator {
            background: rgba(18, 18, 18, 0.88);
        }

        #loadingIndicator.is-visible {
            opacity: 1;
            pointer-events: auto;
        }

        body.monitor-mode.monitor-theme-dark .stat-value {
            color: #fff;
        }

        /* Режим монитора: подгонка под 1920×1200, без скролла */
        @media (min-width: 1920px) and (min-height: 1200px) {
            body.monitor-mode #dashboardSection {
                height: 100vh;
                padding-top: var(--monitor-toolbar-top);
                padding-bottom: var(--monitor-dock-h);
            }
            .monitor-view {
                height: calc(100vh - var(--monitor-toolbar-top) - var(--monitor-dock-h));
                max-height: calc(100vh - var(--monitor-toolbar-top) - var(--monitor-dock-h));
                padding: var(--hm-space-4) var(--hm-space-5) var(--hm-space-5);
            }
            .monitor-view__list {
                grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
                gap: var(--hm-space-3);
            }
            .monitor-view__card {
                padding: var(--hm-space-3) var(--hm-space-4);
            }
        }

        /* Режим монитора: компактный профиль для 1280x800 и похожих экранов */
        @media (max-width: 1366px) and (max-height: 840px) {
            body.monitor-mode {
                --monitor-toolbar-h: 44px;
                --monitor-dock-h: 40px;
                --monitor-toolbar-btn-h: 34px;
                --monitor-toolbar-icon-w: 34px;
                --monitor-toolbar-text-btn-w: 8.6rem;
                --hm-text-label: 0.78rem;
                --hm-text-base: 0.92rem;
                --hm-text-lg: 1.02rem;
                --hm-text-stat: 1.72rem;
                --hm-text-metric: 2.1rem;
                --hm-space-3: 0.55rem;
                --hm-space-4: 0.75rem;
                --hm-space-5: 0.95rem;
                --hm-space-6: 1.15rem;
                --hm-card-header-py: 0.6rem;
                --hm-card-header-px: 0.95rem;
                --hm-card-body-pad: 0.95rem;
                --hm-stat-pad: 0.9rem;
                --hm-node-pad: 0.8rem;
                --hm-progress-h-monitor: 6px;
            }

            body.monitor-mode .monitor-toolbar {
                min-height: 44px;
                gap: 0.5rem;
                padding: 0 clamp(0.5rem, 2vw, 0.9rem);
            }

            body.monitor-mode .monitor-dots-dock {
                padding: 6px 10px calc(6px + env(safe-area-inset-bottom, 0px));
            }

            body.monitor-mode .stat-card {
                min-height: 104px;
            }

            body.monitor-mode .monitor-screen {
                padding: var(--hm-space-2) var(--hm-space-3) var(--hm-space-3);
            }

            body.monitor-mode .monitor-screen__meta-grid {
                grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
            }

            body.monitor-mode .cluster-scroll-item {
                flex: 0 0 calc((100% - 1.65rem) / 4);
                min-width: 248px;
            }
        }

