#root{display:flex;margin:0 auto;text-align:center}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.react-grid-item{overflow:visible!important}.react-grid-item>.react-resizable-handle{z-index:9999}.open-trend-btn{width:100%;margin-top:10px;padding:10px;border:none;border-radius:10px;background:#2563eb;color:#fff;font-weight:600;cursor:pointer}.trend-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:9999}.trend-modal-box{width:90%;height:85%;background:#0f172a;border-radius:16px;padding:14px;display:flex;flex-direction:column}.trend-modal-header{display:flex;justify-content:space-between;align-items:center;color:#fff}.trend-actions button{margin-left:6px;padding:6px 10px;border-radius:8px;border:none;background:#334155;color:#fff;cursor:pointer}.sensor-selector{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0;color:#fff}.sensor-selector label{font-size:12px;background:#ffffff0f;padding:4px 8px;border-radius:6px}.asset-trend-toolbar{display:flex;gap:6px;margin-bottom:10px}.asset-trend-toolbar button{padding:6px 10px;border-radius:6px;border:none;background:#1e293b;color:#fff;cursor:pointer}.asset-trend-toolbar button.active{background:#2563eb}.chart-wrapper{flex:1;background:#0f172a66;border-radius:12px;padding:10px}.trend-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;display:flex;justify-content:center;align-items:center;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.trend-modal-box{width:min(1400px,95vw);height:min(90vh,900px);background:#0b1220;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #00000073}.trend-modal-header{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid rgba(255,255,255,.08)}.sensor-selector{display:flex;flex-wrap:wrap;gap:18px;padding:16px 24px}.asset-trend-toolbar{display:flex;gap:10px;padding:0 24px 16px}.chart-wrapper{flex:1;padding:20px 24px 24px;min-height:0}.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)}.card-renderer{width:100%;height:100%;min-height:0;color:#eef4ff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.dashboard-glass-card{position:relative;overflow:hidden;background:radial-gradient(circle at 15% 10%,rgba(121,128,255,.18),transparent 35%),radial-gradient(circle at 85% 100%,rgba(34,211,238,.12),transparent 36%),linear-gradient(145deg,#171926f0,#0c0e18f5);border:1px solid rgba(148,163,184,.2);border-radius:18px;box-shadow:inset 0 1px #ffffff14,inset 0 -24px 70px #6366f114,0 14px 36px #00000052;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.dashboard-glass-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-radius:inherit;background:linear-gradient(120deg,rgba(255,255,255,.1),transparent 28%,transparent 74%,rgba(255,255,255,.05))}.dashboard-glass-card.editing{border:2px dashed rgba(96,165,250,.9)}.dashboard-card-header{position:relative;z-index:1;height:36px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;color:#f1f5f9f0;background:linear-gradient(180deg,#ffffff12,#ffffff04);border-bottom:1px solid rgba(148,163,184,.13);font-weight:650;font-size:13px;letter-spacing:.01em}.dashboard-card-body{position:relative;z-index:1;flex:1;min-height:0}.dashboard-card-title-dot{width:7px;height:7px;border-radius:999px;background:#22c55e;box-shadow:0 0 14px #22c55ed9}.glass-stat-wrapper{padding:12px;width:100%;height:100%;display:flex;flex-direction:column;gap:10px}.glass-stat-title{font-size:12px;font-weight:700;color:#e2e8f0cc;text-transform:uppercase;letter-spacing:.08em}.glass-stat-list{display:flex;flex-direction:column;gap:8px;min-height:0;overflow:auto;padding-right:2px}.glass-stat-row{display:grid;grid-template-columns:minmax(84px,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;background:#ffffff0e;border:1px solid rgba(148,163,184,.1)}.glass-stat-label{text-align:left;color:#cbd5e1c7;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.glass-stat-value{text-align:right;font-weight:800;font-size:18px;color:#f8fafc}.glass-stat-unit{margin-left:3px;font-size:10px;font-weight:700;color:#cbd5e1b8}.glass-gauge{width:100%;height:100%;min-height:116px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 10px 10px;gap:4px}.glass-gauge-svg{width:min(132px,86%);height:auto;overflow:visible;filter:drop-shadow(0 0 10px rgba(250,204,21,.14))}.glass-gauge-track{fill:none;stroke:#94a3b82b;stroke-width:12;stroke-linecap:round}.glass-gauge-progress{fill:none;stroke-width:12;stroke-linecap:round;transition:stroke-dasharray .4s ease}.glass-gauge-value{font-size:26px;font-weight:300;line-height:1;color:#f8fafc;text-shadow:0 0 18px rgba(255,255,255,.12)}.glass-gauge-unit{font-size:10px;font-weight:700;color:#e2e8f0ad;margin-left:2px}.glass-gauge-label{color:#e2e8f0e6;font-size:12px;font-weight:700;text-align:center}.glass-gauge-sensor{color:#94a3b8c7;font-size:10px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.glass-graph{width:100%;height:100%;padding:8px}.glass-graph .recharts-cartesian-grid line{stroke:#94a3b82b}.glass-graph .recharts-text{fill:#cbd5e1c2;font-size:11px}.glass-graph .recharts-default-tooltip{background:#0f172af5!important;border:1px solid rgba(148,163,184,.2)!important;border-radius:10px;box-shadow:0 14px 30px #0000005c}.glass-graph .recharts-tooltip-label,.glass-graph .recharts-tooltip-item{color:#e2e8f0!important}.glass-graph .recharts-legend-item-text{color:#e2e8f0d1!important}.dashboard-top-bar{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;align-items:center}.dashboard-action-button{min-height:36px;padding:8px 14px;border:1px solid rgba(148,163,184,.24);border-radius:12px;background:linear-gradient(180deg,#ffffff1f,#ffffff0a),#0f172ad1;color:#f8fafc;font-size:13px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:8px;box-shadow:inset 0 1px #ffffff14,0 8px 22px #0003;transition:transform .15s ease,border-color .15s ease,background .15s ease}.dashboard-action-button:hover:not(:disabled){transform:translateY(-1px);border-color:#60a5fa8c}.dashboard-action-button:disabled{opacity:.65;cursor:not-allowed}.save-layout-button{background:linear-gradient(180deg,#22c55ef2,#15803df2);border-color:#86efac59}.save-layout-progress-box{margin:-4px 0 16px;padding:12px 14px;border-radius:16px;background:radial-gradient(circle at 0% 0%,rgba(34,197,94,.16),transparent 36%),linear-gradient(145deg,#0f172af0,#020617eb);border:1px solid rgba(148,163,184,.18);box-shadow:inset 0 1px #ffffff14,0 12px 28px #00000042;color:#e2e8f0}.save-layout-progress-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:13px}.save-layout-progress-header strong{color:#86efac;font-size:13px}.save-layout-progress-track{position:relative;height:8px;overflow:hidden;border-radius:999px;background:#94a3b82e}.save-layout-progress-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#22c55e,#a3e635,#facc15);box-shadow:0 0 18px #22c55e8c;transition:width .25s ease}.button-spinner{width:14px;height:14px;border-radius:999px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:dashboard-spin .75s linear infinite}.dashboard-time-range{display:inline-flex;gap:6px;padding:4px;border-radius:14px;background:#0f172ab8;border:1px solid rgba(148,163,184,.18);box-shadow:inset 0 1px #ffffff12,0 8px 20px #0000002e}.time-range-button{min-width:48px;min-height:30px;border:0;border-radius:10px;padding:6px 10px;background:transparent;color:#e2e8f0c7;font-size:12px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:background .15s ease,color .15s ease,transform .15s ease}.time-range-button:hover:not(:disabled){background:#ffffff14;color:#fff}.time-range-button.active{color:#020617;background:linear-gradient(135deg,#38bdf8,#a78bfa);box-shadow:0 0 18px #38bdf847}.time-range-button:disabled{cursor:not-allowed;opacity:.8}.time-range-spinner{width:13px;height:13px;border-radius:999px;border:2px solid rgba(15,23,42,.28);border-top-color:#020617;animation:dashboard-spin .75s linear infinite}@keyframes dashboard-spin{to{transform:rotate(360deg)}}.floating-toolbar{position:absolute;top:10px;left:10px;display:flex;gap:10px;background:#ffffffe6;padding:6px;border-radius:6px;z-index:1000}.map-canvas{width:100%;height:100%;position:relative;background-size:contain;background-repeat:no-repeat;background-position:center}.sensor{position:absolute;transform:translate(-50%,-50%);text-align:center;transition:transform .1s ease}.sensor-icon{width:40px;height:40px;transition:all .2s ease}.tooltip{position:absolute;top:35px;left:50%;transform:translate(-50%);background:#e3e4bde6;color:#fff;padding:8px 12px;border-radius:8px;font-size:12px;white-space:nowrap;pointer-events:auto;z-index:10;box-shadow:0 4px 12px #0000004d}.tooltip .status-normal{color:#22c55e}.tooltip .status-alarm{color:#ef4444;font-weight:700}.tooltip .status-offline{color:#f59e0b}.loader-bar{position:absolute;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,#3b82f6,#22c55e);animation:load 1s infinite linear;z-index:9999}.map-page-container{width:100%;height:100%;position:relative;overflow:hidden}.dashboard-header{position:absolute;top:10px;left:10px;right:10px;display:grid;grid-template-columns:1fr auto;gap:12px;z-index:1500;pointer-events:none}.dashboard-header>*{pointer-events:auto}.dashboard-left{display:flex;gap:12px;align-items:flex-start}.dashboard-left-column{display:flex;flex-direction:column;align-items:stretch;gap:16px;height:100%}.dashboard-right{display:flex;justify-content:flex-end}.floating-toolbar{width:50%}.critical-assets-card-container{flex-grow:1}.critical-card{width:300px;max-height:260px;background:#0f172af7;border-radius:16px;padding:12px;color:#fff;overflow:hidden;position:relative;z-index:1400}.critical-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.critical-list{overflow-y:auto;max-height:180px}.critical-row{display:flex;justify-content:space-between;padding:8px;border-radius:8px;margin-bottom:6px;cursor:pointer;transition:background .2s ease}.critical-row:hover{background:#ffffff14}.critical-row.alarm{background:#ef444440}.critical-row.offline{background:#94a3b840}.map-canvas{width:100%;height:calc(100% - 140px);position:absolute;top:140px;background-size:contain;background-repeat:no-repeat;background-position:center;z-index:1}.sensor{position:absolute;transform:translate(-50%,-50%);text-align:center;cursor:pointer;z-index:5}.sensor:hover{transform:translate(-50%,-50%) scale(1.05)}.sensor-icon{width:34px;height:34px;cursor:pointer;pointer-events:auto;z-index:10}.sensor.highlight{z-index:999;animation:searchPulse 1s infinite}@keyframes searchPulse{0%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.4)}to{transform:translate(-50%,-50%) scale(1)}}.sensor.normal .sensor-icon{filter:drop-shadow(0 0 6px #22c55e)}.sensor.alarm .sensor-icon{filter:drop-shadow(0 0 10px #ef4444);animation:alarmBlink 1.2s infinite}.sensor.offline .sensor-icon{filter:grayscale(100%) brightness(.6);opacity:.5}@keyframes alarmBlink{0%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.sensor div{font-size:11px;margin-top:2px;color:#333}.tooltip{position:absolute;z-index:20;pointer-events:none}.loader-bar{position:absolute;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,#3b82f6,#22c55e);animation:load 1s infinite linear;z-index:3000}@keyframes load{0%{transform:translate(-100%)}to{transform:translate(100%)}}.asset-detail-panel{position:absolute;top:72px;right:16px;width:min(360px,calc(100% - 32px));max-height:calc(100% - 96px);overflow-y:auto;z-index:5000;padding:18px;border:1px solid rgba(148,163,184,.28);border-radius:18px;background:#0f172af2;box-shadow:0 20px 45px #0006;color:#e5e7eb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.asset-detail-header{display:flex;justify-content:space-between;align-items:flex-start}.asset-detail-close{pointer-events:auto;cursor:pointer}.map-canvas,.sensor,.dashboard-header,.asset-detail-panel,.tooltip{pointer-events:auto}.map-canvas.dimmed{filter:brightness(.7)}.search-box{position:relative;min-width:250px}.search-box input{width:100%;padding:8px 12px;border-radius:8px;border:1px solid #cbd5e1}.search-results{position:absolute;top:42px;left:0;right:0;background:#fff;border-radius:10px;box-shadow:0 8px 24px #00000026;max-height:300px;overflow-y:auto;z-index:3000}.search-result-row{padding:10px 12px;cursor:pointer;border-bottom:1px solid #e5e7eb;display:flex;flex-direction:column;gap:2px}.search-result-row:hover{background:#f8fafc}.search-result-row small{color:#64748b}.search-result-title{font-weight:600;font-size:13px}.search-result-subtitle{font-size:11px;color:#64748b}.search-result-status{font-size:10px;font-weight:700;width:fit-content;padding:2px 6px;border-radius:12px}.search-result-status.normal{background:#dcfce7;color:#15803d}.search-result-status.alarm{background:#fee2e2;color:#dc2626}.search-result-status.offline{background:#e5e7eb;color:#475569}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
