.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root{color-scheme:light;--page: #f9f9f7;--surface-1: #fcfcfb;--surface-2: #f2f2ef;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--gridline: #e1e0d9;--baseline: #c3c2b7;--border: rgba(11, 11, 11, .1);--success-text: #006300;--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--series-4: #eda100;--series-5: #e87ba4;--series-6: #008300;--series-7: #4a3aa7;--series-8: #e34948;--seq-200: #9ec5f4;--seq-350: #5598e7;--seq-450: #2a78d6;--seq-600: #184f95;--status-good: #0ca30c;--status-warning: #fab219;--status-serious: #ec835a;--status-critical: #d03b3b;--radius: 10px;--radius-sm: 6px;--shadow: 0 1px 2px rgba(11, 11, 11, .04), 0 2px 8px rgba(11, 11, 11, .04);--font: system-ui, -apple-system, "Segoe UI", sans-serif}@media (prefers-color-scheme: dark){:root:where(:not([data-theme=light])){color-scheme:dark;--page: #0d0d0d;--surface-1: #1a1a19;--surface-2: #232321;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--gridline: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--success-text: #0ca30c;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;--series-5: #d55181;--series-6: #008300;--series-7: #9085e9;--series-8: #e66767;--seq-200: #6da7ec;--seq-350: #3987e5;--seq-450: #256abf;--seq-600: #184f95}}:root[data-theme=dark]{color-scheme:dark;--page: #0d0d0d;--surface-1: #1a1a19;--surface-2: #232321;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--gridline: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--success-text: #0ca30c;--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--series-4: #c98500;--series-5: #d55181;--series-6: #008300;--series-7: #9085e9;--series-8: #e66767;--seq-200: #6da7ec;--seq-350: #3987e5;--seq-450: #256abf;--seq-600: #184f95}:root[data-text-size=regular]{zoom:1.125}:root[data-text-size=large]{zoom:1.25}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--page);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}h1,h2,h3{margin:0;font-weight:600}a{color:inherit;text-decoration:none}.app{display:flex;min-height:100%}.sidebar{width:216px;flex-shrink:0;background:var(--surface-1);border-right:1px solid var(--border);padding:20px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto;transition:width .15s ease,padding .15s ease}.sidebar.collapsed{width:60px;padding:20px 10px;align-items:center}.sidebar.collapsed .nav-link{justify-content:center;padding:9px;width:100%}.sidebar.collapsed .sidebar-foot button{justify-content:center;padding:8px}.sidebar.collapsed .nav-label,.sidebar.collapsed .brand-label,.sidebar.collapsed .sidebar-user,.menu-btn{display:none}.collapse-btn{justify-content:center}.sidebar-backdrop{display:none}.brand{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:700;padding:8px 8px 18px}.brand-wordmark{height:26px;width:auto;max-width:100%;display:block;object-fit:contain}.brand-mark{display:none;height:26px;width:26px;object-fit:contain}.sidebar.collapsed .brand-wordmark{display:none}.sidebar.collapsed .brand-mark{display:block}.nav-link{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--text-secondary);font-weight:500;cursor:pointer}.nav-link:hover{background:var(--surface-2);color:var(--text-primary)}.nav-link.active{background:var(--series-1);color:#fff}.nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px;width:100%}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;row-gap:8px;padding:10px 24px;border-bottom:1px solid var(--border);background:var(--surface-1);position:sticky;top:0;z-index:5}.topbar h1{font-size:16px}.topbar-title{display:flex;align-items:center;gap:4px;min-width:0}.topbar-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.content{padding:24px 28px;display:flex;flex-direction:column;gap:22px}.row{display:grid;gap:16px}.cols-4{grid-template-columns:repeat(4,1fr)}.cols-3{grid-template-columns:repeat(3,1fr)}.cols-2{grid-template-columns:repeat(2,1fr)}@media (max-width: 1100px){.cols-4{grid-template-columns:repeat(2,1fr)}.cols-3,.cols-2{grid-template-columns:1fr}}@media (max-width: 680px){.cols-4{grid-template-columns:1fr}}@media (max-width: 680px){.menu-btn{display:inline-flex}.collapse-btn{display:none}.sidebar,.sidebar.collapsed{position:fixed;inset:0 auto 0 0;z-index:40;width:250px;padding:20px 14px;align-items:stretch;transform:translate(-100%);transition:transform .2s ease}.sidebar.open{transform:translate(0);box-shadow:0 8px 30px #00000059}.sidebar-backdrop.open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:39;background:#00000073}.sidebar.collapsed .nav-link{justify-content:flex-start;padding:9px 12px}.sidebar.collapsed .nav-label,.sidebar.collapsed .brand-label,.sidebar.collapsed .sidebar-user{display:block}.topbar{padding:12px 16px}.content{padding:16px;gap:16px}}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);min-width:0}.card h3{font-size:13px;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.03em;margin-bottom:10px}.tile .label{font-size:12.5px;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em}.tile .value{font-size:30px;font-weight:650;margin-top:6px;letter-spacing:-.01em}.tile .value .unit{font-size:15px;color:var(--text-muted);font-weight:500;margin-left:5px}.tile .foot{font-size:12.5px;color:var(--text-secondary);margin-top:6px}.cond-group{border:1px solid var(--border);border-radius:8px;padding:10px;margin-bottom:8px}.cond-group-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.cond-or{text-align:center;font-weight:700;font-size:12px;letter-spacing:.04em;color:var(--text-secondary);margin:6px 0}.cond-table{display:flex;flex-direction:column;gap:6px;overflow-x:auto}.cond-row{display:grid;gap:8px;align-items:center;min-width:520px;grid-template-columns:minmax(150px,1.3fr) 96px minmax(90px,1fr) minmax(90px,1fr) 28px}.cond-row.cond-row-head{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted)}.cond-row select,.cond-row input{width:100%;padding:8px 10px}.cond-row .cond-remove{padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm)}.cond-weekdays{display:flex;gap:6px;flex-wrap:wrap;grid-column:span 3}.cond-weekdays label{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;color:var(--text-secondary)}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.pill:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.pill.good{color:var(--status-good);background:color-mix(in srgb,var(--status-good) 14%,transparent)}.pill.warning{color:var(--status-warning);background:color-mix(in srgb,var(--status-warning) 16%,transparent)}.pill.serious{color:var(--status-serious);background:color-mix(in srgb,var(--status-serious) 16%,transparent)}.pill.critical{color:var(--status-critical);background:color-mix(in srgb,var(--status-critical) 15%,transparent)}.pill.muted{color:var(--text-muted);background:var(--surface-2)}.card-alert{background:color-mix(in srgb,var(--status-critical) 16%,var(--surface-1));border-color:var(--status-critical);box-shadow:0 0 0 1px var(--status-critical)}.alert-badge{display:inline-flex;align-items:center;gap:4px;background:var(--status-critical);color:#fff;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.02em;padding:2px 7px;border-radius:999px}.sev-critical{color:var(--status-critical)}.sev-high{color:var(--status-serious)}.sev-medium{color:var(--status-warning)}.sev-low{color:var(--text-muted)}table.grid{width:100%;border-collapse:collapse;font-size:13px}table.grid th{text-align:left;color:var(--text-muted);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;padding:8px 10px;border-bottom:1px solid var(--border)}table.grid td{padding:9px 10px;border-bottom:1px solid var(--gridline);font-variant-numeric:tabular-nums}table.grid tr:last-child td{border-bottom:none}table.grid td.num,table.grid th.num{text-align:right}.btn{border:1px solid var(--border);background:var(--surface-1);color:var(--text-primary);padding:8px 14px;border-radius:var(--radius-sm);font:inherit;font-weight:600;cursor:pointer}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--series-1);color:#fff;border-color:transparent}.btn.primary:hover{filter:brightness(1.05)}.btn:disabled{opacity:.5;cursor:not-allowed}.range-tabs{display:inline-flex;gap:4px;background:var(--surface-2);padding:3px;border-radius:var(--radius-sm)}.range-tabs button{border:none;background:transparent;color:var(--text-secondary);padding:5px 11px;border-radius:5px;font:inherit;font-weight:600;font-size:12.5px;cursor:pointer}.range-tabs button.active{background:var(--surface-1);color:var(--text-primary);box-shadow:var(--shadow)}.live-dot{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);font-weight:600}.live-dot:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--status-good)}.live-dot.off:before{background:var(--text-muted)}.live-dot.on:before{animation:pulse 1.8s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.muted{color:var(--text-muted)}.empty{color:var(--text-muted);text-align:center;padding:28px;font-size:13px}.spinner{color:var(--text-muted);text-align:center;padding:40px}.dashboard-grid{position:relative}.grid-item{height:100%}.grid-item>.card{height:100%;overflow:hidden;position:relative;display:flex;flex-direction:column;padding:12px}.grid-item>.card>.card-body{flex:1 1 auto;overflow-y:auto;min-height:0}.grid-item .tile{height:100%}.grid-item .card h3,.grid-item .tile .label{padding-right:34px}.grid-item .card-right,.grid-item .card-header-row>.alert-badge{margin-right:24px}.grid-drag-handle{position:absolute;top:8px;right:10px;z-index:2;width:20px;height:20px;border-radius:5px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);cursor:grab;font-size:12px;line-height:1}.grid-drag-handle:active{cursor:grabbing}.react-resizable-handle{z-index:2}.react-resizable-handle:after{border-right:2px solid var(--baseline)!important;border-bottom:2px solid var(--baseline)!important}.recharts-cartesian-axis-tick text{fill:var(--text-muted);font-size:11px}.recharts-default-tooltip{border-radius:var(--radius-sm)!important;border:1px solid var(--border)!important;background:var(--surface-1)!important;box-shadow:var(--shadow)!important}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;width:100%;padding:20px;background:url(/login1.png) center/cover no-repeat}.login-card{width:100%;max-width:380px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:32px;box-shadow:var(--shadow)}.login-card .brand{justify-content:center;padding-bottom:8px}.login-card .brand-wordmark{height:34px}.login-card .tag{text-align:center;color:var(--text-muted);font-size:13px;margin-bottom:24px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field label{font-size:12.5px;font-weight:600;color:var(--text-secondary)}.field input,select:not(.btn){padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--page);color:var(--text-primary);font:inherit}.field input:focus,select:not(.btn):focus{outline:2px solid var(--series-1);outline-offset:-1px}.login-err{color:var(--status-critical);font-size:13px;margin-bottom:14px;font-weight:500}.login-hint{text-align:center;margin-top:18px;font-size:12px;color:var(--text-muted)}
