@import"https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600&family=JetBrains+Mono:wght@400&display=swap";.tuya-cycle-table[data-v-9a7392de]{width:100%;border-collapse:collapse;margin-top:8px;table-layout:fixed}.tuya-cycle-table th[data-v-9a7392de],.tuya-cycle-table td[data-v-9a7392de]{border-bottom:1px solid var(--border-color, #e8e8e8);padding:6px 4px;text-align:left;font-size:12px}.tuya-cycle-raw[data-v-9a7392de]{margin-top:10px;font-size:12px;color:#8a8a8a;word-break:break-all}.tuya-cycle-actions[data-v-9a7392de]{display:flex;gap:8px;margin-top:10px}.tuya-cycle-week[data-v-9a7392de]{max-width:240px}.tuya-cycle-hint[data-v-9a7392de]{display:inline-block;margin-left:6px;font-size:12px;color:#8a8a8a}html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6}.vue-flow{position:relative;width:100%;height:100%;overflow:hidden;z-index:0;direction:ltr}.vue-flow__container{position:absolute;height:100%;width:100%;left:0;top:0}.vue-flow__pane{z-index:1}.vue-flow__pane.draggable{cursor:grab}.vue-flow__pane.selection{cursor:pointer}.vue-flow__pane.dragging{cursor:grabbing}.vue-flow__transformationpane{transform-origin:0 0;z-index:2;pointer-events:none}.vue-flow__viewport{z-index:4;overflow:clip}.vue-flow__selection{z-index:6}.vue-flow__edge-labels{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible{outline:none}.vue-flow .vue-flow__edges{pointer-events:none;overflow:visible}.vue-flow__edge-path,.vue-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.vue-flow__edge{pointer-events:visibleStroke;cursor:pointer}.vue-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.vue-flow__edge.animated path.vue-flow__edge-interaction{stroke-dasharray:none;animation:none}.vue-flow__edge.inactive{pointer-events:none}.vue-flow__edge.selected,.vue-flow__edge:focus,.vue-flow__edge:focus-visible{outline:none}.vue-flow__edge.selected .vue-flow__edge-path,.vue-flow__edge:focus .vue-flow__edge-path,.vue-flow__edge:focus-visible .vue-flow__edge-path{stroke:#555}.vue-flow__edge-textwrapper{pointer-events:all}.vue-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vue-flow__connection{pointer-events:none}.vue-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.vue-flow__connectionline{z-index:1001}.vue-flow__nodes{pointer-events:none;transform-origin:0 0}.vue-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.vue-flow__node.draggable{cursor:grab;pointer-events:all}.vue-flow__node.draggable.dragging{cursor:grabbing}.vue-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.vue-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.vue-flow__nodesselection-rect.dragging{cursor:grabbing}.vue-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px}.vue-flow__handle.connectable{pointer-events:all;cursor:crosshair}.vue-flow__handle-bottom{left:50%;bottom:0;transform:translate(-50%,50%)}.vue-flow__handle-top{left:50%;top:0;transform:translate(-50%,-50%)}.vue-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.vue-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.vue-flow__edgeupdater{cursor:move;pointer-events:all}.vue-flow__panel{position:absolute;z-index:5;margin:15px}.vue-flow__panel.top{top:0}.vue-flow__panel.bottom{bottom:0}.vue-flow__panel.left{left:0}.vue-flow__panel.right{right:0}.vue-flow__panel.center{left:50%;transform:translate(-50%)}@keyframes dashdraw{0%{stroke-dashoffset:10}}:root{--vf-node-bg: #fff;--vf-node-text: #222;--vf-connection-path: #b1b1b7;--vf-handle: #555}.vue-flow__edge.updating .vue-flow__edge-path{stroke:#777}.vue-flow__edge-text{font-size:10px}.vue-flow__edge-textbg{fill:#fff}.vue-flow__connection-path{stroke:var(--vf-connection-path)}.vue-flow__node{cursor:grab}.vue-flow__node.selectable:focus,.vue-flow__node.selectable:focus-visible{outline:none}.vue-flow__node-default,.vue-flow__node-input,.vue-flow__node-output{padding:10px;border-radius:3px;width:150px;font-size:12px;text-align:center;border-width:1px;border-style:solid;color:var(--vf-node-text);background-color:var(--vf-node-bg);border-color:var(--vf-node-color)}.vue-flow__node-default.selected,.vue-flow__node-default.selected:hover,.vue-flow__node-input.selected,.vue-flow__node-input.selected:hover,.vue-flow__node-output.selected,.vue-flow__node-output.selected:hover{box-shadow:0 0 0 .5px var(--vf-box-shadow)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible,.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible,.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{outline:none;border:1px solid #555}.vue-flow__node-default .vue-flow__handle,.vue-flow__node-input .vue-flow__handle,.vue-flow__node-output .vue-flow__handle{background:var(--vf-handle)}.vue-flow__node-default.selectable:hover,.vue-flow__node-input.selectable:hover,.vue-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.vue-flow__node-input{--vf-node-color: var(--vf-node-color, #0041d0);--vf-handle: var(--vf-node-color, #0041d0);--vf-box-shadow: var(--vf-node-color, #0041d0);background:var(--vf-node-bg);border-color:var(--vf-node-color, #0041d0)}.vue-flow__node-input.selected,.vue-flow__node-input:focus,.vue-flow__node-input:focus-visible{outline:none;border:1px solid var(--vf-node-color, #0041d0)}.vue-flow__node-default{--vf-handle: var(--vf-node-color, #1a192b);--vf-box-shadow: var(--vf-node-color, #1a192b);background:var(--vf-node-bg);border-color:var(--vf-node-color, #1a192b)}.vue-flow__node-default.selected,.vue-flow__node-default:focus,.vue-flow__node-default:focus-visible{outline:none;border:1px solid var(--vf-node-color, #1a192b)}.vue-flow__node-output{--vf-handle: var(--vf-node-color, #ff0072);--vf-box-shadow: var(--vf-node-color, #ff0072);background:var(--vf-node-bg);border-color:var(--vf-node-color, #ff0072)}.vue-flow__node-output.selected,.vue-flow__node-output:focus,.vue-flow__node-output:focus-visible{outline:none;border:1px solid var(--vf-node-color, #ff0072)}.vue-flow__nodesselection-rect,.vue-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.vue-flow__nodesselection-rect:focus,.vue-flow__nodesselection-rect:focus-visible,.vue-flow__selection:focus,.vue-flow__selection:focus-visible{outline:none}.vue-flow__handle{width:6px;height:6px;background:var(--vf-handle);border:1px solid #fff;border-radius:100%}.vue-flow__controls{box-shadow:0 0 2px 1px #00000014}.vue-flow__controls-button{background:#fefefe;border:none;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:5px}.vue-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.vue-flow__controls-button:hover{background:#f4f4f4}.vue-flow__controls-button:disabled{pointer-events:none}.vue-flow__controls-button:disabled svg{fill-opacity:.4}:root{color-scheme:dark;--surface: #0b1220;--surface-2: #0f172a;--text-muted: #94a3b8;--success: #22c55e;--danger: #f87171;--control-radius: .6rem;--tuya-panel-width: min(520px, 88vw)}*{box-sizing:border-box}.page{min-height:100vh;padding:1.1rem;transition:background .4s ease,color .3s ease}.page.tuya-panel-open{padding-right:calc(1.1rem + var(--tuya-panel-width))}.page.theme-light{background:radial-gradient(circle at top left,rgba(14,165,233,.12),transparent 45%),linear-gradient(180deg,#f8fafc,#eef2f7);color:#1f2937}.page.theme-dark{background:radial-gradient(circle at top right,rgba(59,130,246,.18),transparent 50%),linear-gradient(180deg,#0b0f14,#111827);color:#e5e7eb}.page.app-layout{padding:0}.app-layout{min-height:100vh}.app-layout .ant-layout{background:transparent}.app-sider{background:#0a0f1af5;border-right:1px solid rgba(148,163,184,.18)}.page.theme-light .app-sider{background:#f8fafc;border-right-color:#0f172a14}.app-sider .ant-layout-sider-children{display:flex;flex-direction:column}.sider-brand{height:64px;padding:0 1rem;display:flex;flex-direction:column;justify-content:center;gap:.1rem;border-bottom:1px solid rgba(148,163,184,.18)}.page.theme-light .sider-brand{border-bottom-color:#0f172a14}.sider-brand-title{margin:0;font-size:1.05rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.sider-brand-subtitle{font-size:.75rem;color:#94a3b8e6;letter-spacing:.08em;text-transform:uppercase}.page.theme-light .sider-brand-subtitle{color:#64748be6}.ant-layout-sider-collapsed .sider-brand-subtitle{display:none}.app-menu{flex:1;overflow:auto;background:transparent;border-right:0;padding:.6rem .4rem 1rem}.app-menu .ant-menu-item-group-title{padding:.4rem 1rem .3rem;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:#94a3b8d9}.page.theme-light .app-menu .ant-menu-item-group-title{color:#64748be6}.app-menu .ant-menu-item,.app-menu .ant-menu-submenu-title{height:44px;line-height:44px;margin:4px 8px;border-radius:6px}.app-menu .ant-menu-title-content{display:flex;align-items:center;gap:.6rem;width:100%}.menu-meta{margin-left:auto;font-size:.75rem;color:#94a3b8d9}.page.theme-light .menu-meta{color:#64748bd9}.ant-layout-sider-collapsed .menu-meta{display:none}.app-header{height:auto;min-height:64px;padding:.5rem 1.25rem;display:flex;align-items:center;justify-content:flex-start;gap:1rem;flex-wrap:nowrap;line-height:normal;background:#0f172ad1;border-bottom:1px solid rgba(148,163,184,.2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.app-header.ant-layout-header{height:auto;line-height:normal}.page.theme-light .app-header{background:#f8fafceb;border-bottom-color:#0f172a14}.header-context{display:flex;align-items:center;gap:1.5rem;flex:1 1 auto;min-width:0}.header-field{min-width:240px;max-width:360px;display:flex;align-items:center;gap:.6rem}.header-title h2{margin:.15rem 0 0}.header-title{display:flex;flex-direction:column;gap:.2rem}.app-header .subtitle-small{line-height:1.2}.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;flex:0 0 auto}.header-user-btn{display:inline-flex;align-items:center;gap:.5rem;padding:0 .4rem;font-weight:600;font-size:.95rem}.header-user-name{font-size:1rem}.app-content{padding:1.1rem 1.3rem 1.6rem}.content-inner{width:100%;max-width:100%;margin:0 auto;display:flex;flex-direction:column;gap:.8rem;min-width:0}.page.app-layout.tuya-panel-open .app-content{padding-right:calc(1.3rem + var(--tuya-panel-width))}@media (max-width: 900px){.page.app-layout.tuya-panel-open .app-content{padding-right:1.3rem}}.hero{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;margin-bottom:1rem}.hero-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem}.hero-actions .left-actions{display:flex;gap:.75rem;align-items:center}.hero h1{margin:0}.subtitle{margin:.25rem 0;color:#cbd5f5}.eyebrow{letter-spacing:.2em;font-size:.85rem;color:#67e8f9;margin:0;text-transform:uppercase}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin-bottom:.75rem;justify-content:center}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.75rem;margin-bottom:.75rem;justify-content:center}.chart-card{display:flex;flex-direction:column;gap:.9rem}.chart-icon{width:28px;height:28px;border-radius:50%;border:1px solid rgba(148,163,184,.4);position:relative}.chart-icon.pulse{background:radial-gradient(circle at 30% 30%,rgba(34,197,94,.8),transparent 55%)}.chart-icon.ring{box-shadow:inset 0 0 0 3px #3b82f699}.bar-list{display:flex;flex-direction:column;gap:.6rem}.bar-row{display:grid;grid-template-columns:minmax(80px,120px) 1fr auto;gap:.6rem;align-items:center}.bar-label{font-size:.85rem;color:#cbd5f5}.bar-track{height:8px;background:#94a3b833;border-radius:999px;overflow:hidden;display:flex;gap:2px}.bar-fill{height:100%}.bar-fill.online{background:linear-gradient(90deg,#22c55ee6,#10b981b3)}.bar-fill.abnormal{background:linear-gradient(90deg,#f87171e6,#fb923cb3)}.bar-value{font-size:.85rem;color:#e2e8f0}.controls-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.75rem;margin-bottom:.75rem;justify-content:start}.view-toggle{display:flex;gap:.5rem;align-items:flex-end}.view-toggle button{flex:1;border-radius:.75rem;border:1px solid transparent;background:#94a3b833;color:#e0e7ff;font-weight:500;transition:background .3s ease,border-color .3s ease}.view-toggle button.active{background:linear-gradient(135deg,#6366f1,#0ea5e9);border-color:transparent}.page.theme-light .view-toggle button.active{background:#6366f1;color:#fff}.control-field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:#cbd5f5}.admin-controls{margin-top:.75rem;display:flex;flex-wrap:wrap;gap:.75rem}.admin-field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:#cbd5f5;min-width:220px}.admin-console{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:1rem;margin-top:.6rem}.admin-sidebar{align-self:start;position:sticky;top:1rem;display:flex;flex-direction:column;gap:1rem;padding:1rem;border-radius:0}.admin-brand h2{margin:.2rem 0 0;font-size:1.2rem}.admin-nav{display:flex;flex-direction:column;gap:.4rem}.admin-menu{border-right:0;background:transparent}.admin-menu .ant-menu-item{height:auto;line-height:normal;padding:.7rem .8rem;margin:.3rem 0;border-radius:8px}.admin-menu-item{display:flex;flex-direction:column;gap:.2rem}.admin-menu-title{font-weight:600}.admin-menu-desc{font-size:.75rem;color:#94a3b8}.page.theme-light .admin-menu-desc{color:#64748b}.admin-main{display:flex;flex-direction:column;gap:.9rem}.admin-main-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1rem 1.1rem;border-radius:0;gap:.8rem;flex-wrap:wrap}.admin-main-header .subtitle-small{line-height:1.3}.admin-main-actions{display:flex;gap:.6rem}.admin-content{display:flex;flex-direction:column;gap:.9rem}.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.9rem}.admin-card{padding:1rem;border-radius:0;border:1px solid rgba(148,163,184,.2);background:#0f172a66}.admin-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.8rem}.admin-tabs{margin-bottom:.8rem}.admin-tab-group .ant-radio-button-wrapper,.admin-tab-group .ant-radio-button-wrapper:first-child{border-radius:0}.admin-tab-group .ant-radio-button-wrapper:last-child{border-radius:0}.admin-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem;width:100%}.admin-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8rem;margin-bottom:.8rem}.admin-panel{padding:.8rem;border-radius:0;border:1px solid rgba(148,163,184,.2);background:#02061759}.admin-form{display:grid;gap:.6rem}.admin-form-actions{display:flex;gap:.6rem}.admin-table{width:100%;border-collapse:collapse;font-size:.9rem}.admin-table th,.admin-table td{padding:.7rem .6rem;border-bottom:1px solid rgba(148,163,184,.15);text-align:left;vertical-align:top}.admin-table-meta{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:#94a3b8;margin-bottom:.4rem}.status-pill{display:inline-flex;align-items:center;padding:.1rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.02em;background:#94a3b826;color:#cbd5f5}.status-pill.status-online{background:#22c55e33;color:#86efac}.status-pill.status-offline{background:#f8717133;color:#fecaca}.status-pill.status-unknown{background:#94a3b833;color:#e2e8f0}.compact-table th,.compact-table td{padding:.4rem .5rem;font-size:.85rem}.admin-summary-table{grid-column:1 / -1}.admin-actions-cell{display:flex;gap:.4rem}.tag-success,.tag-danger{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:0;font-size:.75rem}.tag-success{background:#22c55e33;color:#bbf7d0}.tag-danger{background:#f8717133;color:#fecaca}.page.theme-light .tag-success{background:#22c55e2e;color:#065f46}.page.theme-light .tag-danger{background:#f8717138;color:#991b1b}.page.theme-light .admin-sidebar{background:#fff;border-color:#0f172a14}.page.theme-light .admin-nav-item{background:#f8fafc;border-color:#0f172a14;color:#0f172a}.page.theme-light .admin-nav-item small{color:#64748b}.page.theme-light .admin-nav-item.active{background:#0ea5e91f;border-color:#0ea5e959;box-shadow:0 14px 26px #0f172a1f}.page.theme-light .admin-main-header,.page.theme-light .admin-card,.page.theme-light .admin-panel{background:#fff;border-color:#0f172a14}.page.theme-light .admin-table th,.page.theme-light .admin-table td{border-bottom-color:#0f172a14}.page.theme-dark .subtitle,.page.theme-dark .subtitle-small,.page.theme-dark .tuya-status,.page.theme-dark .stat-label,.page.theme-dark .stat-helper,.page.theme-dark .device-card .device-classification,.page.theme-dark .device-card .location,.page.theme-dark .device-card .mac,.page.theme-dark .online-indicator,.page.theme-dark .classification-empty{color:#9aa3b2}.page.theme-dark .eyebrow{color:#7aa2c8}.page.theme-dark .stat-card{background:#111827;border-color:#94a3b82e;box-shadow:0 18px 36px #00000073}.page.theme-dark .stat-card.online{background:#111827;border-color:#22c55e59}.page.theme-dark .stat-card.offline,.page.theme-dark .stat-card.abnormal{background:#111827;border-color:#f8717166}.page.theme-dark .stat-card.temp{background:#111827;border-color:#facc1566}.page.theme-dark .stat-card.updated{background:#111827;border-color:#3b82f659}.page.theme-dark .classification-card{background:#0f141b;border-color:#94a3b82e;box-shadow:0 18px 36px #00000073}.page.theme-dark .device-card{background:#0f141b;border-color:#94a3b833;box-shadow:0 20px 40px #00000080}.page.theme-dark .device-card.card-alert{border-color:#f871718c;box-shadow:0 16px 28px #f8717126}.page.theme-dark .summary-card,.page.theme-dark .card{background:#0f141b;border-color:#94a3b82e;box-shadow:0 24px 48px #00000080}.page.theme-dark .tuya-modal-card{background:#0f141b;border-color:#94a3b833;box-shadow:0 24px 48px #0000008c}.page.theme-dark .tuya-function-item{background:#111827a6;border-color:#94a3b833}.page.theme-dark .sort-bar button.active{background:#3b82f68c;border-color:#3b82f6a6}.page.theme-dark .temperature{color:#7fb2ff}@media (max-width: 960px){.admin-console{grid-template-columns:1fr}.admin-sidebar{position:relative;top:0}}.tuya-status{font-size:.85rem;color:#cbd5f5}.page.theme-light .tuya-status{color:#475569}.stat-card{padding:.8rem;border-radius:1.2rem;background:linear-gradient(135deg,#0ea5e933,#0f172ad9);border:1px solid rgba(59,130,246,.3);box-shadow:0 30px 45px #050a19b3}.stat-card.online{background:linear-gradient(135deg,#16a34a33,#0f172acc);border-color:#22c55e66}.stat-card.offline{background:linear-gradient(135deg,#ef444433,#0f172acc);border-color:#ef444473}.stat-card.abnormal{background:linear-gradient(135deg,#f43f5e33,#0f172ad1);border-color:#f8717173}.stat-card.temp{background:linear-gradient(135deg,#facc1533,#0f172ad1);border-color:#facc1580}.stat-card.updated{background:linear-gradient(135deg,#3b82f633,#6366f14d);border-color:#3b82f680}.stat-card.clickable{cursor:pointer;transition:transform .15s ease,box-shadow .2s ease}.stat-card.clickable:hover{transform:translateY(-2px);box-shadow:0 24px 40px #050a198c}.stat-label{margin:0;color:#94a3b8;font-size:.85rem}.stat-value{margin:.4rem 0;font-size:2rem;font-weight:600;color:#fff}.page.theme-light .stat-value{color:#0f172a}.stat-helper{margin:0;color:#94a3b8;font-size:.85rem}.classification-card{margin-bottom:1rem;background:linear-gradient(135deg,#3b82f626,#0f172ae6);border:1px solid rgba(59,130,246,.35);box-shadow:0 25px 45px #04060f99}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem;justify-content:start;padding-left:0;min-height:auto;align-content:start}.tuya-wrap{overflow:visible}.tuya-subnav{display:flex;justify-content:flex-start;margin:.4rem 0 .2rem;padding-left:0}.tuya-subnav-group{border-radius:0;overflow:hidden}.tuya-card-grid{padding-top:.6rem;padding-bottom:.4rem;gap:.6rem;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));justify-content:start;padding-left:0}.device-card{padding:.5rem;border-radius:1rem;border:1px solid rgba(99,102,241,.45);background:linear-gradient(135deg,#6366f159,#0f172abf);display:flex;flex-direction:column;gap:.3rem;box-shadow:0 25px 50px #0f172aa6;cursor:pointer}.device-card.tuya-card .device-title{font-size:1rem}.device-card.tuya-card .device-subtitle{font-size:.85rem}.device-card.tuya-card .tuya-avatar{background:#3b82f633;color:#60a5fa;width:32px;height:32px;line-height:32px}.device-card.tuya-card .ant-card-meta{align-items:flex-start;width:100%}.device-card.tuya-card .ant-card-meta-avatar{margin-right:12px;margin-top:2px}.device-card.tuya-card .ant-card-meta-title{font-size:1.1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-card.tuya-card .ant-card-meta-description{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-card.tuya-card .ant-card-meta-detail{min-width:0}.device-card.tuya-card .tuya-card-header{display:flex;align-items:center;gap:.6rem}.device-card.tuya-card .device-classification{font-size:.8rem;color:#cbd5f5;white-space:nowrap}.page.theme-light .device-card.tuya-card .device-classification{color:#475569}.device-card.tuya-card{cursor:pointer;transition:transform .2s ease,border .2s ease,box-shadow .2s ease}.device-card.tuya-card:hover{transform:translateY(-2px)}.device-card.tuya-card.active{border-color:#22c55ee6;box-shadow:0 18px 32px #22c55e59;transform:translateY(-2px);position:relative}.device-card.tuya-card.active:before{content:"";position:absolute;left:-6px;top:12px;width:4px;height:24px;border-radius:999px;background:#22c55ef2;box-shadow:0 0 12px #22c55e99}.tuya-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;align-items:stretch;justify-content:flex-end;--tuya-panel-width: var(--tuya-panel-width);pointer-events:none}.tuya-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem 0;color:#94a3b8}.tuya-modal.position-left{justify-content:flex-start}.tuya-modal.position-center{justify-content:center}.tuya-modal.position-right{justify-content:flex-end}.auth-page{display:flex;align-items:center;justify-content:center;padding:2.4rem;background:radial-gradient(80% 60% at 50% 0%,#38bdf82e,#02061700),linear-gradient(135deg,#0f172a,#1e293b 45%,#0b1020)}.auth-card{width:min(400px,92vw);padding:1.6rem 1.8rem;border-radius:.4rem;border:1px solid rgba(148,163,184,.3);background:#0f172ae0;box-shadow:0 35px 70px #02061799}.page.theme-light .auth-card{background:#f8fafc;border-color:#0f172a1f;box-shadow:0 20px 40px #0f172a1f}.auth-hero h2{margin:.2rem 0 .1rem}.auth-subtitle{margin:0 0 .6rem;color:#94a3b8}.page.theme-light .auth-subtitle{color:#64748b}.auth-switch{display:flex;gap:.5rem;margin:.5rem 0 .8rem}.auth-switch .ant-btn.active{color:#38bdf8;font-weight:600}.auth-form{margin-top:.4rem}.auth-error{margin:.2rem 0 .8rem;color:#f87171;font-size:.9rem}.auth-user-pill{padding:0 .6rem;border-radius:.4rem;border:1px solid rgba(148,163,184,.35)}.watermark-wrap{width:100%;height:100%}.watermark-wrap .page{min-height:100vh}.tuya-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;pointer-events:none}.tuya-modal-card{position:relative;z-index:1;width:var(--tuya-panel-width);height:100%;min-height:100%;overflow:hidden;display:flex;flex-direction:column;background:linear-gradient(140deg,#0f172af2,#1e293bf2);border:1px solid rgba(148,163,184,.35);box-shadow:0 35px 70px #0f172a99;animation:tuya-slide-in .22s ease-out;pointer-events:auto}.tuya-drawer .ant-drawer-body{padding:0;background:transparent}.tuya-drawer .ant-drawer-content{background:transparent}.tuya-modal-scroll{height:100%;overflow:auto;padding:.9rem 1rem;flex:1 1 auto}.tuya-modal-card.tuya-offline{position:relative}.tuya-offline-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;background:#94a3b847;pointer-events:none}.tuya-modal-card.tuya-offline .tuya-modal-actions,.tuya-modal-card.tuya-offline .tuya-function-control,.tuya-modal-card.tuya-offline .tuya-control-stack,.tuya-modal-card.tuya-offline .tuya-input-row,.tuya-modal-card.tuya-offline .tuya-input,.tuya-modal-card.tuya-offline .tuya-select,.tuya-modal-card.tuya-offline .ant-switch,.tuya-modal-card.tuya-offline .ant-input-number,.tuya-modal-card.tuya-offline .ant-slider,.tuya-modal-card.tuya-offline .ant-input,.tuya-modal-card.tuya-offline .ant-btn{pointer-events:none}.tuya-modal.position-left .tuya-modal-card{border-radius:0 1.1rem 1.1rem 0}.tuya-modal.position-center .tuya-modal-card{border-radius:1.1rem}.tuya-function-list{display:flex;flex-direction:column;gap:.6rem}.tuya-function-item{display:flex;align-items:center;justify-content:space-between;gap:.85rem;flex-wrap:wrap;padding:1.3rem .7rem .5rem;border-radius:.75rem;border:1px solid rgba(148,163,184,.2);background:#0f172a59}.tuya-function-control{display:flex;justify-content:flex-end;min-width:140px;align-items:center;gap:.35rem}.tuya-input-row{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.tuya-slider{min-width:140px;flex:1 1 140px}.tuya-control-stack{display:flex;flex-direction:column;gap:.25rem;align-items:flex-end}.tuya-range-hint{font-size:.7rem;color:#94a3b8}.tuya-current{font-size:.7rem;color:#cbd5f5}.tuya-readonly{display:inline-flex;align-items:center;padding:6px 12px;border-radius:8px;background:#ffffff14;color:#e2e8f0;font-weight:600}.tuya-unit{font-size:.75rem;color:#94a3b8}.tuya-value{font-size:.75rem;color:#cbd5f5;min-width:2.5rem;text-align:right}.tuya-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.2rem}.tuya-modal-card .eyebrow{margin-bottom:.3rem}.tuya-modal-card h3{margin:.2rem 0 .45rem}.tuya-position-toggle{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem;border-radius:999px;border:1px solid rgba(148,163,184,.35);background:#0f172a59}.tuya-modal-actions{display:flex;align-items:center;gap:.5rem}@keyframes tuya-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.tuya-modal.closing .tuya-modal-card{animation:tuya-slide-out .2s ease-in forwards}@keyframes tuya-slide-out{0%{transform:translate(0)}to{transform:translate(100%)}}@media (max-width: 900px){.page.tuya-panel-open{padding-right:1.1rem}}.sort-bar{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem;font-size:.9rem;color:inherit}.sort-bar button{border-radius:999px;border:1px solid transparent;padding:.35rem .9rem;background:#0f172a33;color:inherit;font-size:.8rem;transition:background .2s ease,border .2s ease}.sort-bar button.active{background:#3b82f6cc;border-color:#3b82f6e6}.device-card header{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem}.device-card .mac{font-size:.8rem;color:#94a3b8}.device-card .device-classification{color:#cbd5f5;margin:0;font-size:.85rem}.device-card .location{margin:0;font-size:.85rem;color:#a78bfa}.card-status{display:flex;justify-content:space-between;align-items:center;gap:.4rem}.card-status .state-text{margin-left:auto}.card-status .device-subtitle{margin:0}.device-card.tuya-card .card-status{justify-content:flex-start;padding-left:60px}.device-card.tuya-card .card-status .state-text{margin-left:auto}.online-indicator{font-size:.8rem;color:#94a3b8}.temperature{font-weight:600;color:#38bdf8;font-size:.9rem}.temperature.temp-alert{color:#f87171}.device-card.card-alert{border-color:#f87171b3;box-shadow:0 20px 40px #f8717140}.classification-grid{margin-top:.8rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,180px));gap:.6rem;justify-content:center}.automation-card{background:linear-gradient(160deg,#0f172ae6,#1e293be6);border:1px solid rgba(148,163,184,.25)}.automation-grid{display:grid;grid-template-columns:minmax(260px,1fr) minmax(320px,1.6fr);gap:.8rem;margin-top:.5rem;justify-content:center}.automation-panel{border-radius:0;border:1px solid rgba(148,163,184,.2);background:#0f172a80;padding:.8rem}.automation-panel-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.6rem}.automation-editor-toggle{flex-shrink:0}.ding-template-modal .ant-modal-body{display:flex;flex-direction:column;gap:.6rem}.ding-template-modal .template-panel-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.ding-template-modal .template-panel-body{display:flex;flex-direction:column;gap:.6rem}.ding-template-modal .template-panel-empty{font-size:.85rem;color:#94a3b8;line-height:1.5}.ding-template-modal .automation-ding-template{display:flex;flex-wrap:wrap;gap:.5rem}.ding-template-modal .automation-ding-template-select{flex:1 1 220px;min-width:200px}.ding-template-modal .automation-ding-template-name{flex:1 1 180px;min-width:160px}.ding-template-modal .automation-ding-template-remove{margin-left:auto}.ding-template-modal .template-modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.4rem}.ding-template-modal .template-editor-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.75rem;align-items:stretch}.ding-template-modal .template-markdown-preview{border:1px solid rgba(148,163,184,.3);background:#0f172a59;padding:.6rem;min-height:300px;height:300px;overflow:auto;color:inherit}.ding-template-modal .template-editor-input,.ding-template-modal .template-editor-input textarea{min-height:300px;height:300px}.ding-template-modal .template-markdown-preview h1,.ding-template-modal .template-markdown-preview h2,.ding-template-modal .template-markdown-preview h3{margin:.2rem 0 .5rem}.ding-template-modal .template-markdown-preview hr{border:0;border-top:1px solid rgba(148,163,184,.35);margin:.6rem 0}.ding-template-modal .template-markdown-preview p{margin:0 0 .5rem}.ding-template-modal .template-markdown-preview code{padding:.1rem .3rem;border-radius:4px;background:#94a3b833}.ding-template-modal .template-markdown-preview blockquote{margin:0 0 .5rem;padding-left:.6rem;border-left:3px solid rgba(148,163,184,.4);color:inherit}@media (max-width: 900px){.ding-template-modal .template-editor-grid{grid-template-columns:minmax(0,1fr)}}.ding-template-modal-wrap.theme-light .ding-template-modal .ant-modal-content{background:#fff;border:1px solid rgba(148,163,184,.35);box-shadow:0 24px 50px #0f172a2e}.ding-template-modal-wrap.theme-light .ding-template-modal .ant-modal-body{color:#0f172a}.ding-template-modal-wrap.theme-light .ding-template-modal .template-markdown-preview{background:#f8fafc;border-color:#94a3b859}.automation-form{display:flex;flex-direction:column;gap:.8rem}.automation-rule-meta{display:grid;grid-template-columns:minmax(220px,1fr) 120px;gap:.8rem;align-items:end}.automation-rule-meta-wide{grid-column:1 / -1}.automation-cooldown-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.automation-cooldown-row .ant-input-number{width:120px}.automation-cooldown-unit{font-size:.8rem;color:#94a3b8}.automation-editor-cards{display:flex;flex-direction:column;gap:.9rem}.automation-editor-card{background:#0f172a59;border:1px solid rgba(148,163,184,.16);border-radius:0;padding:.75rem}.automation-card-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.automation-card-body{margin-top:.6rem;display:flex;flex-direction:column;gap:.7rem}.automation-card-row{display:grid;grid-template-columns:90px minmax(140px,1fr);gap:.6rem;align-items:center}.automation-card-label{font-size:.8rem;color:#94a3b8}.automation-card-add{font-size:.85rem;padding:0}.automation-list{display:flex;flex-direction:column;gap:.5rem}.automation-list-item{display:flex;align-items:center;gap:.6rem;padding:.6rem .7rem;background:#0f172a40;border:1px solid rgba(148,163,184,.12);border-radius:0;cursor:pointer;transition:border .2s ease,background .2s ease}.automation-list-item:hover{border-color:#94a3b859;background:#0f172a59}.automation-list-main{flex:1;display:flex;flex-direction:column;gap:.2rem}.automation-list-title{font-weight:600}.automation-list-subtitle{font-size:.8rem;color:#94a3b8}.automation-list-arrow{color:#94a3b8;font-size:1.1rem}.automation-list-remove{padding:0;color:#f87171}.automation-empty{font-size:.85rem;color:#94a3b8;padding:.4rem .2rem}.automation-card-actions{display:flex;flex-wrap:wrap;gap:.6rem}.automation-drawer-field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.85rem}.automation-drawer-field>span{font-size:.8rem;color:#94a3b8}.automation-drawer-actions{display:flex;justify-content:flex-end}.automation-drawer-field .ant-select,.automation-drawer-field .ant-input,.automation-drawer-field .ant-input-number,.automation-drawer-field .ant-picker,.automation-drawer-field .ant-textarea{width:100%}.automation-form .ant-form-item{margin-bottom:0}.automation-form .ant-form-item.admin-field{display:block;min-width:220px}.automation-form .ant-form-item-label{padding:0 0 .35rem}.automation-form .ant-form-item-label>label{color:#cbd5f5;font-size:.85rem}.automation-form .automation-row{align-items:start}.automation-form .ant-switch{min-width:60px;height:26px;background:#94a3b859}.automation-form .ant-switch-handle{width:22px;height:22px;top:2px;left:2px}.automation-form .ant-switch-checked{background:linear-gradient(135deg,#22c55e,#16a34a)}.automation-form .ant-switch-inner{font-size:.75rem;letter-spacing:.04em}.automation-form .automation-enable-switch{min-width:48px;height:22px}.automation-form .automation-enable-switch .ant-switch-handle{width:18px;height:18px}.automation-form .automation-enable-switch .ant-switch-inner{font-size:.7rem}.automation-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;align-items:end}.automation-row.condition-row{grid-template-columns:repeat(auto-fit,minmax(180px,1fr)) auto}.automation-device-stack{display:grid;gap:.4rem}.automation-device-row{display:grid;grid-template-columns:110px minmax(160px,1fr);gap:.5rem;align-items:center}.automation-remove{align-self:end;margin-bottom:.1rem}.automation-targets{display:flex;flex-direction:column;gap:.6rem}.automation-target-header{display:grid;grid-template-columns:120px 90px minmax(140px,1fr) minmax(120px,1fr) 150px 130px 96px;gap:.5rem;font-size:.8rem;color:#94a3b8}.automation-notice{font-size:.85rem;color:#22c55e;margin-top:.6rem}.automation-space{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.automation-library{display:flex;flex-direction:column;gap:.5rem}.automation-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:1.5rem}.automation-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#030712a6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.automation-modal-card{position:relative;z-index:1;width:min(980px,96vw);max-height:88vh;overflow:auto;border-radius:0;padding:1.2rem;background:linear-gradient(140deg,#0f172af2,#1e293bf2);border:1px solid rgba(148,163,184,.35);box-shadow:0 30px 60px #0f172a8c}.automation-modal-card .tuya-modal-header{flex-wrap:wrap;align-items:flex-start;gap:.8rem}.automation-modal-card .tuya-modal-actions{flex-wrap:wrap;justify-content:flex-end}.automation-modal-card .automation-space{min-width:200px}.automation-device-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.8rem}.automation-loading{grid-column:1 / -1;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:1.2rem 0;color:#94a3b8}.automation-device-card{text-align:center;border-radius:0;border:1px solid rgba(148,163,184,.35);padding:.6rem .8rem;background:#3b82f62e;color:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:72px;transition:transform .2s ease,border .2s ease,box-shadow .2s ease}.automation-device-card:disabled{opacity:.6;cursor:not-allowed;box-shadow:none;transform:none}.automation-device-card:disabled:hover{background:#3b82f62e;border-color:#94a3b859;box-shadow:none;transform:none}.automation-device-card:hover{background:#3b82f647;border-color:#3b82f699;box-shadow:0 16px 28px #1e40af40}.automation-device-card:hover{transform:translateY(-2px);border-color:#3b82f699;box-shadow:0 16px 28px #0f172a40}.automation-device-card:active{transform:translateY(0);border-color:#22c55eb3}.automation-device-card .device-title{font-size:.95rem;margin-bottom:.15rem}.automation-temp-row{display:grid;grid-template-columns:70px minmax(80px,1fr) 40px;gap:.5rem;align-items:center}.automation-temp-row .unit{font-size:.85rem;color:#94a3b8}.automation-time-picker{width:100%;grid-column:1 / -1}.automation-time-picker .ant-picker-input>input{font-size:.95rem}.automation-target-row{display:grid;grid-template-columns:120px 90px minmax(140px,1fr) minmax(120px,1fr) 150px 130px 96px;gap:.5rem;align-items:center}.automation-target-row.automation-target-ding{grid-template-columns:120px minmax(260px,1fr) 96px;align-items:start}.automation-target-ding .automation-ding-config{grid-column:2 / 3;display:grid;grid-template-columns:minmax(120px,180px) minmax(200px,1fr);gap:.5rem;align-items:center}.automation-ding-template{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.automation-ding-template-select{min-width:160px}.automation-template-hint{margin-top:.35rem;font-size:.75rem;color:#94a3b8;line-height:1.4}.automation-target-ding .automation-ding-config{grid-column:2 / span 5;display:grid;grid-template-columns:120px minmax(140px,1fr);gap:.5rem;align-items:center}.automation-ding-mode{min-width:120px}.automation-value-placeholder{color:#94a3b8;font-size:.85rem;padding-left:.4rem}.automation-target-row .ant-select,.automation-target-row .ant-input,.automation-target-row .ant-input-number{width:100%}.automation-list-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.automation-item .subtitle-small{color:#cbd5f5}.automation-item h3{color:#e2e8f0}.page.theme-light .automation-item .subtitle-small,.page.theme-light .automation-item h3{color:#0f172a}.rule-pill{display:inline-flex;align-items:center;padding:.05rem .45rem;margin-right:.4rem;border-radius:0;font-size:.72rem;font-weight:600;letter-spacing:.02em;border:1px solid transparent}.rule-pill-trigger{background:#3b82f629;color:#93c5fd;border-color:#3b82f64d}.rule-pill-action{background:#f59e0b2e;color:#fbbf24;border-color:#f59e0b4d}.rule-pill-target,.rule-pill-active{background:#22c55e29;color:#86efac;border-color:#22c55e4d}.rule-pill-muted{background:#94a3b833;color:#cbd5f5;border-color:#94a3b84d}.rule-pill-time{background:#0ea5e929;color:#7dd3fc;border-color:#0ea5e94d}.rule-pill-author{background:#a855f729;color:#d8b4fe;border-color:#a855f74d}.automation-editor-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;z-index:30}.automation-editor-modal .ant-modal-content{border-radius:0;background:#0f172ae0;border:1px solid rgba(148,163,184,.25);box-shadow:0 30px 80px #0f172aa6}.automation-editor-modal .ant-modal-body{max-height:80vh;overflow:auto}.automation-editor-modal .automation-panel-head{position:sticky;top:0;background:inherit;z-index:2;padding-right:2.6rem}.automation-range-inputs{display:flex;align-items:center;gap:.5rem;flex-wrap:nowrap}.automation-range-inputs .ant-slider{flex:1 1 auto;min-width:120px}.automation-range-inputs .ant-input-number{width:90px;min-width:90px}.automation-multi-actions{display:flex;flex-direction:column;gap:.6rem}.automation-multi-action-row{display:flex;align-items:flex-start;gap:.6rem}.automation-multi-action-label{min-width:110px;font-size:12px;opacity:.8;padding-top:6px}.automation-multi-action-control{flex:1}.automation-flow{display:grid;grid-template-columns:minmax(420px,2.2fr) minmax(240px,.9fr);gap:.8rem;margin-top:.4rem;align-items:stretch}.automation-flow-canvas{min-height:680px;height:min(70vh,820px);border-radius:0;border:1px solid rgba(148,163,184,.28);background:radial-gradient(120% 120% at 15% 15%,rgba(56,189,248,.12),transparent 60%),radial-gradient(120% 120% at 90% 0%,rgba(129,140,248,.16),transparent 55%),linear-gradient(180deg,#0f172ab8,#020617eb);box-shadow:inset 0 0 0 1px #94a3b81a,0 24px 60px #0206178c;overflow:hidden}.automation-flow-view{width:100%;height:100%;--flow-edge: rgba(148, 163, 184, .65);--flow-highlight: rgba(56, 189, 248, .95)}.automation-flow-view .vue-flow__pane{cursor:grab}.automation-flow-view .vue-flow__node{border:1px solid rgba(148,163,184,.35);border-radius:0;padding:.55rem .75rem;background:linear-gradient(160deg,#1e293be6,#0f172af5);color:#e2e8f0;font-size:.82rem;line-height:1.35;min-width:170px;max-width:240px;text-align:left;white-space:pre-line;word-break:break-word;box-shadow:0 18px 28px #02061773}.automation-flow-view .vue-flow__node.selected{border-color:#38bdf8f2;box-shadow:0 0 0 1px #38bdf859,0 22px 36px #0206178c}.automation-flow-view .flow-node-trigger{background:linear-gradient(150deg,#0ea5e959,#1e40afbf);border-color:#38bdf8a6}.automation-flow-view .flow-node-condition{background:linear-gradient(150deg,#3b82f647,#0f172af2);border-color:#3b82f68c}.automation-flow-view .flow-node-action{background:linear-gradient(150deg,#fbbf2447,#1e293bf2);border-color:#fbbf248c}.automation-flow-view .flow-node-target{background:linear-gradient(150deg,#22c55e38,#0f172af2);border-color:#22c55e8c}.automation-flow-view .flow-node-empty{border-style:dashed;color:#94a3b8;background:#0f172a99}.automation-flow-view .vue-flow__edge-path{stroke:var(--flow-edge);stroke-width:2.2}.automation-flow-view .vue-flow__edge.selected .vue-flow__edge-path{stroke:var(--flow-highlight);stroke-width:2.6;filter:drop-shadow(0 0 6px rgba(56,189,248,.45))}.automation-flow-view .vue-flow__handle{width:10px;height:10px;border-radius:999px;border:2px solid rgba(15,23,42,.85);background:#38bdf8e6;box-shadow:0 0 0 2px #38bdf840}.automation-flow-view .vue-flow__controls{background:#0f172acc;border:1px solid rgba(148,163,184,.3);border-radius:0;box-shadow:0 12px 24px #02061773}.automation-flow-view .vue-flow__controls-button{background:transparent;color:#e2e8f0;border-radius:0}.automation-flow-view .vue-flow__controls-button:hover{background:#38bdf81f}.automation-flow-editor{display:flex;flex-direction:column;gap:.6rem;padding:.6rem;border-radius:0;border:1px solid rgba(148,163,184,.25);background:#0f172a66}.automation-flow-actions{display:flex;gap:.5rem;flex-wrap:wrap}.automation-flow-divider{height:1px;background:#94a3b833;margin:.2rem 0}.automation-flow-placeholder{font-size:.85rem;color:#94a3b8;line-height:1.4}.automation-flow-editor .automation-range-inputs{flex-wrap:wrap}.automation-list{display:flex;flex-direction:column;gap:.8rem;margin-top:.6rem}.automation-item{display:flex;justify-content:space-between;gap:1rem;padding:.8rem;border-radius:0;border:1px solid rgba(148,163,184,.2);background:#0f172a59}.automation-item h3{margin:0;font-size:1rem}.automation-actions{display:flex;flex-direction:column;gap:.5rem}.location-nav{margin:0 0 1rem;position:sticky;top:0;z-index:5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(148,163,184,.2);border-radius:0;padding:.9rem 1.1rem;background:#050a19d1}.page.theme-light .location-nav{background:#f8fafceb;border-bottom-color:#0f172a14}.location-nav .nav-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.nav-subrow{margin-top:.75rem;display:flex;flex-wrap:wrap;gap:.75rem}.nav-select-left{min-width:220px;position:relative}.nav-placeholder{visibility:hidden;min-height:64px}.nav-label{display:block;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:#94a3b8;margin-bottom:.35rem}.page.theme-light .nav-label{color:#475569}.header-field .nav-label{margin-bottom:0;font-size:.85rem;letter-spacing:.02em;text-transform:none;font-weight:600;white-space:nowrap;flex:0 0 auto}.header-field .ant-select{min-width:220px}.nav-title h2{margin:.15rem 0 0}.nav-title{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:220px;align-items:flex-start}.nav-title .subtitle-small{margin:0}.nav-actions{display:flex;align-items:center;gap:.75rem}.nav-actions .ant-btn.active,.nav-subrow .ant-btn.active{color:#2563eb;font-weight:600}.page.theme-light .nav-actions .ant-btn.active,.page.theme-light .nav-subrow .ant-btn.active{color:#1d4ed8}.brand-title{margin:.15rem 0 0;font-size:1.6rem;font-weight:700;letter-spacing:.05em}.nav-link{font-size:.95rem;font-weight:600;color:#e2e8f0;cursor:pointer;letter-spacing:.02em;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#94a3b899;transition:color .2s ease,text-decoration-color .2s ease}.nav-link:hover{color:#fff;text-decoration-color:#ffffffb3}.nav-link.active{color:#fff;text-decoration-color:#ffffffe6}.page.theme-light .nav-link{color:#1f2937;text-decoration-color:#0f172a59}.page.theme-light .nav-link:hover{color:#0f172a;text-decoration-color:#0f172a99}.page.theme-light .nav-link.active{color:#0f172a;text-decoration-color:#0f172acc}.alert-panel{margin-top:.8rem;padding:.8rem;border-radius:.9rem;border:1px solid rgba(248,113,113,.35);background:#0f172abf;box-shadow:0 20px 40px #02061766}.alert-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem;font-weight:600}.alert-list{display:grid;gap:.5rem}.alert-item{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.5rem .6rem;border-radius:.6rem;background:#f871711f;border:1px solid rgba(248,113,113,.2)}.alert-name{margin:0;font-weight:600}.alert-meta{margin:0;font-size:.8rem;color:#cbd5f5}.alert-temp{font-weight:600;color:#f87171}.page.theme-light .alert-panel{background:#fff;border-color:#f8717159;box-shadow:0 16px 28px #0f172a14}.page.theme-light .alert-item{background:#f8717114;border-color:#f8717133}.page.theme-light .alert-meta{color:#64748b}.nav-ghost{border-radius:999px;padding:.4rem .9rem;background:#0f172a59;border:1px solid rgba(148,163,184,.35);color:inherit;font-size:.85rem}.classification-item{padding:.4rem .45rem;border-radius:.9rem;border:1px solid rgba(148,163,184,.3);background:#0f172ab3;box-shadow:inset 0 0 0 1px #6366f140;cursor:pointer;display:flex;flex-direction:column;gap:.2rem;transition:transform .3s ease,border-color .3s ease,background .3s ease,box-shadow .3s ease}.classification-item.active{border-color:#a78bfa;background:linear-gradient(135deg,#a78bfa33,#3b82f633);transform:translateY(-4px);box-shadow:0 20px 40px #0c0e18b3}.item-name{margin:0;font-weight:600;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-count{margin:0;font-size:.8rem}.classification-empty{grid-column:1 / -1;text-align:center;color:#94a3b8}.section-header{display:flex;justify-content:space-between;align-items:baseline}.alert-page .status-spacer{height:1rem}.subtitle-small{margin:0;color:#cbd5f5;font-size:.9rem}.summary-card,.card{background:#0f172ad9;border:1px solid rgba(148,163,184,.2);border-radius:0;padding:.75rem;margin-bottom:.6rem;box-shadow:0 40px 80px #020617a6}.ant-card,.ant-card .ant-card-head,.ant-card .ant-card-body{border-radius:0}.page.theme-light .summary-card,.page.theme-light .card,.page.theme-light .stat-card{background:#f8fafc;border-color:#0f172a14;box-shadow:0 18px 32px #0f172a14}.page.theme-light .stat-card.online{border-color:#22c55e40}.page.theme-light .stat-card.offline{border-color:#f871714d}.page.theme-light .stat-card.abnormal{border-color:#f8717173}.page.theme-light .stat-card.temp{border-color:#facc158c}.page.theme-light .stat-card.updated{border-color:#3b82f640}.page.theme-light .status-pill{background:#94a3b833;color:#334155}.page.theme-light .status-pill.status-online{background:#22c55e33;color:#15803d}.page.theme-light .status-pill.status-offline{background:#f8717133;color:#b91c1c}.page.theme-light .classification-card{background:#f8fafc;border-color:#0f172a14}.page.theme-light .device-card{background:#f8fafc;border-color:#0f172a14;box-shadow:0 18px 32px #0f172a14}.page.theme-light .device-card.card-alert{border-color:#f8717199;box-shadow:0 16px 28px #f8717133}.temp-history-modal .ant-modal-content,.temp-history-modal .ant-modal-header{border-radius:0}.temp-history-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.6rem}.temp-history-actions{display:flex;align-items:center;gap:.4rem}.temp-history-title{margin:0;font-size:1.1rem}.temp-history-controls{display:flex;align-items:center;gap:.6rem;padding:.4rem .2rem 0}.temp-history-controls .ant-slider{flex:1}.temp-history-range{min-width:40px;text-align:right;font-weight:600}.temp-history-chart{border:1px solid rgba(148,163,184,.2);background:linear-gradient(180deg,#0f172abf,#020617b3);padding:.8rem}.temp-history-chart svg{width:100%;height:220px;color:#38bdf8}.temp-history-chart .temp-grid-line{stroke:#94a3b840;stroke-width:1}.temp-history-chart .temp-axis-line{stroke:#e2e8f0d9;stroke-width:1.5}.temp-history-chart .temp-axis-label{fill:#e2e8f0e6;font-size:10px}.temp-history-chart .temp-line{stroke:#38bdf8;stroke-width:2.2}.temp-history-legend{display:flex;justify-content:space-between;font-size:.85rem;color:#94a3b8;margin-top:.4rem}.page.theme-light .temp-history-chart,.temp-history-modal-wrap.theme-light .temp-history-chart{background:#fff;border-color:#0f172a14}.page.theme-light .temp-history-chart svg{color:#2563eb}.page.theme-light .temp-history-chart .temp-grid-line{stroke:#94a3b859}.page.theme-light .temp-history-chart .temp-axis-line{stroke:#000}.page.theme-light .temp-history-chart .temp-axis-label{fill:#000}.temp-history-modal-wrap.theme-light .temp-history-chart .temp-axis-line{stroke:#000}.temp-history-modal-wrap.theme-light .temp-history-chart .temp-axis-label{fill:#000}.page.theme-light .temp-history-chart .temp-line{stroke:#2563eb}.page.theme-light .tuya-modal-backdrop{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.page.theme-light .tuya-modal-card,.tuya-modal-card.theme-light{background:linear-gradient(160deg,#fffffff7,#f1f5f9fa);border-color:#94a3b873;box-shadow:0 28px 60px #0f172a33}.page.theme-light .tuya-drawer .ant-drawer-content,.tuya-drawer.theme-light .ant-drawer-content{background:#fff}.page.theme-light .tuya-drawer .ant-drawer-body,.tuya-drawer.theme-light .ant-drawer-body{background:#fff;color:#0f172a}.page.theme-light .tuya-drawer .tuya-modal-card,.tuya-drawer.theme-light .tuya-modal-card{width:100%;border-radius:0;background:#fff;border:none;box-shadow:none}.tuya-drawer-wrap.theme-light .ant-drawer-content{background:#fff}.tuya-drawer-wrap.theme-light .ant-drawer-body{background:#fff;color:#0f172a}.tuya-drawer-wrap.theme-light .tuya-modal-card{width:100%;border-radius:0;background:#fff;border:none;box-shadow:none}.tuya-drawer-wrap{pointer-events:none}.tuya-drawer-wrap .ant-drawer-content-wrapper,.tuya-drawer-wrap .ant-drawer-content,.tuya-drawer-wrap .ant-drawer-body{pointer-events:auto}.page.theme-light .tuya-function-item,.tuya-modal-card.theme-light .tuya-function-item,.tuya-drawer.theme-light .tuya-function-item,.tuya-drawer-wrap.theme-light .tuya-function-item{background:#fff;border-color:#0f172a14}.page.theme-light .tuya-unit{color:#64748b}.page.theme-light .tuya-value{color:#0f172a}.page.theme-light .tuya-range-hint{color:#64748b}.page.theme-light .tuya-current{color:#334155}.page.theme-light .tuya-readonly{background:#0f172a14;color:#0f172a}.page.theme-light .tuya-loading{color:#64748b}.page.theme-light .device-card .device-classification,.page.theme-light .bar-label,.page.theme-light .subtitle-small{color:#475569}.page.theme-light .device-card .location{color:#0ea5e9}.page.theme-light .classification-item{background:#f8fafc;border-color:#0f172a14;box-shadow:none}.page.theme-light .automation-card{background:#f8fafc;border-color:#0f172a14}.page.theme-light .automation-panel,.page.theme-light .automation-item{background:#fff;border-color:#0f172a14}.page.theme-light .rule-pill-trigger{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}.page.theme-light .rule-pill-action{background:#fef3c7;color:#b45309;border-color:#fde68a}.page.theme-light .rule-pill-target,.page.theme-light .rule-pill-active{background:#dcfce7;color:#15803d;border-color:#bbf7d0}.page.theme-light .rule-pill-muted{background:#e2e8f0;color:#475569;border-color:#cbd5f5}.page.theme-light .rule-pill-time{background:#e0f2fe;color:#0369a1;border-color:#bae6fd}.page.theme-light .rule-pill-author{background:#f3e8ff;color:#6d28d9;border-color:#e9d5ff}.page.theme-light .automation-editor-card,.page.theme-light .automation-list-item{background:#fff;border-color:#dbeafe;border-radius:0}.page.theme-light .automation-list-item:hover{border-color:#93c5fd;background:#eef5ff;box-shadow:none}.page.theme-light .automation-list-subtitle,.page.theme-light .automation-card-label,.page.theme-light .automation-drawer-field>span{color:#1e3a8a}.page.theme-light .automation-flow-canvas{border-color:#0f172a1f;background:radial-gradient(120% 120% at 10% 10%,rgba(56,189,248,.18),transparent 60%),radial-gradient(120% 120% at 90% 0%,rgba(99,102,241,.12),transparent 55%),linear-gradient(180deg,#fff,#f1f8ff);box-shadow:0 20px 40px #0f172a1f}.page.theme-light .automation-flow-view .vue-flow__node{background:#fff;border-color:#0f172a2e;color:#0f172a;box-shadow:0 14px 28px #0f172a1f}.page.theme-light .automation-flow-view .vue-flow__node.selected{border-color:#0ea5e999;box-shadow:0 0 0 1px #0ea5e940,0 18px 30px #0f172a26}.page.theme-light .automation-flow-view .flow-node-trigger{background:linear-gradient(150deg,#0ea5e92e,#fff);border-color:#0ea5e973}.page.theme-light .automation-flow-view .flow-node-condition{background:linear-gradient(150deg,#3b82f624,#fff);border-color:#3b82f659}.page.theme-light .automation-flow-view .flow-node-action{background:linear-gradient(150deg,#fbbf242e,#fff);border-color:#fbbf2466}.page.theme-light .automation-flow-view .flow-node-target{background:linear-gradient(150deg,#22c55e24,#fff);border-color:#22c55e59}.page.theme-light .automation-flow-view .flow-node-empty{background:#f8fafcd9;color:#64748b}.page.theme-light .automation-flow-view .vue-flow__edge-path{stroke:#0f172a66}.page.theme-light .automation-flow-view .vue-flow__edge.selected .vue-flow__edge-path{stroke:#0ea5e9bf}.page.theme-light .automation-flow-view .vue-flow__handle{border-color:#fff;background:#0ea5e9d9;box-shadow:0 0 0 2px #0ea5e940}.page.theme-light .automation-flow-view .vue-flow__controls{background:#ffffffd9;border-color:#0f172a1f;box-shadow:0 12px 22px #0f172a1f}.page.theme-light .automation-flow-view .vue-flow__controls-button{color:#0f172a}.page.theme-light .automation-flow-editor{background:#fff;border-color:#0f172a14;box-shadow:0 18px 34px #0f172a14}.page.theme-light .automation-flow-divider{background:#0f172a1f}.page.theme-light .automation-flow-placeholder{color:#64748b}.page.theme-light .automation-notice{color:#16a34a}.page.theme-light .automation-device-card{background:#fff;border-color:#0f172a1a;color:#0f172a}.page.theme-light .automation-device-card:hover{box-shadow:0 16px 28px #0f172a1f}.page.theme-light .automation-device-card:disabled:hover{background:#fff;border-color:#0f172a1a;box-shadow:none;transform:none}.page.theme-light .automation-loading{color:#64748b}.page.theme-light .automation-modal-backdrop{background:#e2e8f0bf}.page.theme-light .automation-modal-card{background:#fff;border-color:#94a3b859;box-shadow:0 24px 50px #0f172a2e}.automation-editor-modal-wrap.theme-light .automation-editor-modal .ant-modal-content{background:#fff;border:1px solid #dbeafe;box-shadow:0 18px 36px #1e40af1f}.automation-editor-modal-wrap.theme-light .automation-editor-modal .automation-panel-head{background:#fff}.automation-editor-modal-wrap.theme-light .automation-editor-modal .ant-modal-body{color:#0f172a;background:#fff}.automation-editor-modal-wrap.theme-light .automation-editor-modal .subtitle-small,.automation-editor-modal-wrap.theme-light .automation-editor-modal p,.automation-editor-modal-wrap.theme-light .automation-editor-modal span{color:#0f172a}.automation-editor-modal-wrap.theme-light .automation-editor-modal .automation-form{background:#fff}.automation-editor-modal-wrap.theme-light .automation-editor-card{background:#f7faff}.automation-editor-modal-wrap.theme-light .automation-list-item{background:#fff}.page.theme-light .automation-temp-row .unit{color:#64748b}.page.theme-light .classification-item.active{background:#3b82f61f;border-color:#3b82f659;box-shadow:0 12px 24px #0f172a14}.page.theme-light .bar-track{background:#94a3b840}.summary-card{display:flex;flex-direction:column;gap:.8rem}.summary-card .value{font-size:2.25rem;margin:0}.counts{display:flex;flex-wrap:wrap;gap:.6rem}.counts span{background:#3b82f633;padding:.25rem .75rem;border-radius:999px;font-size:.9rem}.updated{margin:0;color:#94a3b8}.device-table{width:100%;border-collapse:collapse;font-size:.95rem}.table-wrap{width:100%;overflow-x:auto}.device-table th,.device-table td{padding:.9rem;border-bottom:1px solid rgba(148,163,184,.2);text-align:left}.device-table th{font-weight:500;color:#94a3b8}.device-table tbody tr:hover{background:#ffffff0a}.device-table tbody tr.active{background:#3b82f62e}.page.theme-light .device-table tbody tr.active{background:#3b82f61f}.pagination{margin-top:.75rem;display:flex;align-items:center;gap:.6rem;justify-content:center}.threshold-input{width:90px}.location-input{width:220px}.location-input .ant-select-selection-item,.location-input .ant-select-selection-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.threshold-actions{align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end;min-width:140px}.threshold-error{color:#f87171;font-size:.8rem}.threshold-success{color:#34d399;font-size:.8rem}.admin-bulk-hint{display:flex;flex-direction:column;gap:.6rem;padding:.6rem;border-radius:.6rem;border:1px dashed rgba(148,163,184,.35);margin-bottom:.8rem}.bulk-result{display:flex;flex-direction:column;gap:.35rem;max-height:180px;overflow:auto}.bulk-result-item{font-size:.85rem}.page.theme-light .threshold-save{background:#10b981;border-color:#10b98173;box-shadow:0 10px 18px #10b9812e}.bulk-actions{margin-top:1rem;display:flex;flex-direction:column;gap:.4rem}.bulk-fields{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.device-title{font-weight:600}.device-subtitle{color:#94a3b8;font-size:.85rem}.status{display:flex;flex-direction:column;gap:.25rem}.status .temp{font-size:1.1rem;color:#f97316}.status .state-text{font-size:1rem;font-weight:600;color:#f59e0b}.state-text.state-online{color:#22c55e}.state-text.state-offline,.state-text.state-unknown{color:#f87171}.status .state-text.state-online{color:#22c55e}.status .state-text.state-offline{color:#f87171}.status .topic{font-size:.85rem;color:#a5b4fc}.status .payload{font-family:JetBrains Mono,monospace;font-size:.85rem;background:#0f172ad9;padding:.4rem .6rem;border-radius:.4rem;border:1px solid rgba(148,163,184,.35)}.status.empty{color:#94a3b8}.device-table td,.device-table th{min-width:120px}@media (max-width: 720px){.hero{flex-direction:column;gap:.5rem}.stats-grid,.classification-grid,.controls-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.table-wrap{width:100%;overflow-x:auto}}.error-card{border-color:#f8717180;color:#fecaca}.empty-state{margin:0;color:#94a3b8;text-align:center}
