@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap";:root{--bg-primary:#f2f4f7;--bg-surface:#fff;--bg-elevated:#fff;--bg-hover:#f1f5f9;--bg-active:#e2e8f0;--bg-input:#f8fafc;--glass-bg:#fff;--glass-border:#e2e8f0;--glass-blur:none;--glass-bg-hover:#f8fafc;--accent-blue:#1a8cff;--accent-blue-hover:#0073e6;--accent-blue-dim:#eff6ff;--accent-cyan:#0891b2;--accent-cyan-dim:#ecfeff;--accent-green:#24c48e;--accent-green-hover:#1eb37f;--accent-green-dim:#e6f9f3;--accent-amber:#ea580c;--accent-amber-dim:#fff7ed;--accent-red:#ef4444;--accent-red-dim:#fef2f2;--accent-purple:#7c3aed;--accent-purple-dim:#f5f3ff;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#64748b;--text-inverse:#fff;--border:#e2e8f0;--border-strong:#cbd5e1;--border-focus:var(--accent-green);--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px -1px #00000014, 0 2px 4px -2px #00000014;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #00000014;--shadow-xl:0 20px 25px -5px #0000001a, 0 10px 10px -5px #00000014;--glow-blue:0 0 12px #1a8cff1f;--glow-cyan:0 0 12px #06b6d41f;--glow-green:0 0 12px #24c48e26;--glow-amber:0 0 12px #f59e0b1f;--glow-red:0 0 12px #ef44441f;--glow-purple:0 0 12px #8b5cf61f;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-full:9999px;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.9375rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--text-4xl:2.5rem;--z-base:0;--z-dropdown:100;--z-sticky:200;--z-modal-backdrop:300;--z-modal:400;--z-toast:500;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--transition-spring:.5s cubic-bezier(.34, 1.56, .64, 1);--sidebar-width:260px;--sidebar-collapsed-width:68px;--header-height:60px;--widget-gap:16px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px}html,body{width:100%;height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-primary);background:var(--bg-primary);overscroll-behavior-y:none;line-height:1.6;overflow:hidden}body:before{content:"";z-index:-1;background:var(--bg-primary);pointer-events:none;position:fixed;inset:0}#root{flex-direction:column;flex:1;height:100%;min-height:0;display:flex}a{color:var(--accent-green);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--accent-green-hover)}img{max-width:100%;display:block}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#00000040}::selection{background:var(--accent-green-dim);color:var(--text-primary)}h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-weight:600;line-height:1.3}h1{font-size:var(--text-3xl);letter-spacing:-.02em}h2{font-size:var(--text-2xl);letter-spacing:-.01em}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}.text-mono{font-family:var(--font-mono)}.text-gradient{background:linear-gradient(135deg, var(--accent-green), var(--accent-cyan));-webkit-text-fill-color:transparent;background-clip:text}.glass-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all var(--transition-base)}.glass-card:hover{background:var(--bg-hover);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.glass-card-static{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.btn{justify-content:center;align-items:center;gap:var(--space-sm);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;user-select:none;border:none;outline:none;padding:10px 20px;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";background:radial-gradient(circle at var(--ripple-x,50%) var(--ripple-y,50%), #0000000f 0%, transparent 60%);opacity:0;transition:opacity var(--transition-fast);position:absolute;inset:0}.btn:active:after{opacity:1}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--accent-green);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-green-hover);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--bg-hover);border-color:var(--text-muted)}.btn-danger{background:linear-gradient(135deg, var(--accent-red), #e03030);color:#fff;box-shadow:var(--glow-red)}.btn-danger:hover:not(:disabled){box-shadow:0 0 35px #ff5a5a59}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg-elevated);color:var(--text-primary)}.btn-icon{border-radius:var(--radius-md);width:38px;height:38px;padding:8px}.btn-sm{font-size:var(--text-xs);padding:6px 14px}.btn-lg{font-size:var(--text-base);padding:14px 28px}.input-group{flex-direction:column;gap:6px;display:flex}.input-label{font-size:var(--text-sm);color:var(--text-secondary);font-weight:500}.input{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-sm);transition:all var(--transition-fast);outline:none;padding:10px 14px}.input:hover{border-color:var(--border-strong)}.input:focus{border-color:var(--accent-green);box-shadow:0 0 0 3px var(--accent-green-dim)}.input::placeholder{color:var(--text-muted)}.input-error{border-color:var(--accent-red)!important;box-shadow:0 0 0 3px var(--accent-red-dim)!important}.input-mono{font-family:var(--font-mono);font-size:var(--text-xs)}.select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b93a6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}.toggle{cursor:pointer;flex-shrink:0;width:52px;height:28px;position:relative}.toggle input{opacity:0;width:0;height:0;position:absolute}.toggle-track{background:var(--bg-hover);border-radius:var(--radius-full);transition:background var(--transition-base);border:1px solid var(--border);position:absolute;inset:0}.toggle input:checked+.toggle-track{background:var(--accent-green);border-color:var(--accent-green);box-shadow:var(--glow-green)}.toggle-thumb{width:22px;height:22px;transition:transform var(--transition-spring);box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px}.toggle input:checked~.toggle-thumb{transform:translate(24px)}.header{height:var(--header-height);padding:0 var(--space-xl);border-bottom:1px solid var(--border);background:var(--bg-surface);z-index:var(--z-sticky);flex-shrink:0;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.modal-backdrop{-webkit-backdrop-filter:blur(8px);z-index:var(--z-modal-backdrop);padding:var(--space-lg);background:#000000a6;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:520px;max-height:85vh;z-index:var(--z-modal);flex-direction:column;animation:.3s cubic-bezier(.34,1.56,.64,1) slideUp;display:flex;overflow:hidden}.modal-header{padding:var(--space-lg) var(--space-lg) var(--space-md);justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--text-lg);font-weight:600}.modal-body{padding:0 var(--space-lg) var(--space-lg);gap:var(--space-md);flex-direction:column;display:flex;overflow-y:auto}.modal-footer{justify-content:flex-end;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--border);display:flex}.badge{border-radius:var(--radius-full);font-size:var(--text-xs);white-space:nowrap;align-items:center;gap:4px;padding:2px 10px;font-weight:500;display:inline-flex}.badge-green{background:var(--accent-green-dim);color:var(--accent-green)}.badge-red{background:var(--accent-red-dim);color:var(--accent-red)}.badge-amber{background:var(--accent-amber-dim);color:var(--accent-amber)}.badge-blue{background:var(--accent-blue-dim);color:var(--accent-blue)}.badge-purple{background:var(--accent-purple-dim);color:var(--accent-purple)}.status-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.status-dot-connected{background:var(--accent-green);box-shadow:0 0 8px var(--accent-green);animation:2s ease-in-out infinite pulse-glow}.status-dot-disconnected{background:var(--text-muted)}.status-dot-connecting,.status-dot-reconnecting{background:var(--accent-amber);box-shadow:0 0 8px var(--accent-amber);animation:1s ease-in-out infinite pulse-glow}.status-dot-error{background:var(--accent-red);box-shadow:0 0 8px var(--accent-red)}.status-dot-lg{width:12px;height:12px}.app-shell{flex:1;width:100vw;min-height:0;display:flex;position:relative;overflow:hidden}.main-content{-webkit-overflow-scrolling:touch;min-width:0;min-height:0;margin-left:var(--sidebar-width);flex-direction:column;flex:1;display:flex;overflow:hidden auto}.sidebar{width:var(--sidebar-width);background:var(--bg-surface);border-right:1px solid var(--border);height:100vh;z-index:var(--z-sticky);transition:transform var(--transition-base), width var(--transition-base);flex-direction:column;display:flex;position:fixed;top:0;left:0}.sidebar-header{padding:var(--space-lg);align-items:center;gap:var(--space-md);display:flex}.sidebar-logo{background:var(--accent-green);border-radius:var(--radius-md);width:36px;height:36px;font-weight:800;font-size:var(--text-lg);color:#fff;flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-title{font-size:var(--text-lg);color:var(--accent-green);font-weight:700}.sidebar-nav{padding:var(--space-sm) var(--space-md);flex-direction:column;flex:1;gap:2px;display:flex}.sidebar-link{align-items:center;gap:var(--space-md);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-sm);transition:all var(--transition-fast);cursor:pointer;padding:10px 14px;font-weight:500;text-decoration:none;display:flex}.sidebar-link:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar-link.active{background:var(--accent-green-dim);color:var(--accent-green)}.sidebar-link.active svg{color:var(--accent-green)}.sidebar-section-title{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-md) var(--space-md) var(--space-xs);font-weight:600}.sidebar-footer{padding:var(--space-md);border-top:1px solid var(--border)}.header-title{font-size:var(--text-lg);font-weight:600}.header-actions{align-items:center;gap:var(--space-sm);display:flex}.page-content{padding:var(--space-xl)}.widget-wrapper{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);height:100%;transition:transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-fast);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000f;container:widget-card/size}.widget-wrapper:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.widget-wrapper.editing{border-color:var(--accent-green);box-shadow:var(--glow-green);cursor:grab}.widget-wrapper.editing:active{cursor:grabbing}.widget-header{padding:var(--space-sm) var(--space-md);flex-shrink:0;justify-content:space-between;align-items:center;min-height:36px;display:flex}.widget-name{font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.widget-status{align-items:center;gap:4px;display:flex}.widget-body{padding:var(--space-sm) var(--space-md) var(--space-md);flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden;container-type:size}@container widget-card (height<=140px){.widget-header{min-height:20px;padding:2px 6px}.widget-name{letter-spacing:0;font-size:8px}.widget-body{padding:2px 4px 4px}.widget-status{gap:2px}.widget-action-btn{width:16px;height:16px}.widget-action-btn svg{width:9px;height:9px}.widget-size-group{gap:1px;padding:1px}.widget-size-btn{width:16px;height:14px;font-size:7px}.widget-delete-btn{width:18px;height:18px}.widget-delete-btn svg{width:10px;height:10px}}@container widget-card (height<=100px){.widget-header{min-height:16px;padding:1px 4px}.widget-name{display:none}.widget-body{padding:1px 3px 2px}}.widget-delete-btn{background:var(--accent-red);color:#fff;cursor:pointer;z-index:10;opacity:0;width:24px;height:24px;transition:all var(--transition-fast);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;top:4px;right:4px;transform:scale(.8)}.widget-wrapper.editing .widget-delete-btn{opacity:1;transform:scale(1)}.widget-delete-btn:hover{background:#e03030;transform:scale(1.1)!important}.react-grid-layout{position:relative}.react-grid-item.react-draggable-dragging{z-index:100;box-shadow:var(--shadow-xl);transition:none!important}.react-grid-item>.react-resizable-handle{position:absolute;background:0 0!important}.react-grid-item>.react-resizable-handle:after{content:"";border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);opacity:0;width:8px;height:8px;transition:opacity var(--transition-fast);position:absolute;bottom:5px;right:5px}.react-grid-item:hover>.react-resizable-handle:after{opacity:1}.react-grid-placeholder{background:var(--accent-green-dim)!important;border:2px dashed var(--accent-green)!important;border-radius:var(--radius-lg)!important;opacity:.5!important}.dashboard-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.dashboard-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);cursor:pointer;transition:all var(--transition-base);box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.dashboard-card:before{content:"";background:linear-gradient(90deg, var(--accent-green), var(--accent-cyan));opacity:0;height:3px;transition:opacity var(--transition-base);position:absolute;top:0;left:0;right:0}.dashboard-card:hover{background:var(--bg-hover);border-color:var(--border-strong);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.dashboard-card:hover:before{opacity:1}.dashboard-card-icon{margin-bottom:var(--space-md);font-size:2rem}.dashboard-card-name{font-size:var(--text-lg);margin-bottom:var(--space-xs);font-weight:600}.dashboard-card-description{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-md)}.dashboard-card-meta{align-items:center;gap:var(--space-md);font-size:var(--text-xs);color:var(--text-muted);display:flex}.empty-state{padding:var(--space-2xl);text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:400px;display:flex}.empty-state-icon{margin-bottom:var(--space-lg);opacity:.6;font-size:4rem}.empty-state-title{font-size:var(--text-xl);margin-bottom:var(--space-sm);font-weight:600}.empty-state-description{font-size:var(--text-sm);color:var(--text-secondary);max-width:360px;margin-bottom:var(--space-xl)}.connection-card{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);transition:all var(--transition-base);box-shadow:var(--shadow-sm);display:flex}.connection-card:hover{background:var(--bg-hover);border-color:var(--border-strong);box-shadow:var(--shadow-md)}.connection-card-info{flex:1;min-width:0}.connection-card-name{font-weight:600;font-size:var(--text-base);margin-bottom:2px}.connection-card-url{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.connection-card-actions{align-items:center;gap:var(--space-xs);display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse-glow{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes ripple{0%{opacity:.4;transform:scale(0)}to{opacity:0;transform:scale(2.5)}}@keyframes value-pop{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes led-pulse{0%,to{box-shadow:0 0 8px var(--led-color), 0 0 20px var(--led-color)}50%{box-shadow:0 0 12px var(--led-color), 0 0 30px var(--led-color), 0 0 50px var(--led-color)}}.animate-fade-in{animation:.3s forwards fadeIn}.animate-slide-up{animation:.4s cubic-bezier(.34,1.56,.64,1) forwards slideUp}.animate-scale-in{animation:.3s forwards scaleIn}.animate-shimmer{background:linear-gradient(90deg, var(--bg-elevated) 25%, var(--bg-hover) 50%, var(--bg-elevated) 75%);background-size:200% 100%;animation:1.5s infinite shimmer}.animate-spin{animation:1s linear infinite spin}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.flex-1{flex:1}.w-full{width:100%}.text-center{text-align:center}.truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}@media (width<=768px){.sidebar{width:280px;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.page-content{padding:var(--space-md)}.header{padding:0 var(--space-md)}.dashboard-grid{grid-template-columns:1fr}.modal{max-width:100%;margin:var(--space-md);max-height:90vh}}.sidebar-overlay{display:none}@media (width<=768px){.sidebar-overlay{z-index:calc(var(--z-sticky) - 1);background:#00000080;animation:.2s fadeIn;display:block;position:fixed;inset:0}}.mobile-menu-btn{display:none!important}.widget-action-btn{cursor:pointer;width:22px;height:22px;transition:all var(--transition-fast);background:var(--bg-elevated);color:var(--text-muted);border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.widget-action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.widget-configure-btn:hover{color:var(--accent-green)}.widget-size-group{background:var(--bg-elevated);border-radius:var(--radius-sm);gap:2px;padding:2px;display:flex}.widget-size-btn{cursor:pointer;width:22px;height:20px;font-size:9px;font-weight:700;font-family:var(--font-sans);color:var(--text-muted);transition:all var(--transition-fast);letter-spacing:.02em;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;display:flex}.widget-size-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.widget-size-btn:active{background:var(--accent-green-dim);color:var(--accent-green)}.widget-timestamp{padding:2px var(--space-md) 6px;font-size:9px;font-family:var(--font-mono);color:var(--text-muted);text-align:right;opacity:.6}.header-connection-status{align-items:center;display:flex}@media (width<=768px){:root{--sidebar-width:0px;--widget-gap:8px}.sidebar,.sidebar-overlay{display:none!important}.main-content{margin-left:0;padding-bottom:60px}.header{padding:0 var(--space-md);height:var(--header-height)}.page-content{padding:var(--space-md) var(--space-sm)}.widget-header{padding:var(--space-xs) var(--space-sm);min-height:28px}.widget-body{padding:var(--space-xs) var(--space-sm) var(--space-sm)}.widget-wrapper{border-radius:var(--radius-md)}.glass-card-static{padding:var(--space-md)!important}.connection-card{padding:var(--space-md);gap:var(--space-sm);flex-wrap:wrap}.connection-card-info{flex:100%;min-width:150px}.connection-card .badge{margin-left:auto}.connection-card-actions{flex:auto;justify-content:flex-end}}@media (width>=769px) and (width<=1024px){:root{--sidebar-width:220px}.page-content{padding:var(--space-lg)}}.bottom-nav{background:var(--bg-surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:var(--z-sticky);display:none;position:fixed;bottom:0;left:0;right:0}@media (width<=768px){.bottom-nav{justify-content:space-around;align-items:stretch;display:flex}}.bottom-nav-item{height:60px;color:var(--text-muted);transition:color var(--transition-fast);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;font-size:10px;font-weight:500;text-decoration:none;display:flex}.bottom-nav-item svg{transition:transform var(--transition-spring), color var(--transition-fast)}.bottom-nav-item:hover,.bottom-nav-item:active{color:var(--text-secondary)}.bottom-nav-item.active{color:var(--accent-green)}.bottom-nav-item.active svg{color:var(--accent-green);filter:drop-shadow(0 2px 6px #24c48e4d);transform:translateY(-2px)}.gauge-container{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden;container:gauge/size}.gauge-svg{width:min(92%,92cqh);height:min(92%,92cqh)}.gauge-arc-fill{transition:stroke-dashoffset .8s cubic-bezier(.4,0,.2,1),stroke .5s}.gauge-tip{transition:cx .8s cubic-bezier(.4,0,.2,1),cy .8s cubic-bezier(.4,0,.2,1)}.gauge-value{text-align:center;pointer-events:none;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.gauge-number{font-size:clamp(.7rem,16cqmin,1.6rem);font-weight:700;font-family:"JetBrains Mono", var(--font-mono,monospace);color:var(--text-primary);letter-spacing:-.03em;line-height:1}.gauge-unit{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:2px;font-size:clamp(.4rem,6cqmin,.7rem);font-weight:500}.gauge-no-data{justify-content:center;align-items:center;gap:var(--space-sm);color:var(--text-muted);flex-direction:column;font-size:clamp(.6rem,10cqmin,.875rem);display:flex}.gauge-no-data-icon{border:2px dashed var(--text-muted);opacity:.5;border-radius:50%;justify-content:center;align-items:center;width:clamp(24px,25cqmin,40px);height:clamp(24px,25cqmin,40px);display:flex}.gauge-compact{flex-direction:column;justify-content:center;align-items:center;gap:4px;width:100%;padding:0 8px;display:none}.gauge-compact-value{font-family:"JetBrains Mono", var(--font-mono,monospace);letter-spacing:-.03em;font-size:clamp(1rem,32cqmin,1.8rem);font-weight:800;line-height:1}.gauge-compact-unit{color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:clamp(.5rem,10cqmin,.7rem);font-weight:500}.gauge-compact-bar{background:#e8ecf1;border-radius:100px;width:80%;height:clamp(3px,3cqmin,5px);margin-top:2px;overflow:hidden}.gauge-compact-fill{border-radius:100px;height:100%;transition:width .6s cubic-bezier(.4,0,.2,1)}@container gauge (height<=100px){.gauge-svg,.gauge-value{display:none}.gauge-compact{display:flex}}@container gauge (width<=100px){.gauge-svg,.gauge-value{display:none}.gauge-compact{display:flex}}.switch-container{user-select:none;flex-direction:column;justify-content:center;align-items:center;gap:clamp(4px,3cqh,16px);width:100%;height:100%;display:flex;position:relative;overflow:hidden;container-type:size}.switch-accent-bg{background:radial-gradient(ellipse at 50% 40%, color-mix(in srgb, var(--switch-color,var(--accent-green)) 8%, transparent), transparent 70%);pointer-events:none;border-radius:inherit;animation:.4s forwards switch-bg-fade-in;position:absolute;inset:0}@keyframes switch-bg-fade-in{0%{opacity:0}to{opacity:1}}.switch-track{border-radius:var(--radius-full);border:1px solid var(--border);cursor:pointer;z-index:1;background:#e2e8f0;flex-shrink:0;width:clamp(44px,45cqi,64px);height:clamp(24px,24cqi,34px);transition:all .4s cubic-bezier(.34,1.56,.64,1);position:relative}.switch-track:hover{border-color:var(--border-strong)}.switch-track.switch-on{background:var(--switch-color,var(--accent-green));border-color:var(--switch-color,var(--accent-green));box-shadow:0 0 20px color-mix(in srgb, var(--switch-color,var(--accent-green)) 35%, transparent), 0 0 40px color-mix(in srgb, var(--switch-color,var(--accent-green)) 15%, transparent), inset 0 1px 1px #ffffff26}.switch-glow-ring{border-radius:var(--radius-full);border:2px solid color-mix(in srgb, var(--switch-color,var(--accent-green)) 30%, transparent);pointer-events:none;animation:2s ease-in-out infinite switch-glow-pulse;position:absolute;inset:-4px}@keyframes switch-glow-pulse{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}.switch-thumb{z-index:1;background:#fff;border-radius:50%;width:calc(50% - 2px);height:calc(100% - 4px);transition:transform .4s cubic-bezier(.34,1.56,.64,1);position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #00000026,0 0 0 1px #0000000f}.switch-track.switch-on .switch-thumb{box-shadow:0 2px 8px #0003, 0 0 12px color-mix(in srgb, var(--switch-color,var(--accent-green)) 30%, transparent);transform:translate(100%)}.switch-thumb:after{content:"";background:var(--border-strong);width:30%;height:30%;transition:all var(--transition-base);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.switch-track.switch-on .switch-thumb:after{background:var(--switch-color,var(--accent-green));box-shadow:0 0 6px var(--switch-color,var(--accent-green))}.switch-label{letter-spacing:.05em;text-transform:uppercase;transition:color var(--transition-base);z-index:1;font-size:clamp(9px,10cqi,14px);font-weight:600;position:relative}.switch-label-off{color:var(--text-muted)}.switch-label-on{color:var(--switch-color,var(--accent-green));text-shadow:0 0 10px color-mix(in srgb, var(--switch-color,var(--accent-green)) 40%, transparent)}.switch-track.switch-disabled{opacity:.5;cursor:not-allowed}.slider-container{width:100%;height:100%;padding:0 var(--space-sm);flex-direction:column;justify-content:center;align-items:center;gap:clamp(4px,4cqh,16px);display:flex;container-type:size}.slider-value-display{align-items:baseline;gap:4px;display:flex}.slider-value{font-family:var(--font-mono);color:var(--text-primary);transition:color var(--transition-base);font-size:clamp(1rem,18cqmin,1.5rem);font-weight:700}.slider-unit{font-size:var(--text-sm);color:var(--text-muted);font-weight:500}.slider-track-wrapper{width:100%;padding:var(--space-lg) 0 var(--space-sm) 0;position:relative}.slider-float-bubble{pointer-events:none;z-index:2;justify-content:center;display:flex;position:absolute;top:0;transform:translate(-50%)}.slider-float-label{background:var(--slider-color,var(--accent-purple));color:#fff;font-family:var(--font-mono);border-radius:var(--radius-md);white-space:nowrap;box-shadow:0 2px 8px #0000004d, 0 0 12px color-mix(in srgb, var(--slider-color,var(--accent-purple)) 25%, transparent);padding:2px 8px;font-size:11px;font-weight:600;animation:.15s slider-float-in}.slider-float-label:after{content:"";border-left:4px solid #0000;border-right:4px solid #0000;border-top:4px solid var(--slider-color,var(--accent-purple));position:absolute;bottom:-4px;left:50%;transform:translate(-50%)}@keyframes slider-float-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.slider-input{appearance:none;border-radius:var(--radius-full);cursor:pointer;background:0 0;outline:none;width:100%;height:8px;position:relative}.slider-input::-webkit-slider-runnable-track{border-radius:var(--radius-full);background:var(--slider-track-bg,var(--bg-hover));border:1px solid var(--border);height:8px}.slider-input::-moz-range-track{border-radius:var(--radius-full);background:var(--bg-hover);border:1px solid var(--border);height:8px}.slider-input::-moz-range-progress{border-radius:var(--radius-full);background:var(--slider-color,var(--accent-purple));height:8px}.slider-input::-webkit-slider-thumb{appearance:none;border:3px solid var(--slider-color,var(--accent-purple));width:24px;height:24px;box-shadow:0 2px 8px #00000026, 0 0 12px color-mix(in srgb, var(--slider-color,var(--accent-purple)) 20%, transparent);cursor:grab;transition:box-shadow var(--transition-fast), transform var(--transition-fast);background:linear-gradient(135deg,#fff,#e0e0e4);border-radius:50%;margin-top:-9px}.slider-input::-webkit-slider-thumb:hover{box-shadow:0 2px 10px #0003, 0 0 16px color-mix(in srgb, var(--slider-color,var(--accent-purple)) 25%, transparent);transform:scale(1.15)}.slider-input::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.05)}.slider-input::-moz-range-thumb{border:3px solid var(--slider-color,var(--accent-purple));width:24px;height:24px;box-shadow:0 2px 8px #00000026, 0 0 12px color-mix(in srgb, var(--slider-color,var(--accent-purple)) 20%, transparent);cursor:grab;transition:box-shadow var(--transition-fast), transform var(--transition-fast);background:linear-gradient(135deg,#fff,#e0e0e4);border-radius:50%}.slider-input::-moz-range-thumb:hover{transform:scale(1.15)}.slider-labels{width:100%;font-size:var(--text-xs);color:var(--text-muted);font-family:var(--font-mono);justify-content:space-between;display:flex}.slider-container.slider-disabled{opacity:.6;pointer-events:none}.chart-container{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.chart-echarts{width:100%;height:100%;min-height:140px}.chart-no-data{justify-content:center;align-items:center;gap:var(--space-sm);color:var(--text-muted);font-size:var(--text-sm);flex-direction:column;display:flex}.chart-no-data-pulse{background:linear-gradient(90deg, transparent, var(--text-muted), transparent);border-radius:var(--radius-full);background-size:200% 100%;width:48px;height:2px;animation:2s infinite shimmer}.value-container{justify-content:center;align-items:center;gap:var(--space-sm);text-align:center;flex-direction:column;width:100%;height:100%;display:flex;position:relative;overflow:hidden;container-type:size}.value-accent-bg{background:linear-gradient(180deg, transparent 40%, color-mix(in srgb, var(--value-accent,#3b82f6) 6%, transparent) 100%);pointer-events:none;border-radius:inherit;position:absolute;inset:0}.value-icon{border-radius:var(--radius-md);width:clamp(24px,20cqmin,40px);height:clamp(24px,20cqmin,40px);margin-bottom:var(--space-xs);transition:all var(--transition-base);z-index:1;justify-content:center;align-items:center;display:flex;position:relative}.value-icon svg{width:clamp(14px,12cqmin,22px);height:clamp(14px,12cqmin,22px)}.value-main{z-index:1;align-items:baseline;gap:4px;line-height:1;display:flex;position:relative}.value-prefix{font-size:var(--text-sm);color:var(--text-muted);font-weight:500}.value-number{font-family:var(--font-mono);color:var(--text-primary);letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:clamp(1rem,20cqmin,2.5rem);font-weight:800;transition:transform .2s;overflow:hidden}.value-number.value-pop{animation:.3s value-pop}.value-suffix{font-size:var(--text-sm);color:var(--text-muted);font-weight:500}.value-unit{font-size:var(--text-sm);color:var(--text-secondary);z-index:1;margin-top:2px;font-weight:500;position:relative}.value-no-data{font-size:var(--text-2xl);font-family:var(--font-mono);color:var(--text-muted);z-index:1;font-weight:600;position:relative}.value-trend{border-radius:var(--radius-full);z-index:1;width:48px;height:3px;margin-top:var(--space-xs);background:#e2e8f0;position:relative;overflow:hidden}.value-trend-line{border-radius:var(--radius-full);opacity:.5;width:60%;height:100%;animation:3s ease-in-out infinite alternate value-trend-sweep}@keyframes value-trend-sweep{0%{opacity:.3;transform:translate(0)}to{opacity:.6;transform:translate(67%)}}.button-container{justify-content:center;align-items:center;gap:var(--space-sm);flex-direction:column;width:100%;height:100%;display:flex;container-type:size}.button-action{border-radius:var(--radius-lg);font-family:var(--font-sans);color:#fff;cursor:pointer;user-select:none;min-width:0;max-width:90%;transition:all var(--transition-base);background:linear-gradient(180deg, color-mix(in srgb, var(--button-color,var(--accent-red)) 100%, #fff) 0%, var(--button-color,var(--accent-red)) 40%, color-mix(in srgb, var(--button-color,var(--accent-red)) 80%, #000) 100%);border:none;border-bottom:3px solid color-mix(in srgb, var(--button-color,var(--accent-red)) 60%, #000);border-top:1px solid color-mix(in srgb, var(--button-color,var(--accent-red)) 70%, #fff);box-shadow:0 0 20px color-mix(in srgb, var(--button-color,var(--accent-red)) 25%, transparent), 0 4px 15px #0000004d;outline:none;justify-content:center;align-items:center;gap:clamp(4px,3cqi,8px);padding:clamp(8px,10cqmin,16px) clamp(16px,18cqmin,32px);font-size:clamp(.7rem,10cqmin,1rem);font-weight:600;display:flex;position:relative;overflow:hidden}.button-action:hover:not(:disabled){box-shadow:0 0 30px color-mix(in srgb, var(--button-color,var(--accent-red)) 35%, transparent), 0 6px 20px #0006;transform:translateY(-1px)}.button-action:active:not(:disabled){box-shadow:0 0 10px color-mix(in srgb, var(--button-color,var(--accent-red)) 15%, transparent), 0 1px 4px #0000004d;border-bottom-width:1px;transform:translateY(2px)}.button-action:disabled{opacity:.5;cursor:not-allowed}.button-shimmer{pointer-events:none;background:linear-gradient(90deg,#0000 0%,#ffffff26 50%,#0000 100%);width:100%;height:100%;transition:none;position:absolute;top:0;left:-100%}.button-action:hover:not(:disabled) .button-shimmer{animation:.8s forwards button-shimmer-sweep}@keyframes button-shimmer-sweep{0%{left:-100%}to{left:100%}}.button-icon-wrap{filter:drop-shadow(0 0 4px #fff6);justify-content:center;align-items:center;display:flex}.button-icon-wrap svg{flex-shrink:0}.button-ripple{pointer-events:none;background:#ffffff4d;border-radius:50%;animation:.6s ease-out forwards ripple;position:absolute;transform:scale(0)}.button-confirm-overlay{-webkit-backdrop-filter:blur(4px);z-index:var(--z-modal);background:#0009;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.button-confirm-dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-lg);gap:var(--space-md);width:90%;max-width:340px;box-shadow:var(--shadow-xl);flex-direction:column;animation:.25s cubic-bezier(.34,1.56,.64,1) slideUp;display:flex}.button-confirm-message{font-size:var(--text-base);color:var(--text-primary);text-align:center;line-height:1.5}.button-confirm-actions{gap:var(--space-sm);justify-content:center;display:flex}.led-container{flex-direction:column;justify-content:center;align-items:center;gap:clamp(4px,4cqh,16px);width:100%;height:100%;display:flex;position:relative;overflow:hidden;container-type:size}.led-accent-bg{background:radial-gradient(ellipse at 50% 40%, color-mix(in srgb, var(--led-on-color,#22c55e) 8%, transparent), transparent 70%);pointer-events:none;border-radius:inherit;animation:.4s forwards led-bg-fade-in;position:absolute;inset:0}@keyframes led-bg-fade-in{0%{opacity:0}to{opacity:1}}.led-pill-wrapper{z-index:1;justify-content:center;align-items:center;display:flex;position:relative}.led-pill{border-radius:var(--radius-full);justify-content:center;align-items:center;transition:all .5s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative}.led-small{width:clamp(30px,30cqmin,44px);height:clamp(16px,15cqmin,22px)}.led-medium{width:clamp(40px,38cqmin,60px);height:clamp(20px,19cqmin,30px)}.led-large{width:clamp(48px,46cqmin,76px);height:clamp(24px,23cqmin,38px)}.led-dot{border-radius:var(--radius-full);width:40%;height:60%;transition:all .5s cubic-bezier(.34,1.56,.64,1)}.led-off{background:color-mix(in srgb, var(--led-off-color,#71717a) 30%, transparent);border:1px solid color-mix(in srgb, var(--led-off-color,#71717a) 40%, transparent);box-shadow:inset 0 1px 4px #0003}.led-off .led-dot{background:var(--led-off-color,#71717a);opacity:.6}.led-on{background:color-mix(in srgb, var(--led-on-color,#22c55e) 25%, transparent);border:1px solid color-mix(in srgb, var(--led-on-color,#22c55e) 40%, transparent);box-shadow:inset 0 0 8px color-mix(in srgb, var(--led-on-color,#22c55e) 20%, transparent), 0 0 12px color-mix(in srgb, var(--led-on-color,#22c55e) 30%, transparent), 0 0 30px color-mix(in srgb, var(--led-on-color,#22c55e) 15%, transparent)}.led-on .led-dot{background:var(--led-on-color,#22c55e);box-shadow:0 0 8px var(--led-on-color,#22c55e)}.led-pulse-ring{border-radius:var(--radius-full);border:2px solid color-mix(in srgb, var(--led-on-color,#22c55e) 35%, transparent);pointer-events:none;animation:2s ease-in-out infinite led-pulse-expand;position:absolute;inset:-6px}@keyframes led-pulse-expand{0%,to{opacity:.6;transform:scale(1)}50%{opacity:.2;transform:scale(1.2)}}.led-label{text-transform:uppercase;letter-spacing:.06em;transition:color var(--transition-base);z-index:1;font-size:clamp(9px,10cqmin,14px);font-weight:600;position:relative}.led-label-off{color:var(--text-muted)}.led-label-on{color:var(--led-on-color,#22c55e);text-shadow:0 0 10px color-mix(in srgb, var(--led-on-color,#22c55e) 40%, transparent)}.widget-type-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.widget-type-card{text-align:center;align-items:center;gap:var(--space-sm);padding:var(--space-lg) var(--space-md);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-base);font-family:var(--font-sans);flex-direction:column;display:flex}.widget-type-card:hover{background:var(--bg-hover);border-color:var(--accent-blue);box-shadow:var(--glow-blue);transform:translateY(-2px)}.widget-type-card:active{transform:scale(.97)}.widget-type-icon{font-size:2rem}.widget-type-name{font-size:var(--text-sm);color:var(--text-primary);font-weight:600}.widget-type-desc{font-size:var(--text-xs);color:var(--text-muted);line-height:1.3}.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.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{cursor:ns-resize;margin-left:-10px;left:50%}.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{box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;background-repeat:no-repeat;background-origin:content-box;width:20px;height:20px;padding:0 3px 3px 0;position:absolute}.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.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{cursor:ns-resize;margin-left:-10px;left:50%}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
