@charset "UTF-8";.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top}.react-grid-item.cssTransforms{transition-property:transform}.react-grid-item.resizing{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-resizable-handle{position:absolute;width:20px;height:20px;bottom:0;right:0;cursor:se-resize}.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}body{background-color:var(--bg-primary);color:var(--text-primary);padding:0;margin:0;font-family:var(--font-body);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--dur-med) ease,color var(--dur-med) ease}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(1200px 500px at 85% -10%,var(--accent-background),transparent 60%),radial-gradient(1000px 460px at -10% 110%,var(--accent-background),transparent 60%)}body:after{content:"";position:fixed;top:-20%;right:-20%;bottom:-20%;left:-20%;z-index:-2;pointer-events:none;background:radial-gradient(600px 400px at 20% 30%,var(--accent-background),transparent 70%),radial-gradient(700px 500px at 80% 70%,var(--accent-background),transparent 70%);opacity:.5;animation:ambient-drift 40s var(--ease-out) infinite alternate}@keyframes ambient-drift{0%{transform:translateZ(0)}to{transform:translate3d(4%,-3%,0)}}*{outline:none;-webkit-tap-highlight-color:transparent}::selection{background:var(--accent-background);color:var(--text-primary)}:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#80808059;border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:#8080808c}*{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.35) transparent}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}:root{--theme-color: #ffffff;--bg-primary: #ffffff;--bg-secondary: #f2f3f4;--bg-tertiary: #e9ecef;--bg-sidebar: #f2f3f4;--bg-sidebar-accent: #e9ecef;--text-primary: #212529;--text-secondary: #495057;--text-muted: #6c757d;--border-color: #dee2e6;--color-border-strong: #adb5bd;--accent-color: #0d6efd;--accent-background: #0d6efda0;--accent-text: #ffffff;--accent-hover: #8fd2ff;--accent-hover-text: #0d6efd;--link-color: #0d6efd;--danger-color: #dc3545;--danger-hover: #ff6666;--success-color: #198754;--warning-color: #fd7e14;--input-bg: #ffffff;--hover-bg: #d5d5d5;--formulas-bg: #f8f9fa;--search-highlight: #fff3b0;--color-shadow: rgba(0, 0, 0, .1);--color-overlay: rgba(0, 0, 0, .4)}:root[data-theme=light]{--theme-color: #ffffff;--bg-primary: #ffffff;--bg-secondary: #f2f3f4;--bg-tertiary: #e9ecef;--bg-sidebar: #f2f3f4;--bg-sidebar-accent: #e9ecef;--text-primary: #212529;--text-secondary: #495057;--text-muted: #6c757d;--border-color: #dee2e6;--color-border-strong: #adb5bd;--accent-color: #0d6efd;--accent-background: #0d6efda0;--accent-text: #ffffff;--accent-hover: #8fd2ff;--accent-hover-text: #0d6efd;--link-color: #0d6efd;--danger-color: #dc3545;--danger-hover: #ff6666;--success-color: #198754;--warning-color: #fd7e14;--input-bg: #ffffff;--hover-bg: #d5d5d5;--formulas-bg: #f8f9fa;--search-highlight: #fff3b0;--color-shadow: rgba(0, 0, 0, .1);--color-overlay: rgba(0, 0, 0, .4)}:root[data-theme=fulldark]{--theme-color: #0e0e10;--bg-primary: #0e0e10;--bg-secondary: #181819;--bg-tertiary: #2e2e30;--bg-sidebar: #101012;--bg-sidebar-accent: #232325;--text-primary: #fafafa;--text-secondary: #a1a1aa;--text-muted: #71717a;--border-color: #27272a;--color-border-strong: #3f3f46;--accent-color: #2b7cff;--accent-background: #3b82f626;--accent-text: #ffffff;--accent-hover: #123c99;--accent-hover-text: #e6e4f3;--link-color: #609cff;--danger-color: #b91c1c;--danger-hover: #dc2626;--success-color: #10b981;--warning-color: #f59e0b;--input-bg: #141416;--hover-bg: #ffffff0d;--formulas-bg: #1b1b1e;--search-highlight: #434313;--color-shadow: rgba(0, 0, 0, .55);--color-overlay: rgba(0, 0, 0, .65)}:root[data-theme=blonde]{--theme-color: #f3e5f5;--bg-primary: #f3e5f5;--bg-secondary: #f2d6f9;--bg-tertiary: #e1cce8;--bg-sidebar: #e9d8ef;--bg-sidebar-accent: #dcc6e8;--text-primary: #3a1c4f;--text-secondary: #5b2a84;--text-muted: #8c6ba5;--border-color: #c7a7d9;--color-border-strong: #a879c0;--accent-color: #6a0dad;--accent-background: #6a0dada0;--accent-text: #ffffff;--accent-hover: #550c9b;--accent-hover-text: #e6e4f3;--link-color: #6a0dad;--danger-color: #d32f2f;--danger-hover: #ff4444;--success-color: #388e3c;--warning-color: #f57c00;--input-bg: #faf3fc;--hover-bg: #e1cce8;--formulas-bg: #f2d6f9;--search-highlight: #ffef9e;--color-shadow: rgba(106, 13, 173, .2);--color-overlay: rgba(58, 28, 79, .4)}:root[data-theme=auto]{--theme-color: #ffffff;--bg-primary: #ffffff;--bg-secondary: #f2f3f4;--bg-tertiary: #e9ecef;--bg-sidebar: #f2f3f4;--bg-sidebar-accent: #e9ecef;--text-primary: #212529;--text-secondary: #495057;--text-muted: #6c757d;--border-color: #dee2e6;--color-border-strong: #adb5bd;--accent-color: #0d6efd;--accent-background: #0d6efda0;--accent-text: #ffffff;--accent-hover: #8fd2ff;--accent-hover-text: #0d6efd;--link-color: #0d6efd;--danger-color: #dc3545;--danger-hover: #ff6666;--success-color: #198754;--warning-color: #fd7e14;--input-bg: #ffffff;--hover-bg: #d5d5d5;--formulas-bg: #f8f9fa;--search-highlight: #fff3b0;--color-shadow: rgba(0, 0, 0, .1);--color-overlay: rgba(0, 0, 0, .4)}@media (prefers-color-scheme: dark){:root[data-theme=auto]{--theme-color: #0e0e10;--bg-primary: #0e0e10;--bg-secondary: #181819;--bg-tertiary: #2e2e30;--bg-sidebar: #101012;--bg-sidebar-accent: #232325;--text-primary: #fafafa;--text-secondary: #a1a1aa;--text-muted: #71717a;--border-color: #27272a;--color-border-strong: #3f3f46;--accent-color: #2b7cff;--accent-background: #3b82f626;--accent-text: #ffffff;--accent-hover: #123c99;--accent-hover-text: #e6e4f3;--link-color: #609cff;--danger-color: #b91c1c;--danger-hover: #dc2626;--success-color: #10b981;--warning-color: #f59e0b;--input-bg: #141416;--hover-bg: #ffffff0d;--formulas-bg: #1b1b1e;--search-highlight: #434313;--color-shadow: rgba(0, 0, 0, .55);--color-overlay: rgba(0, 0, 0, .65)}}:root{--font-display: "Chakra Petch", "Segoe UI", sans-serif;--font-body: "IBM Plex Sans", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", "Consolas", monospace;--status-ok: var(--success-color);--status-warn: var(--warning-color);--status-bad: var(--danger-color);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 18px;--radius-pill: 999px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--shadow-sm: 0 1px 3px var(--color-shadow);--shadow-md: 0 4px 20px var(--color-shadow);--shadow-lg: 0 8px 32px var(--color-shadow);--dur-fast: .12s;--dur-med: .2s;--dur-slow: .3s;--ease-out: cubic-bezier(.22, 1, .36, 1);--z-dropdown: 450;--z-modal: 400;--z-tooltip: 500;--z-overlay: 600;--color-bg: var(--bg-primary);--color-bg-elevated: var(--bg-secondary);--color-surface: var(--bg-tertiary);--color-modal-panel: var(--bg-primary);--color-modal-input: var(--input-bg);--color-border: var(--border-color);--color-text-primary: var(--text-primary);--color-text-secondary: var(--text-secondary);--color-text-muted: var(--text-muted);--color-text-inverse: var(--accent-text);--color-nav-bg: var(--bg-sidebar);--color-nav-item: var(--bg-sidebar-accent);--color-nav-active: var(--success-color);--color-nav-hover: var(--hover-bg);--color-accent: var(--accent-color);--color-accent-bg: var(--accent-background);--color-success: var(--success-color);--color-danger: var(--danger-color);--color-warning: var(--warning-color);--color-info: var(--link-color);--color-action: var(--success-color);--color-action-bg: color-mix(in srgb, var(--success-color) 20%, transparent)}:root[data-theme=fulldark]{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) var(--color-bg)}:root[data-theme=fulldark] ::-webkit-scrollbar{width:6px;height:4px}:root[data-theme=fulldark] ::-webkit-scrollbar-button{background-color:var(--color-border-strong)}:root[data-theme=fulldark] ::-webkit-scrollbar-track{background-color:var(--color-bg)}:root[data-theme=fulldark] ::-webkit-scrollbar-track-piece{background-color:var(--color-bg)}:root[data-theme=fulldark] ::-webkit-scrollbar-thumb{background-color:var(--color-border-strong);border-radius:3px}:root[data-theme=fulldark] ::-webkit-scrollbar-corner{background-color:var(--color-bg)}:root[data-theme=fulldark] body{scrollbar-width:thin;background-color:var(--color-bg);color:var(--color-text-primary)}@media (prefers-color-scheme: dark){:root[data-theme=auto]{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) var(--color-bg)}:root[data-theme=auto] ::-webkit-scrollbar{width:6px;height:4px}:root[data-theme=auto] ::-webkit-scrollbar-button{background-color:var(--color-border-strong)}:root[data-theme=auto] ::-webkit-scrollbar-track{background-color:var(--color-bg)}:root[data-theme=auto] ::-webkit-scrollbar-track-piece{background-color:var(--color-bg)}:root[data-theme=auto] ::-webkit-scrollbar-thumb{background-color:var(--color-border-strong);border-radius:3px}:root[data-theme=auto] ::-webkit-scrollbar-corner{background-color:var(--color-bg)}:root[data-theme=auto] body{scrollbar-width:thin;background-color:var(--color-bg);color:var(--color-text-primary)}}.tabs{display:flex;align-items:center;background:color-mix(in srgb,var(--bg-primary) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border-color);box-shadow:var(--shadow-sm);max-height:44px;height:44px;position:sticky;top:0;z-index:100}.tabs .issues-counter{display:flex;align-items:center;padding:0 0 0 10px;font-weight:700;cursor:default;color:var(--text-secondary)}.tabs .issues-counter .svg-icon{filter:none!important;opacity:1!important;width:20px;height:20px}.tabs .issues-counter.error>svg{color:var(--danger-color)}.tabs .issues-counter.warning>svg{color:var(--warning-color)}.tabs .issues-counter.info>svg{color:var(--link-color)}.tabs .tab-date{padding:0 4px 0 12px;display:flex;align-items:center}.tabs .tab{cursor:pointer;color:var(--text-secondary);background-color:transparent;text-decoration:none;position:relative;transition:background-color .15s ease,color .15s ease;display:flex;align-items:center;justify-content:center;gap:5px}.tabs .tab .range-selector-text{text-decoration:underline}.tabs .tab .tab-title{display:inline-block;font-weight:500}.tabs .tab.active{background-color:transparent;color:var(--text-primary)}.tabs .tab.active:after{content:"";position:absolute;left:10px;right:10px;bottom:-7px;height:2px;border-radius:2px;background:var(--status-ok)}.tabs .tab.active .tab-title{font-weight:600}@media (hover: hover){.tabs .tab:hover{background-color:var(--hover-bg);color:var(--text-primary)}}.tabs .tab .tab-icon{height:20px;position:static;-webkit-user-select:none;user-select:none}.tabs .user-menu{right:0;top:44px;position:absolute;background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:0 0 var(--radius-sm) var(--radius-sm);box-shadow:var(--shadow-md);z-index:200;min-width:180px;padding:4px 0}.tabs .user-menu .user-menu-item{padding:9px 16px;text-align:left;display:block;color:var(--text-primary);text-decoration:none;font-size:14px;cursor:pointer;transition:background-color .15s ease;white-space:nowrap}.tabs .user-menu .user-menu-item:hover{background-color:var(--hover-bg)}.tabs .btn-login,.tabs .btn-logout{border:0;background-color:transparent;color:var(--text-primary);padding:0 12px;cursor:pointer;display:inline-block;height:44px;line-height:28px;transition:background-color .15s ease}.tabs .btn-login:hover,.tabs .btn-logout:hover{background-color:var(--hover-bg)}.tabs .btn-login img,.tabs .btn-login svg,.tabs .btn-logout img,.tabs .btn-logout svg{top:7px;position:relative;height:26px}.btn-execute{display:flex;cursor:pointer}.tab-cam,.tab-door,.tab-dashboard{min-width:100px}.tab-chart{padding-left:5px}.tab-inner{display:flex;align-items:center;justify-content:center;height:100%;gap:5px}.tab-login{margin-left:auto;position:relative;background:unset!important}.tab-login .tab-inner{padding-top:0!important}.tab-login .btn-login{border:0;background-color:transparent;border-left:1px solid var(--border-color);color:var(--text-primary);font-weight:500;letter-spacing:.2px;padding:0 16px;height:44px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:background-color .15s ease}.tab-login .btn-login:hover{background-color:var(--hover-bg)}.tab-login .btn-user-trigger{border:0;background:transparent;color:var(--text-primary);height:44px;padding:0 14px;display:flex;align-items:center;gap:8px;cursor:pointer;transition:background-color .15s ease}.tab-login .btn-user-trigger:hover{background-color:var(--hover-bg)}.tab-login .user-avatar{width:28px;height:28px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background-color:color-mix(in srgb,var(--success-color) 50%,transparent);color:var(--text-primary);font-family:var(--font-display);font-size:13px;font-weight:700}.tab-login .user-avatar__img{width:100%;height:100%;object-fit:cover}.tab-login .user-avatar__initials{line-height:1}.tab-login .user-name{font-size:13px;font-weight:500;color:var(--text-secondary);max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tab-login .burger-icon{display:flex;flex-direction:column;justify-content:center;gap:4px;width:16px;flex-shrink:0}.tab-login .burger-icon span{display:block;height:2px;background-color:var(--text-primary);border-radius:1px;opacity:.75;transition:opacity .15s ease}.tab-login .btn-user-trigger:hover .burger-icon span{opacity:1}.tab-login .user-auth{position:relative;height:100%}.tab-login .user-menu-separator{height:1px;background-color:var(--color-border);margin:4px 0}.tab-login .user-menu-item--danger{color:var(--color-danger)!important}.tab-login .user-menu-item--danger:hover{background-color:#ef44441a!important}.tab-login .user-menu-item--info{color:var(--color-text-secondary, var(--color-text-inverse));cursor:default;opacity:.8}.tab-login .user-menu-item--info:hover{background-color:transparent}.modal-header-tabs{display:flex;gap:5px;margin:0}.modal-header-tab{position:relative;padding:8px 5px 5px;cursor:pointer;font-size:12.5px;font-weight:500;letter-spacing:.02em;color:var(--color-text-muted);transition:color .15s ease;-webkit-user-select:none;user-select:none;white-space:nowrap}.modal-header-tab:hover{color:var(--color-text-primary)}.modal-header-tab-active{color:var(--color-text-primary);font-weight:600}.modal-header-tab-active:after{content:"";position:absolute;left:8px;right:8px;bottom:0;height:2px;background:var(--color-accent);border-radius:2px}.module-settings-header{display:flex;flex-direction:column;gap:4px}.module-settings-title{font-size:15px;font-weight:700;color:var(--color-text-primary)}.module-settings-weblink{margin-right:auto;font-size:12px;font-weight:500;color:var(--color-accent);text-decoration:none;transition:background-color var(--dur-fast) ease}.module-settings-weblink:hover{text-decoration:underline}.tab-pane--active{animation:tabFadeIn .15s ease both}.tab-pane--leaving{animation:tabFadeOut .15s ease both}.tab-pane--hidden{display:none}@keyframes tabFadeIn{0%{opacity:0}to{opacity:1}}@keyframes tabFadeOut{0%{opacity:1}to{opacity:0}}.settings-tab{padding:4px 0}.settings-section-title{font-size:14px;font-weight:700;color:var(--color-text-primary);margin:0 0 10px}.settings-section-title--spaced{margin-top:20px}.settings-info-text{margin:0 0 14px;font-size:13px;color:var(--color-text-secondary);line-height:1.5}.settings-info-text code{background:var(--color-surface);padding:1px 5px;border-radius:3px;font-size:12px}.settings-field{margin-bottom:12px}.settings-field__label{display:block;font-size:11px;font-weight:600;color:var(--color-text-secondary);margin-bottom:5px;text-transform:uppercase;letter-spacing:.6px}.settings-input-row{display:flex;align-items:center;background-color:var(--color-modal-input);border:1px solid var(--color-border);border-radius:7px;overflow:hidden;transition:border-color .15s ease}.settings-input-row:focus-within{border-color:var(--color-accent)}.settings-input{flex:1;min-width:0;padding:8px 12px;background:transparent;border:none;outline:none;color:var(--color-text-primary);font-family:monospace;font-size:13px}.settings-icon-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:34px;height:34px;background:transparent;border:none;border-left:1px solid var(--color-border);color:var(--color-text-secondary);cursor:pointer;transition:background-color .15s ease,color .15s ease}.settings-icon-btn:hover{background-color:var(--color-bg);color:var(--color-text-primary)}.settings-icon-btn--incode{border-left:none;border-radius:0 6px 6px 0}.settings-select{padding:7px 10px;border:1px solid var(--color-border);border-radius:7px;background-color:var(--color-modal-input);color:var(--color-text-primary);font-family:inherit;font-size:13px;cursor:pointer;min-width:140px}.settings-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-bg);outline:none}.settings-btn-fullwidth{display:block;width:100%;padding:9px 16px;border:1px solid var(--color-border);border-radius:7px;background-color:var(--color-modal-input);color:var(--color-text-primary);font-family:inherit;font-size:14px;font-weight:500;cursor:pointer;text-align:center;transition:background-color .15s ease;margin-bottom:8px}.settings-btn-fullwidth:hover{background-color:var(--color-bg)}.settings-btn-fullwidth:disabled{opacity:.5;cursor:not-allowed}.settings-btn-regenerate{background-color:color-mix(in srgb,var(--color-modal-input) 70%,var(--color-modal-panel));font-weight:600}.settings-warning-line{margin:0 0 16px;font-size:12px;color:var(--color-warning);display:flex;align-items:center;gap:5px}.settings-warning-icon{font-size:13px}.settings-auth-desc{margin:0 0 8px;font-size:13px;color:var(--color-text-secondary);line-height:1.5}.settings-codeblock-row{display:flex;align-items:stretch;background-color:var(--color-modal-input);border:1px solid var(--color-border);border-radius:7px;margin-bottom:14px;overflow:hidden}.settings-auth-code{flex:1;min-width:0;display:block;padding:9px 12px;font-family:monospace;font-size:12.5px;color:var(--color-text-primary);white-space:pre-wrap;word-break:break-all;background:transparent;border:none}.settings-disclosure{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--color-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;padding:4px 0;transition:color .15s ease;margin-bottom:6px}.settings-disclosure:hover{color:var(--color-text-primary)}.settings-disclosure-arrow{font-size:10px;width:12px;text-align:center}.settings-example-block{margin-bottom:8px}.settings-example-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--color-text-secondary);margin:0 0 4px}.settings-no-key{display:flex;flex-direction:column;gap:10px}.settings-no-key p{margin:0;color:var(--color-text-secondary);font-size:13px}.settings-push-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;gap:12px}.settings-push-label{font-size:14px;font-weight:500}.settings-push-toggle{display:flex;align-items:center;gap:10px}.settings-push-status{font-size:12px;color:var(--color-text-secondary);min-width:48px}.settings-push-status--on{color:var(--color-success);font-weight:600}.settings-hint{margin:4px 0 0;font-size:12px;color:var(--color-success)}.settings-toggle{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.settings-toggle input{opacity:0;width:0;height:0;position:absolute}.settings-toggle__slider{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background-color:var(--color-border-strong);border-radius:12px;transition:background-color .2s ease}.settings-toggle__slider:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background-color:#fff;border-radius:50%;transition:transform .2s ease;box-shadow:0 1px 3px #0000004d}input:checked+.settings-toggle__slider{background-color:var(--color-accent)}input:disabled+.settings-toggle__slider{opacity:.5;cursor:not-allowed}input:checked+.settings-toggle__slider:before{transform:translate(20px)}.zigbee-tab{display:flex;flex-direction:column;gap:var(--space-2)}.zigbee-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-1)}.zigbee-toolbar-info{display:flex;align-items:center;gap:var(--space-2)}.zigbee-toolbar-ico{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-action) 12%,transparent);color:var(--color-action)}.zigbee-toolbar-ico .svg-icon{width:16px;height:16px}.zigbee-toolbar-title{font-size:14px;font-weight:700;color:var(--color-text-primary)}.zigbee-toolbar-count{font-size:12px;font-weight:600;color:var(--color-text-secondary);background:var(--color-surface);border-radius:var(--radius-pill);padding:1px 8px;font-variant-numeric:tabular-nums}.zigbee-permit-btn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.zigbee-permit-btn.button-primary{box-shadow:var(--shadow-sm);transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.zigbee-permit-btn.button-primary:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.zigbee-permit-btn.button-primary:active{transform:translateY(0)}.zigbee-permit-banner{font-size:12px;color:var(--color-action);background:color-mix(in srgb,var(--color-action) 8%,var(--color-bg-elevated));border:1px solid color-mix(in srgb,var(--color-action) 25%,transparent);border-radius:var(--radius-sm);padding:8px 12px 10px;display:flex;flex-direction:column;gap:7px}.zigbee-permit-banner-top{display:flex;align-items:center;gap:8px}.zigbee-permit-pulse{flex-shrink:0;width:8px;height:8px;border-radius:50%;background:var(--color-action);animation:zigbeePulse 1.4s ease-in-out infinite}@keyframes zigbeePulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--color-action) 55%,transparent);opacity:1}50%{box-shadow:0 0 0 5px color-mix(in srgb,var(--color-action) 0%,transparent);opacity:.6}}.zigbee-permit-banner-text{flex:1 1 auto;min-width:0}.zigbee-permit-countdown{flex-shrink:0;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-text-primary)}.zigbee-permit-progress{height:4px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-action) 18%,transparent);overflow:hidden}.zigbee-permit-progress-fill{height:100%;border-radius:var(--radius-pill);background:var(--color-action);transition:width 1s linear}.zigbee-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;padding:var(--space-6) var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-surface) 40%,transparent)}.zigbee-empty-ico{width:52px;height:52px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-surface);color:var(--color-text-muted);margin-bottom:var(--space-1)}.zigbee-empty-ico .svg-icon{width:26px;height:26px}.zigbee-empty-title{font-size:14px;font-weight:600;color:var(--color-text-primary)}.zigbee-empty-sub{font-size:12px;color:var(--color-text-secondary);max-width:320px}.zigbee-device{position:relative;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);padding:var(--space-3) var(--space-3) var(--space-3) calc(var(--space-3) + 3px);box-shadow:var(--shadow-sm);transition:border-color var(--dur-med) var(--ease-out),box-shadow var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.zigbee-device:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--color-action);opacity:0;transform:scaleY(.6);transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.zigbee-device+.zigbee-device{margin-top:var(--space-2)}.zigbee-device:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-md);transform:translateY(-1px)}.zigbee-device:hover:before{opacity:.5;transform:scaleY(1)}.zigbee-device.zigbee-device--live:before{opacity:1;transform:scaleY(1)}.zigbee-device-row{display:flex;align-items:center;gap:var(--space-3)}.zigbee-device-image-wrap{position:relative;flex-shrink:0;width:40px;height:40px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.zigbee-device-image-wrap:hover{background:var(--color-surface);transform:scale(1.04)}.zigbee-device-image{width:40px;height:40px;object-fit:contain;border-radius:var(--radius-sm);background:var(--color-surface)}.zigbee-device-image-placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-text-muted, var(--color-text-secondary))}.zigbee-device-image-placeholder .svg-icon{width:22px;height:22px}.zigbee-live-dot{position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:var(--color-action);border:2px solid var(--color-bg-elevated);animation:zigbeeFlash 1s ease-in-out;z-index:1}@keyframes zigbeeFlash{0%{opacity:0;transform:scale(.6)}25%{opacity:1;transform:scale(1)}50%{opacity:.2;transform:scale(.9)}75%{opacity:1;transform:scale(1)}to{opacity:.3;transform:scale(.95)}}.zigbee-device-main{flex:1 1 auto;min-width:0}.zigbee-device-title{display:flex;align-items:center;gap:var(--space-2)}.zigbee-device-name{font-size:14px;font-weight:600;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zigbee-fresh-badge{flex-shrink:0;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--color-text-inverse);background:var(--color-accent);border-radius:var(--radius-pill);padding:1px 7px}.zigbee-device-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);margin-top:3px;font-size:12px;color:var(--color-text-secondary)}.zigbee-device-meta>*+*:before{content:"·";margin-right:var(--space-2);color:var(--color-border-strong)}.zigbee-device-model{font-weight:500}.zigbee-device-ieee{font-family:monospace;font-size:11px;color:var(--color-text-muted, var(--color-text-secondary))}.zigbee-device-status{flex-shrink:0;display:flex;align-items:center;gap:var(--space-3);font-size:12px;color:var(--color-text-secondary)}.zigbee-battery{display:inline-flex;align-items:center;gap:6px;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.zigbee-battery-track{position:relative;width:22px;height:11px;border:1.5px solid currentColor;border-radius:3px;overflow:hidden;flex-shrink:0;opacity:.9}.zigbee-battery-track:after{content:"";position:absolute;right:-4px;top:50%;transform:translateY(-50%);width:2px;height:5px;background:currentColor;border-radius:0 1px 1px 0}.zigbee-battery-fill{position:absolute;top:1px;right:1px;bottom:1px;left:1px;width:0;background:currentColor;border-radius:1px;transition:width var(--dur-slow) var(--ease-out)}.zigbee-battery-pct{font-weight:600;color:var(--color-text-primary);min-width:30px;text-align:right}.zigbee-signal{display:inline-flex;align-items:center;gap:5px;color:var(--color-text-secondary)}.zigbee-signal-bars{display:inline-flex;align-items:flex-end;gap:2px;height:14px}.zigbee-signal-bar{width:3px;border-radius:1px;background:var(--color-border);transition:background var(--dur-med) var(--ease-out)}.zigbee-signal-bar:nth-child(1){height:4px}.zigbee-signal-bar:nth-child(2){height:8px}.zigbee-signal-bar:nth-child(3){height:11px}.zigbee-signal-bar:nth-child(4){height:14px}.zigbee-signal-bar.is-on{background:currentColor}.zigbee-signal--level1{color:var(--color-danger)}.zigbee-signal--level2{color:var(--color-warning)}.zigbee-signal--level3{color:var(--color-success)}.zigbee-signal--level4{color:var(--color-action)}.zigbee-last-seen{color:var(--color-text-muted, var(--color-text-secondary));white-space:nowrap;font-variant-numeric:tabular-nums}.zigbee-image-picker{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border);display:flex;gap:var(--space-3)}.zigbee-image-picker-current{flex-shrink:0;width:48px;height:48px;display:flex;align-items:center;justify-content:center}.zigbee-image-picker-current .zigbee-device-image{width:48px;height:48px}.zigbee-image-picker-controls{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:var(--space-2)}.zigbee-upload-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;cursor:pointer}.zigbee-image-picker-actions{display:flex;gap:var(--space-2)}.module-alert.svg-icon-color{color:var(--color-warning)}.devices-tab{display:flex;flex-direction:column;gap:var(--space-4)}.devices-empty{font-size:13px;color:var(--color-text-secondary);text-align:center;padding:var(--space-5) 0}.devices-category-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.devices-category-label{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary)}.devices-category-count{font-size:11px;font-weight:600;color:var(--color-text-secondary);background:var(--color-surface);border-radius:var(--radius-pill);padding:1px 7px}.devices-category-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-2)}.devices-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.devices-card-top{display:flex;align-items:center;gap:var(--space-2)}.devices-card-image{width:28px;height:28px;flex-shrink:0;object-fit:contain;border-radius:var(--radius-sm);background:var(--color-surface)}.devices-card-image-placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-text-muted, var(--color-text-secondary))}.devices-card-image-placeholder .svg-icon{width:16px;height:16px}.devices-card-title{flex:1 1 auto;min-width:0;font-size:14px;font-weight:600;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devices-card-battery{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--color-text-secondary)}.devices-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-2);font-size:12px;color:var(--color-text-secondary)}.devices-card-model{font-family:Consolas,Menlo,monospace;font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--color-text-primary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1px 6px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devices-card-maker{color:var(--color-text-secondary);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devices-card-lq{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:1px 8px}.devices-card-seen{margin-left:auto;font-size:11px;color:var(--color-text-muted)}.devices-card-powers{display:flex;flex-wrap:wrap;gap:var(--space-1)}.devices-power{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:2px 10px}.devices-power .devices-power-state{color:var(--color-text-muted, var(--color-text-secondary))}.devices-power-active{border-color:var(--color-action);color:var(--color-text-primary)}.devices-power-active .devices-power-state{color:var(--color-action);font-weight:600}.devices-card-sensors{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--color-border);padding-top:var(--space-2)}.devices-sensor{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:13px}.devices-sensor-name{display:inline-flex;align-items:center;gap:6px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devices-sensor-value{flex-shrink:0;font-weight:600;color:var(--color-text-primary)}.devices-sensor-unit{font-weight:400;color:var(--color-text-muted, var(--color-text-secondary))}.zigbee-battery-low,.devices-battery-low{color:var(--color-danger)}.zigbee-battery-mid,.devices-battery-mid{color:var(--color-warning)}.zigbee-battery-ok,.devices-battery-ok{color:var(--color-success)}.zigbee-toolbar-actions{display:flex;align-items:center;gap:var(--space-2)}.zigbee-refresh-btn{display:inline-flex;align-items:center;gap:6px}.zigbee-refresh-btn .zigbee-refresh-ico{transition:transform var(--dur-slow) var(--ease-out)}.zigbee-refresh-btn.is-loading .zigbee-refresh-ico,.zigbee-refresh-btn:disabled .zigbee-refresh-ico{animation:zigbeeSpin .9s linear infinite}@keyframes zigbeeSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.zigbee-gear{flex:0 0 auto}.zigbee-gear .dd-button{display:inline-flex;align-items:center;padding:5px;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.zigbee-gear .dd-button .svg-icon{transition:transform var(--dur-med) var(--ease-out)}.zigbee-gear .dd-button:hover{background:var(--color-surface);color:var(--color-text-primary)}.zigbee-gear .dd-button:hover .svg-icon{transform:rotate(60deg)}.zigbee-sensors{display:flex;flex-direction:column;gap:2px;margin-top:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);background:color-mix(in srgb,var(--color-surface) 55%,transparent);border-radius:var(--radius-sm)}.zigbee-sensor{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);font-size:13px;padding:1px 0}.zigbee-sensor-name{display:inline-flex;align-items:center;gap:6px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.zigbee-sensor-value{flex-shrink:0;font-weight:600;color:var(--color-text-primary);font-variant-numeric:tabular-nums}.zigbee-sensor-unit{font-weight:400;color:var(--color-text-muted, var(--color-text-secondary))}.zigbee-widgets{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-2);padding-left:var(--space-3)}.zigbee-widget-chip{display:inline-flex;align-items:center;font-size:11px;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:1px 8px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.zigbee-widget-chip:hover{border-color:var(--color-border-strong);color:var(--color-text-primary)}.devices-widgets{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-1)}.devices-widget-chip{display:inline-flex;align-items:center;font-size:11px;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:1px 8px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devices-widget-type,.zigbee-widget-type{flex-shrink:0;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted)}.zigbee-widget-type:before{content:"•";margin-right:4px;color:var(--color-border)}.devices-widget-type:before{content:"•";margin-right:4px;color:var(--color-border)}.devices-card-connections{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-1)}.devices-connection-chip{display:inline-flex;align-items:center;font-size:11px;color:var(--color-text-muted, var(--color-text-secondary));background:transparent;border:1px dashed var(--color-border);border-radius:var(--radius-sm);padding:1px 6px;white-space:nowrap}.devices-card-mp3 .devices-card-image{font-size:22px;color:var(--color-action)}.mp3-controls{display:flex;flex-direction:column;gap:var(--space-2);border-top:1px solid var(--color-border);padding-top:var(--space-2)}.mp3-buttons{display:flex;flex-wrap:wrap;gap:var(--space-1)}.mp3-btn{display:inline-flex;align-items:center;gap:6px;min-width:56px;justify-content:center}.mp3-volume,.mp3-track{display:flex;align-items:center;gap:var(--space-2)}.mp3-label{font-size:12px;font-weight:600;color:var(--color-text-secondary);min-width:52px}.mp3-volume input[type=range]{flex:1 1 auto;accent-color:var(--color-action)}.mp3-volume-value{font-size:12px;font-weight:600;color:var(--color-text-primary);min-width:24px;text-align:right}.mp3-track-input{width:72px;padding:3px 8px;font-size:13px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-primary)}.devices-card-ir .devices-card-image{font-size:22px;color:var(--color-action)}.ir-sender-controls{display:flex;flex-direction:column;gap:var(--space-1);border-top:1px solid var(--color-border);padding-top:var(--space-2)}.ir-sender-row{display:flex;align-items:center;gap:var(--space-1)}.ir-sender-input{flex:1 1 auto;min-width:0;padding:4px 8px;font-size:12px;font-family:Consolas,Menlo,monospace;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-primary)}.ir-hint{font-size:11px;color:var(--color-text-muted);line-height:1.4}.ir-receiver{display:flex;flex-direction:column;gap:var(--space-1);border-top:1px solid var(--color-border);padding-top:var(--space-2)}.ir-receiver-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.ir-receiver-field{display:flex;flex-direction:column;gap:2px;min-width:72px}.ir-receiver-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.ir-receiver-value{font-size:13px;font-weight:600;font-family:Consolas,Menlo,monospace;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.ir-received-time{font-size:11px;color:var(--color-text-muted)}.ir-receiver-empty{border-top:1px solid var(--color-border);padding-top:var(--space-2);font-size:12px;color:var(--color-text-muted)}@media only screen and (max-width: 500px){.tab .tab-inner{padding-top:0}.tab .tab-title{display:none!important}.tab .tab-icon{left:0!important}.tab-dashboard{min-width:100px}.tab-dashboard .tab-title{display:inline-block!important}.tab-cam,.tab-door{min-width:50px}.tab-login .user-name{display:none!important}}a{color:var(--link-color);text-decoration:none;transition:color .15s ease}a:visited{color:var(--color-text-secondary)}a:hover{color:var(--accent-hover);text-decoration:underline}.error-info{display:flex;align-items:center;justify-content:center;flex-direction:column;height:100%;-webkit-user-select:none;user-select:none}.error-info img{width:100px;height:100px}.error-info .error-title{font-size:18px;font-weight:700;margin:10px}.error-info .error-description{margin:10px}.error-info .error-action{margin:10px;cursor:pointer;text-decoration:underline}:root[data-theme=fulldark] .error-info img{filter:invert(1)}@media (prefers-color-scheme: dark){:root[data-theme=auto] .error-info img{filter:invert(1)}}.svg-icon,.svg-icon-invert,.svg-icon-color{height:1em;display:inline-block;vertical-align:text-top;-webkit-user-select:none;user-select:none}.svg-icon-invert{filter:invert(100%);opacity:.8}.svg-icon-color{filter:none!important;opacity:1!important}.button{border:none;color:var(--color-text-inverse);padding:10px 22px;text-align:center;text-decoration:none;display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;border-radius:var(--radius-sm);cursor:pointer;letter-spacing:.2px;transition:color var(--dur-fast) ease,background-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform .1s ease}.button:active{transform:scale(.97)}.button:hover{box-shadow:var(--shadow-sm)}.button-disabled{opacity:.5;pointer-events:none}.button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--color-accent-bg)}.button-cancel{background-color:var(--color-text-muted)}.button-cancel:hover{background-color:var(--color-text-secondary)}.button.button-small{font-size:12px;padding:4px 10px;border-radius:var(--radius-sm)}.button-success{background-color:var(--color-success)}.button-success:hover{filter:brightness(1.15)}.button-secondary{background-color:var(--color-border-strong)}.button-secondary:hover{filter:brightness(1.2)}.button-danger{background-color:var(--color-danger)}.button-danger:hover{filter:brightness(1.15)}.button-primary{background-color:var(--accent-color);color:var(--accent-text);font-family:var(--font-display);letter-spacing:.4px}.button-primary:hover{background-color:var(--accent-hover);color:var(--accent-hover-text)}.button-warning{background-color:var(--color-warning);color:var(--color-text-inverse)}.button-warning:hover{filter:brightness(1.15)}.button-info{background-color:var(--color-info)}.button-info:hover{filter:brightness(1.15)}.button-light{background-color:transparent;color:var(--text-primary);border:1px solid var(--border-color)}.button-light:hover{background-color:var(--hover-bg)}.link{cursor:pointer;padding:5px 0;display:inline-block;color:var(--color-accent);transition:color var(--dur-fast) ease}.link:hover{text-decoration:underline;color:var(--color-info)}.battery-level{box-sizing:border-box;position:relative;display:inline-block;width:20px;height:12px;border:2px solid;border-radius:3px;margin-left:5px;color:var(--color-success)}.battery-level.battery-level-low{color:var(--color-danger)}.battery-level.battery-level-mid{color:var(--color-warning)}.battery-level.battery-level-ok{color:var(--color-success)}.battery-level:after,.battery-level:before{content:"";display:block;box-sizing:border-box;position:absolute;height:6px;background:currentColor;top:1px}.battery-level:before{right:-4px;border-radius:3px;width:4px}.battery-level:after{width:var(--bl, 14px);left:1px}.short-timestamp{position:absolute;bottom:3px;left:5px;opacity:.5;font-size:.75em;display:flex;gap:3px;align-items:center;color:var(--color-text-secondary)}.dropdown{display:inline-block;position:relative}.dropdown .dd-button{display:flex;align-items:center;border-radius:var(--radius-sm);background-color:var(--color-bg-elevated);border:1px solid var(--color-border);cursor:pointer;white-space:nowrap;padding:4px 22px 4px 6px;line-height:1.4;transition:background-color var(--dur-fast) ease,border-color var(--dur-fast) ease;color:var(--color-text-primary)}.dropdown .dd-button:hover{background-color:var(--color-surface);border-color:var(--color-border-strong)}.dropdown .dd-button:after{content:"";position:absolute;top:50%;right:7px;transform:translateY(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--color-text-secondary)}.dropdown .svg-icon{height:1.2em}.dd-menu{position:fixed;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:4px 0;margin:0;box-shadow:var(--shadow-md);background-color:var(--color-bg-elevated);list-style-type:none;z-index:var(--z-dropdown);min-width:140px;animation:dd-open var(--dur-fast) ease}@keyframes dd-open{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dd-menu li{padding:9px 18px;cursor:pointer;white-space:nowrap;font-size:14px;color:var(--color-text-primary);transition:background-color var(--dur-fast) ease}.dd-menu li:hover{background-color:var(--color-surface)}.dd-menu li.dd-loading{cursor:default;color:var(--color-text-muted);font-style:italic;display:flex;align-items:center;gap:var(--space-2);pointer-events:none}.dd-menu li a{display:block;margin:-9px -18px;padding:9px 18px;color:var(--color-text-primary);text-decoration:none}.dd-menu li.divider{padding:0;border-bottom:1px solid var(--color-border);margin:4px 0}body.modal-open{overflow:hidden}.modal{position:fixed;z-index:var(--z-modal);left:0;top:0;width:100%;height:100%;overflow:auto;background-color:var(--color-overlay);display:flex;margin:auto;box-sizing:border-box;animation:modal-fade-in var(--dur-med) ease}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal-top .modal-content{margin-top:40px;margin-bottom:auto;max-height:calc(100vh - 80px);overflow:hidden}.modal-top .modal-body{flex:1;min-height:0;overflow-y:auto}.modal--hiding{animation:modal-fade-out var(--dur-med) ease forwards}.modal--hiding .modal-content{animation:modal-content-out var(--dur-med) var(--ease-out) forwards}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.modal-content{position:relative;background-color:var(--color-modal-panel);margin:auto;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-lg);width:90%;box-shadow:var(--shadow-md);box-sizing:border-box;display:flex;flex-direction:column;animation:modal-content-in var(--dur-med) var(--ease-out)}@keyframes modal-content-in{0%{opacity:0;transform:translateY(-8px);clip-path:inset(0 50% 0 50% round var(--radius-lg))}to{opacity:1;transform:translateY(0);clip-path:inset(0 0 0 0 round var(--radius-lg))}}@keyframes modal-content-out{0%{opacity:1;transform:translateY(0);clip-path:inset(0 0 0 0 round var(--radius-lg))}to{opacity:0;transform:translateY(-8px);clip-path:inset(0 50% 0 50% round var(--radius-lg))}}.modal-header{padding:14px 18px;background-color:var(--color-modal-panel);color:var(--color-text-primary);display:flex;flex-direction:row-reverse;align-items:center;gap:var(--space-2);border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:1px solid var(--color-border)}.modal-header h2{margin:0;font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;flex:1}.modal .close{color:var(--color-text-muted);font-size:24px;font-weight:700;cursor:pointer;transition:color var(--dur-fast) ease,background-color var(--dur-fast) ease;line-height:1;padding:0 6px;border-radius:6px;-webkit-user-select:none;user-select:none}.modal .close:hover{color:var(--color-text-primary);background-color:var(--color-surface)}.modal-body{position:relative;padding:18px;color:var(--color-text-primary)}.modal-footer{padding:var(--space-2) var(--space-3);background-color:var(--color-modal-panel);border-top:1px solid var(--color-border);color:var(--color-text-primary);display:flex;flex-direction:row-reverse;gap:var(--space-2);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.modal-footer .button{margin:var(--space-1);padding:7px 16px;cursor:pointer}.modal-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);position:absolute;top:0;left:0;bottom:0;right:0;background-color:color-mix(in srgb,var(--color-modal-panel) 72%,transparent);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);color:var(--color-text-secondary);font-size:13px}.modal .widget-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-6);color:var(--color-text-secondary);font-size:13px}.modal .modal-suspense-spinner{position:relative;width:56px;height:56px}.modal .modal-suspense-spinner:before,.modal .modal-suspense-spinner:after{content:"";position:absolute;border-radius:50%;border-style:solid;border-color:var(--color-accent) transparent transparent transparent}.modal .modal-suspense-spinner:before{top:0;right:0;bottom:0;left:0;border-width:4px;animation:modal-spinner 1s cubic-bezier(.5,0,.5,1) infinite}.modal .modal-suspense-spinner:after{top:14px;right:14px;bottom:14px;left:14px;border-width:3px;opacity:.6;animation:modal-spinner 1.4s cubic-bezier(.5,0,.5,1) infinite reverse}@keyframes modal-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media only screen and (max-width: 500px){.modal-content{width:100%;border-radius:0}}.mqtt-console{display:flex;flex-direction:column;font-family:var(--font-mono);font-size:12px;background:var(--formulas-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;height:400px;min-height:0}.mqtt-console-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--color-border);background:var(--color-bg-secondary);flex:none}.mqtt-console-title{font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--color-text-secondary);flex:none}.mqtt-console-body{padding:12px 14px;flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:5px}.mqtt-console-input{display:flex;align-items:center;gap:9px;padding:10px 14px;border-top:1px solid var(--color-border);background:var(--color-bg-secondary);flex:none}.mqtt-filter{flex:1 1 auto;min-width:0;background:transparent;border:1px solid var(--color-border);border-radius:4px;padding:3px 8px;color:var(--color-text-primary);font-family:var(--font-mono);font-size:11px;outline:none;transition:border-color var(--dur-fast) ease}.mqtt-filter::placeholder{color:var(--color-text-muted)}.mqtt-filter:focus{border-color:var(--color-border-strong)}.mqtt-conn{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.08em;color:var(--status-ok);flex:none}.mqtt-conn i{width:6px;height:6px;border-radius:50%;background:var(--status-ok);animation:mqtt-pulse 2.2s ease-in-out infinite}@keyframes mqtt-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--status-ok) 45%,transparent)}50%{box-shadow:0 0 0 5px transparent}}.mqtt-line{display:flex;align-items:baseline;gap:10px;line-height:1.5}.mqtt-ts{color:var(--color-text-muted);flex:none;font-size:11px}.mqtt-lvl{flex:none;min-width:40px;text-align:center;font-size:10px;font-weight:500;letter-spacing:.08em;padding:1px 5px;border-radius:4px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary)}.mqtt-lvl.mqt{color:var(--link-color);border-color:color-mix(in srgb,var(--link-color) 40%,transparent);background:color-mix(in srgb,var(--link-color) 10%,transparent)}.mqtt-lvl.cmd{color:var(--status-warn);border-color:color-mix(in srgb,var(--status-warn) 40%,transparent);background:color-mix(in srgb,var(--status-warn) 10%,transparent)}.mqtt-lvl.rst{color:var(--status-bad);border-color:color-mix(in srgb,var(--status-bad) 40%,transparent);background:color-mix(in srgb,var(--status-bad) 10%,transparent)}.mqtt-msg{color:var(--color-text-secondary);word-break:break-word}.mqtt-msg .j-key{color:var(--link-color)}.mqtt-msg .j-str{color:var(--status-ok)}.mqtt-msg .j-num{color:var(--status-warn)}.mqtt-time-ms{margin-left:10px;padding:2px;font-size:10px;color:var(--color-text-muted);background:color-mix(in srgb,var(--color-text-muted) 18%,transparent);border-radius:3px;white-space:nowrap}.mqtt-prompt{color:var(--status-ok);font-family:var(--font-mono);font-size:12px;flex:none}.mqtt-command{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--color-text-primary);font-family:var(--font-mono);font-size:12px}.mqtt-command::placeholder{color:var(--color-text-muted)}.loader-ring{display:inline-block;position:relative;color:var(--color-accent)}.loader-ring>div{box-sizing:border-box;display:block;position:absolute;border-radius:50%;animation:loader-ring 1.1s cubic-bezier(.5,0,.5,1) infinite;width:80%;height:80%;margin:12.5%;border-style:solid;border-color:currentColor transparent transparent transparent}.loader-ring div:nth-child(1){animation-delay:-.44s}.loader-ring div:nth-child(2){animation-delay:-.22s}.loader-ring div:nth-child(3){animation-delay:0s}@keyframes loader-ring{0%{transform:rotate(0);opacity:1}50%{opacity:.35}to{transform:rotate(360deg);opacity:1}}.svg-img-loading{animation:svg-img-spin .9s linear infinite;color:var(--color-text-muted)}@keyframes svg-img-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.timer{width:24px;height:24px;background-color:transparent;box-shadow:inset 0 0 0 2px var(--color-text-muted);border-radius:50%;position:relative}.timer:after,.timer:before{position:absolute;content:"";background-color:var(--color-text-muted)}.timer:after{width:10px;height:2px;top:11px;left:11px;-webkit-transform-origin:1px 1px;-moz-transform-origin:1px 1px;transform-origin:1px 1px;-webkit-animation:minhand 2s linear infinite;-moz-animation:minhand 2s linear infinite;animation:minhand 2s linear infinite}.timer:before{width:8px;height:2px;top:11px;left:11px;-webkit-transform-origin:1px 1px;-moz-transform-origin:1px 1px;transform-origin:1px 1px;-webkit-animation:hrhand 8s linear infinite;-moz-animation:hrhand 8s linear infinite;animation:hrhand 8s linear infinite}@-webkit-keyframes minhand{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes minhand{0%{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@keyframes minhand{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes hrhand{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes hrhand{0%{-moz-transform:rotate(0deg)}to{-moz-transform:rotate(360deg)}}@keyframes hrhand{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.page-skeleton{--skeleton-base: color-mix(in srgb, var(--color-border) 45%, transparent);--skeleton-shine: color-mix(in srgb, var(--color-border) 80%, transparent);display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2) 0 var(--space-6)}.page-skeleton .page-skeleton-block{height:12px;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--skeleton-base) 25%,var(--skeleton-shine) 50%,var(--skeleton-base) 75%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite}.page-skeleton .page-skeleton-body{display:flex;flex-direction:column;gap:var(--space-2)}.page-skeleton .page-skeleton-body--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.page-skeleton .page-skeleton-body--chart .page-skeleton-item{min-height:220px;align-items:stretch}.page-skeleton .page-skeleton-body--chart .page-skeleton-item .page-skeleton-lines{flex:1;gap:10px;align-items:flex-end}.page-skeleton .page-skeleton-body--chart .page-skeleton-item .page-skeleton-lines .page-skeleton-block{height:auto;min-height:24%;align-self:flex-end}.page-skeleton .page-skeleton-item{display:flex;align-items:center;gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-elevated);padding:var(--space-3)}.page-skeleton .page-skeleton-thumb{flex-shrink:0;width:40px;height:40px;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--skeleton-base) 25%,var(--skeleton-shine) 50%,var(--skeleton-base) 75%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite}.page-skeleton .page-skeleton-lines{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:8px}.page-skeleton .page-skeleton-badge{flex-shrink:0;width:56px;height:20px;border-radius:var(--radius-pill)}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.ct-chart{height:calc(100vh - 110px)!important}.ct-chart svg{height:calc(100vh - 110px)!important}.ct-line.ct-threshold-above,.ct-point.ct-threshold-above,.ct-bar.ct-threshold-above{stroke:var(--color-danger)}.ct-line.ct-threshold-below,.ct-point.ct-threshold-below,.ct-bar.ct-threshold-below{stroke:var(--color-success)}.ct-area.ct-threshold-above{fill:var(--color-danger)}.ct-area.ct-threshold-below{fill:var(--color-success)}.ct-series-a .ct-bar.ct-threshold-above{stroke:var(--color-danger)}.ct-series-a .ct-bar.ct-threshold-below{stroke:var(--color-success)}.ct-line{stroke-width:2px;fill:none}.ct-grid{stroke:var(--color-border);stroke-opacity:.45;stroke-width:1px;stroke-dasharray:none}.ct-label{fill:var(--color-text-muted);color:var(--color-text-muted);font-size:.7em;opacity:1}.ct-area{fill-opacity:.08}.sensor{display:inline-block;margin:0 15px 10px;cursor:pointer}.sensor.inactive{text-decoration:line-through}.sensor .legend{display:inline-block;width:10px;height:10px;border-radius:50%}.ct-point{display:none}:root[data-theme=fulldark] .ct-grid{stroke:var(--color-border);stroke-opacity:.3}:root[data-theme=fulldark] .ct-area{fill-opacity:.12}:root[data-theme=fulldark] .ct-label{fill:var(--color-text-muted);color:var(--color-text-muted);opacity:1}@media (prefers-color-scheme: dark){:root[data-theme=auto] .ct-grid{stroke:var(--color-border);stroke-opacity:.3}:root[data-theme=auto] .ct-area{fill-opacity:.12}:root[data-theme=auto] .ct-label{fill:var(--color-text-muted);color:var(--color-text-muted);opacity:1}}.range-selector{position:relative}.range-selector-text{cursor:pointer}.range-selector-text:hover{text-decoration:underline}.range-selector .rlc-calendar{position:absolute;left:0;z-index:300;background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 16px var(--color-shadow);padding:8px;min-width:260px;animation:rlc-open .12s ease;color:var(--color-text-primary);font-size:13px}@keyframes rlc-open{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.range-selector .rlc-details{padding:8px 4px 10px;border-bottom:1px solid var(--color-border);margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.range-selector .rlc-date-details{display:flex;align-items:center;gap:10px}.range-selector .rlc-date-number{font-size:36px;font-weight:700;line-height:1;color:var(--color-text-primary)}.range-selector .rlc-date-day-month-year{display:flex;flex-direction:column;gap:2px}.range-selector .rlc-detail-day{font-size:13px;font-weight:600;color:var(--color-text-primary)}.range-selector .rlc-detail-month-year{font-size:12px;color:var(--color-text-secondary)}.range-selector .rlc-detail-year{color:var(--color-text-secondary)}.range-selector .rlc-month-and-year-wrapper{display:flex;align-items:center;justify-content:space-between;padding:2px 0 8px;border-bottom:1px solid var(--color-border);border-top:none}.range-selector .rlc-day-disabled,.range-selector .rlc-day-disabled:hover{background-color:var(--color-bg)}.range-selector .rlc-day.rlc-day-start-selection{border-top-left-radius:50%;border-bottom-left-radius:50%;background-color:var(--accent-hover)}.range-selector .rlc-day.rlc-day-start-selection:hover{background-color:var(--color-accent)}.range-selector .rlc-day.rlc-day-inside-selection{border-radius:0;background-color:var(--accent-hover)}.range-selector .rlc-day.rlc-day-inside-selection:hover{background-color:var(--color-accent)}.range-selector .rlc-day.rlc-day-end-selection{border-top-right-radius:50%;border-bottom-right-radius:50%;background-color:var(--accent-hover)}.range-selector .rlc-day.rlc-day-end-selection:hover{background-color:var(--color-accent)}.range-selector .rlc-month-and-year{font-size:13px;font-weight:600;color:var(--color-text-primary)}.range-selector .rlc-month-and-year span{color:var(--color-text-secondary)}.range-selector .rlc-navigation-button-wrapper{display:flex;gap:2px}.range-selector .rlc-navigation-button{cursor:pointer;padding:3px 7px;border-radius:5px;color:var(--color-text-secondary);font-size:12px;transition:background-color .12s ease,color .12s ease;width:25px;height:25px;display:flex;align-items:center;justify-content:center}.range-selector .rlc-navigation-button:hover{background-color:var(--color-surface);color:var(--color-text-primary)}.range-selector .rlc-days-label{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.range-selector .rlc-day-label{text-align:center;font-size:11px;font-weight:600;color:var(--color-text-secondary);padding:2px 0;text-transform:uppercase;letter-spacing:.04em}.range-selector .rlc-days{display:grid;grid-template-columns:repeat(7,1fr)}.range-selector .rlc-day{text-align:center;padding:5px 2px;cursor:pointer;font-size:13px;color:var(--color-text-primary);transition:background-color .1s ease}.range-selector .rlc-day:hover{background-color:var(--color-surface)}.range-selector .rlc-day-out-of-month{color:var(--color-text-secondary);opacity:.45}.range-selector .rlc-day-disabled{color:var(--color-text-secondary);opacity:.35;cursor:default;pointer-events:none}.range-selector .rlc-day-disabled:hover{background-color:transparent}.range-selector .rlc-day-today{font-weight:700;color:var(--color-text-primary)}.range-selector .rlc-day-selected{background-color:var(--color-accent, #3b82f6)!important;color:#fff!important;font-weight:600;border-radius:5px}.range-selector .rlc-day-selected:hover{background-color:var(--color-accent, #3b82f6)}.range-selector .rlc-day-in-range{background-color:var(--color-surface);border-radius:0}.inline-editor{text-decoration:underline;text-decoration-style:dashed}.inline-editor input{width:100%;max-width:100%;text-align:center;box-sizing:border-box;background:transparent;border:none;color:#fff;font-family:inherit;font-size:inherit;font-weight:inherit;height:1em}.inline-editor.inline-editor-no-decoration{text-decoration:none;text-decoration-style:none}div[id^=popover]{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text-primary)}div[id^=popover] [class*=-Popover]{background-color:transparent;border-radius:0 0 var(--radius-md) var(--radius-md)}div[id^=popover] [class*=-Arrow]{background-color:var(--color-bg-elevated)}div[id^=popover] [class*=-ColorPicker]{color:var(--color-text-primary)}div[id^=popover] input{box-sizing:border-box;width:100%;min-width:44px;padding:3px 6px;font-family:inherit;font-size:inherit;color:var(--color-text-primary);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}div[id^=popover] input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-bg)}span[class*=-InputColor]:has(>span){box-sizing:border-box;display:inline-block;padding:3px;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}span[class*=-InputColor]:has(>span):hover{border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-accent-bg)}span[class*=-InputColor]:has(>span)>span{border-radius:calc(var(--radius-sm) - 2px)}.sensor-info{padding:0 5px;line-height:1em;display:flex;gap:3px}.sensor-info img{padding-right:3px;position:relative;height:1em;top:.125em}.sensor-info .sensor-icon-text{font-weight:800;font-size:.8em;display:inline-block;margin:0 4px;border:1px solid;padding:0 2px;vertical-align:text-bottom}.sensor-info .power-on{filter:invert(69%) sepia(22%) saturate(1000%) hue-rotate(112deg)}.switch-small{border-radius:12px!important}.switch-small .react-switch-bg{height:24px!important;width:48px!important;border-radius:12px!important;box-shadow:inset 0 1px 3px #00000040!important}.switch-small .react-switch-bg>div{height:24px!important;width:26px!important}.switch-small .react-switch-handle{height:20px!important;width:20px!important;top:2px!important;box-shadow:0 1px 4px #0000004d!important}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.slider-wrapper{position:relative;background-color:#0000004d;width:90%;max-width:400px;height:80px;border:white;border-radius:40px;display:flex;align-items:center;justify-content:center}.slider-wrapper .slide-text{color:var(--color-text-primary);font-size:24px;text-transform:uppercase;font-family:Roboto,sans-serif;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-wrapper .slider{transition:width .3s,border-radius .3s,height .3s;background-color:.3s;transition-timing-function:ease-in-out;position:absolute;left:-10px;background-color:var(--color-border-strong);width:100px;height:100px;border-radius:50%;will-change:transform;cursor:pointer;display:flex;align-items:center;justify-content:center}.slider-wrapper .slider.unlocked{transition:all .3s;background-color:var(--color-action);transition-timing-function:ease-in-out;width:100%;left:0!important;height:inherit;border-radius:inherit}.slider-wrapper .slider .lock-image{width:64px;pointer-events:none}.slider-wrapper .slider .locker{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.slider-wrapper .loader{border:7px solid var(--color-surface);border-top:7px solid var(--color-accent);border-radius:50%;width:32px;height:32px;animation:spin 2s linear infinite;display:inline-block}:root[data-theme=fulldark] .slider-wrapper .slide-text{color:var(--color-text-secondary)}:root[data-theme=fulldark] .slider-wrapper .slider{background-color:var(--color-border-strong)}:root[data-theme=fulldark] .slider-wrapper{background-color:#ffffff26}@media (prefers-color-scheme: dark){:root[data-theme=auto] .slider-wrapper .slide-text{color:var(--color-text-secondary)}:root[data-theme=auto] .slider-wrapper .slider{background-color:var(--color-border-strong)}:root[data-theme=auto] .slider-wrapper{background-color:#ffffff26}}.react-select-container .react-select__control{background-color:var(--color-bg-elevated);border-color:var(--color-border);transition:border-color .15s ease,box-shadow .15s ease}.react-select-container .react-select__control:hover{border-color:var(--color-border-strong)}.react-select-container .react-select__control--is-focused{border-color:var(--color-accent);box-shadow:0 0 0 3px #3b82f62e}.react-select-container .react-select__control .react-select__single-value{color:var(--color-text-primary)}.react-select-container .react-select__control .react-select__multi-value{background-color:var(--color-surface)}.react-select-container .react-select__control .react-select__multi-value .react-select__multi-value__label{color:var(--color-text-primary)}.react-select-container .react-select__control .react-select__placeholder{color:var(--color-text-muted)}.react-select-container .react-select__input{color:var(--color-text-primary)}.react-select-container .react-select__menu{background-color:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 16px var(--color-shadow)}.react-select-container .react-select__menu .react-select__option{color:var(--color-text-primary)}.react-select-container .react-select__menu .react-select__option:active,.react-select-container .react-select__menu .react-select__option--is-focused{background-color:var(--color-surface)}.react-select-container .react-select__menu .react-select__option--is-selected{background-color:var(--color-accent);color:var(--color-text-inverse)}@media only screen and (max-width: 500px){.react-select__clear-indicator{padding:5px 5px 5px 0}.react-select__dropdown-indicator{padding:5px}.react-select__value-container{padding:2px}}.form-group{padding:6px 0;display:flex;align-items:center;gap:8px}.form-group .form-group-label{min-width:110px;max-width:110px;display:flex;align-items:center;justify-content:flex-end;padding-right:8px;font-size:13px;color:var(--color-text-secondary);font-weight:500}.form-group .form-group-input,.form-group .react-select-container{width:100%;box-sizing:border-box;border:1px solid transparent}.form-group input.form-group-input{padding:8px 12px;border:1px solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--input-bg);color:var(--text-primary);font-family:inherit;font-size:13px;box-sizing:border-box;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.form-group input.form-group-input:hover{border-color:var(--color-border-strong)}.form-group input.form-group-input:focus{border-color:var(--accent-color);box-shadow:0 0 0 3px var(--accent-background)}@media only screen and (max-width: 500px){.form-group{flex-direction:column;align-items:flex-start}.form-group .form-group-input,.form-group .react-select-container{width:100%}.form-group .form-group-label{min-width:inherit;max-width:inherit;text-align:left;padding-right:0}}.table{border-collapse:collapse;width:100%;font-size:14px}.table,.table th,.table td{border:1px solid var(--color-border);padding:7px 10px}.table th{text-align:left;font-weight:600;font-size:13px;background-color:var(--color-nav-active);color:var(--color-text-inverse);letter-spacing:.3px}.table tr.selected{background-color:#3b82f626!important}.table tr:nth-child(2n){background-color:var(--color-surface)}.table tr:hover{background-color:var(--color-border)}.text-match{background-color:var(--search-highlight)}:root[data-theme=fulldark] .text-match{color:#e6e6a8}@media (prefers-color-scheme: dark){:root[data-theme=auto] .text-match{color:#e6e6a8}}.round-button-wrapper{position:relative;display:inline-block;margin-right:-4px;-webkit-user-select:none;user-select:none}.round-button-wrapper .round-button-image{height:48px;width:48px;top:9px;position:relative;opacity:.8;color:var(--color-text-primary)}.round-button-wrapper .round-button-image path,.round-button-wrapper .round-button-image rect,.round-button-wrapper .round-button-image circle,.round-button-wrapper .round-button-image polygon,.round-button-wrapper .round-button-image polyline,.round-button-wrapper .round-button-image ellipse,.round-button-wrapper .round-button-image line{fill:currentColor}.round-button-wrapper a.round-button{display:block;text-decoration:none;background-color:#e8eaed;background:linear-gradient(145deg,#f1f2f4,#d1d5db);color:#697586;margin:10px;width:72px;height:72px;position:relative;text-align:center;line-height:72px;border-radius:50%;box-shadow:0 4px 10px #929caa,inset 0 2px 3px #fff;border:solid 1px #cbd0d7;transition:box-shadow .15s ease,background .15s ease}.round-button-wrapper a.round-button:before{content:"";display:block;background:#f6f7f8;border-top:2px solid #bdc3cb;position:absolute;top:-9px;left:-9px;bottom:-9px;right:-9px;z-index:-1;border-radius:50%;box-shadow:inset 0 8px 48px #bdc3cb}.round-button-wrapper.small a.round-button{width:20px;height:20px;box-shadow:0 1px 3px #929caa,inset 0 1px 1px #fff;display:flex;align-items:center;justify-content:center;margin:0 10px}.round-button-wrapper.small a.round-button:before{display:none}.round-button-wrapper.small .round-button-image{height:12px;width:12px;top:0;left:0;opacity:1}.round-button-wrapper a.round-button:active{box-shadow:0 2px 4px #929caa inset;background:linear-gradient(145deg,#cbd0d7,#bdc3cb)}.round-button-wrapper a.round-button:hover{text-decoration:none;color:#31373f;background:linear-gradient(145deg,#f3f4f6,#dadde2)}.round-button-wrapper.disabled a.round-button{pointer-events:none;opacity:.5}.round-button-wrapper.red .round-button-image{opacity:.95;color:#ffffffeb}.round-button-wrapper.red a.round-button,.round-button-wrapper.red a.round-button:visited{background-color:#f66;background:linear-gradient(145deg,#f66,#f33);color:#c00;box-shadow:0 4px 10px #b30000,inset 0 2px 3px #f99}.round-button-wrapper.red a.round-button:before{background:#f99;border-top:2px solid red;box-shadow:inset 0 8px 48px red}.round-button-wrapper.red a.round-button:active{box-shadow:0 2px 5px #c00 inset}.round-button-wrapper.red a.round-button:hover{color:#000;background:linear-gradient(145deg,#ff8585,#f66)}.round-button-wrapper.blue .round-button-image{opacity:.95;color:#ffffffeb}.round-button-wrapper.blue a.round-button,.round-button-wrapper.blue a.round-button:visited{background-color:#75b3ff;background:linear-gradient(145deg,#75b3ff,#4297ff);color:#0062db;box-shadow:0 4px 10px #0057c2,inset 0 2px 3px #a8cfff}.round-button-wrapper.blue a.round-button:before{background:#a8cfff;border-top:2px solid #0f7bff;box-shadow:inset 0 8px 48px #0f7bff}.round-button-wrapper.blue a.round-button:active{box-shadow:0 2px 5px #0062db inset}.round-button-wrapper.blue a.round-button:hover{color:#00070f;background:linear-gradient(145deg,#94c4ff,#75b3ff)}.round-button-wrapper.orange .round-button-image{opacity:.95;color:#ffffffeb}.round-button-wrapper.orange a.round-button,.round-button-wrapper.orange a.round-button:visited{background-color:#f79030;background:linear-gradient(145deg,#f79030,#eb7609);color:#894505;box-shadow:0 4px 10px #703804,inset 0 2px 3px #f9aa61}.round-button-wrapper.orange a.round-button:before{background:#f9aa61;border-top:2px solid #ba5d07;box-shadow:inset 0 8px 48px #ba5d07}.round-button-wrapper.orange a.round-button:active{box-shadow:0 2px 5px #894505 inset}.round-button-wrapper.orange a.round-button:hover{color:#000;background:linear-gradient(145deg,#f8a04d,#f79030)}.round-button-wrapper.green .round-button-image{opacity:.95;color:#ffffffeb}.round-button-wrapper.green a.round-button,.round-button-wrapper.green a.round-button:visited{background-color:#7affa2;background:linear-gradient(145deg,#7affa2,#47ff7e);color:#00e043;box-shadow:0 4px 10px #00c73c,inset 0 2px 3px #adffc6}.round-button-wrapper.green a.round-button:before{background:#adffc6;border-top:2px solid #14ff5b;box-shadow:inset 0 8px 48px #14ff5b}.round-button-wrapper.green a.round-button:active{box-shadow:0 2px 5px #00e043 inset}.round-button-wrapper.green a.round-button:hover{color:#001406;background:linear-gradient(145deg,#99ffb7,#7affa2)}:root[data-theme=fulldark] .round-button-wrapper.red a.round-button,:root[data-theme=fulldark] .round-button-wrapper.red a.round-button:visited{background:linear-gradient(145deg,#b84040,#8c2a2a);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=fulldark] .round-button-wrapper.red a.round-button:before{background:#c04848;border-top:2px solid #6e2020;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=fulldark] .round-button-wrapper.red a.round-button:hover{background:linear-gradient(145deg,#c44c4c,#993030)}:root[data-theme=fulldark] .round-button-wrapper.red a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=fulldark] .round-button-wrapper.blue a.round-button,:root[data-theme=fulldark] .round-button-wrapper.blue a.round-button:visited{background:linear-gradient(145deg,#3a6fbb,#2a5090);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=fulldark] .round-button-wrapper.blue a.round-button:before{background:#4278c0;border-top:2px solid #1e3f72;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=fulldark] .round-button-wrapper.blue a.round-button:hover{background:linear-gradient(145deg,#4480cc,#305ca0)}:root[data-theme=fulldark] .round-button-wrapper.blue a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=fulldark] .round-button-wrapper.orange a.round-button,:root[data-theme=fulldark] .round-button-wrapper.orange a.round-button:visited{background:linear-gradient(145deg,#b86818,#8c4c0e);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=fulldark] .round-button-wrapper.orange a.round-button:before{background:#c07020;border-top:2px solid #6e3c0a;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=fulldark] .round-button-wrapper.orange a.round-button:hover{background:linear-gradient(145deg,#c47422,#9a5412)}:root[data-theme=fulldark] .round-button-wrapper.orange a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=fulldark] .round-button-wrapper.green a.round-button,:root[data-theme=fulldark] .round-button-wrapper.green a.round-button:visited{background:linear-gradient(145deg,#2e8c50,#1e6638);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=fulldark] .round-button-wrapper.green a.round-button:before{background:#369658;border-top:2px solid #164e2a;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=fulldark] .round-button-wrapper.green a.round-button:hover{background:linear-gradient(145deg,#35a060,#226040)}:root[data-theme=fulldark] .round-button-wrapper.green a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=fulldark] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button,:root[data-theme=fulldark] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:visited{background:linear-gradient(145deg,#3a3f4b,#2a2e38);color:#c8cdd8;border-color:#4a5060;box-shadow:0 4px 10px #00000080,inset 0 1px 2px #ffffff0f}:root[data-theme=fulldark] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:before{background:#3f4452;border-top:2px solid #555d6e;box-shadow:inset 0 8px 48px #0000004d}:root[data-theme=fulldark] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:hover{color:#e2e8f0;background:linear-gradient(145deg,#454b5a,#333845)}:root[data-theme=fulldark] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:active{box-shadow:0 2px 6px #0009 inset;background:linear-gradient(145deg,#2e3240,#22262e)}@media (prefers-color-scheme: dark){:root[data-theme=auto] .round-button-wrapper.red a.round-button,:root[data-theme=auto] .round-button-wrapper.red a.round-button:visited{background:linear-gradient(145deg,#b84040,#8c2a2a);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=auto] .round-button-wrapper.red a.round-button:before{background:#c04848;border-top:2px solid #6e2020;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=auto] .round-button-wrapper.red a.round-button:hover{background:linear-gradient(145deg,#c44c4c,#993030)}:root[data-theme=auto] .round-button-wrapper.red a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=auto] .round-button-wrapper.blue a.round-button,:root[data-theme=auto] .round-button-wrapper.blue a.round-button:visited{background:linear-gradient(145deg,#3a6fbb,#2a5090);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=auto] .round-button-wrapper.blue a.round-button:before{background:#4278c0;border-top:2px solid #1e3f72;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=auto] .round-button-wrapper.blue a.round-button:hover{background:linear-gradient(145deg,#4480cc,#305ca0)}:root[data-theme=auto] .round-button-wrapper.blue a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=auto] .round-button-wrapper.orange a.round-button,:root[data-theme=auto] .round-button-wrapper.orange a.round-button:visited{background:linear-gradient(145deg,#b86818,#8c4c0e);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=auto] .round-button-wrapper.orange a.round-button:before{background:#c07020;border-top:2px solid #6e3c0a;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=auto] .round-button-wrapper.orange a.round-button:hover{background:linear-gradient(145deg,#c47422,#9a5412)}:root[data-theme=auto] .round-button-wrapper.orange a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=auto] .round-button-wrapper.green a.round-button,:root[data-theme=auto] .round-button-wrapper.green a.round-button:visited{background:linear-gradient(145deg,#2e8c50,#1e6638);box-shadow:0 4px 10px #00000080,inset 0 2px 3px #ffffff14}:root[data-theme=auto] .round-button-wrapper.green a.round-button:before{background:#369658;border-top:2px solid #164e2a;box-shadow:inset 0 8px 48px #00000059}:root[data-theme=auto] .round-button-wrapper.green a.round-button:hover{background:linear-gradient(145deg,#35a060,#226040)}:root[data-theme=auto] .round-button-wrapper.green a.round-button:active{box-shadow:0 2px 6px #0009 inset}:root[data-theme=auto] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button,:root[data-theme=auto] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:visited{background:linear-gradient(145deg,#3a3f4b,#2a2e38);color:#c8cdd8;border-color:#4a5060;box-shadow:0 4px 10px #00000080,inset 0 1px 2px #ffffff0f}:root[data-theme=auto] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:before{background:#3f4452;border-top:2px solid #555d6e;box-shadow:inset 0 8px 48px #0000004d}:root[data-theme=auto] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:hover{color:#e2e8f0;background:linear-gradient(145deg,#454b5a,#333845)}:root[data-theme=auto] .round-button-wrapper:not(.red):not(.blue):not(.orange):not(.green) a.round-button:active{box-shadow:0 2px 6px #0009 inset;background:linear-gradient(145deg,#2e3240,#22262e)}}.script-editor{display:block;background-color:#000;border:1px solid #555;border-radius:5px;padding:8px;width:100%;max-width:100%;overflow:hidden;font-family:var(--font-mono);position:relative;font-size:14px;box-sizing:border-box;display:flex}.script-editor:focus{padding:7px;border:2px solid dodgerblue}.script-editor:focus .debugger{top:1px;right:1px}.script-editor .overlays{position:absolute;-webkit-user-select:none;user-select:none;top:0}.script-editor .overlays .overlay-caret{background-color:#aeafad;border-color:#aeafad;color:#515052;position:absolute;cursor:text;overflow:hidden;letter-spacing:0px;display:block;width:2px;pointer-events:none;height:1.25em;top:6px;left:0}.script-editor .line-info{line-height:1.25em;height:1.25em;cursor:default;padding-right:10px;padding-left:13px;text-align:right;color:gray;-webkit-user-select:none;user-select:none;white-space:nowrap;position:relative}.script-editor .line-info .breakpoint{width:5px;height:5px;border-radius:5px;margin-right:2px;background-color:#6e1a12;border:2px solid transparent;position:absolute;left:0;top:.3em;cursor:pointer;visibility:hidden}.script-editor .line-info .breakpoint.current{border:2px solid yellow!important;border:2px solid transparent;visibility:visible}.script-editor .line-info .breakpoint.active{background-color:red;border:2px solid red;visibility:visible}.script-editor .line-info:hover .breakpoint{visibility:visible}.script-editor .debugger{opacity:.5;position:absolute;top:2px;right:2px;background-color:#555}.script-editor .debugger:hover{opacity:1}.script-editor .debugger-button{padding:8px;display:inline-block;cursor:pointer}.script-editor .debugger-button.pause,.script-editor .debugger-button.step-over,.script-editor .debugger-button.continue{filter:invert(61%) sepia(66%) saturate(555%) hue-rotate(184deg) brightness(104%) contrast(105%)}.script-editor .debugger-button.stop{filter:invert(59%) sepia(42%) saturate(649%) hue-rotate(321deg) brightness(101%) contrast(91%)}.script-editor .debugger-button-disabled{filter:invert(50%);cursor:default}.script-editor .code{flex:1}.script-editor .line{line-height:1.25em;white-space:nowrap;box-sizing:border-box;display:block;height:1.25em;cursor:text}.script-editor .line-current{box-shadow:0 0 0 2px #50505040}.script-editor .line.debug-current{background-color:#b1b13854}.script-editor .line.error{background-color:#b1383854}.script-editor .line .nl{background-image:url(/imgs/icon-newline.svg);background-repeat:no-repeat;background-position-y:2px;width:1em;height:1.25em;display:inline-block;opacity:.6;vertical-align:middle}.script-editor .line .es{color:#333}.script-editor .line .pr{display:inline-block;background-color:transparent;cursor:default;-webkit-user-select:none;user-select:none}.script-editor .line .pr .i{font-size:.75em;margin:0 3px;background-color:#8080804d;color:gray}.script-editor .line .kw{color:#8686ff;font-weight:700;background-color:initial;cursor:initial}.script-editor .line .er{background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23f48771'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left}.script-editor .line .ec{color:green;font-style:italic}.script-editor .line .power-on{filter:invert(69%) sepia(22%) saturate(1000%) hue-rotate(112deg)}.script-editor .line .rh{font-weight:700;outline:1px solid #888888}.script-editor .exception-helper{cursor:default;filter:invert(25%) sepia(96%) saturate(6066%) hue-rotate(355deg) brightness(94%) contrast(122%)}.script-editor .editor-picker{background-color:#ff00004d;cursor:pointer;display:inline-block;white-space:pre;max-height:1.2em}.script-editor .editor-picker .svg-icon-full{height:1.2em}.script-editor .editor-picker .status-circle{height:.75em;margin:0 0 0 3px;width:.75em;position:relative;top:-.125em}.script-editor .editor-picker .svg-icon{cursor:pointer}.auto-complete-wrapper{position:absolute;max-height:200px;width:300px;overflow:auto;background-color:#333;border:1px solid #555;font-family:var(--font-mono)}.auto-complete-wrapper .auto-complete-item{padding:1px 5px;font-size:12px;line-height:19px;letter-spacing:0px;cursor:pointer}.auto-complete-wrapper .auto-complete-item:hover{background-color:#143438}.auto-complete-wrapper .auto-complete-item.current{background-color:#004e58}.auto-complete-wrapper .auto-complete-item .option-function{width:1em;height:1em;line-height:1em;display:inline-block;border:1px solid steelblue;color:#4682b4;vertical-align:middle;text-align:center;margin:0 3px 0 0}.status-circle{width:1em;height:1em;display:inline-block;vertical-align:middle;border-radius:.8em;margin:.15em;background-color:var(--color-text-muted);border:2px solid var(--color-text-muted)}.status-circle.status-red{background-color:var(--color-danger);border-color:var(--color-danger)}.status-circle.status-green{background-color:var(--color-action);border-color:var(--color-action)}.status-circle.status-orange{background-color:var(--color-warning);border-color:var(--color-warning)}.status-circle.status-blue{background-color:var(--color-info);border-color:var(--color-info)}.online-status{display:inline-block;width:1em;height:1em;border-radius:1em;background-color:var(--color-action)}.online-status.offline{background-color:var(--color-danger)}.online-status.inactive{background-color:var(--color-text-muted)}.online-status.deep-sleep{background-color:var(--color-info)}.power-control-wrapper{display:flex;flex-direction:column;align-items:center;width:100%;height:100%}.power-control-wrapper .power-name{padding:5px 10px 0;-webkit-user-select:none;user-select:none;font-size:25px;word-break:break-all;text-align:center;color:var(--color-text-primary)}.power-control-wrapper.readonly .power-image{cursor:default}.power-control-wrapper.readonly .power-image img,.power-control-wrapper.readonly .power-image svg{cursor:default}.power-control-wrapper .power-image{margin:auto;cursor:pointer}.power-control-wrapper .power-image svg,.power-control-wrapper .power-image img{height:80px;padding:10px;-webkit-user-select:none;user-select:none}.power-control-wrapper.svg .power-image svg,.power-control-wrapper.svg .power-image img{transition:filter .3s ease,opacity .3s ease}.power-control-wrapper.svg.on{background-color:#22c55e12;color:var(--color-success)}.power-control-wrapper.svg.on .power-image svg,.power-control-wrapper.svg.on .power-image img{filter:drop-shadow(0px 0px 14px rgba(34,197,94,.55))}.power-control-wrapper.svg.off{color:var(--color-text-muted)}.power-control-wrapper.svg.off:hover:not(.readonly){color:rgba(var(--color-success),.2)}.power-control-wrapper.svg.off:hover:not(.readonly) .power-image svg,.power-control-wrapper.svg.off:hover:not(.readonly) .power-image img{filter:drop-shadow(0px 0px 14px rgba(var(--color-success),.5))}.power-control-wrapper.tiny{height:inherit;width:inherit;flex-direction:row-reverse}.power-control-wrapper.tiny .power-name{padding:0;font-size:inherit}.power-control-wrapper.tiny .power-image{display:flex}.power-control-wrapper.tiny .power-image svg,.power-control-wrapper.tiny .power-image img{height:.8em;padding:0}.power-control-wrapper.tiny .timer{width:.8em;height:.8em}:root[data-theme=fulldark] .power-control-wrapper.svg.on{background-color:#22c55e17}@media (prefers-color-scheme: dark){:root[data-theme=auto] .power-control-wrapper.svg.on{background-color:#22c55e17}}.wifi-symbol{display:inline-block;width:16px;height:16px;transform:rotate(-45deg) translate(8px,4px)}.wifi-symbol .wifi-circle{box-sizing:border-box;display:block;width:100%;height:100%;font-size:.1428571429em;position:absolute;bottom:0;left:0;border-color:#ffc;border-style:solid;border-width:1em 1em 0 0;border-radius:0 100% 0 0;opacity:1;will-change:opacity}.wifi-symbol .wifi-circle.second{width:5em;height:5em}.wifi-symbol .wifi-circle.third{width:3em;height:3em}.wifi-symbol .wifi-circle.fourth{width:1em;height:1em;opacity:1;background-color:#ffc}.wifi-symbol.loading .wifi-circle{opacity:0;animation:wifianimation 3s infinite;will-change:opacity}.wifi-symbol.loading .wifi-circle.first{animation-delay:.8s}.wifi-symbol.loading .wifi-circle.second{animation-delay:.4s}.wifi-symbol.loading .wifi-circle.fourth{opacity:1;animation:none}.wifi-symbol.great .wifi-circle{border-color:#7cfc00}.wifi-symbol.normal .wifi-circle{border-color:#ef0}.wifi-symbol.normal .wifi-circle.first{border-color:gray}.wifi-symbol.low .wifi-circle{border-color:orange}.wifi-symbol.low .wifi-circle.first{border-color:gray}.wifi-symbol.poor .wifi-circle{border-color:red}.wifi-symbol.poor .wifi-circle.first,.wifi-symbol.poor .wifi-circle.second{border-color:gray}@keyframes wifianimation{0%{opacity:.4}5%{opactiy:1}6%{opactiy:.1}to{opactiy:.1}}.contextMenu{position:fixed;background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:4px 0;z-index:var(--z-dropdown);line-height:1.5;min-width:140px;animation:ctx-open var(--dur-fast) ease}@keyframes ctx-open{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.contextMenu-flex{display:flex}.contextMenu--option{padding:9px 18px;cursor:pointer;font-size:14px;color:var(--color-text-primary);white-space:nowrap;position:relative;transition:background-color var(--dur-fast) ease;display:flex;align-items:center}.contextMenu--option:hover,.contextMenu--option:active{background-color:var(--color-surface)}.contextMenu--option.disabled{color:var(--color-text-secondary);opacity:.5;pointer-events:none}.contextMenu--option.loading{cursor:default;color:var(--color-text-muted);font-style:italic;pointer-events:none;min-width:120px;gap:var(--space-2)}.contextMenu--option.with-children:after{content:"";display:block;position:absolute;right:8px;top:50%;transform:translateY(-50%);border-left:5px solid var(--color-text-secondary);border-top:4px solid transparent;border-bottom:4px solid transparent}.contextMenu--option.with-children .children-wrap{position:absolute;display:none;left:100%;top:0;max-width:300px;width:max-content;background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:4px 0}.contextMenu--option.with-children .children-wrap.reverse{left:auto;right:100%}.contextMenu--option.with-children .children-wrap-top{bottom:0;top:initial}.contextMenu--option.with-children.hover>.children-wrap{display:block}.contextMenu--option a{display:block;margin:-9px -18px;padding:9px 18px;color:var(--color-text-primary);text-decoration:none}.contextMenu--separator{width:100%;height:0;border-bottom:1px solid var(--color-border);margin:4px 0}.contextMenu .power-control-wrapper{background-color:transparent!important;display:flex;white-space:nowrap;flex-direction:row;gap:5px}.contextMenu .ctx-spinner{width:12px;height:12px;flex:none;border-radius:50%;border:2px solid var(--color-border);border-top-color:var(--color-accent);animation:ctx-spin .8s linear infinite}@keyframes ctx-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.widget-loading{display:flex;justify-content:center;align-items:center;height:100%}.widget-loading .timer{opacity:.5}.widget{position:relative;overflow:hidden;height:100%;background:transparent;color:var(--color-text-primary);border-radius:8px}.widget .timer{top:5px;right:5px;position:absolute;opacity:.5}.widget-button{text-align:center}.widget-button .widget-name{font-size:1.5em;display:block;padding:10px}.widget-tv-remote-tiny{text-align:center}.widget-tv-remote-tiny .widget-name{font-size:1.5em;display:block;padding:10px}.widget-tv-remote-tiny .widget-row .round-button-wrapper{padding:10px}.widget-rgb{text-align:center}.widget-rgb-tiny .power-control-wrapper{height:100%!important}.widget-rgb .power-control-wrapper{width:initial;height:initial}.widget-rgb .widget-name{font-size:1.5em;display:block;padding:5px 10px 0}.widget-rgb-brightness{margin:0 20px 10px}.widget-rgb-brightness>div{padding:10px 0}.widget-rgb-brightness .not-allowed{cursor:not-allowed;opacity:.3}.widget-rgb-brightness .not-allowed>div{pointer-events:none}.widget-rgb-effects{position:relative;font-size:25px;display:flex;margin:auto;justify-content:center;line-height:1.25em}.widget-rgb-effects .effect-prev,.widget-rgb-effects .effect-next,.widget-rgb-effects .effect-remove{cursor:pointer;-webkit-user-select:none;user-select:none}.widget-rgb-effects .effect-prev{position:absolute;left:20px}.widget-rgb-effects .effect-next{position:absolute;right:20px}:root[data-theme=fulldark] .widget-rgb-effects .effect-prev,:root[data-theme=fulldark] .widget-rgb-effects .effect-next,:root[data-theme=fulldark] .widget-rgb-effects .effect-remove{filter:invert(1)}@media (prefers-color-scheme: dark){:root[data-theme=auto] .widget-rgb-effects .effect-prev,:root[data-theme=auto] .widget-rgb-effects .effect-next,:root[data-theme=auto] .widget-rgb-effects .effect-remove{filter:invert(1)}}.widget-rgb .widget-options{position:absolute;bottom:10px;right:10px;opacity:.6;background:#6663;padding:3px;border-radius:3px}.widget-rgb .widget-options .svg-icon{opacity:.5}.widget-rgb .widget-options a{cursor:pointer;padding:0 5px}.widget-rgb .widget-options a:hover{color:#fff}.widget-rgb .widget-options a:hover .svg-icon,.widget-rgb .widget-options:hover{opacity:1}.widget-dimmer{text-align:center}.widget-dimmer .power-control-wrapper{width:initial;height:initial}.widget-dimmer .power-control-wrapper .power-image{padding-bottom:40px}.widget-dimmer .power-control-wrapper .power-image img,.widget-dimmer .power-control-wrapper .power-image svg{height:50px}.widget-dimmer .widget-name{font-size:1.5em;display:block;padding:5px 10px 0}.widget-dimmer-brightness{margin:0 20px;position:absolute;bottom:0;left:0;right:0}.widget-dimmer-brightness>div{padding:10px 0}.widget-dimmer-brightness .not-allowed{cursor:not-allowed;opacity:.3}.widget-dimmer-brightness .not-allowed>div{pointer-events:none}.widget-dimmer .widget-options{position:absolute;bottom:10px;right:10px;opacity:.6;background:#6663;padding:3px;border-radius:3px}.widget-dimmer .widget-options .svg-icon{opacity:.5}.widget-dimmer .widget-options a{cursor:pointer;padding:0 5px}.widget-dimmer .widget-options a:hover{color:#fff}.widget-dimmer .widget-options a:hover .svg-icon,.widget-dimmer .widget-options:hover{opacity:1}.widget-energy{display:flex;flex-direction:row}.widget-energy .widget-left{display:flex;flex-direction:column;align-items:center;margin-right:5px;flex:1}.widget-energy .widget-image-wrapper{flex:1;position:relative;width:100%;margin:5px}.widget-energy .widget-image-wrapper .widget-image{display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-user-select:none;user-select:none;height:100%;width:100%;object-fit:contain}.widget-energy .widget-name{margin:4px 10px;font-size:1.2em;display:block;text-align:center}.widget-energy .widget-figures{flex:4;display:flex;flex-direction:row;flex-wrap:wrap;margin:auto}@media only screen and (max-width: 500px){.widget-energy .widget-figures{flex:3}}.widget-energy .widget-figure{position:relative;flex:1 1;display:flex;flex-direction:column;margin:5px 10px}@media only screen and (max-width: 500px){.widget-energy .widget-figure{font-size:.65em;align-items:flex-end;margin:5px 10px;min-width:auto}}.widget-energy .widget-figure-name{font-size:1em}.widget-energy .widget-figure-value{font-size:2em;font-weight:600;white-space:nowrap;min-width:100px}@media only screen and (max-width: 500px){.widget-energy .widget-figure-value{min-width:initial}}.widget-energy .widget-figure-value-unit{font-weight:100;font-size:.5em;opacity:.7}.widget-air-quality-index .widget-image{width:72px;padding:40px 20px;-webkit-user-select:none;user-select:none}.widget-air-quality-index .widget-name{font-size:1.5em;top:35px;position:absolute}.widget-air-quality-index .widget-value{font-size:3em;font-weight:600;bottom:35px;position:absolute}.widget-air-quality-index .widget-options{position:absolute;bottom:10px;right:10px;opacity:.6;background:#6663;padding:3px;border-radius:3px}.widget-air-quality-index .widget-options .svg-icon{opacity:.5}.widget-air-quality-index .widget-options a{cursor:pointer;padding:0 5px}.widget-air-quality-index .widget-options a:hover{color:#fff}.widget-air-quality-index .widget-options a:hover .svg-icon,.widget-air-quality-index .widget-options:hover{opacity:1}.widget-switch{text-align:center}.widget-switch .power-image img,.widget-switch .power-image svg{width:110px;padding:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.widget-switch .power-name{font-size:1.5em;display:block;padding:10px;overflow:hidden}.widget-analog .widget-image{width:128px;height:128px;padding:10px;-webkit-user-select:none;user-select:none}.widget-analog .widget-name{font-size:1.5em;top:35px;position:absolute;color:var(--color-text-primary)}.widget-analog .widget-value{font-size:3em;font-weight:600;bottom:35px;position:absolute;color:var(--color-accent);text-shadow:2px 2px 2px rgba(0,0,0,.5)}.widget-analog .widget-options{position:absolute;bottom:10px;right:10px;opacity:0;background:var(--color-overlay);padding:4px 6px;border-radius:6px;transition:opacity .2s ease}.widget-analog .widget-options .svg-icon{opacity:.7}.widget-analog .widget-options a{cursor:pointer;padding:0 4px;color:var(--color-text-inverse);text-decoration:none}.widget-analog .widget-options a:hover{color:var(--color-text-inverse)}.widget-analog .widget-options a:hover .svg-icon,.widget-analog:hover .widget-options,.widget-analog .widget-options:hover{opacity:1}.widget-value-display{display:flex;flex-direction:column;align-items:center;width:100%;height:100%}.widget-value-display .value-outdated{opacity:.5}.widget-value-display .value-outdated:after{border-top:2px solid var(--color-text-primary);position:absolute;content:"";right:0;top:55%;left:0}.widget-value-display div.ct-chart{position:absolute;bottom:0;left:0;right:0;height:30%!important}.widget-value-display .widget-name{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;padding:5px 10px 0;-webkit-user-select:none;user-select:none;font-size:25px;word-break:break-all;text-align:center;color:var(--color-text-primary)}.widget-value-display .widget-name .title-power,.widget-value-display .widget-name .round-button-wrapper.small{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em}.widget-value-display .widget-name .title-power .power-image svg,.widget-value-display .widget-name .title-power .power-image img,.widget-value-display .widget-name .round-button-wrapper.small .power-image svg,.widget-value-display .widget-name .round-button-wrapper.small .power-image img{height:1em;width:1em}.widget-value-display .widget-name .title-power a.round-button,.widget-value-display .widget-name .round-button-wrapper.small a.round-button{width:1em;height:1em;line-height:1em;margin:0;display:flex;align-items:center;justify-content:center;box-shadow:none!important;background:var(--bg-tertiary);border-radius:6px;color:var(--color-text-primary);cursor:pointer;transition:background .3s,color .3s}.widget-value-display .widget-name .title-power a.round-button:hover,.widget-value-display .widget-name .round-button-wrapper.small a.round-button:hover{background:var(--bg-secondary);color:var(--color-text-primary)}.widget-value-display .widget-name .title-power a.round-button:active,.widget-value-display .widget-name .round-button-wrapper.small a.round-button:active{background:var(--bg-primary);color:var(--color-text-primary)}.widget-value-display .widget-name .title-power .round-button-image,.widget-value-display .widget-name .round-button-wrapper.small .round-button-image{height:.62em;width:.62em;top:0;left:0}.widget-value-display .title-power{background-color:transparent!important}.widget-value-display .widget-values-wrapper{display:flex;padding:4px 0;margin:auto;flex-direction:column;justify-content:center;overflow:hidden;min-height:0}.widget-value-display .widget-values-wrapper .round-button{cursor:pointer}.widget-value-display .widget-values-wrapper .widget-value-wrapper{display:flex;flex-direction:row;position:relative;align-self:flex-end}.widget-value-display .widget-values-wrapper .widget-value-wrapper .widget-value{font-size:3em;font-weight:600;color:var(--color-accent);text-shadow:2px 2px 2px rgba(0,0,0,.5)}.widget-value-display .widget-values-wrapper .widget-value-wrapper .widget-unit{font-size:1.5em}.widget-value-display .widget-values-wrapper.values-2 .value-1 .widget-value{font-size:2.8em;font-weight:600;text-shadow:2px 2px 2px rgba(0,0,0,.5)}.widget-value-display .widget-values-wrapper.values-2 .value-1 .widget-unit{font-size:1.2em;padding-top:8px}.widget-value-display .widget-values-wrapper.values-2 .value-2 .widget-value{font-size:1.9em;font-weight:600;color:var(--color-text-secondary);text-shadow:2px 2px 2px rgba(0,0,0,.5)}.widget-value-display .widget-values-wrapper.values-2 .value-2 .widget-unit{font-size:1.1em;padding-top:2px}.widget-value-display .widget-options{position:absolute;bottom:10px;right:10px;opacity:0;transition:opacity .2s ease}.widget-value-display .widget-options a{display:grid;place-items:center;width:22px;height:20px;padding:0;border:1px solid var(--color-border);border-radius:5px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;text-decoration:none;transition:color .15s ease,border-color .15s ease}.widget-value-display .widget-options a .svg-icon{width:12px;height:12px}.widget-value-display .widget-options a:hover{color:var(--color-text-primary);border-color:var(--color-text-muted)}.widget-value-display:hover .widget-options,.widget-value-display .widget-options:hover{opacity:1}.widget-chart{height:100%;position:relative}.widget-chart .chart-name{position:absolute;top:0;right:0;background-color:var(--color-overlay);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:3px 10px;border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);border-radius:0 0 0 8px;color:var(--color-text-secondary);font-size:.85em;letter-spacing:.05em;opacity:.75;transition:opacity .2s ease}.widget-chart .chart-name-editable{right:27px;border-right:1px solid var(--color-border);border-radius:0 0 8px 8px}.widget-chart .widget-chart-options{position:absolute;bottom:10px;right:10px;opacity:.5;background:var(--color-overlay);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);padding:3px;border-radius:4px;transition:opacity .2s ease}.widget-chart .widget-chart-options .svg-icon{opacity:.6;color:var(--color-text-secondary)}.widget-chart .widget-chart-options a{cursor:pointer;padding:5px;display:flex;align-items:center}.widget-chart .widget-chart-options a:hover{color:var(--color-text-inverse)}.widget-chart .widget-chart-options a:hover .svg-icon,.widget-chart .widget-chart-options:hover{opacity:1}.widget-air-condition{display:flex;flex-flow:column;justify-content:center;align-items:center;overflow:hidden;height:100%}.widget-air-condition .widget-name{font-size:1.5em;display:block;padding:4px 10px}.widget-air-condition-temperature{display:flex;align-items:center;gap:15px}.widget-air-condition-temperature .plus,.widget-air-condition-temperature .minus{display:inline-block;cursor:pointer;line-height:1.25em;opacity:.8;transition:opacity .3s ease,color .3s ease}.widget-air-condition-temperature .plus:hover,.widget-air-condition-temperature .minus:hover{filter:brightness(1.2);color:var(--color-text-primary);opacity:1}.widget-air-condition-temperature .value{font-size:3em;color:#75b3ff;font-weight:600;padding-bottom:4px}.widget-air-condition-temperature.disabled{opacity:.5}.widget-air-condition .widget-mode{padding:4px 0;display:flex;justify-content:center}.widget-air-condition .widget-mode span{display:flex;margin:5px 10px;font-size:1.5em;cursor:pointer;color:var(--color-text-muted);transition:color .15s ease,filter .15s ease}.widget-air-condition .widget-mode span img,.widget-air-condition .widget-mode span svg{display:block;margin:auto}.widget-air-condition .widget-mode span:hover:not(.disabled){color:var(--color-text-secondary);filter:brightness(1.2)}.widget-air-condition .widget-mode span.active{color:var(--color-success)}.widget-air-condition .widget-mode span.active img,.widget-air-condition .widget-mode span.active svg{filter:drop-shadow(0 0 8px rgba(34,197,94,.65))}.widget-air-condition .widget-mode span.disabled{opacity:.6;cursor:default}.widget-air-condition .widget-mode .fan-low img,.widget-air-condition .widget-mode .fan-low svg{height:.5em}.widget-air-condition .widget-mode .fan-med img,.widget-air-condition .widget-mode .fan-med svg{height:.75em}.widget-air-condition .widget-mode .fan-high img,.widget-air-condition .widget-mode .fan-high svg{height:1em}.widget-air-condition .widget-options{position:absolute;top:10px;left:10px;background:#6663;opacity:.6;padding:3px;border-radius:3px;cursor:pointer}.widget-air-condition .widget-options .svg-icon{opacity:.2}.widget-air-condition .widget-options a{cursor:pointer;padding:0 5px}.widget-air-condition .widget-options a:hover{color:#fff}.widget-air-condition .widget-options a:hover .svg-icon,.widget-air-condition .widget-options:hover{opacity:1}.widget-air-condition.widget-readonly .plus,.widget-air-condition.widget-readonly .minus,.widget-air-condition.widget-readonly .widget-mode span{cursor:default}.widget-air-condition.widget-readonly .widget-air-condition-temperature,.widget-air-condition.widget-readonly .widget-mode{opacity:.5}:root[data-theme=fulldark] .widget .widget-options{opacity:.5;background:#66666680}@media (prefers-color-scheme: dark){:root[data-theme=auto] .widget .widget-options{opacity:.5;background:#66666680}}.widget-camera-stream{display:flex;flex-direction:column;justify-content:center;align-items:center}.widget-camera-stream .widget-name{position:absolute;top:5px;font-size:1.5em;text-shadow:0px 2px rgba(255,255,255,.5019607843);z-index:1}.widget-camera-stream .widget-info{position:absolute;z-index:1;top:35px}.widget-camera-stream .widget-video{max-width:100%;max-height:100%;display:block;position:relative;width:100%}.widget-camera-stream .widget-video>video,.widget-camera-stream .widget-video>img{max-width:100%;max-height:100%;display:block;margin:auto}.widget-camera-stream .widget-video>video.hidden,.widget-camera-stream .widget-video>img.hidden{display:none}.widget-camera-stream .widget-video:hover .widget-video-range,.widget-camera-stream .widget-video.replay .widget-video-range{opacity:1}.widget-camera-stream .widget-video-range{transition:opacity .1s;opacity:0;height:10px;background-color:#888;position:absolute;bottom:20px;width:100%;cursor:pointer;-webkit-user-select:none;user-select:none}.widget-camera-stream .widget-video-range:before{content:"";display:block;width:100%;height:10px;position:absolute;top:-10px}.widget-camera-stream .widget-video-range:after{content:"";display:block;width:100%;height:10px;position:absolute;bottom:-10px}.widget-camera-stream .widget-video-seek-position{height:15px;width:15px;transform:translate(-7.5px);background-color:#c80000;border-radius:50%;display:inline-block;position:absolute;top:-30%;box-shadow:0 0 3px #a00000;pointer-events:none}.widget-camera-stream .widget-video-seek-position-time{position:absolute;-webkit-user-select:none;user-select:none;top:-25px;transform:translate(-31px);color:#fff;background-color:#888;box-shadow:0 0 2px #333;display:block;padding:2px 4px;font-size:14px;z-index:1}.widget-camera-stream .widget-video-seek-range{background-color:#581212;height:100%;position:absolute;pointer-events:none}.widget-camera-stream .widget-video-preview{position:absolute;bottom:20px}.widget-camera-stream .widget-video-preview-time{position:absolute;background-color:#5f5f5f;box-shadow:0 0 2px #333;color:#fff;font-size:12px;padding:2px 5px;left:0;top:-20px}:root[data-theme=fulldark] .widget-camera-stream .widget-name{text-shadow:0px 2px rgba(0,0,0,.5)}@media (prefers-color-scheme: dark){:root[data-theme=auto] .widget-camera-stream .widget-name{text-shadow:0px 2px rgba(0,0,0,.5)}}.widget-slide-lock{display:flex;justify-content:center;align-items:center}.widget-power-move .move{position:absolute;bottom:0;right:0;width:48px;height:48px;background-color:transparent!important}.widget-power-move .move .power-image{width:100%;height:100%}.widget-power-move .move .power-image img,.widget-power-move .move .power-image svg{width:100%;height:100%;padding:0}.widget-multi-power{text-align:center}.widget-multi-power .widget-name{font-size:1.5em;display:block;padding:10px}.widget-multi-power .main-powers{position:absolute;top:32px;left:0;bottom:0;right:0;display:flex;align-content:center;align-items:center;justify-content:center;pointer-events:none}.widget-multi-power .main-powers.vertical{flex-direction:column}.widget-multi-power .main-powers .power-control-wrapper{background-color:transparent;max-width:75px;max-height:75px;pointer-events:all}.widget-multi-power .main-powers .power-control-wrapper .power-image{width:100%;height:100%}.widget-multi-power .main-powers .power-control-wrapper .power-image img,.widget-multi-power .main-powers .power-control-wrapper .power-image svg{width:100%;height:100%;padding:0}.widget-multi-power .secondary-powers{position:absolute;bottom:0;top:32px;left:0;right:0;margin:6px 3px;pointer-events:none}.widget-multi-power .secondary-powers .power-control-wrapper{background-color:transparent!important;width:48px;height:48px;pointer-events:all}.widget-multi-power .secondary-powers .power-control-wrapper .power-image{width:100%;height:100%}.widget-multi-power .secondary-powers .power-control-wrapper .power-image img,.widget-multi-power .secondary-powers .power-control-wrapper .power-image svg{width:100%;height:100%;padding:0}.widget-multi-power .secondary-powers .bottomleft{position:absolute;bottom:0;flex-direction:row;justify-content:flex-start;align-content:center;align-items:center;display:flex;width:100%}.widget-multi-power .secondary-powers .bottomright{position:absolute;bottom:0;flex-direction:row;justify-content:flex-end;align-content:center;align-items:center;display:flex;width:100%}.widget-multi-power .secondary-powers .bottom{position:absolute;bottom:0;flex-direction:row;justify-content:center;align-content:center;align-items:center;display:flex;width:100%;justify-content:space-evenly}.widget-multi-power .secondary-powers .topleft{position:absolute;top:0;flex-direction:row;justify-content:flex-start;align-content:center;align-items:center;display:flex;width:100%}.widget-multi-power .secondary-powers .topright{position:absolute;top:0;flex-direction:row;justify-content:flex-end;align-content:center;align-items:center;display:flex;width:100%}.widget-multi-power .secondary-powers .top{position:absolute;top:0;flex-direction:row;justify-content:center;align-content:center;align-items:center;display:flex;width:100%;justify-content:space-evenly}.widget-multi-power .secondary-powers .left{position:absolute;left:0;flex-direction:column;justify-content:center;align-content:center;align-items:center;display:flex;height:100%;justify-content:space-evenly}.widget-multi-power .secondary-powers .right{position:absolute;right:0;flex-direction:column;justify-content:center;align-content:center;align-items:center;display:flex;height:100%;justify-content:space-evenly}.list-page-header{position:sticky;top:44px;z-index:20;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:0 0 10px 10px;margin-bottom:var(--space-4);border-radius:var(--radius-md);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border-bottom:1px solid color-mix(in srgb,var(--color-border) 70%,transparent);color:var(--color-text-primary)}.list-page-header .list-page-title{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.list-page-header .list-page-subtitle{font-size:12.5px;color:var(--color-text-muted)}.list-page-header .list-page-tools{margin-left:auto;display:flex;align-items:center;gap:10px}.list-page-header .list-page-search{flex:0 1 380px;min-width:160px}.list-page-header .list-page-actions{display:flex;align-items:center;gap:10px}.list-page-header .list-page-actions .button{border-radius:var(--radius-md);padding:9px 15px;font-size:12.5px;font-weight:600}.list-page-header .list-page-actions .button-light{background-color:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border)}.list-page-header .list-page-actions .button-light:hover{border-color:var(--color-text-muted);transform:translateY(-1px);box-shadow:none}.list-page-header .list-page-actions .button-primary{letter-spacing:.08em;text-transform:uppercase;box-shadow:var(--shadow-sm);white-space:nowrap}.list-page-header .list-page-actions .button-primary:hover{transform:translateY(-1px)}@media (max-width: 720px){.list-page-header .list-page-tools{width:100%;margin-left:0}.list-page-header .list-page-search{flex:1 1 auto;min-width:0}}.dashboard-skeleton{--skeleton-base: color-mix(in srgb, var(--color-border) 45%, transparent);--skeleton-shine: color-mix(in srgb, var(--color-border) 80%, transparent);display:flex;flex-direction:column;gap:var(--space-2);min-height:calc(100vh - 45px);padding:var(--space-3) var(--space-4) var(--space-6);box-sizing:border-box}.dashboard-skeleton .dashboard-skeleton-header{padding:9px 4px 6px}.dashboard-skeleton .dashboard-skeleton-title{width:140px;height:14px;border-radius:var(--radius-sm)}.dashboard-skeleton .dashboard-skeleton-grid{flex:1;display:flex;flex-direction:column;gap:var(--space-2)}.dashboard-skeleton .dashboard-skeleton-row{flex:1;display:flex;gap:var(--space-2);min-height:120px}.dashboard-skeleton .dashboard-skeleton-tile{flex:1 1 0;min-width:0;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:linear-gradient(90deg,var(--skeleton-base) 25%,var(--skeleton-shine) 50%,var(--skeleton-base) 75%) var(--bg-secondary);background-size:400% 100%,auto;animation:dashboard-skeleton-shimmer 1.4s ease-in-out infinite}@keyframes dashboard-skeleton-shimmer{0%{background-position:100% 50%,0 0}to{background-position:0 50%,0 0}}.react-grid-item:not(.react-grid-placeholder){background:var(--bg-secondary);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);transition:border-color .2s ease,box-shadow .25s ease!important}.react-grid-item:not(.react-grid-placeholder):hover{border-color:color-mix(in srgb,var(--accent-color) 45%,var(--border-color));box-shadow:var(--shadow-md)}.react-grid-layout{transition:none!important;font-family:var(--font-display)}.react-grid-layout .ct-chart{height:70%!important}.react-grid-layout .ct-chart svg{height:100%!important}.single-widget-layout{font-family:var(--font-display)}.single-widget-layout{vertical-align:baseline;display:flex;flex-direction:column;justify-content:center;min-height:calc(100vh - 100px);width:100%;height:auto;position:relative}.single-widget-layout .widget-slide-lock{padding:50px 0}.react-grid-item{overflow:hidden;touch-action:inherit!important;box-sizing:border-box;border-radius:var(--radius-lg);transition:none!important}.board-header{padding:9px 14px 6px;display:flex;position:relative;z-index:50;background:transparent;border-bottom:transparent;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);justify-content:center;align-items:center;color:var(--text-primary);gap:8px}.board-header .screen-name{font-family:var(--font-display);font-weight:600;font-size:12px;flex:none;letter-spacing:.14em;text-transform:uppercase;color:var(--text-secondary)}.board-header .screen-options{padding:0 5px}.react-grid-item.cssTransforms{transition-property:none}.animated .react-grid-item.cssTransforms{transition-property:transform}.item-drag-handler{position:absolute;top:5px;right:5px;cursor:move;-webkit-user-select:none;user-select:none;padding:0 0 10px 10px;color:var(--color-border-strong)}.item-drag-handler .item-drag-handler-image{background-image:url(/imgs/icon-move.svg);background-origin:border-box;background-size:contain;width:1em;height:1em}.react-grid-item>.react-resizable-handle{width:28px;height:28px;z-index:2;cursor:se-resize;touch-action:none;background-image:none}.react-grid-item>.react-resizable-handle:after{right:9px;bottom:9px;width:10px;height:10px;border-right:3px solid var(--color-border-strong);border-bottom:3px solid var(--color-border-strong)}.btn-dashboard-edit,.btn-dashboard-save{cursor:pointer}.react-grid-layout.layout{min-height:calc(100vh - 85px);overflow-x:hidden}.dashboard-nav{position:fixed;bottom:10px;width:100%;pointer-events:none;display:flex;justify-content:center}.dashboard-nav .dashboard-nav-inner{display:flex;border-radius:20px;border:1px solid var(--border-color);box-shadow:var(--shadow-md);pointer-events:all;padding:4px 2px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.dashboard-nav .dashboard-dot-wrapper{width:30px;display:flex;cursor:pointer;height:25px;justify-content:center;align-items:center}.dashboard-nav .dashboard-dot{cursor:pointer;width:8px;height:8px;padding:0;border:0;border-radius:9999px;background:var(--text-muted);opacity:.5;transition:width .25s ease-in-out,height .25s ease-in-out,background-color .25s ease-in-out,opacity .25s ease-in-out}.dashboard-nav .dashboard-dot.active{background:var(--status-ok);opacity:1;width:14px;height:14px;box-shadow:0 0 10px color-mix(in srgb,var(--status-ok) 55%,transparent)}.widget-locked{width:100%;height:100%;display:flex;color:var(--color-border-strong)}.widget-locked img,.widget-locked svg{height:50%;object-fit:contain;width:50%;margin:auto;max-width:75px;max-height:75px;-webkit-user-select:none;user-select:none}.widget-configurations{position:absolute;top:8px;left:8px;opacity:0;background:var(--color-overlay);border-radius:6px;z-index:1;transition:opacity .2s ease}.widget-configurations .svg-icon{opacity:.7}.widget-configurations a{cursor:pointer;padding:0 4px;color:var(--color-text-inverse);text-decoration:none}.widget-configurations a:hover{color:var(--color-text-inverse)}.widget-configurations a:hover .svg-icon,.react-grid-item:hover .widget-configurations,.widget-configurations:hover{opacity:1}.react-swipeable-view-container{will-change:transform,height!important}.react-swipeable-view-container>[data-swipeable]{contain:layout}.widget-wrapper.widget-offline{opacity:.3;transition:opacity 1s ease-in-out}.widget-wrapper.widget-offline:hover{opacity:1}.widget-wrapper .icon-offline{position:absolute;top:5px;left:5px;width:32px;height:32px;filter:invert(33%) sepia(100%) saturate(1521%) hue-rotate(331deg) brightness(85%) contrast(104%)}.widgets-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.widgets-wrapper .widget-group{display:flex;align-items:center;gap:10px;padding:8px 12px;margin-bottom:var(--space-2);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--dur-fast) ease}.widgets-wrapper .widget-group:hover{border-color:color-mix(in srgb,var(--color-accent) 45%,var(--color-border))}.widgets-wrapper .widget-group .widget-group-info{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:8px}.widgets-wrapper .widget-group .widget-group-name{font-family:var(--font-display);font-weight:600;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.widgets-wrapper .widget-group .widget-group-count{flex:0 0 auto;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.3px;padding:1px 8px;border-radius:var(--radius-pill);background-color:var(--color-bg-elevated);border:1px solid var(--color-border);color:var(--color-text-muted);white-space:nowrap}.widgets-wrapper .widget-group .widget-group-actions{flex:0 0 auto;display:flex;align-items:center;gap:14px}.widgets-wrapper .widget-group .widget-group-actions .widget-add,.widgets-wrapper .widget-group .widget-group-actions .screens{display:inline-flex;align-items:center;gap:6px;color:var(--color-accent);font-weight:500;white-space:nowrap;cursor:pointer;transition:opacity var(--dur-fast) ease}.widgets-wrapper .widget-group .widget-group-actions .widget-add:hover,.widgets-wrapper .widget-group .widget-group-actions .screens:hover{opacity:.8}.widgets-wrapper .widget-group .widget-group-actions .widget-add .svg-icon,.widgets-wrapper .widget-group .widget-group-actions .screens .svg-icon{width:1em;height:1em}.widgets-wrapper>ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--space-3)}.widgets-wrapper>ul>li{list-style:none}.widgets-wrapper .widget-card{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:12px 16px;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease}.widgets-wrapper .widget-card:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.widget-card-top{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap}.widget-card-top .drag-handler{flex:0 0 auto}.widget-title{flex:1 1 auto;min-width:150px;font-family:var(--font-display);font-weight:600;color:var(--color-text-primary)}.widget-title .inline-editor{position:relative;cursor:pointer;padding-right:16px;text-decoration:none;text-decoration-style:none}.widget-title .inline-editor:after{content:"";position:absolute;top:50%;right:0;width:13px;height:13px;transform:translateY(-50%) scale(.7) rotate(-10deg);opacity:0;background-color:var(--color-text-muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;pointer-events:none}.widget-title .inline-editor:hover:after{opacity:.85;transform:translateY(-50%) scale(1) rotate(0)}.widget-title .inline-editor.inline-editor-editing{padding-right:0}.widget-title .inline-editor.inline-editor-editing input{width:auto;min-width:120px;max-width:100%;height:auto;padding:1px 2px;text-align:left;color:var(--color-text-primary);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-accent);border-radius:2px 2px 0 0;font-family:inherit;font-size:inherit;font-weight:inherit}.widget-type{flex:0 0 auto;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.3px;padding:2px 9px;border-radius:var(--radius-pill);background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary);white-space:nowrap}.widget-card-actions{flex:0 0 auto;margin-left:auto;display:flex;align-items:center;gap:10px}.config-list{width:100%}.config-list th{text-align:left;padding:3px}@media (max-width: 720px){.widgets-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.widgets-wrapper .widget-group{flex-wrap:wrap}.widgets-wrapper .widget-group .widget-group-name{white-space:normal}.widgets-wrapper .widget-card-top .widget-title{flex:1 1 40%;min-width:0}.widgets-wrapper .widget-card-top .widget-type{order:1}.widgets-wrapper .widget-card-top .widget-card-actions{order:3;margin-left:auto}}.widget-name{display:flex;align-items:center}.widget-name .battery-level{margin-top:5px}.widget-drag,.screen-drag{background-color:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:12px 16px;display:block;width:90vw;max-width:828px;list-style:none;cursor:row-resize}.widget-drag .drag-handler,.screen-drag .drag-handler{flex:0 0 auto}.drag-handler{position:relative;top:1px;display:block;width:18px;height:11px;opacity:.25;margin-right:20px;cursor:row-resize;background:linear-gradient(180deg,var(--color-text-primary) 0%,var(--color-text-primary) 20%,var(--color-bg-elevated) 0%,var(--color-bg-elevated) 40%,var(--color-text-primary) 0%,var(--color-text-primary) 60%,var(--color-bg-elevated) 0%,var(--color-bg-elevated) 80%,var(--color-text-primary) 0%,var(--color-text-primary) 100%)}.security-group{padding:0 5px}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.screens-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.screens-wrapper>ul{margin:0;padding:0}.screens-wrapper .screens-empty{padding:var(--space-5) var(--space-3);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.screens-wrapper ul{display:flex;flex-direction:column;gap:var(--space-3)}.screens-wrapper ul li{list-style:none}.screens-wrapper .screen-item{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);animation:rise .35s ease backwards}.screen-item-top{display:flex;align-items:center;gap:12px;padding:13px 16px}.screen-name{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.screen-title{font-size:14.5px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.screen-title .inline-editor{position:relative;cursor:pointer;padding-right:16px;text-decoration:none;text-decoration-style:none}.screen-title .inline-editor:after{content:"";position:absolute;top:50%;right:0;width:13px;height:13px;transform:translateY(-50%) scale(.7) rotate(-10deg);opacity:0;background-color:var(--color-text-muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;pointer-events:none}.screen-title .inline-editor:hover:after{opacity:.85;transform:translateY(-50%) scale(1) rotate(0)}.screen-title .inline-editor.inline-editor-editing{padding-right:0}.screen-title .inline-editor.inline-editor-editing input{width:auto;min-width:120px;max-width:100%;height:auto;padding:1px 2px;text-align:left;color:var(--color-text-primary);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-accent);border-radius:2px 2px 0 0;font-family:inherit;font-size:inherit;font-weight:inherit}.screen-underline{height:2.5px;width:44px;border-radius:2px;background:var(--color-surface)}.screen-underline.on{background:var(--sc, var(--color-accent))}.screen-meta{font-family:var(--font-mono);font-size:10px;color:var(--color-text-muted);letter-spacing:.04em}.screen-color{flex:0 0 auto;line-height:0}.screen-color>span{width:20px;height:20px;padding:0;box-sizing:border-box;background:transparent;border:1.5px solid color-mix(in srgb,var(--sc, var(--color-text-muted)) 70%,var(--color-border));border-radius:50%;box-shadow:0 0 6px color-mix(in srgb,var(--sc, transparent) 45%,transparent);cursor:pointer;transition:transform var(--dur-fast) ease,border-color var(--dur-fast) ease}.screen-color>span:hover{transform:scale(1.25);border-color:var(--color-border-strong)}.screen-color>span>span{border-radius:50%}.screen-active{flex:0 0 auto;display:flex;align-items:center;gap:8px}.screen-state-ico{width:22px;height:22px;display:grid;place-items:center;color:var(--color-text-muted)}.screen-state-ico svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.screen-state-ico.on{color:var(--color-action)}.screen-actions{flex:0 0 auto}.screen-drag .screen-item-top{padding:0}@media (max-width: 720px){.screens-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.screens-wrapper .screen-item-top{flex-wrap:wrap;gap:8px 10px;padding:12px}.screens-wrapper .screen-item-top .screen-name{flex:1 1 calc(100% - 60px)}.screens-wrapper .screen-item-top .screen-color{order:2}.screens-wrapper .screen-item-top .screen-active{order:3}.screens-wrapper .screen-item-top .screen-actions{order:4;margin-left:auto}}.modules-wrapper{max-width:1400px;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-6)}.modules-wrapper .modules-loader{display:flex;justify-content:center;padding:var(--space-6)}.modules-wrapper .modules-empty{padding:var(--space-6) var(--space-3);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.modules-wrapper .modules-live{display:flex;align-items:center;gap:8px;margin-left:6px;font-family:var(--font-mono);font-size:10.5px;color:var(--color-text-muted);letter-spacing:.1em;text-transform:uppercase}.modules-wrapper .modules-live i{width:7px;height:7px;border-radius:50%;background:var(--status-ok);animation:modules-live-pulse 2.2s ease-in-out infinite}@keyframes modules-live-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--status-ok) 45%,transparent)}50%{box-shadow:0 0 0 6px transparent}}.modules-wrapper .modules-search{position:relative;display:flex;align-items:center;flex:0 1 380px;min-width:200px}.modules-wrapper .modules-search input{width:100%;padding:8px 64px 8px 34px;background:var(--input-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:13px;outline:none;transition:border-color .2s,box-shadow .2s}.modules-wrapper .modules-search input::placeholder{color:var(--color-text-muted)}.modules-wrapper .modules-search input:focus{border-color:var(--accent-color);box-shadow:0 0 0 3px var(--accent-background)}.modules-wrapper .modules-search input::-webkit-search-cancel-button{-webkit-appearance:none}.modules-wrapper .modules-search svg{position:absolute;left:12px;width:14px;height:14px;stroke:var(--color-text-muted);pointer-events:none;transition:stroke .2s}.modules-wrapper .modules-search input:focus~svg{stroke:var(--link-color)}.modules-wrapper .modules-search kbd{position:absolute;right:10px;padding:2px 7px;font-family:var(--font-mono);font-size:10px;color:var(--color-text-muted);background:var(--bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);pointer-events:none}.modules-wrapper .modules-search .modules-search-clear{position:absolute;right:9px;display:none;width:20px;height:20px;border:none;border-radius:50%;background:var(--hover-bg);color:var(--color-text-secondary);font-size:12px;line-height:1;cursor:pointer}.modules-wrapper .modules-search.has-text kbd{display:none}.modules-wrapper .modules-search.has-text .modules-search-clear{display:grid;place-items:center}.modules-wrapper .modules-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:4px;margin-bottom:var(--space-4);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.modules-wrapper .modules-tab{display:flex;align-items:center;gap:7px;padding:7px 12px;border:none;background:transparent;color:var(--color-text-secondary);font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;border-radius:6px;cursor:pointer;transition:color var(--dur-fast) ease,background var(--dur-fast) ease}.modules-wrapper .modules-tab:hover{color:var(--color-text-primary);background:var(--hover-bg)}.modules-wrapper .modules-tab.active{background:var(--color-accent);color:var(--accent-text);box-shadow:var(--shadow-sm)}.modules-wrapper .modules-tab .alert-dot{width:6px;height:6px;border-radius:50%;flex:none}.modules-wrapper .modules-tab .alert-dot.bad{background:var(--status-bad)}.modules-wrapper .modules-tab .alert-dot.warn{background:var(--status-warn)}.modules-wrapper .modules-tab .modules-tab-count{font-family:var(--font-mono);font-size:9.5px;letter-spacing:0;padding:1px 6px;border-radius:var(--radius-pill);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-muted);transition:background var(--dur-fast) ease,color var(--dur-fast) ease,border-color var(--dur-fast) ease}.modules-wrapper .modules-tab.active .modules-tab-count{background:color-mix(in srgb,var(--accent-text) 20%,transparent);border-color:transparent;color:var(--accent-text)}.modules-wrapper .module-location-head{display:flex;align-items:center;gap:9px;margin:var(--space-4) 0 var(--space-3)}.modules-wrapper .module-location-head:first-of-type{margin-top:0}.modules-wrapper .module-location-head .tick{width:3px;height:14px;background:var(--color-accent);border-radius:2px;flex:none}.modules-wrapper .module-location-head h3{font-family:var(--font-display);font-size:12px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--color-text-secondary)}.modules-wrapper .module-location-head .rule{flex:1;height:1px;background:linear-gradient(90deg,var(--color-border),transparent)}.modules-wrapper .module-space{animation:modules-rise .4s ease backwards}@keyframes modules-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.modules-wrapper .module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:10px}.modules-wrapper .module-block{position:relative;background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:11px 13px;display:flex;flex-direction:column;gap:9px;overflow:hidden;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease}.modules-wrapper .module-block:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.modules-wrapper .module-block:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--status-ok)}.modules-wrapper .module-block.status-warning:before{background:var(--status-warn)}.modules-wrapper .module-block.status-bad:before{background:var(--status-bad)}.modules-wrapper .module-block.status-bad{border-color:color-mix(in srgb,var(--danger-color) 45%,var(--color-border))}.modules-wrapper .module-block>.module-card-top>.online-status{width:9px;height:9px;margin-top:5px;flex:none;box-shadow:0 0 0 2.5px color-mix(in srgb,var(--color-action) 22%,transparent)}.modules-wrapper .module-block>.module-card-top>.online-status.offline{box-shadow:0 0 0 2.5px color-mix(in srgb,var(--color-danger) 25%,transparent);animation:modules-bad-pulse 1.6s ease-in-out infinite}.modules-wrapper .module-block>.module-card-top>.online-status.inactive{box-shadow:none}.modules-wrapper .module-block>.module-card-top>.online-status.deep-sleep{box-shadow:0 0 0 2.5px color-mix(in srgb,var(--color-info) 22%,transparent)}@keyframes modules-bad-pulse{0%,to{box-shadow:0 0 0 2.5px color-mix(in srgb,var(--color-danger) 30%,transparent)}50%{box-shadow:0 0 0 7px transparent}}.modules-wrapper .module-card-top{display:flex;align-items:center;gap:8px 10px;flex-wrap:nowrap}.modules-wrapper .module-card-top>.online-status{flex:0 0 auto}.modules-wrapper .module-name{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modules-wrapper .module-card-actions{flex:0 0 auto;margin-left:auto;display:flex;align-items:center;gap:8px}.modules-wrapper .module-gear{flex:0 0 auto}@keyframes module-wifi-pulse{0%,to{opacity:.35}50%{opacity:.7}}.modules-wrapper .module-wifi-symbol{flex:0 0 auto;display:inline-flex;align-items:flex-end;gap:2px;height:16px}.modules-wrapper .module-wifi-symbol .wifi-bar{width:3px;border-radius:1px;background:var(--color-border)}.modules-wrapper .module-wifi-symbol .wifi-bar-1{height:5px}.modules-wrapper .module-wifi-symbol .wifi-bar-2{height:9px}.modules-wrapper .module-wifi-symbol .wifi-bar-3{height:13px}.modules-wrapper .module-wifi-symbol .wifi-bar-4{height:16px}.modules-wrapper .module-wifi-symbol.poor .wifi-bar-1{background:var(--color-danger)}.modules-wrapper .module-wifi-symbol.low .wifi-bar-1,.modules-wrapper .module-wifi-symbol.low .wifi-bar-2{background:var(--color-warning)}.modules-wrapper .module-wifi-symbol.normal .wifi-bar-1,.modules-wrapper .module-wifi-symbol.normal .wifi-bar-2,.modules-wrapper .module-wifi-symbol.normal .wifi-bar-3{background:#a3e635}.modules-wrapper .module-wifi-symbol.great .wifi-bar-1,.modules-wrapper .module-wifi-symbol.great .wifi-bar-2,.modules-wrapper .module-wifi-symbol.great .wifi-bar-3,.modules-wrapper .module-wifi-symbol.great .wifi-bar-4{background:var(--color-action)}.modules-wrapper .module-wifi-symbol.loading{opacity:.5;animation:module-wifi-pulse 1.6s ease-in-out infinite}.modules-wrapper .module-address{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-muted);white-space:nowrap;overflow:hidden}.modules-wrapper .module-address a{color:var(--color-accent);text-decoration:none;overflow:hidden;text-overflow:ellipsis}.modules-wrapper .module-address a:hover{text-decoration:underline}.modules-wrapper .module-address .module-terminal{flex:0 0 auto;margin-left:2px;color:var(--color-text-muted)}.modules-wrapper .module-address .module-terminal:hover{color:var(--color-accent)}.modules-wrapper .module-mqtt{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;color:var(--color-text-secondary);background:var(--input-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:3px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modules-wrapper .module-mqtt .svg-icon{flex:0 0 auto;color:var(--color-text-muted)}.modules-wrapper .module-tags{display:flex;flex-wrap:wrap;gap:4px}.modules-wrapper .tag{font-size:11px;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:1px 8px}.modules-wrapper .devices{font-size:12px;color:var(--color-text-muted)}.modules-wrapper .devices-toggle{cursor:pointer;color:var(--color-accent);display:flex;align-items:center;font-weight:500}.modules-wrapper .devices-toggle:hover{opacity:.8}.modules-wrapper .devices-toggle .svg-icon{width:12px;height:12px;margin-left:4px}.modules-wrapper .module-details-block{display:flex;align-items:baseline;gap:8px;font-size:12px}.modules-wrapper .module-details-block .title{flex:0 0 auto;font-weight:600;color:var(--color-text-primary)}.modules-wrapper .module-details-block .value{flex:1 1 auto;min-width:0;color:var(--color-text-secondary)}.modules-wrapper .module-details-block .sensor-info{white-space:nowrap}.modules-wrapper .module-foot{display:flex;align-items:center;gap:10px;padding-top:8px;margin-top:auto;border-top:1px dashed var(--color-border)}.modules-wrapper .module-firmware{font-family:var(--font-mono);font-size:10px;color:var(--color-text-muted);padding:2px 6px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--input-bg);cursor:default}.modules-wrapper .module-firmware b{color:var(--color-text-secondary);font-weight:500}.modules-wrapper .module-firmware:hover{color:var(--color-text-secondary);border-color:var(--color-border-strong)}@media (max-width: 720px){.modules-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.modules-wrapper .modules-search{flex:1 1 auto;min-width:140px}.modules-wrapper .module-grid{grid-template-columns:1fr}}.module-info .module-template{padding:5px}.module-info .time-sync-issue{background-color:#cd5c5c}.module-add table tr{cursor:pointer}.module-add .module-add-empty{margin:0 0 16px;color:var(--color-text-secondary)}.module-add .module-add-guide{border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-elevated);padding:16px}.module-add .module-add-guide .module-add-guide-title{margin:0 0 14px;font-size:15px;font-weight:600;color:var(--color-text-primary)}.module-add .module-add-guide .module-add-guide-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 24px;margin-bottom:16px}.module-add .module-add-guide .module-add-guide-item{display:flex;flex-direction:column;gap:2px}.module-add .module-add-guide .module-add-guide-label{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--color-text-muted)}.module-add .module-add-guide .module-add-guide-value{font-size:14px;color:var(--color-text-primary);word-break:break-all}.module-add .module-add-guide .module-add-guide-cmd{border:1px solid var(--color-border);border-radius:6px;overflow:hidden}.module-add .module-add-guide .module-add-guide-cmd .module-add-guide-cmd-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;background:var(--color-surface);font-size:12px;color:var(--color-text-secondary)}.module-add .module-add-guide .module-add-guide-cmd .module-add-guide-cmd-body{margin:0;padding:10px 12px;font-family:Consolas,Menlo,monospace;font-size:12px;line-height:1.6;white-space:pre-wrap;color:var(--color-text-primary)}.powers-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.powers-wrapper .power-location{margin-bottom:var(--space-4)}.powers-wrapper .power-location .power-location-header{display:flex;align-items:center;gap:11px;padding:12px 16px;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--dur-fast) ease}.powers-wrapper .power-location .power-location-header:hover{border-color:color-mix(in srgb,var(--color-accent) 45%,var(--color-border))}.powers-wrapper .power-location .power-location-header .power-location-icon{flex:0 0 auto;color:var(--color-text-secondary)}.powers-wrapper .power-location .power-location-header .power-location-name{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:600;font-size:14px;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.powers-wrapper .power-location .power-location-header .power-location-count{flex:0 0 auto;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.3px;padding:3px 11px;border-radius:var(--radius-pill);background-color:var(--color-bg);border:1px solid var(--color-border);color:var(--color-text-muted);white-space:nowrap}.powers-wrapper .power-location .power-location-header .power-location-chevron{flex:0 0 auto;color:var(--color-text-muted);transition:transform var(--dur-fast) ease}.powers-wrapper .power-location.is-collapsed .power-location-header .power-location-chevron{transform:rotate(180deg)}.powers-wrapper .power-location .power-location-powers{display:grid;grid-template-columns:repeat(auto-fill,minmax(272px,1fr));gap:10px;margin-top:10px}.powers-wrapper .power-card{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:12px 13px 11px;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease}.powers-wrapper .power-card:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.powers-wrapper .power-card-top{display:flex;align-items:center;gap:8px 10px;flex-wrap:nowrap}.powers-wrapper .power-status{flex:0 0 auto;display:flex;align-items:center}.powers-wrapper .power-title{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:600;font-size:13.5px;letter-spacing:.02em;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.powers-wrapper .power-title .inline-editor{position:relative;cursor:pointer;padding-right:16px;text-decoration:none;text-decoration-style:none}.powers-wrapper .power-title .inline-editor:after{content:"";position:absolute;top:50%;right:0;width:13px;height:13px;transform:translateY(-50%) scale(.7) rotate(-10deg);opacity:0;background-color:var(--color-text-muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;pointer-events:none}.powers-wrapper .power-title .inline-editor:hover:after{opacity:.85;transform:translateY(-50%) scale(1) rotate(0)}.powers-wrapper .power-title .inline-editor.inline-editor-editing{padding-right:0}.powers-wrapper .power-title .inline-editor.inline-editor-editing input{width:auto;min-width:120px;max-width:100%;height:auto;padding:1px 2px;text-align:left;color:var(--color-text-primary);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-accent);border-radius:2px 2px 0 0;font-family:inherit;font-size:inherit;font-weight:inherit}.powers-wrapper .power-card-actions{flex:0 0 auto;margin-left:auto;display:flex;align-items:center;gap:8px}.powers-wrapper .power-toggle{min-width:44px;justify-content:center;font-family:var(--font-display);font-weight:700;letter-spacing:.1em;text-transform:uppercase;font-size:10.5px;padding:4px 10px;border-radius:99px;background-color:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.powers-wrapper .power-toggle:hover{background-color:var(--color-border);box-shadow:none}.powers-wrapper .power-toggle.is-on{background-color:var(--status-ok);color:#04150d;border-color:var(--status-ok);box-shadow:0 0 8px color-mix(in srgb,var(--status-ok) 45%,transparent)}.powers-wrapper .power-toggle.is-on:hover{background-color:color-mix(in srgb,var(--status-ok) 88%,#fff)}.powers-wrapper .power-card-meta{display:flex;align-items:center;gap:7px;margin-top:10px;font-size:11.5px;color:var(--color-text-muted)}.powers-wrapper .power-card-meta .power-module{display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.powers-wrapper .power-card-meta .power-module .icon-terminal{flex:0 0 auto;margin-left:2px}.powers-wrapper .power-card-meta .power-id{flex:0 0 auto;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;color:var(--color-text-secondary);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:2px 7px}.powers-wrapper .power-on{filter:invert(69%) sepia(22%) saturate(1000%) hue-rotate(112deg)}@media (max-width: 720px){.powers-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.powers-wrapper .power-location-powers{grid-template-columns:1fr}.powers-wrapper .power-card-top .power-title{flex:1 1 calc(100% - 110px)}.powers-wrapper .power-card-top .power-card-actions{order:3;margin-left:auto}}.module-wrapper{padding:10px;position:relative}.module-wrapper .mqtt-console{height:calc(100vh - 145px)}.module-wrapper .module-info-name{font-size:1.2em}.board{display:flex;flex-direction:column}.board .board-row{display:flex}.board .board-row .board-image{position:absolute;z-index:1}.board .board-row .board-cell{display:flex;flex-basis:0;align-items:center;position:relative;flex-wrap:wrap;opacity:.3}.board .board-row .board-cell.cell-active,.board .board-row .board-cell:hover{opacity:1}.board .board-row .board-cell-empty{position:relative;min-height:1em}.board .board-row .board-cell .board-io{border-radius:3px;padding:1px 2px;margin:3px;z-index:2}.board .board-row .board-cell .board-device{border-radius:3px;padding:1px 2px;margin:3px;z-index:2;background-color:#211a44}.board .board-row .board-cell .power-control-wrapper{border-radius:3px;padding:1px 2px;margin:0 2px;z-index:2;background-color:#211a44}.board .board-row .board-cell .pin-round{width:14px;background-color:#888;height:14px;border-radius:3px;position:relative}.board .board-row .board-cell .pin-round:after{content:"";width:6px;height:6px;background-color:#000;display:block;position:absolute;border-radius:2px;left:4px;top:4px}.board .board-row .board-cell .pin-round.pin-active{background-color:#12611c}.board .board-row .board-cell .pin-round.pin-input{background-color:#618ccc}.board .board-row .board-cell .pin-round.pin-issues{background-color:#c72121}.table-module-configs{table-layout:fixed}.table-module-configs .long-cell-text{word-break:break-word}.table-module-configs .column-key{word-break:break-all}.table-module-configs .value-default{opacity:.5}.table-module-configs code{background-color:#000;border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.table-module-configs a{color:#2094f3}.table-module-configs .emojione,.table-module-configs .gemoji,.table-module-configs .twemoji{display:inline-flex;height:1.125em;vertical-align:text-top}.actions-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.actions-wrapper .actions-list{display:flex;flex-direction:column;gap:var(--space-3)}.actions-wrapper .actions-empty{padding:var(--space-5) var(--space-3);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.actions-wrapper .action-card{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:14px 16px;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease}.actions-wrapper .action-card:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.actions-wrapper .action-card-top{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap}.actions-wrapper .action-card-icon{flex:0 0 auto;width:18px;height:18px;color:var(--color-text-secondary)}.actions-wrapper .action-title{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:600;color:var(--color-text-primary)}.actions-wrapper .action-title .inline-editor{position:relative;cursor:pointer;padding-right:16px;text-decoration:none;text-decoration-style:none}.actions-wrapper .action-title .inline-editor:after{content:"";position:absolute;top:50%;right:0;width:13px;height:13px;transform:translateY(-50%) scale(.7) rotate(-10deg);opacity:0;background-color:var(--color-text-muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;pointer-events:none}.actions-wrapper .action-title .inline-editor:hover:after{opacity:.85;transform:translateY(-50%) scale(1) rotate(0)}.actions-wrapper .action-title .inline-editor.inline-editor-editing{padding-right:0}.actions-wrapper .action-title .inline-editor.inline-editor-editing input{width:auto;min-width:120px;max-width:100%;height:auto;padding:1px 2px;text-align:left;color:var(--color-text-primary);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-accent);border-radius:2px 2px 0 0;font-family:inherit;font-size:inherit;font-weight:inherit}.actions-wrapper .action-lastrun{flex:0 0 auto;font-size:11px;font-weight:500;letter-spacing:.3px;padding:2px 9px;border-radius:var(--radius-pill);background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary);white-space:nowrap}.actions-wrapper .action-card-actions{flex:0 0 auto;margin-left:auto;display:flex;align-items:center;gap:8px}.actions-wrapper .action-run .svg-icon{width:13px;height:13px}.actions-wrapper .action-card-script{margin-top:10px;padding:8px 12px;font-family:var(--font-mono);font-size:12px;line-height:1.5;color:var(--color-text-secondary);background-color:var(--formulas-bg);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 720px){.actions-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.actions-wrapper .action-card-top .action-title{flex:1 1 calc(100% - 34px)}.actions-wrapper .action-card-top .action-lastrun{order:2}.actions-wrapper .action-card-top .action-card-actions{order:3;margin-left:auto}.actions-wrapper .action-card-script{white-space:pre-wrap;word-break:break-word}}.rules-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.rules-wrapper .rules-list{display:flex;flex-direction:column;gap:var(--space-3)}.rules-wrapper .rules-empty{padding:var(--space-5) var(--space-3);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.rules-wrapper .rule-card{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:14px 16px;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease}.rules-wrapper .rule-card:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.rules-wrapper .rule-card-top{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap}.rules-wrapper .rule-card-icon{flex:0 0 auto;width:18px;height:18px;color:var(--color-text-secondary)}.rules-wrapper .rule-title{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:600;color:var(--color-text-primary)}.rules-wrapper .rule-title .inline-editor{position:relative;cursor:pointer;padding-right:16px;text-decoration:none;text-decoration-style:none}.rules-wrapper .rule-title .inline-editor:after{content:"";position:absolute;top:50%;right:0;width:13px;height:13px;transform:translateY(-50%) scale(.7) rotate(-10deg);opacity:0;background-color:var(--color-text-muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;pointer-events:none}.rules-wrapper .rule-title .inline-editor:hover:after{opacity:.85;transform:translateY(-50%) scale(1) rotate(0)}.rules-wrapper .rule-title .inline-editor.inline-editor-editing{padding-right:0}.rules-wrapper .rule-title .inline-editor.inline-editor-editing input{width:auto;min-width:120px;max-width:100%;height:auto;padding:1px 2px;text-align:left;color:var(--color-text-primary);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-accent);border-radius:2px 2px 0 0;font-family:inherit;font-size:inherit;font-weight:inherit}.rules-wrapper .rule-state{flex:0 0 auto;font-size:11px;font-weight:500;letter-spacing:.3px;padding:2px 9px;border-radius:var(--radius-pill);background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary);white-space:nowrap}.rules-wrapper .rule-state.is-active{color:var(--color-action);background-color:var(--color-action-bg);border-color:color-mix(in srgb,var(--color-action) 35%,var(--color-border))}.rules-wrapper .rule-card-actions{flex:0 0 auto;margin-left:auto;display:flex;align-items:center;gap:10px}.rules-wrapper .rule-card-condition{margin-top:10px;padding:8px 12px;font-family:var(--font-mono);font-size:12px;line-height:1.5;color:var(--color-text-secondary);background-color:var(--formulas-bg);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 720px){.rules-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.rules-wrapper .rule-card-top .rule-title{flex:1 1 calc(100% - 34px)}.rules-wrapper .rule-card-top .rule-state{order:2}.rules-wrapper .rule-card-top .rule-card-actions{order:3;margin-left:auto}.rules-wrapper .rule-card-condition{white-space:pre-wrap;word-break:break-word}}.btn-execute:hover .svg-icon{opacity:1}.script-console{min-width:0;width:100%}.script-console-wrapper{width:calc(100% - 11px);margin-top:10px;overflow:scroll;height:200px;display:block;background:#1f1f1f;color:#65c115;font:initial;border-width:1px;border-style:solid;border-color:var(--color-border);border-radius:6px;padding:5px;font-family:monospace}.script-console-wrapper p{white-space:nowrap;margin:1px}.script-console .script-command{width:calc(100% - 11px);margin-top:5px;padding:5px;background-color:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:4px}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.sensors-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.sensors-wrapper .sensors-list{display:flex;flex-direction:column;gap:var(--space-3)}.sensors-wrapper .sensors-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:60px 20px;text-align:center;color:var(--color-text-muted);font-size:13px}.sensors-wrapper .sensor-card{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);animation:rise .4s ease backwards}.sensors-wrapper .sensor-card-header{display:flex;align-items:center;gap:11px;border-radius:var(--radius-md) var(--radius-md) 0 0;padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:color-mix(in srgb,var(--color-surface) 45%,var(--color-bg-elevated));border-bottom:1px solid var(--color-border);transition:background-color var(--dur-fast) ease}.sensors-wrapper .sensor-card-header:hover{background-color:var(--color-surface)}.sensors-wrapper .sensor-card-header.is-collapsed{border-bottom:none}.sensors-wrapper .sensor-card-chevron{flex:0 0 auto;width:14px;height:14px;color:var(--color-text-muted);transition:transform var(--dur-med) var(--ease-out);transform:rotate(0)}.sensors-wrapper .sensor-card-header.is-collapsed .sensor-card-chevron{transform:rotate(-90deg)}.sensors-wrapper .sensor-card-icon{flex:0 0 auto;width:22px;height:22px;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text-secondary)}.sensors-wrapper .sensor-card-icon svg{width:14px;height:14px}.sensors-wrapper .sensor-card-title{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-size:14px;font-weight:600;letter-spacing:.08em;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensors-wrapper .sensor-card-title .sensor-card-title-muted{color:var(--color-text-muted);font-style:italic;font-weight:500}.sensors-wrapper .sensor-card-meta{flex:0 0 auto;display:flex;align-items:center;gap:6px}.sensors-wrapper .sensor-count-pill{font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.3px;padding:3px 11px;border-radius:var(--radius-pill);background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-muted);white-space:nowrap}.sensors-wrapper .sensor-card-link{flex:0 0 auto;display:inline-flex;align-items:center;line-height:0;color:var(--color-text-secondary);padding:4px;border-radius:var(--radius-sm);transition:color var(--dur-fast) ease,background-color var(--dur-fast) ease}.sensors-wrapper .sensor-card-link:hover{color:var(--color-accent);background-color:var(--color-accent-bg)}.sensors-wrapper .sensor-card-link .svg-icon{width:16px;height:16px}.sensors-wrapper .sensor-card-body{padding:0;display:flex;flex-direction:column}.sensors-wrapper .sensor-chip{border-top:1px solid var(--color-border)}.sensors-wrapper .sensor-card-body>.sensor-chip:first-child{border-top:none}.sensors-wrapper .sensor-chip-header{display:flex;align-items:center;gap:10px;padding:9px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:color-mix(in srgb,var(--color-surface) 22%,var(--color-bg-elevated));color:var(--color-text-secondary);transition:background-color var(--dur-fast) ease}.sensors-wrapper .sensor-chip-header:hover{background-color:color-mix(in srgb,var(--color-surface) 45%,var(--color-bg-elevated))}.sensors-wrapper .sensor-chip-chevron{flex:0 0 auto;width:14px;height:14px;color:var(--color-text-muted);transition:transform var(--dur-med) var(--ease-out);transform:rotate(0)}.sensors-wrapper .sensor-chip-header.is-collapsed .sensor-chip-chevron{transform:rotate(-90deg)}.sensors-wrapper .sensor-chip-icon{flex:0 0 auto;width:14px;height:14px;color:var(--color-text-muted)}.sensors-wrapper .sensor-chip-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sensors-wrapper .sensor-chip-title{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sensors-wrapper .sensor-chip-meta{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;font-size:11px;color:var(--color-text-muted)}.sensors-wrapper .sensor-chip-type{font-weight:600;letter-spacing:.3px;padding:0 7px;border-radius:var(--radius-pill);background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary)}.sensors-wrapper .sensor-chip-lq,.sensors-wrapper .sensor-chip-seen{font-variant-numeric:tabular-nums}.sensors-wrapper .sensor-chip-header .battery-level{flex:0 0 auto;margin:0}.sensors-wrapper .sensor-chip-count{flex:0 0 auto;font-family:var(--font-mono);font-size:10.5px;font-weight:500;padding:3px 11px;border-radius:var(--radius-pill);background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-muted)}.sensors-wrapper .sensor-chip-body{padding:0;display:flex;flex-direction:column}.sensors-wrapper .sensor-item{display:flex;align-items:center;gap:12px;padding:10px 16px;border-top:1px solid var(--color-border);transition:background-color var(--dur-fast) ease}.sensors-wrapper .sensor-item:hover{background-color:var(--color-nav-hover)}.sensors-wrapper .sensor-item.outdated .sensor-title,.sensors-wrapper .sensor-item.outdated .sensor-type{color:var(--color-text-muted)}.sensors-wrapper .sensor-item .sensor-title{order:2;flex:0 1 auto;width:210px;min-width:0;font-family:var(--font-mono);font-size:12.5px;font-weight:500;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sensors-wrapper .sensor-item .sensor-title .inline-editor{position:relative;cursor:pointer;padding-right:16px;text-decoration:none;text-decoration-style:none}.sensors-wrapper .sensor-item .sensor-title .inline-editor:after{content:"";position:absolute;top:50%;right:0;width:13px;height:13px;transform:translateY(-50%) scale(.7) rotate(-10deg);opacity:0;background-color:var(--color-text-muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;pointer-events:none}.sensors-wrapper .sensor-item .sensor-title .inline-editor:hover:after{opacity:.85;transform:translateY(-50%) scale(1) rotate(0)}.sensors-wrapper .sensor-item .sensor-title .inline-editor.inline-editor-editing{padding-right:0}.sensors-wrapper .sensor-item .sensor-title .inline-editor.inline-editor-editing input{width:auto;min-width:120px;max-width:100%;height:auto;padding:1px 2px;text-align:left;color:var(--color-text-primary);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-accent);border-radius:2px 2px 0 0;font-family:inherit;font-size:inherit;font-weight:inherit}.sensors-wrapper .sensor-item .sensor-color{order:1;flex:0 0 auto}.sensors-wrapper .sensor-item .sensor-color>span{width:20px;height:20px;padding:0;box-sizing:border-box;background:transparent;border:1px solid var(--color-border);border-radius:6px;box-shadow:0 0 8px var(--color-accent-bg);cursor:pointer;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.sensors-wrapper .sensor-item .sensor-color>span:hover{border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-accent-bg)}.sensors-wrapper .sensor-item .sensor-color>span>span{border-radius:4px}.sensors-wrapper .sensor-item .sensor-type{order:3;flex:0 0 auto;display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:12.5px;color:var(--color-text-primary);font-variant-numeric:tabular-nums}.sensors-wrapper .sensor-item .sensor-active{order:4;flex:0 0 auto;margin-left:auto}.sensors-wrapper .sensor-item .sensor-active .react-switch-bg{border:1px solid var(--color-border);box-shadow:none!important}.sensors-wrapper .sensor-item .sensor-active .react-switch-handle{background:var(--text-primary)!important;box-shadow:none!important}.sensors-wrapper .sensor-item .sensor-active.is-on .react-switch-bg{background:var(--accent-color)!important;border-color:var(--accent-color)}.sensors-wrapper .sensor-item .sensor-actions{order:5;flex:0 0 auto}.sensors-wrapper .sensor-item .sensor-actions .dropdown .dd-button{padding:5px 7px;background-color:var(--color-surface);color:var(--color-text-muted)}.sensors-wrapper .sensor-item .sensor-actions .dropdown .dd-button:after{display:none}.sensors-wrapper .sensor-item .sensor-actions .dropdown .dd-button:hover{color:var(--color-text-primary);border-color:var(--color-text-muted)}@media (max-width: 720px){.sensors-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.sensors-wrapper .sensor-card-meta{display:none}.sensors-wrapper .sensor-card-header{padding:12px;gap:8px}.sensors-wrapper .sensor-item{flex-wrap:wrap;row-gap:8px}.sensors-wrapper .sensor-item .sensor-title{order:1;flex:1 1 auto;width:auto;min-width:0}.sensors-wrapper .sensor-item .sensor-type{order:2;flex:0 0 auto}.sensors-wrapper .sensor-item .sensor-color{order:3;flex:0 0 auto}.sensors-wrapper .sensor-item .sensor-active{order:4;flex:0 0 auto;margin-left:0}.sensors-wrapper .sensor-item .sensor-actions{order:5;flex:0 0 auto}}.push-wrapper{vertical-align:baseline;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;min-height:calc(100vh - 60px)}.apikey-wrapper{max-width:760px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.apikey-wrapper .apikey-header{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-primary);padding-bottom:var(--space-3);margin-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.apikey-wrapper .info-text{padding:12px 14px;margin-bottom:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);background-color:color-mix(in srgb,var(--color-accent) 6%,var(--color-bg-elevated));color:var(--color-text-secondary);font-size:13px;line-height:1.55}.apikey-wrapper .info-text code{background:var(--color-surface);color:var(--color-text-primary);padding:1px 6px;border-radius:4px;font-family:var(--font-mono);font-size:.9em}.apikey-wrapper .token-section{padding:var(--space-2) 0}.apikey-wrapper .token-section .section-header{font-weight:600;font-size:15px;color:var(--color-text-primary);padding:var(--space-2) 0;margin-bottom:var(--space-2)}.apikey-wrapper .token-section .token-display{display:flex;gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center}.apikey-wrapper .token-section .token-display .token-input{flex:1;min-width:200px;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;background:var(--input-bg);color:var(--color-text-primary);outline:none;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease}.apikey-wrapper .token-section .token-display .token-input:hover{border-color:var(--color-border-strong)}.apikey-wrapper .token-section .token-display .token-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--accent-background)}.apikey-wrapper .token-section .usage-info{background:var(--color-surface);padding:14px;margin-bottom:var(--space-4);border-radius:var(--radius-md);border-left:3px solid var(--color-accent)}.apikey-wrapper .token-section .usage-info .usage-header{font-weight:600;margin-bottom:var(--space-2);color:var(--color-text-primary)}.apikey-wrapper .token-section .usage-info p{margin:var(--space-2) 0;color:var(--color-text-secondary)}.apikey-wrapper .token-section .usage-info .code-block{display:block;background:var(--formulas-bg);color:var(--color-text-primary);padding:12px;margin-top:10px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:13px;overflow-x:auto;word-break:break-all}.apikey-wrapper .token-section .regenerate-section{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border);text-align:center}.apikey-wrapper .token-section .regenerate-section .warning-text{margin-top:10px;color:var(--color-danger);font-size:.9em;text-align:center;font-weight:700}.apikey-wrapper .no-token-section{padding:var(--space-5) 5px;text-align:center;border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.apikey-wrapper .no-token-section p{margin-bottom:var(--space-4);color:var(--color-text-secondary)}@media (max-width: 768px){.apikey-wrapper .token-display{flex-direction:column}.apikey-wrapper .token-display button{width:100%}}.mqtt-page{margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6);display:flex;flex-direction:column;height:calc(100vh - 96px);min-height:460px}.mqtt-page .mqtt-page-header{display:flex;align-items:flex-start;gap:12px;padding-bottom:var(--space-3);margin-bottom:var(--space-3);border-bottom:1px solid var(--color-border)}.mqtt-page .mqtt-page-header .mqtt-header-left{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.mqtt-page .mqtt-page-header .mqtt-title{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-primary)}.mqtt-page .mqtt-page-header .mqtt-subtitle{font-size:12.5px;color:var(--color-text-muted)}.mqtt-page .mqtt-console{flex:1 1 auto;min-height:0}.list-page-header .list-page-search input.form-group-input{flex:1 1 auto;min-width:120px}.list-page-header .list-page-search .react-select-container{flex:0 1 180px;min-width:120px;max-width:180px}@media (max-width: 720px){.list-page-header .list-page-search{display:flex;flex-wrap:wrap}.list-page-header .list-page-search .react-select-container{flex:1 1 auto;max-width:none;width:100%}.log-page-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.log-item .log-item-top .log-item-text{flex:1 1 calc(100% - 60px)}.log-item .log-item-top .log-item-actions{order:3}}.log-page-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.actions-log-wrapper{display:flex;flex-direction:column;gap:var(--space-3)}.actions-log-wrapper .log-empty{padding:var(--space-5) var(--space-3);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.actions-log-wrapper .log-item{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:12px 16px;overflow:hidden;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease}.actions-log-wrapper .log-item:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.actions-log-wrapper .log-item .svg-icon-action{cursor:pointer}.actions-log-wrapper .log-item-top{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap;font-weight:600;color:var(--color-text-primary)}.actions-log-wrapper .log-item-icon{flex:0 0 auto;width:18px;height:18px}.actions-log-wrapper .log-item-text{flex:1 1 auto;min-width:0;word-break:break-word}.actions-log-wrapper .log-item-actions{flex:0 0 auto;margin-left:auto;display:flex;align-items:center;gap:10px}.actions-log-wrapper .log-info{margin-top:4px;font-size:12.5px;color:var(--color-text-muted)}.actions-log-wrapper .log-item-child{margin:8px 0 0 28px;word-break:break-word;font-weight:400;font-size:.9em;color:var(--color-text-secondary)}.actions-log-wrapper .icon-error{filter:invert(17%) sepia(100%) saturate(7000%);padding:0 5px}.actions-log-wrapper .error-text{color:var(--color-danger)}.actions-log-wrapper .log-more{display:flex;justify-content:center;padding:var(--space-2) 0}.tenants-wrapper{max-width:760px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.tenants-wrapper .tenants-header{font-family:var(--font-display);font-size:18px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-primary);padding-bottom:var(--space-3);margin-bottom:var(--space-4);border-bottom:1px solid var(--color-border)}.tenants-wrapper .tenants-info{padding:12px 14px;margin-bottom:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);background-color:color-mix(in srgb,var(--color-accent) 6%,var(--color-bg-elevated));color:var(--color-text-secondary);font-size:13px;line-height:1.55}.tenants-wrapper .tenants-loading{padding:var(--space-3) 4px;font-style:italic;color:var(--color-text-secondary)}.tenants-wrapper .tenants-empty{padding:var(--space-5) var(--space-3);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.tenants-wrapper .tenants-list{display:flex;flex-direction:column;gap:10px;margin-bottom:var(--space-4)}.tenants-wrapper .tenant-row{display:flex;align-items:center;gap:var(--space-3);padding:14px 16px;background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,background-color var(--dur-fast) ease}.tenants-wrapper .tenant-row:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.tenants-wrapper .tenant-row.tenant-row--current{border-color:var(--color-accent);background-color:color-mix(in srgb,var(--color-accent) 8%,var(--color-bg-elevated))}.tenants-wrapper .tenant-info{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.tenants-wrapper .tenant-name{font-weight:600;font-size:15px;color:var(--color-text-primary)}.tenants-wrapper .tenant-key{font-family:Consolas,Menlo,monospace;font-size:12px;color:var(--color-text-muted);padding:1px 6px;border-radius:4px;background-color:var(--color-surface)}.tenants-wrapper .tenant-badge{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;padding:3px 10px;border-radius:var(--radius-pill);background-color:var(--color-surface);color:var(--color-text-secondary);white-space:nowrap}.tenants-wrapper .tenant-badge.tenant-badge--current{background-color:var(--color-accent);color:var(--color-text-inverse)}.tenants-wrapper .tenants-footer{padding-top:var(--space-3);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end}.chart-page-wrapper{height:100%;position:relative}.chart-page-wrapper .widget-chart-options{position:absolute;top:0;right:10px;background:var(--color-overlay);padding:5px 2px;border-radius:6px;opacity:.5;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;line-height:1em}.chart-page-wrapper .widget-chart-options .svg-icon{opacity:.5}.chart-page-wrapper .widget-chart-options a{cursor:pointer;padding:0 5px}.chart-page-wrapper .widget-chart-options a:hover,.chart-page-wrapper .widget-chart-options a.active{color:var(--color-text-inverse)}.chart-page-wrapper .widget-chart-options a:hover .svg-icon,.chart-page-wrapper .widget-chart-options a.active .svg-icon{opacity:1}.chart-page-wrapper .widget-chart-options a.active{font-weight:700}.chart-page-wrapper .widget-chart-options:hover{opacity:1}.cameras-wrapper{max-width:860px;margin:0 auto;padding:var(--space-5) var(--space-3) var(--space-6)}.cameras-wrapper .cameras-list{display:flex;flex-direction:column;gap:var(--space-3)}.cameras-wrapper .cameras-empty{padding:var(--space-5) var(--space-3);text-align:center;color:var(--color-text-muted);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md)}.cameras-wrapper .camera-card{background-color:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:14px 16px;transition:border-color var(--dur-fast) ease,box-shadow var(--dur-fast) ease,transform var(--dur-fast) ease}.cameras-wrapper .camera-card:hover{border-color:color-mix(in srgb,var(--color-accent) 55%,var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-2px)}.cameras-wrapper .camera-card-top{display:flex;align-items:center;gap:10px 12px;flex-wrap:wrap}.cameras-wrapper .camera-card-icon{flex:0 0 auto;width:18px;height:18px;color:var(--color-text-secondary)}.cameras-wrapper .camera-title{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:600;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cameras-wrapper .camera-title .inline-editor{position:relative;cursor:pointer;padding-right:16px;text-decoration:none;text-decoration-style:none}.cameras-wrapper .camera-title .inline-editor:after{content:"";position:absolute;top:50%;right:0;width:13px;height:13px;transform:translateY(-50%) scale(.7) rotate(-10deg);opacity:0;background-color:var(--color-text-muted);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;mask:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath d=%22M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.39-.39-1.02-.39-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z%22/%3E%3C/svg%3E") no-repeat center/contain;transition:opacity var(--dur-fast) ease,transform var(--dur-fast) ease;pointer-events:none}.cameras-wrapper .camera-title .inline-editor:hover:after{opacity:.85;transform:translateY(-50%) scale(1) rotate(0)}.cameras-wrapper .camera-title .inline-editor.inline-editor-editing{padding-right:0}.cameras-wrapper .camera-title .inline-editor.inline-editor-editing input{width:auto;min-width:120px;max-width:100%;height:auto;padding:1px 2px;text-align:left;color:var(--color-text-primary);background:var(--color-surface);border:none;border-bottom:1px solid var(--color-accent);border-radius:2px 2px 0 0;font-family:inherit;font-size:inherit;font-weight:inherit}.cameras-wrapper .camera-type{flex:0 0 auto;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.3px;padding:2px 9px;border-radius:var(--radius-pill);background-color:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary);white-space:nowrap}.cameras-wrapper .camera-card-actions{flex:0 0 auto;margin-left:auto;display:flex;align-items:center;gap:8px}.cameras-wrapper .camera-view .svg-icon{width:13px;height:13px}.cameras-wrapper .camera-card-uri{margin-top:10px;padding:8px 12px;font-family:var(--font-mono);font-size:12px;line-height:1.5;color:var(--color-text-secondary);background-color:var(--formulas-bg);border:1px solid var(--color-border);border-left:3px solid var(--color-accent);border-radius:var(--radius-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 720px){.cameras-wrapper{padding:var(--space-4) var(--space-3) var(--space-5)}.cameras-wrapper .camera-card-top .camera-title{flex:1 1 calc(100% - 34px)}.cameras-wrapper .camera-card-top .camera-type{order:2}.cameras-wrapper .camera-card-top .camera-card-actions{order:3;margin-left:auto}.cameras-wrapper .camera-card-uri{white-space:pre-wrap;word-break:break-word}}.screen-color>span{background-color:var(--color-bg);border:1px solid var(--color-border)}.react-switch-bg{background:var(--color-border-strong)!important}.react-hint__content{max-width:90%;border:1px solid var(--color-border-strong);background-color:var(--color-surface);border-radius:6px;padding:8px 12px;font-size:13px;box-shadow:0 4px 12px var(--color-shadow)}.react-hint__content .error{color:var(--color-danger)}.react-hint__content .function-description{color:var(--color-success)}.react-hint__content .function-name{color:var(--color-warning)}.react-hint__content .parameter-desc{display:block;color:var(--color-success)}.react-hint__content .parameter-desc b{color:var(--color-success)}.react-hint__content .argument{color:var(--color-info)}.react-hint__content .argument b{font-weight:400;color:var(--color-accent)}.react-hint__content .token-desc b,.react-hint__content .type{color:var(--color-accent)}
